Approximationsalgorithmen Vertex Cover 39 Vertex Cover Problem Algorithmus Greedy 1: Cover C := ∅ while E 6= ∅ do wähle eine beliebige Kante e = (v, u) ∈ E C := C ∪ {v} E := E \ {e | e ist inzident zu v} end while Greedy 1 hat eine Gütegarantie von Ω(log n). Verbesserung: Algorithmus Greedy 2: Cover C := ∅ while E 6= ∅ do wähle den Knoten v ∈ V mit maximalem Grad im aktuellen Graphen G C := C ∪ {v} E := E \ {e | e ist inzident zu v} end while Greedy 2 hat eine Gütegarantie von O(log n). Approximationsalgorithmen Vertex Cover 40 Verwendung eines Maximalen Matchings (MM): Algorithmus MM-Heuristik: Bestimme ein maximales Matching M ⊆ E for all e = (v, u) ∈ M C := C ∪ {v, u} Satz: MM-Heuristik liefert ein Vertex Cover des Graphen. Satz: MM-Heuristik hat eine scharfe Gütegarantie von 2. Verwendung eines Depth First Search Trees (DFS): (Savage, 1982) Algorithmus DFS-Heuristik: Bestimme depth-first-search Suchbaum T auf G C := {v | dT (v) ≥ 2} d.h. C = alle Nicht-Blätter von T Satz: DFS-Heuristik hat eine scharfe Gütegarantie von 2. Approximationsalgorithmen Vertex Cover 41 Verwendung von Randomisierung (systematische Zufallsentscheidung): Algorithmus Rand-Greedy 1: Cover C := ∅ while E 6= ∅ do wähle eine beliebige Kante e = (v, u) ∈ E mit P = 0.5 (fairer Münzwurf) wähle entweder C := C ∪ {v} oder C := C ∪ {u} E := E \ {e | e ist inzident zu dem gewähltem Knoten} end while Satz: Rand-Greedy 1 hat eine erwartete Gütegarantie von 2. Approximationsalgorithmen Weighted Vertex Cover 42 Weighted Vertex Cover Problem gegeben: Graph (V, E) mit Knotengewichten w(v) ∀v ∈ V . Problem: Finde eine Knotenmenge C ⊆ V mit minimalem Gewicht, sodaß für jede Kante (i, j) entweder i ∈ C oder j ∈ C. Algorithmus W-Greedy 2: Cover C := ∅ while E 6= ∅ do wähle den Knoten v ∈ V mit maximalem Grad(v) w(v) im aktuellen Graphen G C := C ∪ {v} E := E \ {e | e ist inzident zu v} end while W-Greedy 2 hat eine Gütegarantie von O(log n). (Chvatal 1979) Weighted Vertex Cover 43 Approximationsalgorithmen Algorithmus W-Rand-Greedy: Cover C := ∅ while E 6= ∅ do wähle eine beliebige Kante e = (v, u) ∈ E w(v) w(u)+w(v) w(u) w(u)+w(v) wähle mit P = C := C ∪ {u} bzw. mit P = C := C ∪ {v} E := E \ {e | e ist inzident zu dem gewähltem Knoten} end while Satz: (Pitt 1985) W-Rand-Greedy hat eine erwartete Gütegarantie von 2. Weighted Vertex Cover 44 Approximationsalgorithmen Formulierung als lineares ganzzahliges Programm (ILP): (Nemhauser, Trotter 1975) minimiere n X wi xi i=1 unter xi + xj ≥ 1 ∀(i, j) ∈ E xi ∈ {0, 1}, i = 1, . . . , n. xi = 1 ⇐⇒ Knoten i ist in Cover enthalten. Satz: Das lineare Programm (LP) für Vertex Cover mit xi ∈ [0, 1] hat die semi-integral Eigenschaft, d.h. in der Optimallösung sind alle Variablen 0, 1/2 oder 1. Die Lösung des linearen Programms (LP) kann effizient berechnet werden. Das Aufrunden der Lösung des linearen Programms (LP) liefert einen Approximationsalgorithmus mit Gütegarantie 2. Approximationsalgorithmen Weighted Vertex Cover 45 Modifizierte Version von W-Greedy 2: Algorithmus Clarkson: Cover C := ∅ while E 6= ∅ do wähle den Knoten v ∈ V mit maximalem Grad(v) w(v) im aktuellen Graphen G (d.h. mit minimalem C := C ∪ {v} for all edges e = (v, u) w(v) w(u) := w(u) − Grad (v) w(v) ) Grad(v) w(v) cost(e) := Grad (v) (nur für Analyse) lösche e end for w(v) := 0 (nur für Analyse) end while Satz: (Clarkson 1983) Der Algorithmus hat eine Gütegarantie von 2. Approximationsalgorithmen Set Cover 46 Set Covering Problem: gegeben: Grundmenge M , Familie von Teilmengen {S1, . . . , Sm}, Si ⊆ M , Bewertung wi für jede Menge Si. Problem: Finde eine Auswahl der Teilmengen mit minimalem Gesamtgewicht, sodaß jedes Element aus M in mindestens einer der ausgewählten Teilmengen enthalten ist. Darstellung als Hypergraph H = (V, E), wobei e ∈ E eine Hyperkante mit e ⊆ V ist. Jedes Subset Si entspricht einem Knoten vi ∈ V , jede Hyperkante einem Element der Grundmenge. Die Hyperkante ist inzident zu allen Knoten/Subsets, in denen das entsprechende Element enhalten ist. Verallgemeinerung von Vertex Cover (für jede Hyperkante ist mindestens ein Knoten in Cover enthalten) entspricht einem Set Cover. Set Cover 47 Approximationsalgorithmen Notation: Es ist d der maximale Grad eines Knoten in H, d.h. die Anzahl der Elemente im größten Subset. Es ist f die Anzahl der Knoten in der größten Hyperkante, gegeben durch das Element, das in den meisten Subsets enthalten ist. Formulierung als lineares ganzzahliges Programm (ILP): minimiere n X wi xi i=1 unter X xi ≥ 1 ∀ej ∈ E i∈ej xi ∈ {0, 1}, i = 1, . . . , n. xi = 1 ⇐⇒ Knoten i, also Subset Si, wird ausgewählt. Überdeckungsproblem z.B. in der Personaleinsatzplanung Set Cover 48 Approximationsalgorithmen Varianten: Set Partitioning: Minimiere Pn i=1 wi xi unter P i∈ej xi = 1 ∀ej ∈ E jedes Grundelement genau einmal auswählen =⇒ Partition der Grundelemente Set Packing: Maximiere Pn i=1 wi xi unter P i∈ej xi ≤ 1 ∀ej ∈ E jedes Grundelement höchstens einmal auswählen =⇒ Maximale Auswahl disjunkter Teilmengen Set Covering: Algorithmus LP-Rundung: Löse des (LP) zu (ILP) mit Lösung x∗ Set Cover S := ∅ for all Si if x∗i ≥ 1/f then S := S ∪ {i} end for LP-Rundung hat eine Gütegarantie von f . Approximationsalgorithmen Set Cover 49 Greedy (für den ungewichteten Fall) Algorithmus Greedy: Cover C := ∅ while E 6= ∅ do wähle den Knoten v ∈ V mit maximalem Grad im aktuellen Hypergraphen H C := C ∪ {v} E := E \ {e | v ∈ e} end while Satz: (Lovasz 1975) Greedy hat eine Gütegarantie von O(log d). Der analoge Algorithmus für den gewichteten Fall hat ebenfalls eine Gütegarantie von O(log d). (Chvatal 1979) Satz: (Feige 1996) Es gibt keinen polynomiale Approximationsalgorithmus mit Gütegarantie (1 − ε) log(d) (unter P6= N P).