VERTEX COVER - Chair 11: ALGORITHM ENGINEERING

Werbung
Ü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
Herunterladen