Kapitel 9
Randomisierte Algorithmen
Walter Unger
Lehrstuhl für Informatik 1
25.05.2012 08:08
Inhalt I
1 Einleitung Idee und Überblick
2 Minimaler Schnitt Einleitung Einfacher Algorithmus Abschätzungen Verbesserter Algorithmus Abschätzungen
3 3-SAT Einleitung
Algorithmus von Schöning Analyse
4 Vergleich Einleitung Umformungen
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Die Idee
Kann eine zufällige Auswahl helfen?
Können effiziente Algorithmen noch schneller gemacht werden?
Kann bei schweren Problemen mit ausreichender Wahrscheinlichkeit ein gutes Ergebnis erreicht werden?
Hier nun:
Bestimmen eines minimalen Schnitts (Cuts).
Vergleich der Modelle.
Der Algorithmus hat mit hoher Wahrscheinlichkeit eine “gute”
Laufzeit.
Der Algorithmus liefert mit hoher Wahrscheinlichkeit eine Lösung.
Definition Schnitt
n=|V|,m=|E|
Definition (Schnitt)
SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.
EinU⊂V ist ein Schnitt (Cut) mit Wert:
c(U) = X
{v,w}∈E,v∈U,w6∈U
c({v,w}).
Schreibweise:CU=C={{v,w} ∈E,v ∈U,w 6∈U}.
Definition:c(CU) =P
e∈CUc(e).
Alsoc(U) =c(CU) =P
e∈CUc(e).
Man kannc auch durch Multikanten darstellen.
Gesucht wird der minimale SchnittC∗mit:
∀U⊂V :c(U)>c(C∗).
Definition Schnitt
n=|V|,m=|E|
Definition (Schnitt)
SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.
EinU⊂V ist ein Schnitt (Cut) mit Wert:
c(U) = X
{v,w}∈E,v∈U,w6∈U
c({v,w}).
Schreibweise:CU=C={{v,w} ∈E,v ∈U,w 6∈U}.
Definition:c(CU) =P
e∈CUc(e).
Alsoc(U) =c(CU) =P
e∈CUc(e).
Man kannc auch durch Multikanten darstellen.
Gesucht wird der minimale SchnittC∗mit:
∀U⊂V :c(U)>c(C∗).
Definition Schnitt
n=|V|,m=|E|
Definition (Schnitt)
SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.
EinU⊂V ist ein Schnitt (Cut) mit Wert:
c(U) = X
{v,w}∈E,v∈U,w6∈U
c({v,w}).
Schreibweise:CU=C={{v,w} ∈E,v ∈U,w 6∈U}.
Definition:c(CU) =P
e∈CUc(e).
Alsoc(U) =c(CU) =P
e∈CUc(e).
Man kannc auch durch Multikanten darstellen.
Gesucht wird der minimale SchnittC∗mit:
∀U⊂V :c(U)>c(C∗).
Definition Schnitt
n=|V|,m=|E|
Definition (Schnitt)
SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.
EinU⊂V ist ein Schnitt (Cut) mit Wert:
c(U) = X
{v,w}∈E,v∈U,w6∈U
c({v,w}).
Schreibweise:CU=C={{v,w} ∈E,v ∈U,w 6∈U}.
Definition:c(CU) =P
e∈CUc(e).
Alsoc(U) =c(CU) =P
e∈CUc(e).
Man kannc auch durch Multikanten darstellen.
Gesucht wird der minimale SchnittC∗mit:
∀U⊂V :c(U)>c(C∗).
Definition Schnitt
n=|V|,m=|E|
Definition (Schnitt)
SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.
EinU⊂V ist ein Schnitt (Cut) mit Wert:
c(U) = X
{v,w}∈E,v∈U,w6∈U
c({v,w}).
Schreibweise:CU=C={{v,w} ∈E,v ∈U,w 6∈U}.
Definition:c(CU) =P
e∈CUc(e).
Alsoc(U) =c(CU) =P
e∈CUc(e).
Man kannc auch durch Multikanten darstellen.
Gesucht wird der minimale SchnittC∗mit:
∀U⊂V :c(U)>c(C∗).
Definition Schnitt
n=|V|,m=|E|
Definition (Schnitt)
SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.
EinU⊂V ist ein Schnitt (Cut) mit Wert:
c(U) = X
{v,w}∈E,v∈U,w6∈U
c({v,w}).
Schreibweise:CU=C={{v,w} ∈E,v ∈U,w 6∈U}.
Definition:c(CU) =P
e∈CUc(e).
Alsoc(U) =c(CU) =P
e∈CUc(e).
Man kannc auch durch Multikanten darstellen.
Gesucht wird der minimale SchnittC∗mit:
∀U⊂V :c(U)>c(C∗).
Definition Schnitt
n=|V|,m=|E|
Definition (Schnitt)
SeiG= (V,E,c)gegeben. Seic:E 7→N+ Kostenfunktion auf den Kanten.
EinU⊂V ist ein Schnitt (Cut) mit Wert:
c(U) = X
{v,w}∈E,v∈U,w6∈U
c({v,w}).
Schreibweise:CU=C={{v,w} ∈E,v ∈U,w 6∈U}.
Definition:c(CU) =P
e∈CUc(e).
Alsoc(U) =c(CU) =P
e∈CUc(e).
Man kannc auch durch Multikanten darstellen.
Gesucht wird der minimale SchnittC∗mit:
∀U⊂V :c(U)>c(C∗).
Einfache Bestimmung des Minimalen Schnitts
n=|V|,m=|E|
Der minimale Schnitt kann durch
n 2
Aufrufe eines Flussalgorithmuses gelöst werden.
n−1 Aufrufe eines Flussalgorithmuses gelöst werden.
In ZeitO(n4)gelöst werden.
Hier nun:
Randomisierter Algorithmus mit besserer Laufzeit.
Einfache Bestimmung des Minimalen Schnitts
n=|V|,m=|E|
Der minimale Schnitt kann durch
n 2
Aufrufe eines Flussalgorithmuses gelöst werden.
n−1 Aufrufe eines Flussalgorithmuses gelöst werden.
In ZeitO(n4)gelöst werden.
Hier nun:
Randomisierter Algorithmus mit besserer Laufzeit.
Einfache Bestimmung des Minimalen Schnitts
n=|V|,m=|E|
Der minimale Schnitt kann durch
n 2
Aufrufe eines Flussalgorithmuses gelöst werden.
n−1 Aufrufe eines Flussalgorithmuses gelöst werden.
In ZeitO(n4)gelöst werden.
Hier nun:
Randomisierter Algorithmus mit besserer Laufzeit.
Einfache Bestimmung des Minimalen Schnitts
n=|V|,m=|E|
Der minimale Schnitt kann durch
n 2
Aufrufe eines Flussalgorithmuses gelöst werden.
n−1 Aufrufe eines Flussalgorithmuses gelöst werden.
In ZeitO(n4)gelöst werden.
Hier nun:
Randomisierter Algorithmus mit besserer Laufzeit.
Einfache Bestimmung des Minimalen Schnitts
n=|V|,m=|E|
Der minimale Schnitt kann durch
n 2
Aufrufe eines Flussalgorithmuses gelöst werden.
n−1 Aufrufe eines Flussalgorithmuses gelöst werden.
In ZeitO(n4)gelöst werden.
Hier nun:
Randomisierter Algorithmus mit besserer Laufzeit.
Einfache Bestimmung des Minimalen Schnitts
n=|V|,m=|E|
Der minimale Schnitt kann durch
n 2
Aufrufe eines Flussalgorithmuses gelöst werden.
n−1 Aufrufe eines Flussalgorithmuses gelöst werden.
In ZeitO(n4)gelöst werden.
Hier nun:
Randomisierter Algorithmus mit besserer Laufzeit.
Einfache Bestimmung des Minimalen Schnitts
n=|V|,m=|E|
Der minimale Schnitt kann durch
n 2
Aufrufe eines Flussalgorithmuses gelöst werden.
n−1 Aufrufe eines Flussalgorithmuses gelöst werden.
In ZeitO(n4)gelöst werden.
Hier nun:
Randomisierter Algorithmus mit besserer Laufzeit.
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Idee
n=|V|,m=|E|
SeiU⊂V minimaler Schnitt.
Damit haben wir:
“Wenig” Kanten inCU.
“Viele” Kanten innerhalbU.
“Viele” Kanten innerhalbV \U.
Damit ist eine zufällig gewählte Kante mit hoher Wahrscheinlichkeit nicht im Schnitt.
Damit sind die inzidenten Knoten einer zufällig gewählten Kante mit hoher Wahrscheinlichkeit beide inUoder beide inV\U.
Vorgehen: Wähle zufällig eine Kante und verschmelze diese zu einem Knoten.
U CU V\U
Kontraktion einer Kante
n=|V|,m=|E|
Gegeben sei:G = (V,E,c)undc:E 7→N+.
Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:
V0=V\ {w}
E0=E∪ {{x,v} | {x,w} ∈E∧x 6=v} \ {e∈E |e={x,w}}
Die Kostenfunktion wird wie folgt angepasst:
c0(e) =
c(e) fallsv,w 6∈e
c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E
Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.
a b c
d e f
1 23 45
6
Kontraktion einer Kante
n=|V|,m=|E|
Gegeben sei:G = (V,E,c)undc:E 7→N+.
Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:
V0=V\ {w}
E0=E∪ {{x,v} | {x,w} ∈E∧x 6=v} \ {e∈E |e={x,w}}
Die Kostenfunktion wird wie folgt angepasst:
c0(e) =
c(e) fallsv,w 6∈e
c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E
Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.
a b c
d e f
1 23 45
6
Kontraktion einer Kante
n=|V|,m=|E|
Gegeben sei:G = (V,E,c)undc:E 7→N+.
Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:
V0=V\ {w}
E0=E∪ {{x,v} | {x,w} ∈E∧x 6=v} \ {e∈E |e={x,w}}
Die Kostenfunktion wird wie folgt angepasst:
c0(e) =
c(e) fallsv,w 6∈e
c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E
Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.
a b c
d e f
1 23 45
6
Kontraktion einer Kante
n=|V|,m=|E|
Gegeben sei:G = (V,E,c)undc:E 7→N+.
Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:
V0=V\ {w}
E0=E∪ {{x,v} | {x,w} ∈E∧x 6=v} \ {e∈E |e={x,w}}
Die Kostenfunktion wird wie folgt angepasst:
c0(e) =
c(e) fallsv,w 6∈e
c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E
Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.
a b c
d e f
1 23 45
6
Kontraktion einer Kante
n=|V|,m=|E|
Gegeben sei:G = (V,E,c)undc:E 7→N+.
Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:
V0=V\ {w}
E0=E∪ {{x,v} | {x,w} ∈E∧x 6=v} \ {e∈E |e={x,w}}
Die Kostenfunktion wird wie folgt angepasst:
c0(e) =
c(e) fallsv,w 6∈e
c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.
a b c
d e f
1 23 45
6
Kontraktion einer Kante
n=|V|,m=|E|
Gegeben sei:G = (V,E,c)undc:E 7→N+.
Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:
V0=V\ {w}
E0=E∪ {{x,v} | {x,w} ∈E∧x 6=v} \ {e∈E |e={x,w}}
Die Kostenfunktion wird wie folgt angepasst:
c0(e) =
c(e) fallsv,w 6∈e
c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.
a b c
d e f
23 45
6
Kontraktion einer Kante
n=|V|,m=|E|
Gegeben sei:G = (V,E,c)undc:E 7→N+.
Bei der Kontraktion einer Kante{v,w}wirdG wie folgt verändert:
V0=V\ {w}
E0=E∪ {{x,v} | {x,w} ∈E∧x 6=v} \ {e∈E |e={x,w}}
Die Kostenfunktion wird wie folgt angepasst:
c0(e) =
c(e) fallsv,w 6∈e
c(e) fallse={x,v} ∧ {x,w} 6∈E c({x,w}) fallse6={x,v} ∧ {x,w} ∈E c(e) +c({x,w}) fallse={x,v} ∧ {x,w} ∈E Eine Kantenkontraktion kann in ZeitO(n)ausgeführt werden.
a b c
d e f
29
6 3
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Bestimme Minimalen Schnitt
n=|V|,m=|E|
Algorithmus von Karger (1993)
1 SetzeS(v) ={v}für allev ∈V.
2 SetzeH=G.
3 Solange|V(H)|>2 wähle{v,w} ∈E(H).
1 SetzeS(v) =S(v)∪S(w).
2 Kontraktiere die Kante{v,w}inH.
4 Wählev∈V(H).
5 Gebe SchnittS(v)(bzw.CS(v)) aus.
Laufzeit:O(n2).
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1
1
1
1
1
1
1 1
1 1 1
1 1 1 1
1 1 1 1
1 1
1
1 1
1
1
1
1 1
1 1
1 1
1
1 1
1
1 1
1
1
1 1
1
1 1
1 1 1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1
1
1
1
1
1
1 1
1 1 1
1 1 1 1
1 1 1 1
1 1
1
1
1
1
1
1 1
1 1
1 1
1
1 1
1
1 1
1
1
1 1
1
1 1
1 1 1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1
1
1
1
1
1
1 1
1 1 1
1 1 1 1
1 1 1 1
1 2
2
2
2
1 2
1
1
1 1 1
1
1 1
1
1 1
1
1 1
1 1 1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1
1
1
1
1
1
1 1
1 1 1
1 1 1 1
1 1 1
1 2
2
2
2
1 2
1
1
1 1 1
1
1 1
1
1 1
1
1 1
1 1 1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1
1
1
1
1
1 2
1 1
1 2 1
1 2 1
1 2
2
2
2
1 2
1
1
1 1 1
1
1 1
1
1 1
1
1 1
1 1 1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1
1
1
1
1
1 2 1
1 2 1
1 2 1
1 2
2
2
2
1 2
1
1
1 1 1
1
1 1
1
1 1
1
1 1
1 1 1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 2
1
1
1 2 2
2 1 4
1 2
2
2
2
1 2
1
1
1 1 1
1
1 1
1
1 1
1
1 1
1 1
1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 2
1
1
1 2 2
2 1 4
1 2
2
2
2
1 2
1
1
1 1
1
1 1
1
1 1
1
1 1
1 1
1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 2
1
1
1 2 2
2 1 4
1 4
2
2
2
1
2
2
1
2 1
1 1
1
1
1 1 1
1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 2
1
1
1 2 2
2 1 4
1 4
2
2
2
1
2
2
1
2 1
1
1
1
1 1 1
1
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 2
1
1
1 2 2
2 1 4
1 4
4 2
1
4 1
2 2
1 1
1 1 2
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 2
1
1
1 2 2
2 1
1 4
4 2
1
4 1
2 2
1 1
1 1 2
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 3
3
1 3
3
4
4 2
1
4 1
2 2
1 1
1 1 2
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 3
3
1 3
3
4 2
1
4 1
2 2
1 1
1 1 2
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 3
3
1 3
3 8 3
3 2
1 1
1 1 2
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 1
1 3 1 3
3 8 3
3 2
1 1
1 1 2
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 4
1 3
4
8 3
3 2
1 1
1 1 2
Beispiel
n=|V|,m=|E|
a8 a1
a2 a3 a4 a5
a6
a7
c1 c8
c7 c6 c5 c4
c3
c2 4
1 3
4
3
3 2
1 1
1 1 2