MinCut - WueCampus2

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