fully dynamic maximal independent set with sublinear
play

Fully Dynamic Maximal Independent Set with Sublinear Update Time - PowerPoint PPT Presentation

Fully Dynamic Maximal Independent Set with Sublinear Update Time Sepehr Assadi University of Pennsylvania Joint work with: Krzysztof Onak, Baruch Schieber, and Shay Solomon IBM Research Sepehr Assadi (Penn) STOC 2018 The Maximal Independent


  1. Warm-Up: An O (∆) Update Time Algorithm? Ω(∆ 2 ) update time in the worst case. Are we doomed then? Not really! The algorithm has a very simple yet useful property: After a single update: Many vertices can potentially join M . Only one vertex can ever leave M . How to use this? Charge a vertex removed from M with O (∆) budget/time. Use it for both removing it now as well as (potentially) inserting it later. Amortized update time is only O (∆) ! Sepehr Assadi (Penn) STOC 2018

  2. Motivating Question We saw a very simple O (∆) amortized update time algorithm for dynamic MIS. Sepehr Assadi (Penn) STOC 2018

  3. Motivating Question We saw a very simple O (∆) amortized update time algorithm for dynamic MIS. Still does not improve upon naive re-computation algorithm for sparse graphs with ∆ = Θ( m ) . Sepehr Assadi (Penn) STOC 2018

  4. Motivating Question We saw a very simple O (∆) amortized update time algorithm for dynamic MIS. Still does not improve upon naive re-computation algorithm for sparse graphs with ∆ = Θ( m ) . Motivating Question. Can we maintain an MIS in a dynamic graph in sublinear update time, i.e., o ( m ) time? Sepehr Assadi (Penn) STOC 2018

  5. Motivating Question We saw a very simple O (∆) amortized update time algorithm for dynamic MIS. Still does not improve upon naive re-computation algorithm for sparse graphs with ∆ = Θ( m ) . Motivating Question. Can we maintain an MIS in a dynamic graph in sublinear update time, i.e., o ( m ) time? Yes! Sepehr Assadi (Penn) STOC 2018

  6. Our Main Result We prove that A maximal independent set can be maintained deterministically in O ( m 3 / 4 ) amortized update time, where m denotes the dynamic number of edges. Sepehr Assadi (Penn) STOC 2018

  7. Our Main Result We prove that A maximal independent set can be maintained deterministically in O ( m 3 / 4 ) amortized update time, where m denotes the dynamic number of edges. First improvement over the O ( m ) update time for all values of m . Sepehr Assadi (Penn) STOC 2018

  8. Our Main Result We prove that A maximal independent set can be maintained deterministically in O ( m 3 / 4 ) amortized update time, where m denotes the dynamic number of edges. First improvement over the O ( m ) update time for all values of m . Can also be implemented in distributed dynamic networks, strengthening the result of [CHK16]. Sepehr Assadi (Penn) STOC 2018

  9. Deterministic vs Randomized Dynamic Algorithms A significant distinction between deterministic and randomized algorithms in the dynamic setting. Sepehr Assadi (Penn) STOC 2018

  10. Deterministic vs Randomized Dynamic Algorithms A significant distinction between deterministic and randomized algorithms in the dynamic setting. Main reason: assumption of a non-adaptive oblivious adversary by randomized algorithms. Sepehr Assadi (Penn) STOC 2018

  11. Deterministic vs Randomized Dynamic Algorithms A significant distinction between deterministic and randomized algorithms in the dynamic setting. Main reason: assumption of a non-adaptive oblivious adversary by randomized algorithms. ◮ Adversary has to fix the sequence of updates beforehand and cannot adapt to decisions of the dynamic algorithm. Sepehr Assadi (Penn) STOC 2018

  12. Deterministic vs Randomized Dynamic Algorithms A significant distinction between deterministic and randomized algorithms in the dynamic setting. Main reason: assumption of a non-adaptive oblivious adversary by randomized algorithms. ◮ Adversary has to fix the sequence of updates beforehand and cannot adapt to decisions of the dynamic algorithm. ◮ This can render randomized algorithms entirely unusable in certain scenarios. Sepehr Assadi (Penn) STOC 2018

  13. Deterministic vs Randomized Dynamic Algorithms A significant distinction between deterministic and randomized algorithms in the dynamic setting. Main reason: assumption of a non-adaptive oblivious adversary by randomized algorithms. ◮ Adversary has to fix the sequence of updates beforehand and cannot adapt to decisions of the dynamic algorithm. ◮ This can render randomized algorithms entirely unusable in certain scenarios. A huge gap between the update time of best deterministic vs randomized algorithms for dynamic problems: Sepehr Assadi (Penn) STOC 2018

  14. Deterministic vs Randomized Dynamic Algorithms A significant distinction between deterministic and randomized algorithms in the dynamic setting. Main reason: assumption of a non-adaptive oblivious adversary by randomized algorithms. ◮ Adversary has to fix the sequence of updates beforehand and cannot adapt to decisions of the dynamic algorithm. ◮ This can render randomized algorithms entirely unusable in certain scenarios. A huge gap between the update time of best deterministic vs randomized algorithms for dynamic problems: ◮ Maximal Matching: O ( √ m ) for deterministic [NS13] vs O (1) for randomized [Sol16]. ◮ (∆ + 1) -Vertex Coloring: No non-trivial deterministic algorithm vs O (log ∆) for randomized [BCHN18]. Sepehr Assadi (Penn) STOC 2018

  15. An O ( m 3 / 4 ) Amortized Update Time Dynamic Algorithm for MIS Sepehr Assadi (Penn) STOC 2018

  16. High Level Idea Part I : Maintaining a local knowledge of the graph for each vertex. Sepehr Assadi (Penn) STOC 2018

  17. High Level Idea Part I : Maintaining a local knowledge of the graph for each vertex. O ( m 3 / 4 ) time algorithm: O (∆) time algorithm: Sepehr Assadi (Penn) STOC 2018

  18. High Level Idea Part I : Maintaining a local knowledge of the graph for each vertex. Each vertex knows some information about its neighbors that are in M . O ( m 3 / 4 ) time algorithm: O (∆) time algorithm: Sepehr Assadi (Penn) STOC 2018

  19. High Level Idea Part I : Maintaining a local knowledge of the graph for each vertex. Each vertex knows some information about its neighbors that are in M . This information maybe inconsistent across vertices as we cannot afford to update ∆ neighbors of each vertex per update. O ( m 3 / 4 ) time algorithm: O (∆) time algorithm: Sepehr Assadi (Penn) STOC 2018

  20. High Level Idea Part I : Maintaining a local knowledge of the graph for each vertex. Each vertex knows some information about its neighbors that are in M . This information maybe inconsistent across vertices as we cannot afford to update ∆ neighbors of each vertex per update. To compensate, we also maintain some information about 2 -hop neighbors of vertices. O ( m 3 / 4 ) time algorithm: O (∆) time algorithm: Sepehr Assadi (Penn) STOC 2018

  21. Our Algorithm: High Level Plan Part II : Maintaining the MIS using the local and inconsistent information of vertices. Sepehr Assadi (Penn) STOC 2018

  22. Our Algorithm: High Level Plan Part II : Maintaining the MIS using the local and inconsistent information of vertices. Main challenge: Based on their partial information, some vertices may join M . They may however have some neighbors already in M . As such we may need to delete some vertices in the current M and process them recursively again. Sepehr Assadi (Penn) STOC 2018

  23. Maintaining the Partial Information Vertices are partitioned into four sets based on their degrees: V High : deg ≥ m 3 / 4 V Med-High : m 3 / 4 > deg ≥ m 1 / 2 V Med-Low : m 1 / 2 > deg ≥ m 1 / 4 V Low : remaining vertices Sepehr Assadi (Penn) STOC 2018

  24. Maintaining the Partial Information Vertices are partitioned into four sets based on their degrees: V High : deg ≥ m 3 / 4 V Med-High : m 3 / 4 > deg ≥ m 1 / 2 V Med-Low : m 1 / 2 > deg ≥ m 1 / 4 V Low : remaining vertices Why this helps? Sepehr Assadi (Penn) STOC 2018

  25. Maintaining the Partial Information Vertices are partitioned into four sets based on their degrees: V High : deg ≥ m 3 / 4 V Med-High : m 3 / 4 > deg ≥ m 1 / 2 V Med-Low : m 1 / 2 > deg ≥ m 1 / 4 V Low : remaining vertices Why this helps? Sepehr Assadi (Penn) STOC 2018

  26. Maintaining the Partial Information M -neighbor information: v ∈ V \ V Low All vertices except for V Low know all their M -neighbors. V High V Low V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  27. Maintaining the Partial Information M -neighbor information: v ∈ V Low All vertices except for V Low know all their M -neighbors. Vertices in V Low know all their neighbors in M except for V High V Low the ones in V High . V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  28. Maintaining the Partial Information M -neighbor information: u ∈ V All vertices except for V Low know all their M -neighbors. Vertices in V Low know all their neighbors in M except for V Low the ones in V High . M -2-hop-neighbor information: V High Any vertex u for any one of V Low its neighbors v in V Low knows V Med-High V Med-Low all neighbors of v that are in V Low ∪ V Med-Low and are in M . Sepehr Assadi (Penn) STOC 2018

  29. Maintaining the Partial Information M -neighbor information: u ∈ V All vertices except for V Low know all their M -neighbors. Vertices in V Low know all their neighbors in M except for V Low the ones in V High . M -2-hop-neighbor information: V High Any vertex u for any one of V Low its neighbors v in V Low knows V Med-High V Med-Low all neighbors of v that are in V Low ∪ V Med-Low and are in M . Lemma. One can maintain this information in O ( m 3 / 4 ) time per each update to the graph or M . Sepehr Assadi (Penn) STOC 2018

  30. The Update Algorithm Unlike the O (∆) -time algorithm, multiple vertices may be deleted from M . Sepehr Assadi (Penn) STOC 2018

  31. The Update Algorithm Unlike the O (∆) -time algorithm, multiple vertices may be deleted from M . Invariant (Main Invariant) After every update: If only a single vertex leaves M , then there is no restriction on the number of vertices joining M (which could be zero). Sepehr Assadi (Penn) STOC 2018

  32. The Update Algorithm Unlike the O (∆) -time algorithm, multiple vertices may be deleted from M . Invariant (Main Invariant) After every update: If only a single vertex leaves M , then there is no restriction on the number of vertices joining M (which could be zero). However, if k > 1 vertices leave M , then at least 2 k vertices would join M . Sepehr Assadi (Penn) STOC 2018

  33. The Update Algorithm Unlike the O (∆) -time algorithm, multiple vertices may be deleted from M . Invariant (Main Invariant) After every update: If only a single vertex leaves M , then there is no restriction on the number of vertices joining M (which could be zero). However, if k > 1 vertices leave M , then at least 2 k vertices would join M . The time spent per each update to M is O ( m 3 / 4 ) . Sepehr Assadi (Penn) STOC 2018

  34. The Update Algorithm Unlike the O (∆) -time algorithm, multiple vertices may be deleted from M . Invariant (Main Invariant) After every update: If only a single vertex leaves M , then there is no restriction on the number of vertices joining M (which could be zero). However, if k > 1 vertices leave M , then at least 2 k vertices would join M . The time spent per each update to M is O ( m 3 / 4 ) . This is enough to obtain the O ( m 3 / 4 ) amortized update time. Sepehr Assadi (Penn) STOC 2018

  35. Processing Updates The main challenging update: adversary inserts an edge ( u, v ) between u, v ∈ M . We delete u from M . u Sepehr Assadi (Penn) STOC 2018

  36. Processing Updates The main challenging update: adversary inserts an edge ( u, v ) between u, v ∈ M . We delete u from M . u Neighbors of u not in V Low : ◮ Each one knows if it can join M . ◮ Any one that joins M needs O ( m 3 / 4 ) time to update partial V High V Low information of its neighborhood. V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  37. Processing Updates The main challenging update: adversary inserts an edge ( u, v ) between u, v ∈ M . We delete u from M . u Neighbors of u not in V Low : ◮ Each one knows if it can join M . ◮ Any one that joins M needs O ( m 3 / 4 ) time to update partial V High V Low information of its neighborhood. Neighbors of u inside V Low : V Med-High V Med-Low ◮ Their local information is not enough to determine whether they should join M or not. Sepehr Assadi (Penn) STOC 2018

  38. Handling Low-Degree Neighbors of u u knows all its neighbors that u do not have a neighbor in M ∩ ( V Low ∪ V Med-Low ) . V Low V High V Low V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  39. Handling Low-Degree Neighbors of u u knows all its neighbors that u do not have a neighbor in M ∩ ( V Low ∪ V Med-Low ) . Let A be the set of such neighbors. V Low V High V Low V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  40. Handling Low-Degree Neighbors of u u knows all its neighbors that u do not have a neighbor in M ∩ ( V Low ∪ V Med-Low ) . Let A be the set of such neighbors. V Low We process the update based on whether A is large or not. V High V Low V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  41. Handling Low-Degree Neighbors of u Let us assume A is very large i.e., has ω ( m 3 / 4 ) vertices: u V Low V High V Low V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  42. Handling Low-Degree Neighbors of u Let us assume A is very large i.e., has ω ( m 3 / 4 ) vertices: Greedily insert these vertices 1 u to M , only check for consistency between the inserted vertices. V Low V High V Low V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  43. Handling Low-Degree Neighbors of u Let us assume A is very large i.e., has ω ( m 3 / 4 ) vertices: Greedily insert these vertices 1 u to M , only check for consistency between the inserted vertices. ◮ How many inserted? V Low ω ( m 1 / 2 ) . V High V Low V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  44. Handling Low-Degree Neighbors of u Let us assume A is very large i.e., has ω ( m 3 / 4 ) vertices: Greedily insert these vertices 1 u to M , only check for consistency between the inserted vertices. ◮ How many inserted? V Low ω ( m 1 / 2 ) . M may become infeasible as 2 there would be some neighboring vertices inside it. V High V Low V Med-High V Med-Low Sepehr Assadi (Penn) STOC 2018

  45. Handling Low-Degree Neighbors of u Let us assume A is very large i.e., has ω ( m 3 / 4 ) vertices: Greedily insert these vertices 1 u to M , only check for consistency between the inserted vertices. ◮ How many inserted? V Low ω ( m 1 / 2 ) . M may become infeasible as 2 there would be some neighboring vertices inside it. V High V Low Simply remove these vertices 3 V Med-High from M . Recursively process V Med-Low these vertices. Sepehr Assadi (Penn) STOC 2018

  46. Handling Low-Degree Neighbors of u Let us assume A is very large i.e., has ω ( m 3 / 4 ) vertices: Greedily insert these vertices 1 u to M , only check for consistency between the inserted vertices. ◮ How many inserted? V Low ω ( m 1 / 2 ) . M may become infeasible as 2 there would be some neighboring vertices inside it. V High V Low Simply remove these vertices 3 V Med-High from M . Recursively process V Med-Low these vertices. ◮ How many deleted? O ( m 1 / 2 ) . Sepehr Assadi (Penn) STOC 2018

  47. Wrap-Up We spend O ( m 3 / 4 ) time per update for maintaining the local information. We spend O ( m 3 / 4 ) time for any vertex inserted to or deleted from M . By main invariant, we can charge each vertex deleted from M with O ( m 3 / 4 ) time, to be used when this vertex is inserted back later (if ever). Sepehr Assadi (Penn) STOC 2018

  48. Wrap-Up We spend O ( m 3 / 4 ) time per update for maintaining the local information. We spend O ( m 3 / 4 ) time for any vertex inserted to or deleted from M . By main invariant, we can charge each vertex deleted from M with O ( m 3 / 4 ) time, to be used when this vertex is inserted back later (if ever). � � O ( m 3 / 4 ) , O (∆) MIS can be maintained deterministically with min amortized update time in dynamic graphs. Sepehr Assadi (Penn) STOC 2018

  49. Recent Developments Sepehr Assadi (Penn) STOC 2018

  50. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 Sepehr Assadi (Penn) STOC 2018

  51. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Sepehr Assadi (Penn) STOC 2018

  52. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 Sepehr Assadi (Penn) STOC 2018

  53. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 ◮ Deterministic O ( m 2 / 3 ) amortized update time. Sepehr Assadi (Penn) STOC 2018

  54. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 ◮ Deterministic O ( m 2 / 3 ) amortized update time. ◮ Further results for incremental and decremental settings. Sepehr Assadi (Penn) STOC 2018

  55. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 ◮ Deterministic O ( m 2 / 3 ) amortized update time. ◮ Further results for incremental and decremental settings. Du and Zhang [DZ18]: arXiv, April 2018 Sepehr Assadi (Penn) STOC 2018

  56. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 ◮ Deterministic O ( m 2 / 3 ) amortized update time. ◮ Further results for incremental and decremental settings. Du and Zhang [DZ18]: arXiv, April 2018 ◮ Deterministic � O ( m 2 / 3 ) amortized update time. Sepehr Assadi (Penn) STOC 2018

  57. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 ◮ Deterministic O ( m 2 / 3 ) amortized update time. ◮ Further results for incremental and decremental settings. Du and Zhang [DZ18]: arXiv, April 2018 ◮ Deterministic � O ( m 2 / 3 ) amortized update time. O ( √ m ) expected amortized update time. ◮ Randomized � Sepehr Assadi (Penn) STOC 2018

  58. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 ◮ Deterministic O ( m 2 / 3 ) amortized update time. ◮ Further results for incremental and decremental settings. Du and Zhang [DZ18]: arXiv, April 2018 ◮ Deterministic � O ( m 2 / 3 ) amortized update time. O ( √ m ) expected amortized update time. ◮ Randomized � Assadi, Onak, Schieber, and Solomon [AOSS18b]: arXiv, June 2018 Sepehr Assadi (Penn) STOC 2018

  59. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 ◮ Deterministic O ( m 2 / 3 ) amortized update time. ◮ Further results for incremental and decremental settings. Du and Zhang [DZ18]: arXiv, April 2018 ◮ Deterministic � O ( m 2 / 3 ) amortized update time. O ( √ m ) expected amortized update time. ◮ Randomized � Assadi, Onak, Schieber, and Solomon [AOSS18b]: arXiv, June 2018 O ( √ n ) expected amortized update time. ◮ Randomized � Sepehr Assadi (Penn) STOC 2018

  60. Recent Developments Onak, Schieber, Solomon, and Wein [OSSW18]: ICALP 2018 ◮ Deterministic O (log 2 n ) amortized update time for bounded arboricity graphs. Gupta and Khan [GK18]: arXiv, April 2018 ◮ Deterministic O ( m 2 / 3 ) amortized update time. ◮ Further results for incremental and decremental settings. Du and Zhang [DZ18]: arXiv, April 2018 ◮ Deterministic � O ( m 2 / 3 ) amortized update time. O ( √ m ) expected amortized update time. ◮ Randomized � Assadi, Onak, Schieber, and Solomon [AOSS18b]: arXiv, June 2018 O ( √ n ) expected amortized update time. ◮ Randomized � ◮ Randomized � O ( m 1 / 3 ) expected amortized update time. Sepehr Assadi (Penn) STOC 2018

  61. Conclusion We gave a deterministic O ( m 3 / 4 ) amortized update time algorithm for maintaining an MIS in dynamic graphs. Our algorithm can also be implemented in dynamic distributed networks. Sepehr Assadi (Penn) STOC 2018

  62. Conclusion We gave a deterministic O ( m 3 / 4 ) amortized update time algorithm for maintaining an MIS in dynamic graphs. Our algorithm can also be implemented in dynamic distributed networks. Open questions: Faster dynamic algorithms for MIS? ◮ Best deterministic algorithm: O ( m 2 / 3 ) time [GK18]. � � O ( √ n ) , � ◮ Best randomized algorithm: min � O ( m 1 / 3 ) time [AOSS18b]. Sepehr Assadi (Penn) STOC 2018

  63. Conclusion We gave a deterministic O ( m 3 / 4 ) amortized update time algorithm for maintaining an MIS in dynamic graphs. Our algorithm can also be implemented in dynamic distributed networks. Open questions: Faster dynamic algorithms for MIS? ◮ Best deterministic algorithm: O ( m 2 / 3 ) time [GK18]. � � O ( √ n ) , � ◮ Best randomized algorithm: min � O ( m 1 / 3 ) time [AOSS18b]. Better deterministic dynamic algorithms for other “maximal-type” problems? ◮ Example: o ( √ m ) time algorithm for maximal matching? Sepehr Assadi (Penn) STOC 2018

  64. Conclusion We gave a deterministic O ( m 3 / 4 ) amortized update time algorithm for maintaining an MIS in dynamic graphs. Our algorithm can also be implemented in dynamic distributed networks. Open questions: Faster dynamic algorithms for MIS? ◮ Best deterministic algorithm: O ( m 2 / 3 ) time [GK18]. � � O ( √ n ) , � ◮ Best randomized algorithm: min � O ( m 1 / 3 ) time [AOSS18b]. ! Better deterministic dynamic algorithms for other u o “maximal-type” problems? y ◮ Example: o ( √ m ) time algorithm for maximal matching? k n a h T Sepehr Assadi (Penn) STOC 2018

  65. Noga Alon, L´ aszl´ o Babai, and Alon Itai. A fast and simple randomized parallel algorithm for the maximal independent set problem. J. Algorithms , 7(4):567–583, 1986. Sayan Bhattacharya, Deeparnab Chakrabarty, Monika Henzinger, and Danupon Nanongkai. Dynamic algorithms for graph coloring. In Proceedings of the 29th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2018, New Orleans, LA, USA, January 7-10, 2018 , pages 1–20, 2018. Keren Censor-Hillel, Elad Haramaty, and Zohar S. Karnin. Optimal dynamic distributed MIS. In Proceedings of the 2016 ACM Symposium on Principles of Distributed Computing, PODC 2016, Chicago, IL, USA, July 25-28, 2016 , pages 217–226, 2016. Yuhao Du and Hengjie Zhang. Sepehr Assadi (Penn) STOC 2018

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend