Überblick Kap. 3: Parametrisierte Komplexität: Vertex Cover • 3.1 Einführung – Parametrisierte Komplexität – Vertex Cover Professor Dr. Petra Mutzel • 3.2 FPT-Algorithmen für Vertex Cover Lehrstuhl für Algorithm Engineering, LS11 6./7. VO – Algorithmus von Buss & Goldsmith (Kernelization) – Algorithmus von Papadimitriou & Yannakakis – Tiefenbeschränkte Suchbäume 20./27. November 2006 und Beginn 8. VO 2 3.1 Einführung Literatur • • Ulrike Stege und Michael Fellows: An Improved FixedParameter-Tractable Algorithm for Vertex Cover, Tech. Report 318, Department of Computer Science, ETH Zürich, April 1999 • • Rod G. Downey und Michael Fellows: Parameterized Complexity. Springer-Verlag 1999 [Buch zum Thema FPT] • Seminarausarbeitung von Karsten Tiemann, Betreuer: Prof. Rolf Wanka, Universität Paderborn , 2004 • • HEUTE: R. Niedermeier und J. Alber: Parametrisierte Algorithmen, Universität Tübingen, VO-Folien im WS 2002/03 3 • Def.: Es sei U ein Entscheidungsproblem und L die Menge aller Instanzen dieses Problems. Eine beliebige in Polynomialzeit berechenbare Funktion Par: L→N nennt man Parametrisierung von U. Ein Algorithmus A ist ein Par-parametrisierter Polynomialzeit-Algorithmus für U, falls (1) A das Entscheidungsproblem U löst und (2) es eine beliebige Funktion f:N→N und ein Polynom p:N→N gibt, so dass die Laufzeit von A für jede Eingabe I∈L in O( f(Par(I)) p(|I|) ) liegt. Wenn es für U einen solchen Par-parametrisierten Polynomialzeit-Algorithmus gibt, nennt man U fixedparameter-tractable in Bezug auf Par. Das parametrisierte Problem liegt dann in der Klasse FPT. 4 Beobachtungen zu FPT • • • Def.: VERTEX COVER (VC) Bsp.: Par(I)=|I|. Dann ist die Laufzeit O( f(Par(I)) p(|I|) ) leicht zu erreichen, aber nicht sinnvoll → bringt nichts. Bsp.: Pseudopolynomielle Algorithmen, z.B. Rucksackproblem: Dyn. Programmierung hat Laufzeit O(Wn)), wobei W die Rucksackgröße ist und n die Anzahl der Objekte. Pseudopolynomielle Algorithmen sind für Par(I)=Max-Int(I) fixed-parameter tractable (FPT). Gegeben: Graph G=(V,E) und k>0. Gesucht: Besitzt G ein vertex cover der Größe ≤ k? I.e., existiert eine Knotenmenge V´⊆V, |V´|≤k, so dass für jede Kante uv∈E entweder u oder v in V´ ist. Das Entscheidungsproblem vertex cover ist NP-vollständig 2 Bsp.: Sei A ein Algorithmus mit Laufzeit O(2k n2), wobei n die Größe der Eingabe und k der Wert des Parameters 2 der Eingabe ist. Also ist hier f(Par(x)) =2k und p(|x|)= n2 → ist also FPT. Für kleine k ist A effizient, aber bereits für k=√n ist dies auch ein Exponentialzeitalgorithmus. Achtung: Wahl der Funktion par ist entscheidend!!! 1 3 2 1 5 4 6 vertex cover der Größe k=5 5 3 2 5 4 6 vertex cover der Größe k=3 Alle Kanten müssen durch Knoten überdeckt werden 6 1 Parametrisiertes VERTEX COVER 3.2 FPT-Algorithmen für Vertex Cover Gegeben: Graph G=(V,E) und k>0. Parameter: k. Gesucht: Besitzt G ein vertex cover der Größe ≤ k? 3.2.1 Algorithmus von Buss & Goldsmith 1993 Idee: Problemkern Methode („Kernelization“): „k-VERTEX COVER“ 1 3 2 1 5 4 2 6 vertex cover der Größe k=5 3 5 4 • Reduzierung der Probleminstanz I auf eine „gleichwertige“ Probleminstanz I´, wobei die Größe von I´ nur noch vom Parameter k abhängt. • Lösung von I´ ist dann auf I übertragbar 6 vertex cover der Größe k=3 7 8 Algorithmus von Buss & Goldsmith 1993 Algorithmus von Buss & Goldsmith 1993 Lemma: Wenn G=(V,E) ein vertex cover S⊆V mit |S|=k hat, muss S alle Knoten aus V enthalten, die einen Grad größer als k haben. 1. Kernelization: i. Bestimme die Menge H aller Knoten mit Grad >k. ii. Falls |H|>k, dann → Antwort ist NEIN! STOP! iii. VC := H, iv. G´:= G minus H (mit inzidenten Kanten) v. Sei m:=k-|H| vi. Entferne alle isolierten Knoten aus G´ 2. Falls G´ mehr als km Kanten besitzt, 3. dann → Antwort ist NEIN! STOP! 4. Löse m-vertex cover in G´ durch Enumeration. Bw: Sei v ein Knoten mit Grad >k, der nicht in S enthalten ist. Dann müssen aber alle seine Nachbarn in S sein. Lemma: In einem Graphen ohne isolierte Knoten gilt: Wenn alle Knoten in G Grad ≤k haben und dieser Graph ein vertex cover der Größe ≤m besitzt, hat G maximal mk viele Kanten. Bw: Jede Kante hat mindestens einen Endknoten in S. Da jeder Knoten maximal Grad k hat, kann ein Knoten aus S maximal k Kanten überdecken. Mit den Knoten aus S 9 können höchstens mk viele Kanten überdeckt werden. Analyse des Algorithmus 3.2.2 Algorithmus von Papadimitriou & Yannakakis 1993 Lemma: Der Algorithmus von Buss & Goldsmith berechnet das k-VERTEX COVER Problem auf einem Graphen G mit n Knoten in Laufzeit O(kn + 2k k2k+2) Def.: Ein Matching heißt maximales Matching, falls jede Kante aus E\M mindestens einen Knoten mit einer Kante aus M gemeinsam hat. Bw.: Korrektheit: • Laufzeit: Schritt 1.i: Zeit O(kn) (Adjazenzlistendarstellung) • • Schritt 1.iv: Da |H|≤k, geht dies auch in O(kn) • Schritt 4: G´ besitzt nun ≤km Kanten und ≤2km Knoten (wg. 1.vi); Enumeration aller m-elementigen Teilmengen aus G´ kostet (2mk)m; Test für eine solche Teilmenge geht in Zeit O(mk); Laufzeit: O((2mk)mmk)=O((2k2)k k2) = O(2k k2k k2) • 10 Gesamtlaufzeit: O(kn + 2k k2k+2) ENDE 11 Maximales Matching ist i.A. ungleich dem Maximum Matching. Ein maximales Matching kann man finden, indem man z.B. die Kanten nacheinander zu M hinzuaddiert und deren Endknoten und inzidente Kanten entfernt. 1 3 2 5 4 6 Maximales Matching, aber kein Maximum Matching 12 2 Beziehung zwischen Matchings und VC Beziehung zwischen Matchings und VC Lemma: Wenn M ein Matching in G ist, dann enthält jedes vertex cover in G mindestens |M| Knoten. Lemma: Wenn M ein maximales Matching in G ist, dann gibt es ein vertex cover in G mit 2|M| Knoten. Bw.: Da M ein Matching ist, sind die 2|M| Knoten der Kanten aus M alle voneinander verschieden. Um die |M| Kanten des Matchings zu überdecken, braucht man mindestens |M| Knoten. 1 3 2 Bw.: Wir wählen als S die Menge alle 2|M| Endknoten von M. Da M maximales Matching ist, gilt für jede Kante in G, dass sie entweder bereits in M enthalten ist oder einen Knoten mit einer Kante aus M gemeinsam hat. S ist also vertex cover. 5 4 1 6 3 2 5 4 6 13 14 Algorithmus von Papadimitriou & Yannakakis 1993 Algorithmus von Papadimitriou & Yannakakis 1993 Idee: Ausgehend von einem maximalen Matching M, berechne ein vertex cover C* mit der kleinsten Knotenanzahl. • Sei U die Menge aller Endknoten von Kanten in M. • Dann gilt: Für jede Kante uv∈M ist entweder nur u∈C* oder nur v∈C* oder beide u,v∈C* → 3|M| Möglichkeiten • Für eine fixe Belegung der Knoten aus U gilt: restliche Belegung steht fest, denn: genau die Knoten aus V\U, die die zu einer Kante inzident sind, deren anderer Knoten (dieser liegt in U) nicht in C* aufgenommen wurde, werden aufgenommen. Idee: Ausgehend von einem maximalen Matching M, berechne ein vertex cover C* mit der kleinsten Knotenanzahl. • Sei U die Menge aller Endknoten von Kanten in M. • Dann gilt: Für jede Kante uv∈M ist entweder nur u∈C* oder nur v∈C* oder beide u,v∈C* → 3|M| Möglichkeiten • Für eine fixe Belegung der Knoten aus U gilt: restliche Belegung steht fest, denn: genau die Knoten aus V\U, die die zu einer Kante inzident sind, deren anderer Knoten (dieser liegt in U) nicht in C* aufgenommen wurde, werden aufgenommen. 1 3 2 5 4 1 6 2 15 Algorithmus von Papadimitriou & Yannakakis Berechne ein maximales Matching M in G. Sei m:=|M|. Falls m>k, dann: → Antwort: NEIN! STOP! Falls 2m≤k, dann: → Antwort: JA! STOP! Sei U die Menge der Endknoten der Kanten in M. Für jede Kante in M ist entweder genau ein Endknoten oder beide Endknoten in C*. Enumeriere über alle diese 3m Teilmengen. i. Für jede fixierte solche Teilmenge: erweitere diese zu einem VC durch das Hinzufügen genau derjenigen Knoten aus V\U, die zu einer Kante inzident sind, deren anderer Knoten nicht zu C* aufgenommen wurde. ii. Falls |C*|≤k, dann: ANTWORT: JA! STOP! 6. Antwort: NEIN! 17 3 5 4 6 16 Analyse des Algorithmus Lemma: Der Algorithmus von Papadimitriou & Yannakakis löst das k-VERTEX COVER Problem korrekt. Wird vorher auf dem Graphen G mit n Knoten ein Preprocessing mit den Schritten 1-3 von Buss & Goldsmith durchgeführt, dann beträgt die Laufzeit O(3k kn). polynomiell für k = O(log n) 1. 2. 3. 4. 5. Bw.: Korrektheit: Laufzeit: Nach Preprocessing hat G ≤k2 Kanten und ≤2k2 Knoten • Schritt 1: Berechnung eines maximalen Matchings: O(kn) • Schritt 5: Enumeration: 3m, mit m≤k: O(3k). • Schritt 5.i: Für fixe Menge: O(k2), also insgesamt: O(3k k2). • Gesamtlaufzeit: O(kn + 3k k2) 18 3 Einfaches Suchbaumverfahren für Vertex Cover (A1) 3.2.3 Tiefenbeschränkte Suchbäume 1. 2. 3. Konstruiere einen vollständigen Binärbaum mit Tiefe k. Markiere den Wurzelknoten mit (G,∅) Markiere die restlichen Knoten rekursiv wie folgt (von oben nach unten): Sei (H,C) markierter Baumknoten mit 2 unmarkierten Kindern. i. Wähle beliebige Kante uv aus H und ii. Markiere das linke Kind mit (H-u , C ⋃ {u}) iii. Markiere das rechte Kind mit (H-v , C ⋃ {v}) 4. Falls es einen Baumknoten mit Markierung (∅, C´) gibt, dann ist C´ ein vertex cover der Größe ≤ k 5. Sonst: es existiert kein VC der Größe ≤ k Idee basiert auf: Für jeden Knoten v gilt: entweder v oder alle seine Nachbarn sind in vertex cover • Erstelle einen binären Suchbaum der Tiefe k • Auf Ebene 0 ist das vertex cover C noch leer • In jeder Ebene wird obige Entscheidung über einen Knoten v getroffen • Wenn C ein vertex cover ist, dann ANTWORT: JA → STOPP! • Falls spätestens auf Ebene k die Menge C kein vertex cover ist, dann: ANTWORT: NEIN 19 20 Verkleinerung der Suchbaumgröße (A2) Analyse des Suchbaumverfahrens Konstruiere einen Suchbaum unter Beachtung folgender Fallunterscheidung CASES (Reihenfolge wichtig!): Lemma: Das Suchbaumverfahren angewendet auf G=(V,E) ist korrekt und hat die Laufzeit O(|E|+2k |V|). Fall 1: Falls ein Knoten v existiert mit deg(v)=1: Sei w sein Nachbar, dann: C := C ⋃ {w} Korrektheit: • Sei C* ein vertex cover der Größe ≤k. • Für jede Kante gilt: mindestens ein Endknoten ist im vertex cover. 2.2k-1 Laufzeit: Der Suchbaum hat maximal Pro Suchknoten hat man Aufwand O(|V|). = O(2k) Fall 2: Falls ein Knoten v existiert mit deg(v)=2: Sei N(v)={x,y}: dann erzeuge i. linker Teilbaum: C := C ⋃ {v} ⋃ N(x) ⋃ N(y) ii. rechter Teilbaum: C := C ⋃ {x,y} Knoten Lemma: Für k=O(log |V|) läuft der Algorithmus in polynomialer Zeit. Fall 3: Falls für alle Knoten v gilt: deg(v)≥3: i. linker Teilbaum: C := C ⋃ {v} ii. rechter Teilbaum: C := C ⋃ N(v) I.A. ist die Größe eines VC eben nicht in O(log |V|) 21 Analyse des Algorithmus 22 Analyse von Suchbaum (A1) Der Algorithmus ist korrekt. • Sei Ti die Suchbaumgröße des Teilbaums, T0=1. • Dann gilt: Rekursionsgleichung: Ti = 1 + Ti-1 + Ti-1 • Zur Vereinfachung: nur Blattanzahl: Bi = Bi-1 + Bi-1 , B0=1 • Lösung dieser Rekursionsgleichung: Teilbaum auf Ebene i hat genau 2i Blätter → Bk = 2k Laufzeit? 23 24 4 Verkleinerung der Suchbaumgröße (A2) bei Fall 1: keine Verzweigung Fall 1: Falls ein Knoten v existiert mit deg(v)=1: Sei w sein Nachbar, dann: C := C ⋃ {w} keine Verzweigung bei Fall 2: da kein Grad-1 Knoten mehr existiert (wurden in Fall 1 behandelt) Bi = Bi-2 + Bi-2 Lösung: Bk = O(1,42k) Fall 2: Falls ein Knoten v existiert mit deg(v)=2: Sei N(v)={x,y}: dann erzeuge i. linker Teilbaum: C := C ⋃ {v} ⋃ N(x) ⋃ N(y) ii. rechter Teilbaum: C := C ⋃ {x,y} Bi = Bi-2 + Bi-2 Fall 3: Falls für alle Knoten v gilt: deg(v)≥3: i. linker Teilbaum: C := C ⋃ {v} ii. rechter Teilbaum: C := C ⋃ N(v) Bi = Bi-1 + Bi-3 bei Fall 3: Bi = Bi-1 + Bi-3 Lösung: Bk = O(1,47k) → Suchbaumgröße O(1,47k) Verzweigungs- Verzweigungs- Verzweigungs- Verzweigungsvektor zahl vektor zahl (1,1) 2,0000 (1,1,1) 3,0000 Bi = Bi-d1 + Bi-d2 + … + Bi-dr mit konstanten Werten für B0,…,Bj für ausreichend großes j. • 26 Verzweigungsvektoren und Lösungen Die Lösung eines Problems der Größe i wird zurückgeführt auf die Lösungen von Problemen der Größen i-d1,…,i-dr : • Wie kommt man auf die Lösungen Bk? 25 Analyse von allgemeinen Suchbäumen • Analyse von Suchbaum (A2) Konstruiere einen Suchbaum unter Beachtung folgender Fallunterscheidung CASES (Reihenfolge wichtig!): Der Verzweigungsvektor (d1,…,dr ) charakterisiert die Rekursionsgleichung eindeutig. Das Charakteristische Polynom: zd – zd-d1 – zd-d2 - … - zd-dr wobei d:=max{d1,…,dr}. In diesem Kontext besitzt das charakteristische Polynom immer eine Nullstelle mit maximalem Betrag, die einfach ist. Diese sei α. Es gilt: Bi = O(|α|i). α heißt Verzweigungszahl. 27 Bemerkungen zur Analyse (1,2) 1,6180 (1,1,2) 2,4142 (1,3) 1,4656 (1,1,3) 2,2056 (1,4) 1,3803 (1,1,4) 2,1069 (2,1) 1,6180 (1,2,1) 2,4142 (2,2) 1,4142 (1,2,2) 2,0000 (2,3) 1,3247 (1,2,3) 1,8929 (2,4) 1,2720 (1,2,4) 1,7549 Verzweigungszahlen für (A2) 28 Verkleinerung des Suchbaums (A3) Konstruiere einen Suchbaum unter Beachtung folgender Fallunterscheidung (CASES) (Reihenfolge wichtig!): • Bei mehreren Verzweigungsfälle in einem Suchbaum, wird der Worst Case Fall von der größten erhaltenen Verzweigungszahl angenommen. Fall 1: Falls ein Knoten v existiert mit deg(v)=1: Sei w sein Nachbar, dann: C := C ⋃ {w} • Daraus sieht man also: In der praktischen Anwendung kann der Suchbaum deutlich kleiner sein als die theoretische Worst Case Schranke. keine Verzweigung • Weitere Suchbaumverkleinerungen lassen sich oft durch Techniken wie Branch & Bound erhalten; jedoch sind diese meist nicht oder nur schwer analysierbar. Fall 2: Falls ein Knoten v existiert mit deg(v)=5, dann erzeuge i. linker Teilbaum: C := C ⋃ {v} ii. rechter Teilbaum: C := C ⋃ N(v) 29 Verzweigungsvektor: (1,5) 30 5 Verkleinerung des Suchbaums (A3) Verkleinerung des Suchbaums (A3) Fall 3: Falls ein Knoten v existiert mit deg(v)=2: Sei N(v)={x,y}: Fall 3.1: Falls (x,y)∈E, dann: C := C ⋃ N(v) keine Verzweigung Fall 3.2: Falls (x,y)∉E und N(x)=N(y)={v,w}, dann: C := C ⋃ {v,w} keine Verzweigung Fall 4: Falls ein Knoten v existiert mit deg(v)=3: Seien N(v)={x,y,z}: Fall 4.1: Falls eine Kante zwischen zwei Knoten in N(v) existiert, diese sei o.E. (x,y), dann erzeuge i. linker Teilbaum: C := C ⋃ N(v) ii. rechter Teilbaum: C := C ⋃ N(z) Verzweigungsvektor: (3,3) Fall 4.2: Es ex. gemeinsamer Nachbar u≠v zweier Nachbarn von v, o.E. sei (x,u),(y,u)∈E, dann: erzeuge i. linker Teilbaum: C := C ⋃ {x,y,z} ii. rechter Teilbaum: C := C ⋃ {v,u} Fall 3.3: Falls (x,y)∉E und |N(x)⋃N(y)|≥3, dann: erzeuge i. linker Teilbaum: C := C ⋃ N(v) ii. rechter Teilbaum: C := C ⋃ N(x) ⋃ N(y) Verzweigungsvektor: (2,3) 31 Verkleinerung des Suchbaums (A3) Verzweigungsvektor: (3,2) 32 Verkleinerung des Suchbaums (A3) Fall 4.4: Sonst, d.h. es gibt keine Kante zwischen Elementen aus N(v) und alle Elemente aus N(v) besitzen genau Grad 3, erzeuge i. linker Teilbaum: C := C ⋃ {x,y,z} ii. mittlerer Teilbaum: C := C ⋃ N(x) iii. rechter Teilbaum: C := C ⋃ N(y) ⋃ N(z) ⋃ N(x1) ⋃ N(x2) Fall 4.3: Es ex. keine Kante zwischen x,y,z und ein Knoten in N(v) hat Grad ≥4. o.E. sei dies x mit N(x)={v,x1,x2,x3}, dann erzeuge i. linker Teilbaum: C := C ⋃ N(v) ii. mittlerer Teilbaum: C := C ⋃ N(x) iii. rechter Teilbaum: C := C ⋃ {x} ⋃ N(y) ⋃ N(z) Verzweigungsvektor: (3,3,6) Verzweigungsvektor: (3,4,6) wg. |N(y) ⋃ N(z)|≥5 und x∈N(x1) Fall 5: Der Graph ist 4-regulär, d.h. jeder Knoten hat genau 4 Nachbarn. Sei v beliebig und erzeuge i. linker Teilbaum: C := C ⋃ {v} ii. rechter Teilbaum: C := C ⋃ N(v) 33 Analyse des Suchbaumverfahrens Verzweigungsvektor: (1,4) 34 Verzweigungsvektoren der Fallunterscheidung Fall Lemma: Das Suchbaumverfahren angewendet auf G=(V,E) mit dem Buss-Verfahren als Preprocessing ist korrekt und hat die Laufzeit O( k|V| + |E| + k2 1,342k ). 2 3.3 4.1 4.2 4.3 4.4 5 Korrektheit: • Nach Preprocessing hat der Graph O(k2) Knoten und Kanten; Laufzeit hierfür: O( k|V| + |E| ). • Jeder Suchbaumknoten kann mit O(k2) Zeitaufwand bearbeitet werden. • Die Größe des Suchbaums? Hierfür: Verzweigungszahlen der einzelnen Fälle: 35 Verzweigungs- Verzweigungsvektor zahl (1,5) 1,325 (2,3) 1,325 (3,3) 1,260 (3,2) 1,325 (3,4,6) 1,305 (3,3,6) 1,342 (1,4) 1,381 Fall 4.4 liefert den Worst Case mit Lösung O(1,342k). Fall 5 kommt nur 1x pro Zweig vor, deswegen nicht beachten.36 6 Bemerkungen zu Suchbaumverfahren für VC Nachtrag zur VO zu Fall 5: • Fall 5 kommt nur 1x pro Zweig in einem Suchbaum vor, deswegen nicht beachten. • Denn: Es kann zwar sein, dass der 4-reguläre Graph mehrere Zusammenhangskomponenten hat, aber diese können unabhängig voneinander gelöst werden: in diesem Fall starten also mehrere Teilsuchbäume. Obige Behauptung gilt. • • • Der andere Fall, dass von einer 4-regulären Komponente etwas abgetrennt wird, und diese danach wieder zu einem 4-regulären Teilgraph führt, kann nicht vorkommen. 37 Durch Verflechtungstechnik (ständiges Preprocessing im Suchbaum) kann die Laufzeit O(k|V|+|E|+1,342k) erreicht werden. Die besten derzeit bekannten parametrisierten Algorithmen für vertex cover erreichen eine Suchbaumgröße unter O(1,3k). Z.B. Algorithmus von – Downey, Fellows, Stege: O(kn+(1,31951)k k2): • theoretisch brauchbar bis k≤60, n beliebig • praktische Evaluierung: bis k≤200, n beliebig – Chen, Kanj, Jia: O( kn+(1,286)k ) • praktische Evaluierung: bis k≤400, n beliebig 38 Bemerkungen zu Suchbaumverfahren für VC • • • Suchbaumalgorithmen eignen sich sehr gut zur Parallelisierung. Die Laufzeiten sind meist überschätzt, deswegen lohnt sich fast immer eine Implementierung um die Qualität abzuschätzen. Typische FPT-Methoden sind: Kernelization und Suchbaumverkleinerung Ende FPT – Fragen? 39 7