1 Algorithmische Graphentheorie Sommersemester 2013 7. Vorlesung Randomisierte Algorithmen für MinCut Dr. Joachim Spoerhase Prof. Dr. Alexander Wolff 2 MinCut – kleinste Schnitte Def. Gegeben sei ein ungerichteter Multigraph G = (V , E ). Gesucht ist eine Zerlegung (S , T ) von V mit S , T 6= ∅, so dass die Anzahl der Kanten uv ∈ E mit u ∈ S und v ∈ T möglichst klein ist. S T 2 MinCut – kleinste Schnitte Def. Gegeben sei ein ungerichteter Multigraph G = (V , E ). Gesucht ist eine Zerlegung (S , T ) von V mit S , T 6= ∅, so dass die Anzahl der Kanten uv ∈ E mit u ∈ S und v ∈ T möglichst klein ist. Motivation: S T ? 2 MinCut – kleinste Schnitte Def. Gegeben sei ein ungerichteter Multigraph G = (V , E ). Gesucht ist eine Zerlegung (S , T ) von V mit S , T 6= ∅, so dass die Anzahl der Kanten uv ∈ E mit u ∈ S und v ∈ T möglichst klein ist. Motivation: S T Z.B. Finden von Schwachstellen in Kommunikationsnetzwerken. 2 MinCut – kleinste Schnitte Def. Gegeben sei ein ungerichteter Multigraph G = (V , E ). Gesucht ist eine Zerlegung (S , T ) von V mit S , T 6= ∅, so dass die Anzahl der Kanten uv ∈ E mit u ∈ S und v ∈ T möglichst klein ist. Motivation: S Beachte: T Z.B. Finden von Schwachstellen in Kommunikationsnetzwerken. Im Gegensatz zu s -t -Schnitten kein zu trennendes Knotenpaar (s , t ) vorgegeben. 2 MinCut – kleinste Schnitte Def. Gegeben sei ein ungerichteter Multigraph G = (V , E ). Gesucht ist eine Zerlegung (S , T ) von V mit S , T 6= ∅, so dass die Anzahl der Kanten uv ∈ E mit u ∈ S und v ∈ T möglichst klein ist. Motivation: S Beachte: T Z.B. Finden von Schwachstellen in Kommunikationsnetzwerken. Im Gegensatz zu s -t -Schnitten kein zu trennendes Knotenpaar (s , t ) vorgegeben. O.B.d.A. Multigraph G zusammenhängend, und n := |V | ≥ 2. 3 Multigraphen vs. Kantengewichte 5 3 Algorithmenbeschreibung Analyse Implementierung (vgl. ÜB) 3 Multigraphen vs. Kantengewichte 5 3 Algorithmenbeschreibung Analyse Implementierung (vgl. ÜB) Gewichtetes MinCut: . . . minimiere Kosten X u ∈ S ,v ∈ T uv ∈E c (uv ), wobei c : E → N. 3 Multigraphen vs. Kantengewichte 5 3 Algorithmenbeschreibung Analyse Implementierung (vgl. ÜB) Gewichtetes MinCut: . . . minimiere Kosten X c (uv ), wobei c : E → N. u ∈ S ,v ∈ T uv ∈E . . . Algorithmen funktionieren auch für gewichtetes MinCut 3 Multigraphen vs. Kantengewichte 5 3 Algorithmenbeschreibung Analyse Implementierung (vgl. ÜB) Gewichtetes MinCut: . . . minimiere Kosten X c (uv ), wobei c : E → N. u ∈ S ,v ∈ T uv ∈E . . . Algorithmen funktionieren auch für gewichtetes MinCut 4 Naiver (deterministischer) Ansatz Übung: Geben Sie einen Polynomialzeit-Algorithmus für MinCut an! 4 Naiver (deterministischer) Ansatz Übung: Geben Sie einen Polynomialzeit-Algorithmus für MinCut an! V Für jedes Paar (s , t ) ∈ 2 , berechne 4 Naiver (deterministischer) Ansatz Übung: Geben Sie einen Polynomialzeit-Algorithmus für MinCut an! V Für jedes Paar (s , t ) ∈ 2 , berechne kleinsten s -t -Schnitt mittels Edmonds-Karp. 4 Naiver (deterministischer) Ansatz Übung: Geben Sie einen Polynomialzeit-Algorithmus für MinCut an! V Für jedes Paar (s , t ) ∈ 2 , berechne kleinsten s -t -Schnitt mittels Edmonds-Karp. Gib den kleinsten dieser s -t -Schnitte zurück. 4 Naiver (deterministischer) Ansatz Übung: Geben Sie einen Polynomialzeit-Algorithmus für MinCut an! V Für jedes Paar (s , t ) ∈ 2 , berechne kleinsten s -t -Schnitt mittels Edmonds-Karp. Gib den kleinsten dieser s -t -Schnitte zurück. Gesamtlaufzeit: O (V 2 · V E 2 ) ⊆ O (V 7 ). 4 Naiver (deterministischer) Ansatz Übung: Geben Sie einen Polynomialzeit-Algorithmus für MinCut an! V Für jedes Paar (s , t ) ∈ 2 , berechne kleinsten s -t -Schnitt mittels Edmonds-Karp. Gib den kleinsten dieser s -t -Schnitte zurück. Gesamtlaufzeit: O (V 2 · V E 2 ) ⊆ O (V 7 ). Es geht auch in O (V 6 ) Zeit. . . 4 Naiver (deterministischer) Ansatz Übung: Geben Sie einen Polynomialzeit-Algorithmus für MinCut an! V Für jedes Paar (s , t ) ∈ 2 , berechne kleinsten s -t -Schnitt mittels Edmonds-Karp. Gib den kleinsten dieser s -t -Schnitte zurück. Gesamtlaufzeit: O (V 2 · V E 2 ) ⊆ O (V 7 ). Es geht auch in O (V 6 ) Zeit. . . – Wähle s fest. 4 Naiver (deterministischer) Ansatz Übung: Geben Sie einen Polynomialzeit-Algorithmus für MinCut an! V Für jedes Paar (s , t ) ∈ 2 , berechne kleinsten s -t -Schnitt mittels Edmonds-Karp. Gib den kleinsten dieser s -t -Schnitte zurück. Gesamtlaufzeit: O (V 2 · V E 2 ) ⊆ O (V 7 ). Es geht auch in O (V 6 ) Zeit. . . – Wähle s fest. – Berechne den kleinsten (s , t )-Schnitt für jedes t ∈ V \ {s }. Algorithmus Contract David R. Karger 5 Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. einfacher randomisierter Algorithmus [Karger SODA’93] Algorithmus Contract David R. Karger 5 Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. einfacher randomisierter Algorithmus [Karger SODA’93] Algorithmus Contract David R. Karger 5 Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. einfacher randomisierter Algorithmus [Karger SODA’93] Algorithmus Contract David R. Karger 5 Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. einfacher randomisierter Algorithmus [Karger SODA’93] Algorithmus Contract David R. Karger 5 Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. einfacher randomisierter Algorithmus 5 1 H e 4 3 2 [Karger SODA’93] David R. Karger 5 Algorithmus Contract Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. einfacher randomisierter Algorithmus 5 1 e 4 3 5 H H /e 4 2 1,3 2 [Karger SODA’93] David R. Karger 5 Algorithmus Contract Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. einfacher randomisierter Algorithmus 5 1 e 4 3 5 H H /e 4 2 1,3 2 [Karger SODA’93] David R. Karger 5 Algorithmus Contract Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. einfacher randomisierter Algorithmus 5 1 3 H /e s S e 4 5 H [Karger SODA’93] 4 2 1,3 2 t T David R. Karger 5 Algorithmus Contract Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt /* kontrahiere e */ H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. vgl. deterministischer Algorithmus! einfacher randomisierter Algorithmus 5 1 3 H /e s S e 4 5 H [Karger SODA’93] 4 2 1,3 2 t T 6 Laufzeit Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. Anzahl der Knoten sinkt in jeder Iteration um 1. 6 Laufzeit Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. Anzahl der Knoten sinkt in jeder Iteration um 1. Jede Iteration benötigt O (E ) Zeit. 6 Laufzeit Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. Anzahl der Knoten sinkt in jeder Iteration um 1. Jede Iteration benötigt O (E ) Zeit. ÜB: Implementierung mit O (V ) Zeit pro Iteration möglich! 6 Laufzeit Contract(zsghd. Multigraph G = (V , E )) H←G while H hat mehr als zwei Knoten do wähle Kante e in H zufällig und gleichverteilt H ← H /e return Zerlegung (S , T ) von G , die den beiden letzten return Knoten in H entspricht. Anzahl der Knoten sinkt in jeder Iteration um 1. Jede Iteration benötigt O (E ) Zeit. ÜB: Implementierung mit O (V ) Zeit pro Iteration möglich! Gesamtlaufzeit: O (V 2 ) 7 Beobachtung Kantenkontraktion Jeder Schnitt in G /e korrespondiert zu Schnitt gleicher Größe in G . S T e G /e e S T G 7 Beobachtung Kantenkontraktion Jeder Schnitt in G /e korrespondiert zu Schnitt gleicher Größe in G . S T e Größe eines kleinsten Schnitts steigt (schwach) monoton während Ausführung von Contract G /e e S T G 8 Erfolgswahrscheinlichkeit Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . 8 Erfolgswahrscheinlichkeit Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Diese Wahrscheinlichkeit ist überraschend hoch, da es (2n − 2)/2 = 2n−1 − 1 viele Schnitte gibt. 8 Erfolgswahrscheinlichkeit Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Diese Wahrscheinlichkeit ist überraschend hoch, da es (2n − 2)/2 = 2n−1 − 1 viele Schnitte gibt. Die Wahrscheinlichkeit, dass ein zufällig und gleichverteilt 1 gewählter Schnitt genau (S , T ) trifft, ist also nur 2Ω(n) , also exponentiell klein. 9 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Sei (S , T ) kleinster Schnitt, C = { uv ∈ E | u ∈ S , v ∈ T } und k = |C |. 9 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Sei (S , T ) kleinster Schnitt, C = { uv ∈ E | u ∈ S , v ∈ T } und k = |C |. Graph Hi (H zu Beginn von Iteration i ) hat n − i + 1 Knoten. 9 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Sei (S , T ) kleinster Schnitt, C = { uv ∈ E | u ∈ S , v ∈ T } und k = |C |. Graph Hi (H zu Beginn von Iteration i ) hat n − i + 1 Knoten. Kleinster Schnitt in Hi hat Größe ≥ k . 9 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Sei (S , T ) kleinster Schnitt, C = { uv ∈ E | u ∈ S , v ∈ T } und k = |C |. Graph Hi (H zu Beginn von Iteration i ) hat n − i + 1 Knoten. Kleinster Schnitt in Hi hat Größe ≥ k . ⇒ Jeder Knoten u in Hi hat Grad ≥ k . 9 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Sei (S , T ) kleinster Schnitt, C = { uv ∈ E | u ∈ S , v ∈ T } und k = |C |. Graph Hi (H zu Beginn von Iteration i ) hat n − i + 1 Knoten. Kleinster Schnitt in Hi hat Größe ≥ k . ⇒ Jeder Knoten u in Hi hat Grad ≥ k . sonst hätte Schnitt (u , V − u ) Größe < k 9 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Sei (S , T ) kleinster Schnitt, C = { uv ∈ E | u ∈ S , v ∈ T } und k = |C |. Graph Hi (H zu Beginn von Iteration i ) hat n − i + 1 Knoten. Kleinster Schnitt in Hi hat Größe ≥ k . ⇒ Jeder Knoten u in Hi hat Grad ≥ k . ⇒ Hi hat ≥ k (n − i + 1)/2 Kanten. sonst hätte Schnitt (u , V − u ) Größe < k 10 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Hi hat ≥ k (n − i + 1)/2 Kanten. 10 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Hi hat ≥ k (n − i + 1)/2 Kanten. Sei Ei Ereignis, dass in Iteration i in Hi keine Kante aus C kontrahiert wird. 10 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Hi hat ≥ k (n − i + 1)/2 Kanten. Sei Ei Ereignis, dass in Iteration i in Hi keine Kante aus C kontrahiert wird. WK, dass in Iteration i keine Kante aus C kontrahiert wird (vorausgesetzt es wurde bislang noch keine solche kontrahiert): 10 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Hi hat ≥ k (n − i + 1)/2 Kanten. Sei Ei Ereignis, dass in Iteration i in Hi keine Kante aus C kontrahiert wird. WK, dass in Iteration i keine Kante aus C kontrahiert wird (vorausgesetzt es wurde bislang noch keine solche kontrahiert): −1 i\ k 2 Pr Ei Ej ≥ 1 − =1− k (n − i + 1)/2 n−i +1 j =1 10 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Hi hat ≥ k (n − i + 1)/2 Kanten. Sei Ei Ereignis, dass in Iteration i in Hi keine Kante aus C kontrahiert wird. WK, dass in Iteration i keine Kante aus C kontrahiert wird (vorausgesetzt es wurde bislang noch keine solche kontrahiert): Kardinalität von C −1 i\ k 2 Pr Ei Ej ≥ 1 − =1− k (n − i + 1)/2 n−i +1 j =1 10 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. Hi hat ≥ k (n − i + 1)/2 Kanten. Sei Ei Ereignis, dass in Iteration i in Hi keine Kante aus C kontrahiert wird. WK, dass in Iteration i keine Kante aus C kontrahiert wird (vorausgesetzt es wurde bislang noch keine solche kontrahiert): Gesamtzahl der Kanten Kardinalität von C −1 i\ k 2 Pr Ei Ej ≥ 1 − =1− k (n − i + 1)/2 n−i +1 j =1 11 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. −1 i\ 2 Pr Ei Ej ≥ 1 − n−i +1 j =1 11 Erfolgswahrscheinlichkeit – Beweis Satz. Sei (S , T ) ein kleinster Schnitt. Die Wahrscheinlichkeit, dass Contract (S , T ) findet, ist mindestens n(n2−1) . Beweis. −1 i\ 2 Pr Ei Ej ≥ 1 − n−i +1 j =1 Wahrscheinlichkeit, dass Contract keine Kante aus C kontrahiert: \ nY nY −2 −2 n−2 2 n−i −1 Pr Ei ≥ 1− = i =1 n−i +1 n−i +1 i =1 i =1 (n − 2) · (n − 3) · . . . · 1 2 = = n · (n − 1) · . . . · 3 n(n − 1) 12-1 Verringerung der Fehlerwahrscheinlichkeit Erfolgswahrscheinlichkeit Zwecke 2 n(n−1) ≥ 2 n2 zu klein für praktische 12-2 Verringerung der Fehlerwahrscheinlichkeit Erfolgswahrscheinlichkeit Zwecke 2 n(n−1) ≥ 2 n2 zu klein für praktische Wiederhole n2 log n mal und gib beste Lösung aus 12-3 Verringerung der Fehlerwahrscheinlichkeit Erfolgswahrscheinlichkeit Zwecke 2 n(n−1) ≥ 2 n2 zu klein für praktische Wiederhole n2 log n mal und gib beste Lösung aus Fehlerwahrscheinlichkeit ist höchstens 2 1− 2 n n2 log n ≤e 2n2 log n − n2 =e −2 log n 1 = 2 n 12-4 Verringerung der Fehlerwahrscheinlichkeit Erfolgswahrscheinlichkeit Zwecke 2 n(n−1) ≥ 2 n2 zu klein für praktische Wiederhole n2 log n mal und gib beste Lösung aus Fehlerwahrscheinlichkeit ist höchstens 2 1− 2 n n2 log n ≤e 2n2 log n − n2 1 + x ≤ ex für alle x ∈ R =e −2 log n 1 = 2 n 12-5 Verringerung der Fehlerwahrscheinlichkeit Erfolgswahrscheinlichkeit Zwecke 2 n(n−1) ≥ 2 n2 zu klein für praktische Wiederhole n2 log n mal und gib beste Lösung aus Fehlerwahrscheinlichkeit ist höchstens 2 1− 2 n n2 log n ≤e 2n2 log n − n2 ⇒ Erfolgswahrscheinlichkeit 1 − 1 n2 =e −2 log n 1 = 2 n konvergiert gegen 1. 13 Resümee Es handelt sich um einen sog. Monte-Carlo-Algorithmus, da randomisiert und nicht immer korrekt. Aber: Der Alg. ist mit hoher Wahrscheinlichkeit korrekt; Fehlerwahrscheinlichkeit konvergiert mit steigendem n gegen 0. 13 Resümee Es handelt sich um einen sog. Monte-Carlo-Algorithmus, da randomisiert und nicht immer korrekt. Aber: Der Alg. ist mit hoher Wahrscheinlichkeit korrekt; Fehlerwahrscheinlichkeit konvergiert mit steigendem n gegen 0. Gesamtlaufzeit O (n4 log n) deutlich besser als O (n6 ) bei naivem deterministischen Ansatz. 13 Resümee Es handelt sich um einen sog. Monte-Carlo-Algorithmus, da randomisiert und nicht immer korrekt. Aber: Der Alg. ist mit hoher Wahrscheinlichkeit korrekt; Fehlerwahrscheinlichkeit konvergiert mit steigendem n gegen 0. Gesamtlaufzeit O (n4 log n) deutlich besser als O (n6 ) bei naivem deterministischen Ansatz. Außerdem ist der randomisierte Alg. viel einfacher! 13 Resümee Es handelt sich um einen sog. Monte-Carlo-Algorithmus, da randomisiert und nicht immer korrekt. Aber: Der Alg. ist mit hoher Wahrscheinlichkeit korrekt; Fehlerwahrscheinlichkeit konvergiert mit steigendem n gegen 0. Gesamtlaufzeit O (n4 log n) deutlich besser als O (n6 ) bei naivem deterministischen Ansatz. Außerdem ist der randomisierte Alg. viel einfacher! Satz. Es gibt einen randomisierten Algorithmus für MinCut mit O (n4 log n) Laufzeit und Erfolgswahrscheinlichkeit 1 − 1/n2 . 14 Es geht noch deutlich schneller! Satz. Es gibt einen randomisierten Algorithmus für MinCut mit O (n2 log3 n) Laufzeit, der mit hoher Wahrscheinlichkeit einen kleinsten Schnitt ermittelt. [Karger & Stein, STOC’93] 14 Es geht noch deutlich schneller! Satz. Es gibt einen randomisierten Algorithmus für MinCut mit O (n2 log3 n) Laufzeit, der mit hoher Wahrscheinlichkeit einen kleinsten Schnitt ermittelt. [Karger & Stein, STOC’93] David R. Karger Clifford Stein 14 Es geht noch deutlich schneller! Satz. Es gibt einen randomisierten Algorithmus für MinCut mit O (n2 log3 n) Laufzeit, der mit hoher Wahrscheinlichkeit einen kleinsten Schnitt ermittelt. [Karger & Stein, STOC’93] David R. Karger Clifford Stein Dies ist überraschend schnell, da ein Graph O (n2 ) Kanten haben kann. In diesem Fall ist die Laufzeit beinahe linear! 15 Partielle Ausführung Contract Erfolgswahrscheinlichkeit Contract nY −2 i =1 2 1− n−i +1 1 1 1 = 1− · 1− · ... · n n−1 3 15 Partielle Ausführung Contract Erfolgswahrscheinlichkeit Contract nY −2 i =1 2 1− n−i +1 sinkt mit wachsendem i 1 1 1 = 1− · 1− · ... · n n−1 3 15 Partielle Ausführung Contract Erfolgswahrscheinlichkeit Contract nY −2 i =1 2 1− n−i +1 sinkt mit wachsendem i 1 1 1 = 1− · 1− · ... · n n−1 3 Idee: Ändere Strategie mit wachsender Iteration i . 15 Partielle Ausführung Contract Erfolgswahrscheinlichkeit Contract nY −2 i =1 2 1− n−i +1 sinkt mit wachsendem i 1 1 1 = 1− · 1− · ... · n n−1 3 Idee: Ändere Strategie mit wachsender Iteration i . Contract(G , t ): Stoppe, wenn Graph t Knoten enthält. 15 Partielle Ausführung Contract Erfolgswahrscheinlichkeit Contract nY −2 i =1 2 1− n−i +1 sinkt mit wachsendem i 1 1 1 = 1− · 1− · ... · n n−1 3 Idee: Ändere Strategie mit wachsender Iteration i . Contract(G , t ): Stoppe, wenn Graph t Knoten enthält. Schätze Wahrscheinlichkeit ab, dass Contract(G , t ) keine Kante aus optimalem Schnitt C kontrahiert: 15 Partielle Ausführung Contract Erfolgswahrscheinlichkeit Contract nY −2 i =1 2 1− n−i +1 sinkt mit wachsendem i 1 1 1 = 1− · 1− · ... · n n−1 3 Idee: Ändere Strategie mit wachsender Iteration i . Contract(G , t ): Stoppe, wenn Graph t Knoten enthält. Schätze Wahrscheinlichkeit ab, dass Contract(G , t ) keine Kante aus optimalem Schnitt C kontrahiert: nY −t −t h\n−t i nY 2 n−i −1 Pr Ei ≥ = 1− i =1 n−i +1 n−i +1 i =1 i =1 (n − 2) · (n − 3) . . . (t − 1) t (t − 1) = = n · (n − 1) . . . (t + 1) n(n − 1) 15 Partielle Ausführung Contract Erfolgswahrscheinlichkeit Contract nY −2 i =1 2 1− n−i +1 sinkt mit wachsendem i 1 1 1 = 1− · 1− · ... · n n−1 3 Idee: Ändere Strategie mit wachsender Iteration i . Contract(G , t ): Stoppe, wenn Graph t Knoten enthält. Schätze Wahrscheinlichkeit ab, dass Contract(G , t ) keine Kante aus optimalem Schnitt C kontrahiert: nY −t −t h\n−t i nY 2 n−i −1 Pr Ei ≥ = 1− i =1 n−i +1 n−i +1 i =1 i =1 (n − 2) · (n − 3) . . . (t − 1) t (t − 1) = = n · (n − 1) . . . (t + 1) n(n − 1) (1) 16 Algorithmus FastCut FastCut(zsghd. Multigraph G = (V , E )) n ← |V | if n ≤ 6 then löse Problem via brute force“ ” else √ t ← d1 + n/ 2e H1 ← Contract(G , t ) H2 ← Contract(G , t ) (S1 , T1 ) ← FastCut(H1 ) (S2 , T2 ) ← FastCut(H2 ) return den kleineren der Schnitte (S1 , T1 ), (S2 , T2 ) 16 Algorithmus FastCut FastCut(zsghd. Multigraph G = (V , E )) n ← |V | if n ≤ 6 then löse Problem via brute force“ ” else √ t ← d1 + n/ 2e H1 ← Contract(G , t ) H2 ← Contract(G , t ) (S1 , T1 ) ← FastCut(H1 ) (S2 , T2 ) ← FastCut(H2 ) return den kleineren der Schnitte (S1 , T1 ), (S2 , T2 ) 16 Algorithmus FastCut FastCut(zsghd. Multigraph G = (V , E )) n ← |V | if n ≤ 6 then löse Problem via brute force“ ” else √ t ← d1 + n/ 2e H1 ← Contract(G , t ) H2 ← Contract(G , t ) (S1 , T1 ) ← FastCut(H1 ) (S2 , T2 ) ← FastCut(H2 ) return den kleineren der Schnitte (S1 , T1 ), (S2 , T2 ) 16 Algorithmus FastCut FastCut(zsghd. Multigraph G = (V , E )) n ← |V | if n ≤ 6 then löse Problem via brute force“ ” else √ t ← d1 + n/ 2e H1 ← Contract(G , t ) unabhängige Ausführungen H2 ← Contract(G , t ) (S1 , T1 ) ← FastCut(H1 ) (S2 , T2 ) ← FastCut(H2 ) return den kleineren der Schnitte (S1 , T1 ), (S2 , T2 ) 16 Algorithmus FastCut FastCut(zsghd. Multigraph G = (V , E )) n ← |V | if n ≤ 6 then löse Problem via brute force“ ” else √ t ← d1 + n/ 2e H1 ← Contract(G , t ) unabhängige Ausführungen H2 ← Contract(G , t ) (S1 , T1 ) ← FastCut(H1 ) (S2 , T2 ) ← FastCut(H2 ) return den kleineren der Schnitte (S1 , T1 ), (S2 , T2 ) 16 Algorithmus FastCut FastCut(zsghd. Multigraph G = (V , E )) n ← |V | if n ≤ 6 then löse Problem via brute force“ ” else √ t ← d1 + n/ 2e H1 ← Contract(G , t ) unabhängige Ausführungen H2 ← Contract(G , t ) (S1 , T1 ) ← FastCut(H1 ) (S2 , T2 ) ← FastCut(H2 ) return den kleineren der Schnitte (S1 , T1 ), (S2 , T2 ) 16 Algorithmus FastCut FastCut(zsghd. Multigraph G = (V , E )) n ← |V | if n ≤ 6 then löse Problem via brute force“ ” else √ t ← d1 + n/ 2e H1 ← Contract(G , t ) unabhängige Ausführungen H2 ← Contract(G , t ) (S1 , T1 ) ← FastCut(H1 ) (S2 , T2 ) ← FastCut(H2 ) return den kleineren der Schnitte (S1 , T1 ), (S2 , T2 ) Laufzeit? 17 Intuition FastCut vs. Contract n−2 Y i=1 1− 2 ! Erfolgswahrscheinlichkeit n−i +1 Contract (wied.) FastCut n ... ... O (n2 log n) Schnitte ... O (n2 ) Schnitte Ersparnis 18 Laufzeit Satz. FastCut hat Laufzeit O (n2 log n). 18 Laufzeit Satz. FastCut hat Laufzeit O (n2 log n). Beweis. Rekurrenz T (n) = 2T n √ 2 + O (n2 ) 18 Laufzeit Satz. FastCut hat Laufzeit O (n2 log n). Beweis. Rekurrenz T (n) = 2T n √ 2 + O (n2 ) Erinnerung Mastertheorem: T (n) = aT (n/b ) + f (n) mit f (n) = O (nlogb a ) impliziert T (n) = O (nlogb a log n). 18 Laufzeit Satz. FastCut hat Laufzeit O (n2 log n). Beweis. Rekurrenz T (n) = 2T n √ 2 + O (n2 ) Erinnerung Mastertheorem: T (n) = aT (n/b ) + f (n) mit f (n) = O (nlogb a ) impliziert T (n) = O (nlogb a log n). √ In unserem Fall: a = 2, b = 2, f (n) = O (n2 ) wegen log√2 2 = 2 folgt die Behauptung 19 Erfolgswahrscheinlichkeit Satz. FastCut liefert mit Wahrscheinlichkeit Ω (1/ log n) einen kleinsten Schnitt. Beweis. 19 Erfolgswahrscheinlichkeit Satz. FastCut liefert mit Wahrscheinlichkeit Ω (1/ log n) einen kleinsten Schnitt. Beweis. Betrachte Graph H mit n Knoten bei rekursivem Aufruf 19 Erfolgswahrscheinlichkeit Satz. FastCut liefert mit Wahrscheinlichkeit Ω (1/ log n) einen kleinsten Schnitt. Beweis. Betrachte Graph H mit n Knoten bei rekursivem Aufruf seien H1 , H2 die Graphen nach Anw. von Contract(H , t ) 19 Erfolgswahrscheinlichkeit Satz. FastCut liefert mit Wahrscheinlichkeit Ω (1/ log n) einen kleinsten Schnitt. Beweis. Betrachte Graph H mit n Knoten bei rekursivem Aufruf seien H1 , H2 die Graphen nach Anw. von Contract(H , t ) Wahrscheinlichkeit, dass kleinster Schnitt aus H in H1 überlebt“ ist nach (1) mindestens ” √ √ √ 2 1 t (t − 1) d1 + n/ 2e(d1 + n/ 2e − 1) (n/ 2) = = ≥ 2 n(n − 1) n(n − 1) n 2 20 Erfolgswahrscheinlichkeit seien H1 , H2 die Graphen nach Anw. von Contract(H , t ) WK, dass kleinster Schnitt in H1 überlebt, ist ≥ 1/2. 20 Erfolgswahrscheinlichkeit seien H1 , H2 die Graphen nach Anw. von Contract(H , t ) WK, dass kleinster Schnitt in H1 überlebt, ist ≥ 1/2. FastCut findet kleinsten Schnitt in H , wenn ein solcher in H1 oder H2 überlebt und der rekursive Aufruf im entsprechenden Graphen Hi ebenfalls einen kleinsten Schnitt findet 20 Erfolgswahrscheinlichkeit seien H1 , H2 die Graphen nach Anw. von Contract(H , t ) WK, dass kleinster Schnitt in H1 überlebt, ist ≥ 1/2. FastCut findet kleinsten Schnitt in H , wenn ein solcher in H1 oder H2 überlebt und der rekursive Aufruf im entsprechenden Graphen Hi ebenfalls einen kleinsten Schnitt findet sei l = Θ (log n) die Tiefe der Rekursion von FastCut(H , t ) 20 Erfolgswahrscheinlichkeit seien H1 , H2 die Graphen nach Anw. von Contract(H , t ) WK, dass kleinster Schnitt in H1 überlebt, ist ≥ 1/2. FastCut findet kleinsten Schnitt in H , wenn ein solcher in H1 oder H2 überlebt und der rekursive Aufruf im entsprechenden Graphen Hi ebenfalls einen kleinsten Schnitt findet sei l = Θ (log n) die Tiefe der Rekursion von FastCut(H , t ) Wir bestimmen untere Schranke p (l ) für die Erfolgs-WK gemäß obigen Überlegungen: 2 1 p (l )2 p (l + 1) = 1 − 1 − p (l ) = p (l ) − 2 4 wobei p (0) = 1 21 Erfolgswahrscheinlichkeit Sei p (l ) untere Schranke für die Erfolgs-WK: p (l )2 p (l + 1) = p (l ) − 4 mit p (0) = 1 21 Erfolgswahrscheinlichkeit Sei p (l ) untere Schranke für die Erfolgs-WK: p (l )2 p (l + 1) = p (l ) − 4 Setze q (l ) = 4/p (l ) − 1. mit p (0) = 1 (Äquivalent: p (l ) = 4/(q (l ) + 1)) 21 Erfolgswahrscheinlichkeit Sei p (l ) untere Schranke für die Erfolgs-WK: p (l )2 p (l + 1) = p (l ) − 4 mit p (0) = 1 Setze q (l ) = 4/p (l ) − 1. (Äquivalent: p (l ) = 4/(q (l ) + 1)) Einsetzen ergibt q (0) = 3 und 4 4 q (l + 1) = −1= −1 2 p (l + 1) p (l ) − p (l ) /4 1 = −1 2 1/(q (l ) + 1) − 1/(q (l ) + 1) (q (l ) + 1)2 − q (l ) 1 = = q (l ) + 1 + q (l ) q (l ) 21 Erfolgswahrscheinlichkeit Sei p (l ) untere Schranke für die Erfolgs-WK: p (l )2 p (l + 1) = p (l ) − 4 mit p (0) = 1 Setze q (l ) = 4/p (l ) − 1. (Äquivalent: p (l ) = 4/(q (l ) + 1)) Einsetzen ergibt q (0) = 3 und 4 4 q (l + 1) = −1= −1 2 p (l + 1) p (l ) − p (l ) /4 1 = −1 2 1/(q (l ) + 1) − 1/(q (l ) + 1) (q (l ) + 1)2 − q (l ) 1 = = q (l ) + 1 + q (l ) q (l ) 21 Erfolgswahrscheinlichkeit Sei p (l ) untere Schranke für die Erfolgs-WK: p (l )2 p (l + 1) = p (l ) − 4 mit p (0) = 1 Setze q (l ) = 4/p (l ) − 1. (Äquivalent: p (l ) = 4/(q (l ) + 1)) Einsetzen ergibt q (0) = 3 und 4 4 q (l + 1) = −1= −1 2 p (l + 1) p (l ) − p (l ) /4 1 = −1 2 1/(q (l ) + 1) − 1/(q (l ) + 1) (q (l ) + 1)2 − q (l ) 1 = = q (l ) + 1 + q (l ) q (l ) 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Pi 1 Hi := j =1 j = Θ (log i ) 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c Induktionsschritt (I → I + 1): IV q (l + 1) ≥ q (l ) + 1 > l + 1 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c Induktionsschritt (I → I + 1): IV q (l + 1) ≥ q (l ) + 1 > l + 1 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c Induktionsschritt (I → I + 1): IV q (l + 1) ≥ q (l ) + 1 > l + 1 q (l + 1) = 1 IV q (l )+1+ q(l ) < (l + Hl −1 + c )+1+ 1l = (l +1)+ Hl + c 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c Induktionsschritt (I → I + 1): IV q (l + 1) ≥ q (l ) + 1 > l + 1 q (l + 1) = 1 IV q (l )+1+ q(l ) < (l + Hl −1 + c )+1+ 1l = (l +1)+ Hl + c 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c Induktionsschritt (I → I + 1): IV q (l + 1) ≥ q (l ) + 1 > l + 1 q (l + 1) = 1 IV q (l )+1+ q(l ) < (l + Hl −1 + c )+1+ 1l = (l +1)+ Hl + c 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c Induktionsschritt (I → I + 1): IV q (l + 1) ≥ q (l ) + 1 > l + 1 q (l + 1) = 1 IV q (l )+1+ q(l ) < (l + Hl −1 + c )+1+ 1l = (l +1)+ Hl + c 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c Induktionsschritt (I → I + 1): IV q (l + 1) ≥ q (l ) + 1 > l + 1 q (l + 1) = ⇒ p (l ) = 1 IV q (l )+1+ q(l ) < 4 q (l )+1 =Ω 1 log n (l + Hl −1 + c )+1+ 1l = (l +1)+ Hl + c 22 Erfolgswahrscheinlichkeit Es gilt q (l + 1) = q (l ) + 1 + 1 q (l ) mit q (0) = 3. Zeige per Induktion, dass l < q (l ) < l + Hl −1 + c für l ≥ 2 und genügend große Konstante c > 0. i -te harmonische Zahl Induktionsanfang (I = 2): Pi 1 Hi := j =1 j = Θ (log i ) 2 < 3 = q (0) ≤ q (2) ≤ c Induktionsschritt (I → I + 1): IV q (l + 1) ≥ q (l ) + 1 > l + 1 q (l + 1) = ⇒ p (l ) = 1 IV q (l )+1+ q(l ) < 4 q (l )+1 =Ω 1 log n (l + Hl −1 + c )+1+ 1l = (l +1)+ Hl + c l = Θ (log n) und q (l ) = Θ (l ) 23 Verringerung der Fehlerwahrscheinlichkeit 2 Wiederhole FastCut log n mal. 23 Verringerung der Fehlerwahrscheinlichkeit 2 Wiederhole FastCut log n mal. Erfolgswahrscheinlichkeit pro Ausführung ≥ c / log n mit c > 0. 23 Verringerung der Fehlerwahrscheinlichkeit 2 Wiederhole FastCut log n mal. Erfolgswahrscheinlichkeit pro Ausführung ≥ c / log n mit c > 0. Gesamtfehlerwahrscheinlichkeit log2 n c 1 −c log n 1− ≤e = c log n n 1 + x ≤ ex für alle x ∈ R 23 Verringerung der Fehlerwahrscheinlichkeit 2 Wiederhole FastCut log n mal. Erfolgswahrscheinlichkeit pro Ausführung ≥ c / log n mit c > 0. Gesamtfehlerwahrscheinlichkeit log2 n c 1 −c log n 1− ≤e = c log n n 1 + x ≤ ex für alle x ∈ R Satz. Es gibt einen randomisierten Algorithmus für MinCut mit O (n2 log3 n) Laufzeit, der mit hoher Wahrscheinlichkeit einen kleinsten Schnitt ermittelt. 24 Und noch schneller! Satz. Es gibt einen randomisierten Algorithmus für MinCut mit O (m log3 n) Laufzeit, der mit hoher Wahrscheinlichkeit einen kleinsten Schnitt ermittelt. Beweis. [Karger, STOC’96] 24 Und noch schneller! Satz. Es gibt einen randomisierten Algorithmus für MinCut mit O (m log3 n) Laufzeit, der mit hoher Wahrscheinlichkeit einen kleinsten Schnitt ermittelt. Beweis. [Karger, STOC’96] Diese Laufzeit ist auch für Graphen mit o (n2 ) Kanten fast linear!