approximation algorithms for the maximum leaf spanning
play

Approximation Algorithms for the Maximum Leaf Spanning Tree Problem - PowerPoint PPT Presentation

Approximation Algorithms for the Maximum Leaf Spanning Tree Problem on Acyclic Digraphs Nadine Schwartges Joachim Spoerhase Alexander Wolff WAOA 11 Lehrstuhl f ur Informatik I Universit at W urzburg, Germany Problem


  1. Approximation Algorithms for the Maximum Leaf Spanning Tree Problem on Acyclic Digraphs Nadine Schwartges · Joachim Spoerhase · Alexander Wolff WAOA ’11 Lehrstuhl f¨ ur Informatik I Universit¨ at W¨ urzburg, Germany

  2. Problem Definition Given a digraph G with root r , find an r -rooted spanning tree with the maximum number of leaves . r

  3. Problem Definition Given a digraph G with root r , find an r -rooted spanning tree with the maximum number of leaves . r r G

  4. Previous Results Undirected graphs classical NP-hard problem listed by Garey & Johnson [’74]

  5. Previous Results Undirected graphs classical NP-hard problem listed by Garey & Johnson [’74] 3-approximation by local search [Lu and Ravi ’90] � O ( n 5 ) running time

  6. Previous Results Undirected graphs classical NP-hard problem listed by Garey & Johnson [’74] 3-approximation by local search [Lu and Ravi ’90] � O ( n 5 ) running time 3-approximation in (almost) linear time by expansion-based approach [Lu and Ravi ’98]

  7. Previous Results Undirected graphs classical NP-hard problem listed by Garey & Johnson [’74] 3-approximation by local search [Lu and Ravi ’90] � O ( n 5 ) running time 3-approximation in (almost) linear time by expansion-based approach [Lu and Ravi ’98] linear-time 2-approximation by expansion [Solis-Oba ’98]

  8. Previous Results Undirected graphs classical NP-hard problem listed by Garey & Johnson [’74] 3-approximation by local search [Lu and Ravi ’90] � O ( n 5 ) running time 3-approximation in (almost) linear time by expansion-based approach [Lu and Ravi ’98] linear-time 2-approximation by expansion [Solis-Oba ’98] Digraphs √ OPT-approximation [Drescher and Vetta, ’10] 92-approximation [Daligault and Thomass´ e, 10]

  9. Previous Results Undirected graphs classical NP-hard problem listed by Garey & Johnson [’74] 3-approximation by local search [Lu and Ravi ’90] � O ( n 5 ) running time 3-approximation in (almost) linear time by expansion-based approach [Lu and Ravi ’98] linear-time 2-approximation by expansion [Solis-Oba ’98] Digraphs √ OPT-approximation [Drescher and Vetta, ’10] 92-approximation [Daligault and Thomass´ e, 10] What about special classes of digraphs?

  10. Previous Results Undirected graphs classical NP-hard problem listed by Garey & Johnson [’74] 3-approximation by local search [Lu and Ravi ’90] � O ( n 5 ) running time 3-approximation in (almost) linear time by expansion-based approach [Lu and Ravi ’98] linear-time 2-approximation by expansion [Solis-Oba ’98] Digraphs √ OPT-approximation [Drescher and Vetta, ’10] 92-approximation [Daligault and Thomass´ e, 10] What about special classes of digraphs? � DAGs

  11. Our Results for DAGs MaxSNP-hard, i.e., no PTAS linear-time 4-approximation algorithm linear-time 2-approximation algorithm (expansion-based)

  12. Our Results for DAGs MaxSNP-hard, i.e., no PTAS linear-time 4-approximation algorithm linear-time 2-approximation algorithm (expansion-based)

  13. Algorithm r Input : acyclic digraph G with root r G Output : spanning tree T mark r F ← expand ( G ) T ← connect ( G , F ) return T

  14. Algorithm r Input : acyclic digraph G with root r G Output : spanning tree T mark r F ← expand ( G ) T ← connect ( G , F ) return T

  15. Algorithm r Input : acyclic digraph G with root r G Output : spanning tree T mark r F ← expand ( G ) T ← connect ( G , F ) return T

  16. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  17. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  18. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  19. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  20. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  21. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u every u ∈ U v has exactly one incoming edge in F

  22. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u every u ∈ U v has exactly one incoming edge in F

  23. Procedure expand r G F ← ∅ foreach node v in G do if v / ∈ F then v F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  24. Procedure expand r G F ← ∅ foreach node v in G do if v / ∈ F then v F ← F + v U v ← unmarked children of v U v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  25. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  26. Procedure expand r G F ← ∅ foreach node v in G do v if v / ∈ F then F ← F + v U v ← unmarked children of v U v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  27. Procedure expand r G F ← ∅ foreach node v in G do if v / ∈ F then F ← F + v v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  28. Procedure expand r G F ← ∅ foreach node v in G do if v / ∈ F then F ← F + v v U v ← unmarked children of v U v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  29. Procedure expand r G F ← ∅ v foreach node v in G do if v / ∈ F then F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  30. Procedure expand r G F ← ∅ v foreach node v in G do U v if v / ∈ F then F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  31. Procedure expand r G F ← ∅ foreach node v in G do if v / ∈ F then v F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  32. Procedure expand r G F ← ∅ foreach node v in G do if v / ∈ F then v F ← F + v U v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  33. Procedure expand r = v G F ← ∅ foreach node v in G do if v / ∈ F then F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  34. Procedure expand r = v G F ← ∅ U v foreach node v in G do if v / ∈ F then F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  35. Procedure expand r G F ← ∅ foreach node v in G do if v / ∈ F then F ← F + v U v ← unmarked children of v if | U v | ≥ 2 then F ← F + U v F foreach u ∈ U v do F ← F + ( v , u ) mark u

  36. Algorithm r Input : acyclic digraph G with root r G Output : spanning tree T mark r F ← expand ( G ) T ← connect ( G , F ) return T F

  37. Procedure connect r G foreach unmarked node v do choose arbitrary incoming edge e of v in G F ← F + e v mark v F

  38. Procedure connect r G foreach unmarked node v do choose arbitrary incoming edge e of v in G e F ← F + e v mark v F

  39. Procedure connect r G foreach unmarked node v do choose arbitrary incoming edge e of v in G e F ← F + e v mark v F

  40. Procedure connect r G foreach unmarked node v do choose arbitrary incoming edge e of v in G e F ← F + e v mark v F

  41. Procedure connect r G foreach unmarked node v do choose arbitrary incoming e edge e of v in G v F ← F + e mark v F

  42. Procedure connect r G foreach unmarked node v do choose arbitrary incoming edge e of v in G F ← F + e mark v F

  43. Correctness Lemma. Given an acyclic digraph G , the algorithm computes a spanning tree of G . Observations. ◮ If a node is marked, – it has exactly one incoming edge in F (except r ) and – no further incoming edges are added. ◮ At the end of the algorithm every node is marked. ⇒ spanning tree

  44. Correctness Lemma. Given an acyclic digraph G , the algorithm computes a spanning tree of G . Observations. ◮ If a node is marked, – it has exactly one incoming edge in F (except r ) and – no further incoming edges are added. ◮ At the end of the algorithm every node is marked. ⇒ spanning tree

Recommend


More recommend