Effiziente Algorithmen und Komplexitätstheorie Vorlesung Thomas Jansen Ingo Wegener 22.05.2006 1 Aktuell Aktuell Raumänderung am 01.06.2006 (Donnerstag) im GB V, HS 113 Bitte nicht vergessen! 2 Approximationsalgorithmen Algorithmus Güte O(1) Laufzeit p(|I |) Name Approximationsalgorithmus Klasse APX Güte Laufzeit Name 1+ε p(|I |) PTAS PTAS Güte Laufzeit Name 1+ε p(|I |, 1/ε) FPTAS FPTAS APX PTAS FPTAS P 3 TSP approximieren Problem TSP Eingabe N ∈ N, C : {1, . . . , N}2 → N ∪ {∞} Ausgabe Permutation π von {1, . . . , N} mit N−1 P c(π(i), π(i + 1)) + c(π(N), π(1)) minimal i=1 Problem metrisches TSP wie TSP, zusätzlich I symmetrisch: ∀i, j : c(i, j) = c(j, i) I Dreiecksungleichung: ∀i, j, k : c(i, k) ≤ c(i, j) + c(j, k) Problem Euklidisches TSP Eingabe x1 , . . . , xN ∈ R2 Ausgabe Permutation π von {1, . . . , N} mit N−1 P c(xπ(i) , xπ(i+1) ) + c(xπ(N) , xπ(1) ) minimal i=1 p dabei c(xi , xj ) := (xi [1] − xj [1])2 + (xi [2] − xj [2])2 4 Metrisches TSP approximieren Begriffe I Multigraph Kanten dürfen mehrfach vorkommen I Eulerkreis enthält jede Kante genau einmal Lemma 142 Ein Multigraph enthält genau dann einen Eulerkreis, wenn er zusammenhängend ist und jeder Knoten geraden Grad hat. Beweis. Eulerkreis ⇒ zusammenhängend und gerader Grad“ ” Eulerkreis ist Kreis durch ganz G zusammenhängend Durchlaufe Eulerkreis und notiere jeden Knoten. je Knoten zwei Kanten (einmal betreten, einmal verlassen) √ also jeder Knoten geraden Grad 5 Beweis von Lemma 142 zusammenhängend und jeder Knoten geraden Grad ⇒ Eulerkreis“ ” Induktion über |E |: √ I.-A.: m = 2 (dann auch n = 2) I.-S.: Konstruiere einen einfachen Kreis mit Kantenmenge K in G . Voraussetzungen sichern, dass das geht GK = (V , E \ K ) zerfällt in ZHK C1 , . . . , Ck jede Ci ist zusammenhängend und enthält nur Knoten geraden Grads I.-V. ⇒ ∀Ci : ∃Eulerkreis Ei da G zusammenhängend, hat K Knoten in jedem Ei Zusammenfügen Eulerkreis für G 6 Metrisches TSP mit MST und EK approximieren Algorithmus 143 1. 2. 3. 4. Berechne Berechne Berechne Berechne einen MST S auf G . einen Multigraphen G 0 durch Verdopplung von S. einen Eulerkreis K auf G 0 . eine Tour T aus K durch Streichen von Knoten. Theorem 144 Algorithmus 143 ist ein 2-Approximationsalgorithmus für das metrische TSP mit Laufzeit O(n2 ). Beweis: Laufzeit: dominiert durch MST-Berechnung (Algorithmus von Prim) Güte: OPT(G ) ≥ w (S), da Tour − Kante = Spannbaum also w (K ) ≤ 2OPT(G ) klar w (A(G )) = w (T ) ≤ w (K ) wegen Dreiecksungleichung A(G ) also zusammen OPT(G ) ≤2 7 Beispiel Graph G , N = 8, Kantengewicht = Abstände MST Tour aus Eulerkreis optimale Tour Länge ≈ 24,3 Länge ≈ 23,1 8 Noch ein Beispiel Graph G , N = 17, Kantengewicht = Abstände MST Tour aus Eulerkreis optimale Tour Länge 16 · 1, 25 + 8 · 1, 5 = 32 Länge 8 · 1,5 + 7 · 1,5 + 2 · 1,25 = 25 9 Metrisches TSP besser approximieren Wie können wir Güte < 2 hinbekommen? Wo kommt der Faktor 2 her? Verdopplung aller Kanten im MST Warum machen wir das? brauche geraden Grad aller Knoten für EK-Konstruktion Muss man dazu alle Kanten verdoppeln? Nein! Knoten ungeraden Grads behandeln genügt Idee Verbinde Knoten ungeraden Grades paarweise möglichst billig Berechne kostenminimales Matching zwischen solchen Knoten. 10 Der Algorithmus von Christofides 1. Berechne einen MST S auf G . 2. Berechne M := {v | v hat ungeraden Grad in S} 3. Berechne auf M ein kostenminimales Matching Mmin mit |Mmin | = |M|/2. 4. Berechne Multigraphen G 0 := S ∪ Mmin . 5. Berechne einen Eulerkreis K auf G 0 . 6. Berechne eine Tour T aus K durch Streichen von Knoten. Beobachtungen P I deg(v ) gerade v ∈V I also |M| gerade und |M|/2 ∈ N 11 Analyse des Algorithmus von Christofides Theorem 145 Der Algorithmus von Christofides hat Laufzeit O(n3 ) und ist ein (3/2)-Approximationsalgorithmus für das metrische TSP. Beweis. Laufzeit: I Berechnung MST: O(n2 log n) I Berechnung M: O(n) I Berechnung kostenminimales Matching O(n3 ) I Berechnung G 0 : O(n) I Berechnung EK: O(n) I Berechnung Tour: O(n) Güte: w (A(G )) ≤ w (K ) = w (S) + w (Mmin ) ≤ OPT(G ) + w (Mmin ) zu zeigen w (Mmin ) ≤ OPT(G )/2 12 Beweis von Theorem 145 zu zeigen w (Mmin ) ≤ OPT(G )/2 Sei |M| = 2k natürlich 2k ≤ n Notation Knoten {v1 , . . . , v2k } = M kommen in Reihenfolge v1 , v2 , . . . , v2k in opt. Tour vor. Betrachte Kreis K 0 := v1 , v2 , . . . , v2k , v1 . klar w (K 0 ) ≤ OPT(G ) Beobachtung K 0 enthält zwei Matchings: M1 := (v1 , v2 ), (v3 , v4 ), . . . , (v2k−1 , v2k ) und M2 := (v2 , v3 ), (v4 , v5 ), . . . , (v2k , v1 ) klar min{w (M1 ), w (M2 )} ≤ OPT(G )/2 natürlich w (Mmin ) ≤ min{w (M1 ), w (M2 )} 13 Über approximatives Lösen des TSP Anmerkungen: I unsere Beispiele werden durch Christofides nicht besser: jeweils nur zwei Knoten mit ungeradem Grad I Beispielgraph: Güte 3/2 für Christofides asymptotisch exakt I bessere Approximation für metrisches TSP nicht bekannt I Approximationsalgorithmus mit vermuteter Güte 4/3 bekannt I bekannt Es gibt kein PTAS fürs metrische TSP, wenn P6=NP I bekannt allgemeines TSP ∈ / APX, wenn P6=NP (siehe Übung) I für bessere Approximation weitere Einschränkung erforderlich 14 Euklidisches TSP Eingabe n Punkte x1p , . . . , xn ∈ R 2 Distanzen c(xi , xj ) := (xi [1] − xj [1])2 + (xi [2] − xj [2])2 Rechnen mit reellen Zahlen? Lösungsansätze I I real RAM“: Operationen mit reellen Zahlen ” Koordinaten und Distanzen auf 2 log n Stellen gerundet als Eingabe Theorem 146 Für das euklidische TSP gibt es ein PTAS, das für jedes ε > 0 eine (1 + ε)-Approximation randomisiert in Zeit O n(log n)O(1/ε) berechnet mit Wahrscheinlichkeit mindestens 1/2. 15 Beweisideen für Theorem 146 I I I Vorbereitung: Diskretisierung und Normierung der Eingabe zentral: Konstruktion zufällig verschobener Quadtree Berechnung: dynamische Programmierung 16 Vorbereitung: Diskretisierung und Normierung 1. Betrachte kleinstes, achsenparalleles Quadrat um Eingabe Seitenlänge L 2. Betrachte Gitter mit Gitterabstand (εL)/(8n). 3. Verschiebe Punkte auf nächsten Gitterpunkt. 4. Dividiere Distanzen durch (εL)/(64n) Beobachtungen I I I I I I I OPT > L Verschiebung ändert Tourkosten um ≤ 2n(εL)/(8n) OPT um ≤ 2n(εL)/(8n) < εOPT/4 geändert nach Division alle Koordinaten ganzzahlig nach Division kleinster positiver Abstand 8 nach Division L = O(n) (1 + (3/4)ε)-Approximation reicht aus 17 Zerlegung und Quadtree Zergliederung Quadtree zergliedere bis Größe 1 (≤ 1 Punkt) kann weniger Knoten haben interpretiere als 4-ärer Baum O(n) Blätter, Tiefe O(log L) 2 O(n log L) Knoten Größe O(L ), Tiefe O(log L) 18 Wappnen gegen Worst Case Eingaben a, b ∈ {0, 1, 2, . . . , dLe − 1} zufällig wählen (a, b)-Verschiebung einer Zergliederung: Verschiebe (x, y ) (x + a mod L, y + b mod L). TSP-Punkte nicht verschieben! (a, b)-Verschiebung eines Quadtrees aus (a, b)-Verschiebung der Zerglierdung 19 Portale Definition 147. Seien m, r ∈ N. I I I Eine m-reguläre Menge von Portalen für eine (a, b)-verschobene Zergliederung ist eine Menge von Punkten, jeweils einen in jeder Ecke eines Quadrats und m weitere äquidistant auf jeder Kante. Ein TSP-Pfad besucht jeden Eingabepunkt x1 , . . . , xn und einige Portale; Portale dürfen mehrfach benutzt werden. Ein TSP-Pfad heißt (m, r )-leicht für eine (a, b)-verschobene Zergliederung, wenn jede Kante jedes Quadrats höchstens r Mal gekreuzt wird und dies ausschließlich an Portalen. Anmerkungen I Weg von xi zu xj durch Portal kann länger sein als direkte Verbindung von xi zu xj ; Weg gebogen“ an Portal ” I o. B. d. A. kein Punkt auf Kante (sonst Skalieren um Faktor 2, Kanten gerade Koordinaten, Punkte ungerade Koordinaten) I vor Ausgabe: gebogene“ Wege begradigen 20 Strukturtheorem Theorem 148 Sei ε > 0 konstant. Sei der kleinste positive Abstand zwischen Punkten der TSP-Eingabe 8, sei L die Seitenlänge des kleinsten einschließenden Quadrats. Seien a, b ∈ {0, . . . , L} uniform zufällig gewählt. Mit Wahrscheinlichkeit mindestens 1/2 gibt es einen für die (a, b)-Verschiebung der Zergliederung (m, r )-leichten TSP-Pfad mit Länge ≤ (1 + ε)OPT, dabei ist m = O(ε−1 log L) und r = O(ε−1 ). Beweis: später jetzt Algorithmus unter Annahme, das Strukturtheorem korrekt 21 Algorithmus von Arora 1. Diskretisiere und normiere die Eingabe. 2. Wähle a, b ∈ {0, . . . , L} gemäß Gleichverteilung. 3. Konstruiere die (a, b)-Verschiebung des zugehörigen Quadtress mit Größe T . 4. Berechne mit dynamischer Programmierung für ein m = O(ε−1 log n) und ein r = O(ε−1 ) einen optimalen (m, r )-leichten TSP-Pfad dazu in Zeit O(T · mO(r ) ). Beobachtungen I Schritte 1–3 einfach I T = O(#Blätter · Tiefe) = O(n log n) I Konstruktion in Zeit O(n log2 n) möglich I Erfolgswahrscheinlichkeit ≥ 1/2 (Strukturtheorem) 22 Konstruktion eines optimalen (m, r )-leichten TSP-Pfades Beobachtung Sei Q ein Quadrat in der (a, b)-Verschiebung des Quadtree. Optimaler (m, r )-leichter TSP-Pfad P kreuze die Kanten von Q 2p ≤ 4r mal und zwar an den Portalen a1 , a2 , . . . , a2p in dieser Reihenfolge. Dann zerfällt P in Q in eine Folge von p Teilpfaden, wobei der i-te Teilpfad I die Portale a2i−1 und a2i verbindet, I die p Teilpfade gemeinsam alle Punkte in Q besuchen und I die p Teilpfade gemeinsam (m, r )-leicht sind. Kosten(P) minimal ⇔ ∀ Teilpfade: Kosten minimal unter allen solchen Pfaden Idee Nutze das für die Konstruktion bottom-up. 23 Ein (m, r )-Multipfad-Problem Eingabe (1) nicht-leeres Quadrat Q in der (a, b)-Verschiebung des Quadtrees (2) Multi-Menge von ≤ r Portalen für jede Kante von Q mit ingesamt 2p ≤ 4r Portalen (3) Paarung aller Portale {a1 , a2 }, {a3 , a4 }, . . . , {a2p−1 , a2p }. Ausgabe kostenminimale Folge von p Pfade, so dass (1) die Folge (m, r )-leicht ist, (2) der i-te Pfade a2i−1 und a2i verbindet und (3) zusammen jeder Punkt in Q besucht wird Wir werden alle (m, r )-Multipfad-Probleme bottom-up lösen. Anzahl = O( T |{z} Anzahl Quadrate · (m + 4)4r | {z } #Möglichkeiten Portale · (4r )! | {z } ) #Paarungen Beobachtung Problem für Q = Wurzel des Quadtrees und p = 0 ist Gesamtlösung 24 Lösung des (m, r )-Multipfad-Problems bottom-up im Quadtree: Q ist Blatt ≤ 1 Punkt und O(r ) Portale enthalten Lösen in Zeit O(r ): probiere Punkt in jedem der r Pfade Q hat Tiefe i alle tieferen Q 0 gelöst Betrachte Nachfolger Q1 , Q2 , Q3 , Q4 von Q im Baum. Betrachte alle Möglichkeiten, wie ein (m, r )-leichter Multipfad die Kanten von Q1 , . . . , Q4 kreuzen kann, also I Multimengen von ≤ r Portalen auf inneren Kanten der Nachfolger (#Möglichkeiten = ((m + 4)r )4 ) und I Reihenfolgen, in der die Portale benutzt werden (#Möglichkeiten = (4r )4r ·(4r )!). | {z } Zuordnung der Portale zu Pfaden Addieren der Kosten der optimal gelösten Teilprobleme optimale Lösung Laufzeit O T · (m + 4)8r · (4r )4r · ((4r )!)2 = O n(log n)O(1/ε) 25 Für den Beweis des Strukturtheorems Lemma 149 (Patching Lemma) Es gibt eine Konstante g > 0, so dass Folgendes richtig ist. Betrachte einen Geradenabschnitt S mit Länge s und einen geschlossenen Pfad π, der S mindestens dreimal schneidet. Es gibt Geradenabschnitte in S mit Gesamtlänge ≤ g · s, die man zu π hinzufügen kann, so dass ein geschlossener Pfad π 0 entsteht, der S höchstens zweimal schneidet. Beweisideen: Seien M1 , . . . , Mt die Schnittpunkte von π und S (t ≥ 3). π zerfällt an Schnittpunkten in P1 , P2 , . . . , Pt . Füge an jeder Seite von S eine Tour durch Schnittpunkte und ein Matching der Schnittpunkte hinzu. Resultat hat Eulerkreis, der S höchstens zweimal schneidet. 26 Beweis des Patchinglemmas P1 P3 S P5 P2 P1 P4 P3 S beweist g = 6 reicht aus P2 P4 P5 27 Tourlänge und Schnittpunkte Lemma 150 Betrachte Einheitsgitter über umschließendem Rechteck, minimaler positiver Abstand zwischen Punkten ist 4. Sei π eine Tour mit Länge T , sei l eine Gitterlinie, sei t(π, l) Anzahl der Schnittpunkte von π und l. X X t(π, l) + t(π, i) ≤ 2T l vertikal l horizontal Beweis. Betrachte Kante aus π mit Länge s und ihre Projektionen mit Längen u und v . xj Beitrag von s ≤ (u + 1) + (v + 1) s 2 = u2 + v 2 s u u + v ≤ p2(u 2 + v 2 ) p also Beitrag ≤ u + v + 2 ≤ 2(u 2 + v 2 ) + 2 xi √ v 2 ≤ √2s + 2 s ≥ 4 ⇒ 2s 2 + 2 ≤ 2s 28 Beweis des Strukturtheorems Strukturtheorem: Sei ε > 0 konstant. Sei der kleinste positive Abstand zwischen Punkten der TSP-Eingabe 8, sei L die Seitenlänge des kleinsten einschließenden Quadrats. Seien a, b ∈ {0, . . . , L} uniform zufällig gewählt. Mit Wahrscheinlichkeit mindestens 1/2 gibt es einen für die (a, b)-Verschiebung der Zergliederung (m, r )-leichten TSP-Pfad mit Länge ≤ (1 + ε)OPT, dabei ist m = O(ε−1 log L) und r = O(ε−1 ). Beweis: s := 12g /ε (g aus Patching-Lemma), r := s + 4, m ≥ 2s log L Verschiebung (a, b) zufällig gewählt, π optimale Tour Beweisidee: (1) (2) (3) (4) determ. π (m, r )-leichter TSP-Pfad für Analyse gedanklich Einheitsgitter betrachten Mehrkosten der Tour auf Gitterlinien umlegen erwarteten Anstieg je Gitterlinie nach oben beschränken 29 Nachrechnen der Approximationsgüte Wir werden zeigen E (Kosten für l) ≤ 3gt(π,l) s also E (Anstieg) ≤ X 3g · t(π, l) + s l vertikal Lemma 150 ≤ 6g · OPT s s=12g /ε = Markov-Ungleichung: Prob Anstieg ≥ 2 · X l horizontal 3g · t(π, l) s εOPT 2 εOPT 2 ≤ 1 2 also Prob (Länge opt. (m, r )-leichter TSP-Pfad ≤ (1 + ε)OPT) ≥ 1 2 30 Sprachregelungen und Notation o. B. d. A. L = 2l mit l ∈ N also alle Zergliederungslinien auf Gitterlinien, auch verschoben Quadrate haben Level nach ihrer Position im Quadtree, Wurzel hat Level 0 Definition Gitterlinie l hat Level i, wenn Quadratkante von Quadrat mit Level i enthalten Anmerkung Gitterlinien können mehrere Level haben Es gibt 2i vertikale und 2i horizontale Linien mit Level i. Koordinaten vertikaler Linien: a + p · 2Li , p ∈ {0, 1, . . . , 2i − 1} Koordinaten horizontaler Linien: a + p · 2Li , p ∈ {0, 1, . . . , 2i − 1} Definition maximales Level von Linie l ist max{i | l hat Level i} klar Prob (horizontales l hat Level i) = i Prob (vertikales l hat Level i) = 2L 2i L 31 Modifikation der optimalen Tour Erinnerung: Ein TSP-Pfad heißt (m, r )-leicht, wenn jede Kante jedes Quadrats höchstens r Mal gekreuzt wird und dies ausschließlich an Portalen. Modify(l, i, b) für vertikale Linien l vertikale Gitterlinie i maximales Level von l b vertikale Verschiebung Für alle j = log L, (log L) − 1, . . . , i: Für alle p = 0, 1, . . . , 2j − 1: Falls π und l zwischen b + p · 2Lj mod L und und b + (p + 1) · 2Lj mod L mehr als s Schnitte haben Verkleinere Anzahl Schnitte mit Patching-Lemma auf 4 Anmerkungen I für horizontale Gitterlinien analog I Schnittzahl nachher 4 (nicht 2!) wegen geteilten“ Quadraten ” I Reihenfolge von log L absteigend) wesentlich 32 Analyse von Modify cl,j (b) := #l-Abschnitte mit Patching-Lemma-Anwendung bei j Beobachtung Patching-Lemma-Anwendung ersetzt ≥ s + 1 Schnitte mit ≤ 4 klar initial t(π, l) Schnitte also cl,j (b) ≤ t(π,l) s−3 Kostenzunahme durch Modify(l, i, b) ≤ P j≥i cl,j (b) · g · L 2j Diese Kosten rechnen wir l an. klar Prob (Kosten fallen an) = Prob (i ist maximales Level von l) = 2i L 33 Analyse von Modify (Fortsetzung) E (Kosten von l) X = Prob (Kosten für Modify(l, i, b) fallen an) · Kosten dadurch i≥1 ≤ X 2i X X X cl,j (b) L 2i · · cl,j (b) · g · j = g · L 2 2j i≥1 i≥1 j≥i j≥i X cl,j (b) X X 2g · t(π, l) = g· · 2i ≤ g · 2cl,j (b) ≤ j 2 s −3 j≥1 i≤j j≥1 Fehlt noch etwas? Mehrkosten durch Portalbenutzung nicht berücksichtigt 34 Mehrkosten durch Portalbenutzung Beobachtung Umweg zum nächstgelegenen Portal ≤ L 2i m also E (Mehrkosten durch Portalbenutzung) log PL 2i t(π,l) log L L ≤ L · t(π, l) · 2i m = m i=1 m ≥ 2s log L, also E (Mehrkosten durch Portalbenutzung) ≤ also E (Gesamtmehrkosten) ≤ 2g ·t(π,l) s−3 + t(π,l) 2s t(π,l) 2s ≤ 3g ·t(π,l) s 35 Nachbetrachtung euklidisches TSP I haben PTAS für euklidisches TSP mit Laufzeit O(n(log n)O(1/ε) ) I nicht übermäßig praktikabel I Verbesserung auf O(n log n + n2poly(1/ε) ) bekannt I auch nicht übermäßig praktikabel Geht es noch schneller? schnellere PTAS und bessere Implementierungen: gut denkbar kein FPTAS, wenn P6=NP 36