Kapitel 8 Graphalgorithmen – Kürzeste Wege: All-pairs shortest paths – Minimale Spannbäume 396 Kapitel 8.1 All-pairs shortest paths (APSP) Definition: APSP Geg.: Adjazenzmatrix eines ungerichteten, zusammenhängenden Graphen G = (V , E) Ges.: Darstellung der kürzesten Wege zwischen allen Knotenpaaren (v , w), v 6= w , aus G Bemerkung: – G ungewichtet, d.h. alle Kanten in G haben Gewicht 1 3 – bekannt aus DAP2, Algorithmus mit Laufzeit O |V | (Dynamische Programmierung) 397 Definition: All-pairs distance APD Geg.: Adjazenzmatrix eines ungerichteten, zusammenhängenden Graphen G = (V , E) Ges.: Distanz der kürzesten Wege zwischen allen Knotenpaaren (v , w), v 6= w , aus G Ziel: Las Vegas Algorithmus für APSP mit erwarteter Laufzeit Coppersmith, Winograd (1990) O M(|V |) log2 |V | 2,376 O |V | Laufzeit für Matrixmultiplikation zweier Matrizen der Dimension |V | × |V | 398 Definition: Zeugen boolescher Matrixmultiplikation (boolean product witness matrix BPWM) Geg.: 2 boolesche Matrizen A, B Ges.: Zeugenmatrix W für boolesches Matrixprodukt A · B, d.h. für aik = 1 und bk j = 1 ist k möglicher Eintrag für wij . enthält Zeugen, der belegt, dass an Pos (ij) im Produkt A · B eine 1 stehen muss Jetzt: • det. Algorithmus für APD mit Laufzeit O (M(|V |) log |V |) • Las Vegas Algorithmus für BPWM mit erwarteter Laufzeit O M(|V |) log2 |V | Las Vegas Algorith mus für APSP mit erwarteter Laufzeit 2 O M(|V |) log |V | 399 Definition: Sei A die Adjazenzmatrix von G. Mit A∗ bezeichnen wir (hier) die Adjazenzmatrix von G∗ , der für alle Knoten v 6=w eine Kante enthält, wenn v und w in G Abstand höchstens 2 zueinander haben. Mit D bezeichnen wir die Distanzmatrix von G, d.h. D[i, j] =: dij gibt die Distanz von Knoten i zu Knoten j in G an. D ∗ bezeichne die Distanzmatrix für G∗ . APD fragt nach D. Erinnerung: Durchmesser eines Graphen ist Maximum der Distanzen über alle Knotenpaare 400 Beispiel: 2 3 1 7 5 4 G 6 Distanzmatrix D 1 2 3 4 1 0 1 2 2 2 1 0 1 1 3 2 1 0 2 4 2 1 2 0 5 3 2 1 1 6 4 3 2 2 7 3 2 1 3 5 3 2 1 1 0 1 2 6 4 3 2 2 1 0 1 Adjazenzmatrix A 1 2 3 4 1 0 1 0 0 2 1 0 1 1 3 0 1 0 0 4 0 1 0 0 5 0 0 1 1 6 0 0 0 0 7 0 0 1 0 5 0 0 1 1 0 1 0 6 0 0 0 0 1 0 1 7 0 0 1 0 0 1 0 7 3 2 1 3 2 1 0 401 Beispiel: 2 3 1 4 7 5 G∗ Adjazenzmatrix A∗ 1 2 3 4 5 1 0 1 1 1 0 2 1 0 1 1 1 3 1 1 0 1 1 4 1 1 1 0 1 5 0 1 1 1 0 6 0 0 1 1 1 7 0 1 1 0 1 6 0 0 1 1 1 0 1 7 0 1 1 0 1 1 0 Distanzmatrix D ∗ 1 2 3 4 1 0 1 1 1 2 1 0 1 1 3 1 1 0 1 4 1 1 1 0 5 2 1 1 1 6 2 2 1 1 7 2 1 1 2 6 2 2 1 1 1 0 1 7 2 1 1 2 1 1 0 6 5 2 1 1 1 0 1 1 402 Bestimmung von A∗ aus A und A2 : • Berechne A+A2 . • Trage im Ergebnis auf Hauptdiagonalen 0en ein. • Ersetze alle Zahlen in Ergebnismatrix, die größer als 1 sind, durch 1. Laufzeit: O (M(|V |)) 403 Lemma: Der Durchmesser eines Graphen G ist höchstens 2 gdw. G∗ der vollständige Graph ist. Ist G∗ der vollständige Graph, dann gilt D = 2A∗ − A. Beweis: ⇒ Je 2 Knoten durch Kante in G∗ verbunden. ⇐ Kante in G∗ = ˆ Kante existiert bereits in G oder beteiligte Knoten haben in G Abstand höchstens 2 Beobachtung: 2A∗ enthält auf Hauptdiagonalen 0en, überall sonst 2en Distanz zwischen 2 Knoten ist 2, wenn es keine Kante zwischen den beiden gibt. 1 sonst. Entspricht genau D = 2A∗ − A 404 Ziel: rekursiver Algorithmus zur Bestimmung von D Lemma 1: Seien i 6= j Knoten aus G. Es gilt: a) dij gerade ⇒ dij = 2dij∗ b) dij ungerade ⇒ dij = 2dij∗ − 1 c) dij /2 ≤ dij∗ ≤ (dij + 1)/2 Beweis: a ⇒c b 405 Beweis (Fortsetzung): a) Betrachte einen kürzesten Weg von i nach j in G: i = v1 , ..., vr = j ungerade, da Weglänge gerade In G∗ : i = v1 , v3 , ..., vr = j Distanz zwischen i und j in G∗ höchstens dij /2 Betrachte Weg von i nach j in G∗ : jede Kante des Weges durch höchstens 2 Kanten in G ersetzbar dij ≤ 2dij∗ b) analog 406 Also: Paritäten von dij und D ∗ bekannt D bekannt Frage: Wie können Paritäten der dij -Werte bestimmt werden, ohne dass die dij -Werte bekannt sind? Beobachtung: Für alle Nachbarknoten k von i gilt: (i 6= j beliebig, jedoch fest) dij − 1 ≤ dkj ≤ dij + 1 j k i k j i Es existiert Nachbarknoten k von i mit dkj = dij − 1. 407 Lemma 2: Seien i 6= j Knoten aus G. a) dij gerade ⇒ dkj∗ ≥ dij∗ für alle Nachbarknoten k von i b) dij ungerade ⇒ dkj∗ ≤ dij∗ für alle Nachbarknoten k von i und es gibt einen Nachbarknoten k von i, für den dkj∗ < dij∗ ist 408 Lemma 2: Seien i 6= j Knoten aus G. a) dij gerade ⇒ dkj∗ ≥ dij∗ für alle Nachbarknoten k von i b) dij ungerade ⇒ dkj∗ ≤ dij∗ für alle Nachbarknoten k von i und es gibt einen Nachbarknoten k von i, für den dkj∗ < dij∗ ist Beweis: a) Sei dij = 2x für x ∈ N. Lemma 1, a) dij∗ = x i und k Nachbarknoten dkj ∈ {2x − 1, 2x, 2x + 1} dkj∗ ∈ {x, x, x + 1} = {x, x + 1} dij∗ = x ≤ dkj∗ 408 Lemma 2: Seien i 6= j Knoten aus G. a) dij gerade ⇒ dkj∗ ≥ dij∗ für alle Nachbarknoten k von i b) dij ungerade ⇒ dkj∗ ≤ dij∗ für alle Nachbarknoten k von i und es gibt einen Nachbarknoten k von i, für den dkj∗ < dij∗ ist Beweis: b) Sei dij = 2x + 1 für x ∈ N. Lemma 1, b) dij∗ = x + 1 i und k Nachbarknoten k∗ i dkj ∈ {2x, 2x + 1, 2x + 2} dkj∗ ∈ {x, x + 1, x + 1} = {x, x + 1} dij∗ = x + 1 ≥ dkj∗ j kürzester Weg von i nach j dk ∗ j = 2x dk∗∗ j = x < dij∗ 408 Satz: dij gerade ⇔ P dkj∗ ≥ |ΓG (i)| · dij∗ k ∈ΓG (i) Menge der Nachbarknoten von i in G Beweis: Folgt aus Lemma 2 durch Aufsummieren der Abstandswerte aller Nachbarknoten von i. Beobachtung: P dkj∗ für alle i, j Durch eine Matrixmultiplikation k ∈ΓG (i) gleichzeitig berechenbar. Sei S = A · D ∗ . |V | P P aik · dkj∗ = sij . dkj∗ = Es gilt k ∈ΓG (i) k =1 409 Algorithmus: APD 1) Berechne Z = A2 und A∗ = A + Z . Setze die Hauptdiagonale von A∗ auf 0 und Einträge größer als 1 auf 1. 2) Falls a∗ij = 1 für alle i 6= j, return 2A∗ − A. < G∗ ist vollständiger Graph.> 3) Berechne D ∗ := APD(A∗ ) 4) Berechne S = A · D ∗ 5) Konstruiere D wie folgt: falls sij ≥ dij∗ · zii 2dij∗ dij = 2dij∗ − 1 falls sij < dij∗ · zii 6) return D 410 Beobachtung: zii = ˆ Grad von Knoten i zii = |ΓG (i)| Satz: Algorithmus APD berechnet Distanzmatrix eines zusammenhängenden, ungerichteten Graphen, in dem jede Kante Gewicht 1 hat, in Laufzeit O (M(|V |) log |V |) Beweis: Graph G zusammenhängend Durchmesser dm(G) höchstens |V | − 1 dm(G∗ ) ≤ ⌈dm(G)/2⌉ Laufzeit T (|V |, dm) ≤ T (|V |,⌈dm/2⌉) + cM(|V |), c>0 2 sowie T (|V |, 2) = O |V | = O (M(|V |)) 411 Nächstes Ziel:Algorithmus für BPWM mit erwarteter Laufzeit O M(n) log2 n für Matrizen der Dimension n × n Geg.: 2 boolesche Matrizen A und B der Dimension n × n Sei P = A · B ihr boolesches Matrizenprodukt. Definition: Ein Zeuge für pij ist ein Index k ∈ {1, ..., n} mit aik = bkj = 1. Eine Zeugenmatrix W für eine boolesche Produktmatrix P enthält für alle i, j einen Zeugen k für pij , wenn dieser existiert, ansonsten gilt wij = 0. Ges.: Zeugenmatrix W bzgl. A und B Beobachtung: C = A · B (ganzzahlige Matrizenmultiplikation) enthält #Zeugen für P 412 Beobachtung: • Für jeden Eintrag in P gibt es höchstens n Zeugen. 3 Laufzeit O n für BPMW Durchprobieren • A = B und A Adjazenzmatrix von G pij = 1, wenn Pfad der Länge 2 von Knoten i zum Knoten j existiert Zeuge k für pij = ˆ Knoten auf Pfad der Länge 2 von Knoten i zum Knoten j k i j Zeuge für pij cij enthält #Zeugen für pij Oft: cij > 1 Zunächst: Lösung für cij = 1, d.h. eindeutiger Zeuge für pij 413 Annahme: alle Zeugen sind eindeutig für P = A · B Â mit âik = k · aik für alle i und k A W = Â · B Denn: aik = 1 und bk j = 1 und für alle l 6= k : ail = 0 oder blj = 0 wij = k · aik · bk j =k aik = 1 und bk j = 1 k Zeuge für pij k Zeuge für pij wij = k Problem: im Allgemeinen Zeugen nicht eindeutig 414 Idee: Randomisierung einsetzen, um für ausreichend große Anzahl von Einträgen in P eindeutige Zeugen zu erhalten • Betrachte pij Sei w #Zeugen für pij . Annahme w ≥ 2 (sonst Zeuge für pij eindeutig, wenn er existiert) • Sei r ∈ N mit n/2 ≤ w · r ≤ n • Behauptung: Wähle zufällig gleichverteilt eine Menge R ⊆ {1, ..., n} mit Kardinalität r . Mit großer“ Wkeit enthält R genau einen Zeugen für pij . ” 415 Lemma: Eine Urne enthält n Bälle, von denen w weiß und n − w schwarz sind. Es werden zufällig gleichverteilt r Bälle gezogen (ohne Zurücklegen), wobei gilt: n/2 ≤ w · r ≤ n. Die Wkeit, dass genau ein weißer Ball gezogen worden ist, ist mindestens 21e . 416 • Annahme: R enthält genau einen Zeugen für pij • R dargestellt als Vektor der Länge n mit Rk = 1 ⇔ k ∈ R (Rk = 0 sonst) • A B AR mit aRik = kRk aik B R mit bkjR = Rk bkj • Betrachte AR · B R . Beobachtung: Spalten l in AR und Zeilen l ′ in B R mit l, l ′ ∈ / R enthalten nur 0en. • Behauptung: Existiert eindeutiger Zeuge für pij in R, steht dieser an Position (i, j) des Produktes AR · B R . 417 (Voraus.: pij hat eindeutigen Zeugen) Beweis: • k eindeutiger Zeuge für pij in R aRik = k und bkj = 1 und für alle l 6= k : aRil = 0 oder bljR = 0 ganzzahliges Matrixprodukt AR · B R enthält an Position (i, j) k • An Position (i, j) in AR B R steht k aRik = k und bkj = 1 aik = 1 und bkj = 1 k eindeutiger Zeuge für pij 418 Beobachtung: AR · B R enthält für alle pij , die genau einen Zeugen in R haben, diesen Zeugen an Position (i, j). • Zufällig gleichverteilt gewählte Menge R mit r Elementen enthält mit konstanter Wkeit genau einen Zeugen für pij , wenn #Zeugen für pij zwischen n/2 · 1/r und n · 1/r liegt. • O (log n) zufällig unabhängige Wiederholungen für Wahl von R Wkeit, dass für ein pij mit Zeugenanzahl zwischen n/2 · 1/r und n · 1/r in keiner Runde genau ein Zeuge ausgewählt wird, höchstens 1/n 419 • Verschiedene Werte für #Zeugen berücksichtigen: vollständige Abdeckung “ der Werte für #Zeugen, wenn ” r alle Werte 2t für t = 0, ..., ⌊log n⌋ durchläuft n 16 ··· n 8 n 4 n 2 n 420 Algorithmus: BPWM Eingabe: 2 boolesche n × n Matrizen A und B Ausgabe: Zeugenmatrix W für boolesche Matrix P = A · B 1) W ← −A · B 2) for t = 0, ..., ⌊log n⌋ do 2.1) r ← 2t 2.2) repeat ⌈3, 77 log n⌉ mal 2.2.1) Wähle zufällig gleichverteilt R ⊆ {1, ..., n} mit | R |= r . 2.2.2) Berechne AR und B R . 2.2.3) Z ← AR B R 2.2.4) Für alle (i, j) do if wij < 0 and zij ist Zeuge für pij then wij ← zij 3) Für alle (i, j) do if wij < 0 then suche Zeuge für wij durch Durchprobieren aller Möglichkeiten 421 Satz: Algorithmus BPMW ist ein Las Vegas Algorithmus für das Problem BPMW, der erwartete Laufzeit O M(n) log2 n hat. Beweis: • Es werden nur Zeugen für Positionen (i, j) gesucht, für die Zeugen existieren. • Durchprobieren in Schritt 3 sichert, dass für alle pij > 0 Zeuge gefunden wird. Laufzeit: Schritt 1 O (M(n)) Schritt 2 O M(n) log2 n 422 Beweis (Fortsetzung): Schritt 3 Wkeit, dass für pij > 0 kein Zeuge in Schritt 2 gefunden wird, höchstens 1/n erwartete Anzahl von Positionen (i, j) mit pij > 0, für die in Schritt 2 kein Zeuge gefunden wird, höchstens 1/n · n2 = n Durchprobieren aller Zeugen für eine Position (i, j) in Zeit O (n) möglich erwartete Laufzeit in Schritt 3 O n 2 423 (∗) Betrachte pij mit pij > 0. Sei w #Zeugen für pij . Es existiert ein Wert für r mit n/2 · 1/r ≤ w ≤ n · 1/r . Lemma Folie 416 Wkeit, dass zufällig gleichverteilt gewählte Menge R mit |R| = r nicht genau einen Zeugen 1 für pij enthält, ist höchstens 1 − 2e Wkeit, dass in allen ⌈3, 77 log n⌉ Runden kein R gewählt wird, das genau einen Zeugen 1 ⌈3,77 log n⌉ für pij enthält, ist höchstens (1 − 2e ) < n1 424 Nächstes Ziel: Algorithmus fürAPSP mit erwarteter Laufzeit O M(n) log2 n für Graphen mit |V | = n. Explizite Darstellung aller kürzesten Wege für alle Knotenpaare i 6= j kann Laufzeit Ω(n3 ) benötigen (wann?). Hier: implizite Darstellung aller kürzesten Wege mittels Nachfolgermatrix Definition: Eine Nachfolgermatrix S für einen Graphen G mit n Knoten ist eine Matrix der Dimension n × n, die für alle Knotenpaare i 6= j an Position (i, j) den Index k des ersten Knotens auf einem kürzesten Wege von i nach j enthält. i k j 425 Beobachtung: Mit Hilfe von S kann ein kürzester Weg von einem Knoten i zu einem Knoten j proportional zur Länge dieses Weges konstruiert werden. Vorüberlegung: sij = k , wenn aik = 1, dij = d und dk j = d − 1 aus Adjazenzmatrix A von G aus Distanzmatrix D von G D → B d mit bkdj = 1 ⇔ dk j = d − 1 O (n 2 ) für A und B d : −( Problem: n Werte für d möglich BMPW 426 Bekannt: Für alle Knotenpaare i 6= j und jeden Nachbarknoten k von i gilt dij − 1 ≤ dkj ≤ dij + 1 Jeder Nachbarknoten k von i mit dkj = dij − 1 gültiger Eintrag für Position (i, j) der Nachfolgermatrix S. Knoten k mit aik = 1 und dkj ≡ dij − 1 mod 3 gültiger Kandidat für sij Sei D s , s ∈ {0, 1, 2}, die boolesche n × n Matrix mit dkjs = 1⇔ dkj + 1 ≡ s mod 3. Nachfolgermatrix S wird berechnet durch Suchen von Zeugen für Matrizenprodukt A · D s , s ∈ {0, 1, 2} 427 Algorithmus: APSP Eingabe: Adjazenzmatrix A für Graphen G mit n Knoten Ausgabe: Nachfolgermatrix S für G 1) Berechne Distanzmatrix D = APD(A). 2) for s = 0, 1, 2 do 2.1) Berechne boolesche Matrix D s mit dkjs = 1 ⇔ dkj + 1 ≡ s mod 3. 2.2) Berechne Zeugenmatrix W s = BPWM(A, D s ). d mod 3 3) Berechne Nachfolgermatrix S mit sij = wij ij . 428 Satz: Algorithmus APSP ist ein Las Vegas Algorithmus für das Problem APSP mit erwarteter Laufzeit O M(n) log2 n , wobei n die Anzahl Knoten des zugrundeliegenden Graphen bezeichnet. 429 Exkurs Prinzip der verzögerten Entscheidungen Gegeben: Algorithmus A Aufgabe: Verhalten auf zufälligen Eingaben untersuchen (A arbeitet für feste Eingabe deterministisch) Lösungsversuch: Eingabe x = (x1 , x2 , ..., xn ) vorweg vollständig auswürfeln, anschließend deterministische Laufzeit auf dieser Eingabe analysieren nicht immer elegante Analyse möglich Jetzt: Jeder Teil der Eingabe wird einzeln ausgewürfelt (wenn er gebraucht wird) Algorithmus Alazy In beiden Fällen gleiche Wkeitsverteilung Alazy anstelle von A analysieren 430 Beispiel: Kartenspiel mit 52 Karten, jeweils 13 ♦, ♥, ♠, ♣ Mischen, gleichmäßig auf vier Stapel verteilen: ♦ ♥ ♠ ♣ Karten aller Farben Erste Karte vom Stapel ♦ ziehen, nächste Karte vom Stapel mit Farbe dieser Karte usw. Spiel endet, wenn Zugriff auf leeren Stapel erfolgt. Alle Karten weggenommen gewonnen 431 Beobachtung: Spiel endet immer mit (versuchtem) Zugriff auf ♦-Stapel (anderer Stapel leer = ˆ 13 Karten dieser Farbe gesehen kein weiterer Zugriff auf diesen Stapel möglich) Frage: Gewinnwkeit ? Alle 52 Karten vorab zufällig erzeugen keine elegante Analyse Methode der verzögerten Entscheidung: Farbe einer Karte erst bei Ziehung erzeugen 13. ♦-Karte letzte Karte gewonnen Wkeit: 1/4 432 Stabile Heiraten Gegeben: n Männer und n Frauen, Permutationen π1 ,..., πn , σ1 ,..., σn ∈ Sn πi gibt Reihenfolge der Männer an, wie sie von Frau i bevorzugt werden σj gibt Reihenfolge der Frauen an, wie sie von Mann j bevorzugt werden Gesucht: stabiles“ Matching zwischen Männern und Frauen ” S ai = {1, 2, ..., n} (1, a1 ), (2, a2 ), ..., (n, an ), 1≤i≤n keine zwei Paare (i1 , j1 ) und (i2 , j2 ) mit Eigenschaft i1 bevorzugt j2 vor j1 und j2 bevorzugt i1 vor i2 433 Anwendung: z.B. Verteilung von Medizinstudierenden auf Praktikumsplätze in den USA Beispiel: A:abcd a:ABCD B:bacd b:DCBA C:ad cb c:ABCD D:d cab d :CDAB • (A, a) (B, b) (C, c) (D, d) nicht stabil, denn C bevorzugt d vor c und d bevorzugt C vor D. • stabiles Matching: (A, a) (B, b) (C, d) (D, c) Vorsicht: Im Allgemeinen löst lokaler greedy-Ansatz nicht das Problem. 434 Algorithmus: Proposal Idee: greedy-Ansatz, Paare jedoch zunächst nur vorläufig verbinden; Instabilitäten Entscheidungen rückgängig machen Solange noch ein unverheirateter Mann M existiert – wählt M unter allen Frauen, die noch keinen (∗) Heiratsantrag von ihm erhalten haben, die ihm sympathischste Frau F aus – M macht F einen Heiratsantrag – Falls F unverheiratet F akzeptiert Heiratsantrag – Falls F verheiratet und M ihrem aktuellen Mann gegenüber bevorzugt F akzeptiert Heiratsantrag und lässt sich von ihrem aktuellen Mann scheiden 435 Beispiel: A:abcd a:ABCD 1) 2) 3) 4) 5) 6) B:bacd b:DCBA C:ad cb c:ABCD A macht a einen Heiratsantrag C macht a einen Heiratsantrag C macht d einen Heiratsantrag D macht d einen Heiratsantrag D macht c einen Heiratsantrag B macht b einen Heiratsantrag D:d cab d :CDAB (A, a) a lehnt ab (C, d) d lehnt ab (D, c) (B, b) 436 Satz: Algorithmus Proposal bestimmt für jede Eingabe π1 , ..., πn , σ1 , ..., σn ein stabiles Matching Beweis und Analyse von: Proposal • Proposal arbeitet deterministisch • Für unverheirateten Mann M existiert immer eine Frau, der er noch keinen Heiratsantrag gemacht hat. (∗) Denn: − Alle Frauen bleiben verheiratet, wenn sie einmal geheiratet haben. − Alle Frauen haben bereits Heiratsantrag von M abgelehnt n Frauen verheiratet n Männer verheiratet 437 Beweis (Fortsetzung): Proposal 2 • worst case Laufzeit: O n in jedem Durchlauf: ein Antrag eine Frau wird als mögliche Kandidatin eines Mannes gestrichen maximal n2 Durchläufe • Korrektheit: Annahme: Es gibt instabile Paare (X , x) und (Y , y ) X macht y eher Antrag als x 1.Fall: y hat Antrag von X abgelehnt y war mit Mann verheiratet, den sie lieber mag als X y ist mit Mann verheiratet, den sie lieber mag als X 438 Beweis (Fortsetzung): Proposal 2.Fall: y hat Antrag von X angenommen y hat später neu geheiratet y mag Y lieber als X average case Analyse Ziel: Bestimmung der durchschnittlichen Anzahl Heiratsanträge Analyse für zufällige Eingabe π1 , ..., πn , σ1 , ..., σn , die gemäß Gleichverteilung ausgewählt wird Prinzip der verzögerten Entscheidung: Reihenfolge wählen, wenn sie relevant ist, d.h. immer wenn Mann Heiratsantrag macht, wählt er unter verbliebenen Frauen die ihm Sympathischste aus 439 Weitere Vereinfachung der Analyse: Algorithmus: Amnesie Mann wählt Frau, der er den Antrag macht, aus allen Frauen aus höchstens mehr Schritte Pr (Amnesie macht mindestens T Anträge) ≥ Pr (modifizierter Algo macht mindestens T Anträge) Prinzip der verzögerten Entscheidung = Pr (Proposal macht mindestens T Anträge) Erwartete Laufzeit von Amnesie mindestens so groß wie die von Proposal 440 Beobachtung: Zufallsexperiment endet, wenn jede Frau mindestens einmal gefragt worden ist. Denn: Erhält Frau einen Heiratsantrag, ist sie anschließend auf jeden Fall verheiratet (und bleibt es). n Frauen verheiratet n Männer verheiratet Coupon-Sammler-Problem (Folien 245-248) erwartete Laufzeit O (n log n) Wkeit, dass Anzahl Anträge größer ist als βn ln n, β>1 höchstens n−(β−1) o(1) 441 Kapitel 8.2 Minimale Spannbäume Definition: Minimum Spanning Forest (MSF ) Geg.: ungerichteter, nicht notwendigerweise zusammenhängender Graph G = (V , E) mit Gewichtsfunktion ω : E → R Gesucht: Spannbäume mit minimalem Gewicht für jede Zusammenhangskomponente von G Hier: alle Kantengewichte verschieden (keine Einschränkung) minimaler Spannbaum / minimaler Spannwald eindeutig keine isolierten Knoten 442 Erinnerung: DAP 2 Kruskals Algorithmus O (m log m) Primes Algorithmus O (n log n + m) (Unterschied wie Bildung eines Kreises vermieden wird) Offen: Existiert deterministischer Algorithmus mit linearer Laufzeit? Hier: randomisierter Algorithmus mit erwarteter linearer Laufzeit 443 Algorithmus von Borůvka Für Knoten v ∈ V sei ev unter allen zu v inzidenten Kanten diejenige mit kleinstem Gewicht, also ω(ev ) = min{ω(e) | e = (v , w ) ∈ E} Sei EV Menge der leichtesten“Kanten: ” EV = {ev | v ∈ V } Lemma: MSF von G = (V , E) enthält alle Kanten aus EV . 444 Beweis: Sei T ein MSF mit Kantenmenge ET und ev ∈ EV mit ev ∈ET . (V , ET ∪ {ev }) enthält Kreis mit zwei Kanten ev = (v , u), (v , w ) ω(ev ) < ω(v , w ) nach Definition ev Einfügen von ev und Löschen von (v , w ) führt zu Spannwald mit geringerem Gewicht. 445 Algorithmus: Borůvka-Phase (1) Eingabe: Graph G = (V , E) mit Kantengewichtung ω:E →R Ausgabe: Graph G′ und Kantenmenge EV Graph der aus G entsteht, wenn Kanten aus EV kontrahiert werden 1) Bestimme Menge EV der leichtesten Kanten ev für alle Knoten v ∈ V . 446 Algorithmus: Borůvka-Phase (2) 2) Berechne G′ := G/EV , d.h. kontrahiere alle Kanten aus EV in G. a d a d e b f g c e b f g c ∈ EV eliminiere Schleifen eliminiere alle parallelen Kanten bis auf die leichteste 7 3 3 4 3) Gib G′ und EV zurück. 447 Beobachtung: Borůvka-Phase kann mit Laufzeit O (n + m) implementiert werden. Schritt 1 mittels Durchlauf durch die Adjazenzlisten realisierbar. Anschließend in Schritt 2 Zusammenhangskomponenten von (V , EV ) bestimmen. Lemma: Für jeden ungerichteten Graphen G und jeden MSF F ′ = (V ′ , EF′ ) von G′ = G/EV ist F = (V , EF′′ ∪ EV ) ein MSF von G, wobei EF′′ die Teilmenge der Kanten in G ist, welche zu EF′ korrespondieren. 448 Beweis: • Kanten aus EV Teilmenge der Kanten des MSFs • MSF F ′′ von G Spannwald F ′′ /EV von G′ ω(F ′′ /EV ) ≥ ω(F ′ ) für MSF F ′ von G′ • EF′′ Teilmenge der Kanten in G, welche zur Kantenmenge von F ′ korrespondiert, also ω(F ′ ) = ω((V , EF′′ )) P P ′ ′′ ω(F ) + ω(e)= ω((V , EF )) + ω(e) e∈EV e∈EV X ω(e) ≤ ω(F ′′ /EV ) + | {z e∈EV ω(F ′′ ) (V , EF′′ ∪EV ) Spannwald von G } (V , EF′′ ∪EV ) MSF von G gilt, denn zyklenfrei und aufspannend 449 Beobachtung: (V , EV ) enthält keine isolierten Knoten und von jedem Knoten aus V geht mindestens eine Kante aus → (V , EV ) enthält höchstens n/2 Zusammenhangskomponenten → G′ = G/EV enthält höchtstens n/2 Knoten Algorithmus mit Laufzeit O ((n + m) log n) für MSF 450 Schwere Kanten Definition: MSF-Verifikationsproblem Geg.: ungerichteter Graph G = (V , E) mit Gewichtsfunktion ω : E → R und aufspannender Wald F von G Frage: Ist F ein MSF für G? Bekannt: Algorithmus mit Laufzeit O (n + m) Komlós (1985), King (1997), Hagerup (2009) Jetzt: Kriterium, wie man erkennen kann, ob aufspannender Wald minimal ist 451 F aufspannender Wald von G = (V , E) Kanten aus F u PF (u, v ) ωF (u, v ) := v ⇔ u und v liegen in Zusammenhangskomponente von F max{ω(e) | e liegt auf PF (u, v )}, falls PF (u, v ) existiert eindeutig, wenn existent ∞, sonst 452 Definition: Sei F aufspannender Wald von G = (V , E). Kante (u, v ) ∈ E heißt F -schwer, wenn ω(u, v ) > ωF (u, v ) gilt, ansonsten heißt (u, v ) F -leicht. Beobachtung: • Alle Kanten in F sind F -leicht. • Kante (u, v ) ∈ E ist F -schwer, wenn alle Kanten auf Weg PF (u, v ) in F ein kleineres Gewicht als ω(u, v ) haben. 453 Lemma: Sei F ein (beliebiger) aufspannender Wald von G = (V , E) und (u, v ) ∈ E eine F -schwere Kante. Dann ist (u, v ) keine Kante im MSF von G. Beweis: Annahme: Sei F ′ = (V , E ′ ) MSF für G und (u, v ) ∈ E ′ . • Es gibt Pfad PF (u, v ) in F dessen Kanten alle leichter als ω(u, v ) sind. • Es gibt Kante e auf PF (u, v ), so dass F ′′ = (V , (E ′ \(u, v )) ∪ e) zyklenfrei. F ′′ aufspannender Wald • ω(F ′′ ) < ω(F ′ ) 454 Lemma: Sei F = (V , EF ) ein aufspannender Wald von G = (V , E). F ist genau dann MSF von G, wenn EF alle F -leichten Kanten von E enthält. Beweis: ⇒ F MSF von G EF enthält keine F -schweren Kanten. Annahme: Es gibt F -leichte Kante e = (u, v ) in E\EF . F ′ = (V , (EF \e′ ) ∪ e) ist zyklenfrei für alle e′ auf PF (u, v ) in F F ′ aufspannender Wald Sei e′′ Kante mit maximalem Gewicht auf PF (u, v ) F ′′ = (V , (EF \e′′ ) ∪ e) hat geringeres Gewicht als F . ⇐ F -schwere Kanten führen zu keiner Verbesserung F ist MSF von G. 455 Verifikationsalgorithmus für MSF : Enthält F alle F -leichten Kanten des gegebenen Graphen? Satz: Sei G ungerichteter Graph mit Gewichtsfunktion ω und F aufspannender Wald von G. Es gibt einen deterministischen Algorithmus, der in Laufzeit O (n + m) alle F -schweren Kanten in G findet. 456 Negative Binomialverteilung Definition: Sei p die Wkeit, dass bei einem Münzwurf Kopf, und 1 − p die Wkeit, dass bei einem Münzwurf Zahl erscheint. Sei X eine Zufallsvariable, welche angibt, wie oft die Münze geworfen werden muss, bis r Mal das Ergebnis Kopf kommt, dann ist X negativ binomialverteilt mit den Parametern r und p. Satz: Sei X negativ binomialverteilt mit den Parametern r und p. −1 pr (1 − p)k −r Dann gilt für alle k ≥ r : Pr (X = k ) = kr −1 E[X ] = pr und V (X ) = r (1−p) p2 457 Zufällige Stichproben für die MST -Berechnung Idee: Randomisierung nutzen, um Kanten zu finden, die auf keinen Fall im MSF enthalten sind Lemma: Sei G = (V , E) ungerichteter Graph mit Gewichtsfunktion ω : E → R, n Knoten und m Kanten. Teilgraph G(p) entsteht aus G indem jede Kante von G unabhängig mit Wahrscheinlichkeit p, 0 < p < 1, in die Kantenmenge von G(p) aufgenommen wird. Sei F MSF in G(p) und X Anzahl von F -leichten Kanten in G. Dann wird X stochastisch dominiert von einer Zufallsvariablen mit negativer Binomialverteilung zu den Parametern n und p. Insbesondere gilt E[X ] ≤ pn . 458 Beweis: Unerwünschte Abhängigkeiten innerhalb Analyse vermeiden Prinzip der verzögerten Entscheidung Jede Kante wird unabhängig von allen anderen Kanten in G(p) aufgenommen. Reihenfolge in der Kanten betrachtet werden beliebig Idee: G(p) und F gleichzeitig konstruieren Kanten werden nach aufsteigendem Gewicht betrachtet: ω(e1 ) < ω(e2 ) < ... < ω(em ) – mit Wkeit p wird ei in G(p) aufgenommen – ei wird in F aufgenommen, wenn ei im bereits vorhandenen Teilwald verschiedene ZKs verbindet 459 Beweis (Fortsetzung): 1. G0 (p) = (V , E0 ) := (V , ∅) und F0 = (V , ∅) 2. for i = 1 to m 3. wirf gewichtete Münze mit Kopfwkeit p if Münze zeigt Kopf then 4. 5. Gi (p) = (V , Ei ) mit Ei := Ei−1 ∪ {ei } 6. if ei schließt keinen Kreis in Fi−1 then ′ 7. Fi = (V , Ei′ ) mit Ei′ := Ei−1 ∪ {ei } 8. else 9. Fi = (V , Ei′ ) := Fi−1 10. end if 11. else 12. Gi (p) = (V , Ei ) := Gi−1 (p) und Fi = (V , Ei′ ) := Fi−1 13. end if 14. end for 15. G(p) := Gm (p) und F := Fm 460 Beweis (Fortsetzung): Beobachtung: • Kanten in aufsteigender Reihenfolge F Wald der von Kruskals Algorithmus generiert wird F MSF von G(p) • ei Fi -leicht ⇔ ei verbindet verschiedene ZKs in Fi−1 ⇒v in F ei u i −1 v und alle Kanten auf diesem Weg haben geringeres Gewicht als ei u Fi − 1 ⇐ es gibt nur einen Weg, nämlich ei selbst X • ei nicht in Fi (jedoch in Gi (p)) ei Fi -schwer Fi Teilgraph von F −−−−−−−−−−−−→ F -schwer • ei Fi -leicht ei F -leicht, denn ω(ei ) < ω(ej ), i < j 461 Beweis (Fortsetzung): Ziel: # F -leichter Kanten in G bestimmen Idee: Entscheidungskriterien bzgl. Aufnahme von ei in F umdrehen ei schließt keinen Kreis in Fi −1 nein ja Münze zeigt Kopf nein weiter“ ” ja ei in Gi (p) aufnehmen Münze zeigt Kopf nein weiter“ ” ja ei in Gi (p) aufnehmen Fi = (V , Ei′) mit Ei′ := Ei′−1 ∪ {ei } 462 Beweis (Fortsetzung): Beobachtung: l # Kanten in F , l ≤ n − 1 # F -leichte Kanten = ˆ # Münzwürfe bis l-mal Kopf l hängt vom Zufallsexperiment ab, Prozess stoppt, wenn alle Kanten betrachtet worden sind Jetzt: Modifikation solange Münze werfen bis (n − 1)-mal Kopf höchstens mehr Münzwürfe Z = ˆ # Münzwürfe Pr(X > k ) ≤ Pr(Z > k ) Z dominiert X stochastisch E[Z ] ≥ E[X ] (Folie 256) 463 Beweis (Fortsetzung): Z Zufallsvariable, die angibt, wie oft Münze mit Wkeit p für Kopf geworfen werden muss bis (n − 1)-mal Kopf erscheint Z negativ binomialverteilt mit Parameter n − 1 und p n E[X ] ≤ E[Z ] ≤ n−1 < p p 464 Algorithmus: Random-Sample-MSF Eingabe: ungerichteter Graph G = (V , E) mit Gewichtsfunktion ω : E → R Ausgabe: MSF für G 1) Führe drei Borůvka-Phasen durch. Sei C Menge der kontrahierten Kanten und G′ der resultierende Graph. 2) Konstruiere zufälligen Graphen G′ (p) mit p = 21 . 3) Berechne rekursiv MSF F für G′ (p). 4) Berechne alle F -schweren Kanten in G′ und lösche diese aus G′ . Sei G′′ der resultierende Graph. 5) Berechne rekursiv MSF T für G′′ . 6) Gib C und Kanten von T zurück. 465 Satz: Algorithmus Random-Sample-MSF hat eine erwartete Laufzeit von O (n + m). Beweis: Rekursionsbaum für Random-Sample-MSF G mit n Knoten, m Kanten Rekursionstiefe Zeile 5 Zeile 3 O (log n) höchstens n/8 Knoten, m1 Kanten Zeile 3 höchstens n/82 Knoten höchstens n/8 Knoten, m2 Kanten Zeile 5 höchstens n/82 Knoten 466 Beweis (Fortsetzung): Beobachtung: • Zeitbedarf für Abarbeitung jedes Knotens im Rekursionsbaum linear in Anzahl der Knoten und Kanten im jeweiligen Teilgraphen reicht z.z. dass erwartete Anzahl der Knoten und Kanten aller Teilgraphen O (n + m) • Isolierte Knoten benötigen keine weiteren Berechnungsschritte. Annahme, dass sie bei jedem rekursiven Aufruf bereits aus jeweiligem Teilgraphen gelöscht wurden Knotenanzahl beschränkt durch: log ∞ P Pn d d n4−d = 4/3 · n 2 n/8 < d=0 d=0 # Knoten auf Ebene d im Rekursionsbaum 467 Beweis (Fortsetzung): Kantenanzahl: Dekomposition des Rekursionsbaums in linke Pfade X # Kanten in einem Teilproblem Y # Kanten im linken Teilproblem E[Y | X = k ] ≤ k /2 für alle k ∈ N E[Y ] ≤ E[X ]/2 jede Kante wird entweder bei den drei Borůvka-Phasen gelöscht (Schritt 1) oder nur mit Wkeit 12 übernommen (Schritt 2) erwartete Gesamtzahl aller Kanten im linken Pfad nach unten höchstens ∞ P k /2i = 2k (wobei k # Kanten im Ausgangsknoten i=0 des linken Pfades) 468 Beweis (Fortsetzung): – erwartete Anzahl Kanten im linken ” Wurzel-Blatt-Pfad“ höchstens 2m – erwartete Anzahl Kanten in roten Teilgraphen höchstens doppelt so groß wie Knotenanzahl höchstens 2 · 43 n (Lemma Folie 458) – ... in linken Pfaden“ mit rotem Startproblem höchstens 4 ” 4 · 3n 469 Beweis (Fortsetzung): Insgesamt: O (n) Knoten und O (n + m) Kanten im Erwartungswert ≤2·m Kanten ≤ 2 · 4/3 · n Kanten ≤ 4 · 4/3 · n Kanten 470 Satz: Algorithmus Random-Sample-MSF benötigt mit Wkeit 1 − e−Ω(m) nur O (n + m) Schritte. Beweis: z.z. Mit Wkeit 1 − e−Ω(m) enthalten alle Teilprobleme des Rekursionsbaums zusammen O (m) Kanten. • rechte Teilprobleme: Erinnerung: (Folie 462) ei schließt keinen Kreis in Fi −1 ja enthält F -leichte Kanten des Vorgängergra” phen“ Münze zeigt Kopf ja ei in Gi (p) und Fi aufnehmen 471 Beweis (Fortsetzung): ei Kante eines Waldes Wald enthält höchstens |V | − 1 Kanten # Waldkanten in rechten Teilproblemen kleiner als Knotenanzahl in rechten Teilproblemen log ∞ P Pn d n n4−d = n/3 2 8d < d=1 d=1 Beobachtung: Für jede leichte Kante ist Münze geworfen worden Zufallsvariable, die Anzahl leichter Kanten angibt, wird stochastisch dominiert von Zufallsvariable, die negativ binomialverteilt ist mit Parameter n/3 und 21 472 Beweis (Fortsetzung): Erwartungswert für Anzahl leichter Kanten nach oben durch 2 · n/3 beschränkt Erinnerung: Für Zufallsvariable X mit X = X1 + X2 + · · · + Xn für n unabhängige Indikatorvariablen Xi mit Pr(Xi ) = pi , 1 ≤ i ≤ n und 0 ≤ pi ≤ 1, und Erwartungswert E[X ] gilt: Pr(X ≥ R) ≤ 2−R für R ≥ 5 · E[X ] Wkeit, dass in den rechten Teilproblemen“ mindestens ” (log e) · (5 · 2/3 · n + m) Kanten vorkommen, höchstens e−(10/3·n+m) 473 Beweis (Fortsetzung): • linke Teilprobleme: enthält Kante des Vorgängergraphen“ ” 1 mit Wkeit 2 (Borůvka-Phasen werden nicht berücksichtigt) – Kante im Wurzelproblem oder einem rechten Teilproblem erzeugt Sequenz von Kantenkopien in linken Teilproblemen, wobei jede Kopie durch unabhängigen Münzwurf erzeugt wird (mit Resultat Kopf“) ” – Sequenz der Kopien endet, wenn Resultat Zahl“ ” erscheint # Ergebnis Zahl entspricht # Sequenzen, also # Kanten im Wurzelproblem und in allen rechten Teilproblemen 474 Beweis (Fortsetzung): Anzahl Kanten in linken Teilproblemen entspricht Anzahl Kopfergebnisse Anzahl Kopfergebnisse höchstens Anzahl aller Münzwürfe in linken Teilproblemen Sei m′ Anzahl Kanten im Wurzelproblem oder einem rechten Teilproblem. Sei X Zufallsvariable, die Anzahl aller Münzwürfe angibt. X negativ binomialverteilt mit Parameter m′ und 1 ′ E[X ] = 2 · m 2 Wkeit, dass in linken Teilproblemen (inklusive Wurzelproblem) mindestens (log e) · 10 · m′ Kanten −10m′ vorkommen, höchstens e 475 Beweis (Fortsetzung): Wkeit, dass in rechten Teilproblemen und im Wurzelknoten mindestens (log e)(10/3 · n + m) + m Kanten vorkommen | {z } m′ oder in linken Teilproblemen mindestens (log e)10 · m′ Kanten vorkommen, −10·m′ −(10/3·n+m) = e−Ω(m) +e ist höchstens e Mit Wkeit 1 − e−Ω(m) benötigt Algorithmus Random-Sample-MSF nur O (n + m) Schritte X Bemerkung: Mit weiteren Chernoff-Schranken ist eine feinere Analyse möglich. 476 Kapitel 9 Approximationsalgorithmen Hier: approximative Algorithmen zur Bestimmung von Lösungen mit beweisbarer Qualität für NP-harte Optimierungsprobleme – Verdrahtungsproblem – MAXSAT – HITTING SET 477 Kapitel 9.1 Verdrahtungsproblem Beispiel: 2 3 3 1 Netz =Teilmenge b der Gatter die verbunden werden sollen Hier: Netze der Kardinalität 2 2 2 Grenze 1 1 3 A B C Randbedingung: # Drähte, die durch horizontale bzw. vertikale Grenze verlaufen, durch Parameter ω beschränkt Globale Verdrahtung: Für jedes Netz Gatter angeben, über die die Drähte verlaufen. Hier: Drähte dürfen auf dem Weg vom Start- zum Zielknoten nur einmal abbiegen 478 • Gegeben: Netze über n Gatter und ω Frage: Gibt es globale Verdrahtung mit Parameter ω? • Gegeben: Netze über n Gatter Gesucht: Minimales ω, so dass es globale Verdrahtung mit Parameter ω gibt Beobachtung: Drähte dürfen nur einmal abbiegen höchstens 2 Wahlmöglichkeiten 479 Variablen hi und vi für Netz i: (hi , vi ) = (1, 0) = b Startort wird zunächst horizontal verlassen (hi , vi ) = (0, 1) = b ... zunächst vertikal verlassen Tb,hor := {i | Draht zu Netz i verläuft durch b, wenn hi = 1} Tb,ver := {i | Draht zu Netz i verläuft durch b, wenn vi = 1} Beispiel: 2 3 3 1 b = AB3 2 Tb,hor = {1} 2 Tb,ver = {2} 1 min ω 1 3 A B C ∀i : hi , vi ∈ {0, 1} und hi + vi = 1 NP-hart ∀b : P i∈Tb,hor hi + P i∈Tb,ver vi ≤ ω 480 Exkurs Lineare Programme (LP) Lineare Zielfunktion c(x1 , ..., xn ) := c1 x1 + · · · + cn xn Aufgabe: Zielfunktion minimieren unter Randbedingung, dass (x1 , ..., xn ) Reihe linearer Bedingungen erfüllt: reelle Koeffizienten a11 x1 + · · · + a1n xn ≤ d1 a21 x1 + · · · + a2n xn ≤ d2 .. .. . . am1 x1 + · · · + amn xn ≤ dm Bekannt: LP ∈ P Lösung copt und zugehörige Belegung der Variablen x1 , ..., xn 481 Relaxation: ∀i : hi , vi ∈ [0, 1] Lineares Programm, das effizient lösbar ist Lösungen ω LP , hiLP , viLP Offensichtlich: ω LP ≤ ωopt Idee: hiLP , viLP Runden hi , vi mit hi , vi ∈ {0, 1} Frage: Wie wird gerundet? Wie gut ist die erhaltene Lösung? 482 Randomisiertes Runden Gegeben: Variablen x1 , ..., xT ∈ [0, 1] Setze xi∗ := 1 mit Wahrscheinlichkeit xi und xi∗ := 0 mit Wahrscheinlichkeit 1 − xi für 1 ≤ i ≤ T Offensichtlich: E[xi∗ ] = xi für 1 ≤ i ≤ T Deterministisches Runden Setze xi∗ := 1, wenn xi ≥ 12 und xi∗ := 0 sonst für 1 ≤ i ≤ T 483 hiLP , viLP Randomisiertes hi , vi Runden mit (hi , vi ) := (1, 0) mit Wahrscheinlichkeit hiLP und (hi , vi ) := (0, 1) sonst Frage: Wie gut ist die erhaltene Lösung? Definition: ∗ ∗ ∆ (µ, ε )sei das kleinste δ > 0, so dass eδ (1+δ)1+δ ( µ ≤ ε∗ Folie 354) 484 Satz: Sei 0 < ε < 1. Mit Wkeit mindestens 1 − ε liefert Randomisiertes Runden mit der Lösung des LPs eine globale Verdrahtung, für deren Parameter ω gilt ε ) ω ≤ ωopt (1 + δ) mit δ := ∆+ (ωopt , 2n Beweis: ω(b) = P hi + i∈Tb,hor E[ω(b)] = P P i∈Tb,ver E[hi ] + i∈Tb,hor = P i∈Tb,hor vi P E[vi ] i∈Tb,ver hiLP + P i∈Tb,ver viLP ≤ ω LP ≤ ωopt 485 Beobachtung: hi , vi Zufallsvariablen mit Werten aus {0, 1} hi , hi ′ unabhängig für i 6= i ′ , analog vi , vi ′ i kann nicht in Tb,hor und in Tb,ver liegen ω(b) Summe unabhängiger Zufallsvariablen mit Werten aus {0, 1} Pr(ω(b) ≥ (1 + δ)ωopt )≤ eδ (1+δ)1+δ ωopt Chernoff-Schranke Folie 354 i) ε Wähle δ := ∆∗ (ωopt , 2n ) Pr(ω(b) ≥ (1 + δ)ωopt ) ≤ ε 2n 486 Frage: # Grenzen ? √ √ 2( n − 1) n < 2n union bound Wahrscheinlichkeit, dass für mindestens eine Grenze b ω(b) ≥ ωopt (1 + δ) gilt, durch ε beschränkt 487 Satz: Deterministisches Runden liefert eine globale Verdrahtung mit Parameter ω ≤ 2 · ωopt Beweis: hi ≤ 2hiLP , denn hiLP < vi ≤ 2viLP P i∈Tb,hor hiLP + P i∈Tb,ver 1 2 viLP hi = 0 ≤ω LP P i∈Tb,hor hi + P i∈Tb,ver vi ≤ 2ω LP ≤ 2ωopt 488 Kapitel 9.2 MAXSAT m Klauseln C1 , ..., Cm n Variablen X1 , ..., Xn Gegeben: Konjunktive Form F , wobei jede Klausel reduziert“ ist, d.h. keine Klausel stellt die konstante ” 1-Funktion dar und Literale kommen in keiner Klausel mehrfach vor Aufgabe: Finde Variablenbelegung, die möglichst viele Klauseln erfüllt. Variante: MAX -k -SAT Jede Klausel enthält genau k Literale Bekannt: MAX -k -SAT für k ≥ 2 NP-hart 489 Lemma 1: Seien a1 , ..., ak ≥ 0. Dann gilt: a1 · ... · ak ≤ a1 +···+ak k k (Geometrisches Mittel nicht größer als arithmetisches Mittel) Lemma 2: Sei x ∈ [0, 1]. Dann gilt für k ∈ N: 1 − (1 − xk )k ≥ (1 − (1 − k1 )k ) · x 490 Ein einfacher randomisierter Algorithmus Algorithmus: Setze jede Variable zufällig unabhängig mit Wahrscheinlichkeit 12 auf 1, sonst auf 0. Behauptung: Erwartete Anzahl erfüllter Klauseln für die durch den obigen Algorithmus generierte Variablenbelegung ist (1 − (MAX -k -SAT ) 1 ) 2k ·m 491 Beweis: Indikatorvariable Xi mit 1, wenn Klausel Ci erfüllt Xi = 0, sonst 2k −1 2k Pr(Xi = 1) = = 1 − 21k m m P P X = Xi und E[X ] = E[ Xi ] = (1 − i=1 i=1 1 ) 2k ·m Linearität des Erwartungswertes # erfüllter Klauseln 492 z1 , ..., zm Indikatorvariablen, die angeben, ob die zugehörigen Klauseln erfüllt sind Zielfunktion: max z1 + · · · + zm Nebenbedingungen: y1 , ..., yn , z1 , ..., zm ∈ {0, 1} P P yi + (1 − yi ) ≥ zj für 1 ≤ j ≤ m i|xi ∈Cj i|xi ∈Cj = b zj = 1 mindestens ein erfülltes Literal in Cj maximaler Wert der Zielfunktion entspricht maximaler Anzahl gleichzeitig erfüllbarer Klauseln 493 Algorithmus: Relaxation y1 , ..., yn , z1 , ..., zm ∈ [0, 1] optimale Lösung y1LP , ..., ynLP , z1LP , ..., zmLP Randomisiertes Runden: xi mit Wkeit yiLP auf 1 mit Wkeit 1 − yiLP auf 0 setzen Satz: Sei opt maximale Anzahl an gleichzeitig erfüllbaren Klauseln. Die erwartete Anzahl erfüllter Klauseln des obigen Algorithmus ist mindestens (1 − (1 − k1 )k )opt ≥ (1 − e1 )opt . 494 Wesentliche Idee: opt ≤ m P i=1 ziLP Lemma: Sei y1LP , ..., ynLP , z1LP , ..., zmLP eine Lösung des reduzierten Problems. Die Wkeit, dass die j-te Klausel beim Randomisierten Runden erfüllt wird, ist mindestens (1 − (1 − k1 )k ) · zjLP ≥ (1 − e1 ) · zjLP . Beweis: Betrachte o.B.d.A. Klausel Cj = x1 ∨ · · · ∨ xk . • Wkeit, dass Cj beim Randomisierten Runden erfüllt wird, k Q 1 − (1 − yiLP ) • y1LP + · · · i=1 + ykLP ≥ zjLP (1 − y1LP ) + · · · + (1 − ykLP ) ≤ k − zjLP 495 Beweis (Fortsetzung): (1 − y1LP ) + · · · + (1 − ykLP ) ≤ k − zjLP Lemma 1 Folie 490 −−−−−−−→ k Q i=1 (1 − yiLP ) ≤ k −zjLP k k k k Y LP k −zj LP (1 − yi ) ≥ 1 − 1− k | i=1 {z } Wkeit, dass Cj erfüllt ist Lemma 2 Folie 490 ≥ 1 k LP (1 − (1 − ) )zj | {z k } ≥1− 1e Xj Indikatorvariable, die angibt, ob Cj erfüllt ist E[Xj ] ≥ (1 − e1 )zjLP 496 Beweis (Fortsetzung): X = X1 + · · · + Xm Erinnerung: E[Xj ] ≥ (1 − e1 )zjLP # gleichzeitig erfüllter Klauseln E[X ] = m P j=1 E[Xj ] ≥ (1 − e1 ) m P j=1 zjLP ≥ (1 − e1 )opt Erwartete Anzahl erfüllter Klauseln mindestens • (1 − 21k )m (einfacher Algo) • (1 − (1 − k1 )k )opt (Randomisiertes Runden) k 1 2 3 4 5 1 − (1 − k1 )k 1 0,75 0,704 0,684 0,672 1 − 21k 0,5 0,75 0,875 0,938 0,969 497 Idee: Kombiniere beide Algorithmen, d.h. starte beide Algorithmen nacheinander und gib das bessere Ergebnis aus Algorithmus MIX (auch für MAXSAT ) Satz: Erwartete Anzahl erfüllter Klauseln ist für MIX mindestens 43 opt . Beweis: Hier: Algo 1 = b einfacher Algo Algo 2 = b Algo mittels Randomisierten Rundens Algo 3 : MIX 498 Beweis (Fortsetzung): ni Zufallsvariable für Anzahl erfüllter Klauseln in Lösung von Algorithmus i, i ∈ {1, 2, 3} n3 = max{n1 , n2 } ≥ n1 +n2 2 lc = b Länge Klausel C m m P P E[n1 ] = (1 − 2−lcj ) ≥ (1 − 2−lcj )zjLP E[n2 ] ≥ E[n3 ] ≥ j=1 m P j=1 1 2 j=1 (1 − (1 − m P 1 lcj ) ) lcj · zjLP ((1 − 2−lcj ) + (1 − (1 − j=1 1 lcj LP ) ))z j lcj ! 499 Beweis (Fortsetzung): Beobachtung: k ≥ 2: (1 − 1 ) 2k + (1 − (1 − k1 )k ) ≥ 3 2 k = 2: 3 4 + 3 4 = 3 2 k ≥ 3: 7 8 + (1 − e1 ) ≥ 3 2 E[n3 ] ≥ 1 2 = 3 4 · m P 3 j=1 m P j=1 ≥ 43 opt 2 · zjLP zjLP 500 Kapitel 9.3 HITTING SET Definition: Eingabe: Teilmengen S1 , ..., Sm ⊆ {1, 2, ..., n} Ausgabe: T ⊆ {1, 2, ..., n} heißt Hitting Set für S1 , ..., Sm , wenn T ∩ Si 6= ∅ für alle i = 1, 2, ..., m. Gesucht ist ein Hitting Set minimaler Kardinalität. Beispiel: • T = {1, 2, ..., n} ist ein Hitting Set • n=9 S1 = {1, 3, 5, 7} S2 = {2, 4, 5, 8} S3 = {3, 4, 6, 9} T = {1, 4} Hitting Set minimaler Kardinalität 501 Behauptung: Gegeben sei eine Eingabe für das Problem HITTING SET. Mittels des Randomisierten Rundens kann ein Hitting Set T gefunden werden mit | T |≤ 4(ln m + O (1))copt , wobei copt die minimale Kardinalität eines Hitting Set für die gegebene Eingabe bezeichnet. Beweis: min n P xi i=1 ∀i : xi ∈ {0, 1} P xi ≥ 1 ∀j : i∈Sj Relaxation ∀i : xi ∈ [0, 1] optimale Lösung des LPs Zielfktwert c LP sowie Variablenbelegung x1LP , ..., xnLP 502 c LP = x1LP + · · · + xnLP und c LP ≤ copt Randomisiertes Runden E [| T |] = c LP o.B.d.A. Sj = {1, ..., k } Pr(Sj ∩ T = ∅) = (1−x1LP ) · · · · · (1 − xkLP ) mit Wkeit x1LP wird Element 1 in T aufgenommen Nebenbedingung P i∈Sj xi ≥ 1 Lemma1 x1LP + · · · + xkLP ≥ 1 (1 − x1LP ) + · · · + (1 − xkLP ) ≤ k − 1 −−−−−→ (1 − x1LP ) · ... · (1 − xkLP ) ≤ e−1 Folie 490 503 union bound −−−−→ Wkeit, dass es eine Menge Si , 1 ≤ i ≤ m, gibt, die von T nicht abgedeckt“ wird, ” höchstens m · e−1 : −( für m ≥ e Idee: Löse das LP und führe t mal unabhängig voneinander Randomisiertes Runden durch t Mengen T1 , ..., Tt mit E[|Ti |] = c LP für 1 ≤ i ≤ t t S Ti T := i=1 E[|T |] = E[|T1 ∪ ... ∪ Tt |] ≤ t · c LP ≤ t · copt und Pr(Sj ∩ T = ∅) ≤ e−t 504 Wähle t = ln m + ln 4 Pr(|T | ≥ 4 · t · copt ∨ ∃i : Si ∩ T = ∅) union bound ≤ Pr(|T | ≥ 4 · t · copt ) + Pr(∃i : Si ∩ T = ∅) ≤ 14 + me−(ln m+ln 4) = 12 MarkoffUngleichung Mit Wahrscheinlichkeit mindestens 12 wird mit Hilfe der Methode des Randomisierten Rundens ein Hitting Set generiert, das höchstens um den Faktor 4(ln m + ln 4) größer ist als eins minimaler Kardinalität. 505