Randomisierte Algorithmen - 8. Graph

Werbung
Randomisierte Algorithmen
8. Graph-Algorithmen
Überblick
Einleitung
Minimale Schnitte
Minimale aufspannende Bäume
Überblick
Einleitung
Minimale Schnitte
Minimale aufspannende Bäume
8.1 Definition (Multigraph)
I
ungerichteter Multigraph (V , E , v ) mit
I
I
I
I
I
Knotenmenge V der Größe n = |V |
Kantenmenge E der Größe m = |E |
Abbildung v : E → {{x, y } | x, y ∈ V }
Es sind Mehrfachkanten möglich.
In diesem Kapitel:
keine Schlingen, also ∀e ∈ E : |v (e)| = 2.
8.3 Repräsentation von Multigraphen
I
I
Adjazenzmatrix A der Größe n × n
Eintrag A[x, y ] gibt an, wieviel Kanten zwischen x und y
sind:
A[x, y ] = |f −1 ({x, y })|
außerdem nützlich: Vektor M der Größe n:
Eintrag M[x]
P gibt an, wieviele Kanten von x wegführen:
M[x] = y A[x, y ]
Überblick
Einleitung
Minimale Schnitte
Minimale aufspannende Bäume
8.4 Definition Schnitte
I
I
Ein Schnitt in einem Multigraphen ist
eine Partitionierung V = C ∪ C̄ .
Größe des Schnittes ist
die Anzahl der Kanten {x, y } mit x ∈ C und y ∈ C̄ .
MINCUT
I
I
I
Probleminstanz: ein Graph G
Frage: Wie groß sind die minimalen Schnitte von G ?
beste bekannte deterministische Algorithmen brauchen
Laufzeit O(mn + n2 log n) ⊆ O(n3 )
I
I
für planare Graphen reicht O n(log n)2
randomisiert?
8.5 Lemma
Wenn die Größe der minimalen Schnitte k ist, dann
I
I
hat jeder Knoten mindestens Grad k
ist die Anzahl Kanten m ≥ nk/2
8.6 Beweis
I
I
Wäre anderenfalls deg(x) < k,
dann hätte der Schnitt mit C = {x} eine Größe echt
kleiner k.
8.7 Definition Kontraktion
I
I
In Multigraph G seien Knoten x und y durch eine Kante
e verbunden.
Der durch Kontraktion der Kante e entstehende
Multigraph G /e:
I
I
Knotenmenge V 0 = (V r {x, y }) ∪ {z}, wobei z neu ist.
Kantenmenge E 0 ergibt sich aus E , indem
I
I
I
alle Kanten zwischen x und y entfernt werden,
jede Kante, die in G einen Knoten v ∈ V r {x, y } mit
einem Knoten aus {x, y } verband, durch eine Kante
zwischen v und z ersetzt wird und
alle anderen Kanten von G übernommen werden.
8.8 Beispiel
e1
v
x
e01
e
e2
v
z
e02
y
Es können Mehrfachkanten entstehen.
8.9 Lemma
Minimale Schnitte von G /e sind mindestens so groß wie die
von G .
8.10 Beweis
I
I
I
I
I
Betrachte minimalen Schnitt (K , K̄ ) von G /e.
Seine Größe sei k.
O. B. d. A. seien die Endknoten x und y von e in K .
Indem man diese beiden Knoten aus der Kontraktion
”
auspackt“ und in der gleichen Partition belässt, erhält
man einen Schnitt von G , dessen Größe ebenfalls k ist.
Also haben die minimalen Schnitte von G höchstens
Größe k.
8.11 Algorithmus
I
I
Sei G Multigraph mit Kante e zwischen x und y > x.
Wie in 8.3 vereinbart, sei
I
I
I
I
A Adjazenzmatrix“ P
”
M Vektor mit M[x] = y A[x, y ]
n, m Variablen für Knoten- bzw. Kantenzahl
Die Datenstrukturen für G /e lassen sich wie folgt in
Linearzeit berechnen:
8.11 Algorithmus (2)
proc graph ← Kontraktion(graph G , edge e)
hIdee: benutze x für z“ und y für n“i
”
”
hAktualisierung der Kantenzahleni
m ← m − A[x, y ]
M[x] ← M[x] + M[y ] − 2 · A[x, y ]
M[y ] ← M[n]
hAktualisierung von Zeile/Spalte x:i
A[x, ·] ← A[x, ·] + A[y , ·]
A[·, x] ← A[·, x] + A[·, y ]
A[x, x] ← 0
hAktualisierung von Zeile/Spalte y : i
A[y , ·] ← A[n, ·]
A[·, y ] ← A[·, n]
hdie bisherige Zeile n ist nun bedeutungslosi
n ←n−1
return hGraph, der zu den neuen Datenstrukturen gehörti
8.12 Algorithmus
Iterierte Kontraktion
hEingabe: ein Multigraph G (V , E )i
hAusgabe: ein Schnitt (C , C̄ )i
H ←G
while (H hat mehr als 2 Knoten) do
e ←hzufällig gleichverteilt gewählte Kante von Hi
H ← Kontraktion(H, e)
od
(C , C̄ ) ← hdie Knotenmengen von G ,i
hdie den Knoten von H entsprecheni
8.13 Satz
Algorithmus 8.12 kann so implementiert werden, dass die
Laufzeit in O(n2 ) ist.
8.14 Beweis
I
I
I
Jeder Aufruf von Kontraktion benötigt Laufzeit O(n).
Bei jedem Schleifendurchlauf wird die Anzahl der Knoten
von H um 1 erniedrigt, d. h. es gibt n − 2 solche
Durchläufe.
Es bleibt zu implementieren:
1. zufällige gleichverteilte Auswahl einer Kante des
Multigraphen
2. Beschaffung der Mengen C und C̄
8.14 Beweis (2)
1. Zufällige Kantenwahl:
i ← random(1, 2m) hNB: jede Kante unten zweimal gezählt!i
x ← 0; s ← 0
while s < i do
x ←x +1
s ← s + M[x]
od
i ← i − (s − M[x])
y ← 0; s ← 0
while s < i do
y ←y +1
s ← s + A[x, y ]
od
hWähle Kante zwischen x und y i
8.14 Beweis (3)
2. Beschaffung von C und C̄ :
I
I
I
I
weitere Datenstruktur in der Prozedur Kontraktion
boolesche Matrix Q mit so vielen Zeilen und Spalten wie
der ursprüngliche Graph G Knoten hat.
Q[x, y ] = 1: Knoten mit Ursprungsnummern x und y
wurden kontrahiert.
Initialisierung: Einheitsmatrix.
I
Q[x, ·] ← Q[x, ·] ∨ Q[y , ·]
Q[y , ·] ← Q[n, ·]
I
Am Ende nur noch zwei Knoten:
I
I
C z. B. durch 1-Einträge in Zeile 1 von Q gegeben
C̄ z. B. durch 0-Einträge in Zeile 1 von Q gegeben
8.15 Satz
Algorithmus 8.12 findet mit Wahrscheinlichkeit Ω(n−2 ) einen
minimalen Schnitt.
8.16 Beweis
in 3 Schritten
1. Es sei (C , C̄ ) irgendein Schnitt. Behauptung:
Algorithmus 8.12 liefert genau dann diesen Schnitt als
Ergebnis, wenn keine der Kanten, die über ihn läuft,
während des Algorithmus kontrahiert wird.
I
I
I
Es sei e eine am Ende noch vorhandene Kante, die
ursprünglich x und y verband.
Dann ist nun etwa x ∈ C und y ∈ C̄ .
Wäre die Kante e kontrahiert worden, müssten aber x
und y am Ende zum gleichen Knoten von H gehören.
8.16 Beweis (2)
2. Es sei (K , K̄ ) ein minimaler Schnitt von G der Größe k.
I
I
I
Nach i − 1 Schleifendurchläufen sei noch keine Kante
dieses Schnittes kontrahiert worden.
Dann ist also (K , K̄ ) auch ein Schnitt des dann
erhaltenen Graphen Hi−1 und wegen Lemma 8.9 muss es
auch ein minimaler Schnitt sein.
Also enthält Hi−1 noch mindestens (n − i + 1)k/2
Kanten.
Folglich:
I
I
Wahrscheinlichkeit, dass als nächstes eine der k Kanten,
die zum Schnitt K gehören, kontrahiert wird, höchstens
2/(n − i + 1);
Wahrscheinlichkeit, dass keine dieser Kanten kontrahiert
wird, mindestens 1 − 2/(n − i + 1).
8.16 Beweis (3)
3. Die Wahrscheinlichkeit, dass in keinem der Schritte eine
der Kanten des Schnittes K kontrahiert wird, ist daher
mindestens
Qn−2
n−2
Y
(n − i − 1)
2
= Qi=1
1−
n−2
n−i +1
i=1 (n − i + 1)
i=1
=
(n − 2)!
n!/2!
=
(n − 2)!2!
n!
2
1
> 2 ∈Ω 2
n
n
Bemerkung
I
I
Die Nicht-Fehler-Wahrscheinlichkeit von 1/n2 in
Satz 8.15 ist klein.
Der kleinste von k = n2 /2 Schnitten ist mit W.keit
1 − 1/e minimal:
I
I
I
2
1− 2
n
n2 /2
<
1
e
Weitere Rechnung zeigt: k ∈ Ω(n2 ) erzwungen.
Gesamtlaufzeit: Θ(n4 ) im Gegensatz zu O(n3 ) im
Deterministischen.
Problem: Bei kleinen Graphen werden zu oft aus
”
Versehen“ Kanten eines minimalen Schnittes kontrahiert.
Besser: randomisiert auf t Knoten kontrahieren, Rest
deterministisch.
8.17 Algorithmus
proc graph ← IterContract(graph G , int t)
hEingabe: ein Multigraph G (V , E , v ) undi
h
Endzahl t von Knoteni
hAusgabe: ein kontrahierter Graph Hi
H ←G
while (H hat mehr als t Knoten) do
e ←hzufällig gleichverteilt gewählte Kante von Hi
H ← Kontraktion(H, e)
od
return H
8.18 Lemma
Die Wahrscheinlichkeit, dass bei Algorithmus 8.17 im Ergebnis
H noch ein minimaler Schnitt des ursprünglichen Graphen
noch vorhanden“ ist, ist mindestens
”
t
n
/
.
2
2
8.19 Beweis
Abschätzung analog wie in Beweis 8.16:
n−t Y
i=1
2
1−
n−i +1
Qn−t
(n − i − 1)
= Qi=1
n−t
i=1 (n − i + 1)
=
=
Qn−t−2
(n − i − 1)t(t − 1)
Qi=1
n−t
n(n − 1) i=3 (n − i + 1)
t(t − 1)
n(n − 1)
t
n
/
∈ Ω (t/n)2
=
2
2
8.20 Algorithmus
proc cut ← IterContractDetMinCut(graph G , int t)
hEingabe: ein Multigraph G (V , E , v ) undi
h
eine Knotenzahl ti
hAusgabe: ein Schnitt von G i
C ← hein trivialer Schnitti
for i ← 1 to n2 /t 2 do
H ← IterContract(G , t)
D ← DetMinCut(H)
C ← min(C , D)
od
return C
8.21 Lemma
Wählt man
in Algorithmus 8.20 t = n2/3 , dann ist die Laufzeit
in O n8/3 und die Wahrscheinlichkeit, einen minimalen
Schnitt von G zu erhalten mindestens 1 − 1/e.
8.22 Beweis
I
Zeitbedarf:
n2
n4
2
3
·
(n
+
t
)
=
+ n2 t .
t2
t2
I
I
Für gewähltes
t beide Summanden größenordungsmäßig
8/3
in O n
.
Fehlerwahrscheinlichkeit höchstens
n2 /t 2
t2
1
1− 2
< .
n
e
8.23 Algorithmus
proc cut ← FastCut(graph G )
hEingabe: ein Multigraph G (V , E )i
hAusgabe: ein Schnitt C i
if (|V | ≤ 6) then
C ← hminimaler Schnitt, deterministisch ermittelti
else
√
t ← d1 + n/ 2e
H1 ← IterContract(G , t)
H2 ← IterContract(G , t)
C1 ← FastCut(H1 )
C2 ← FastCut(H2 )
fi
C ← min(C1 , C2 )
8.24 Satz
Algorithmus 8.23 hat Laufzeit O(n2 log n).
8.25 Beweis
I
I
I
I
Maximale Rekursionstiefe: Ω(log n).
Beide Aufrufe von IterContract benötigen eine Zeit in
O(n2 ).
Also ist der Gesamtzeitbedarf T (n) für Eingabegraphen
mit n Knoten
l
√ m
T (n) = 2 · T 1 + n/ 2 + O n2 .
Hieraus ergibt sich T (n) ∈ O(n2 log n).
8.26 Satz
Algorithmus 8.23 liefert mit Wahrscheinlichkeit in Ω(1/ log n)
minimalen Schnitt.
8.27 Beweis
I
I
I
I
I
G Eingabegraph mit minimalen Schnitten der Größe k
Ein solcher Schnitt habe eine Reihe rekursiver Aufrufen
von FastCut bis zu einer Stelle überlebt“.
”
Der dann erreichte Graph heiße H.
Durch Aufrufe von IterContract resultierenden Graphen
H1 und H2 .
Der Aufruf für H wird als Ergebnis einen minimalen
Schnitt für G liefern, falls für ein Hi gilt:
1. Der Schnitt überlebt die Kontraktionen zur Konstruktion
von Hi .
2. FastCut(Hi ) findet einen minimalen Schnitt in Hi .
8.27 Beweis (2)
Die Wahrscheinlichkeit für Punkt 1 ist nach Lemma 8.17
mindestens
√
√
√
√
d1 + t/ 2e(d1 + t/ 2e − 1)
t/ 2 · t/ 2
1 t2
1
≥
≥
≥ .
t(t − 1)
t(t − 1)
2 t(t − 1)
2
8.27 Beweis (3)
Zu Punkt 2.:
I
I
Interessieren uns für untere Schranke p(r ) der
Wahrscheinlichkeit, dass FastCut r Niveaus über dem
Rekursionsabbruch einen minimalen Schnitt findet.
Z.B. so: p(0) = 1 und
2
1
p(r )2
p(r + 1) = 1 − 1 − · p(r ) = p(r ) −
2
4
I
Einsetzen von q(r ) = 4/p(r ) − 1 bzw.
p(r ) = 4/(q(r ) + 1) ergibt
4
4
4
4q(r )
=
−
=
2
q(r + 1) + 1
q(r ) + 1 (q(r ) + 1)
(q(r ) + 1)2
I
und weiter q(r + 1) = q(r ) + 1 +
1
.
q(r )
8.27 Beweis (4)
I
Induktion: Für alle r gilt:
r < q(r ) < r + 3 + Hr −1
I
I
Offensichtlich ist q(0) = 3 und r < q(r ) für alle r .
Weiter:
r + 1 < q(r ) + 1 < q(r + 1) = q(r ) + 1 +
1
q(r )
< r + 3 + Hr −1 + 1 +
1
r
= (r + 1) + 3 + Hr
I
I
I
Daher ist q(r ) ∈ r + O(log r ) und folglich p(r ) ∈ Ω(1/r ).
Für Ausgangsgraphen mit n Knoten ist die
Rekursionstiefe Θ(log n)
folglich gesuchte Wahrscheinlichkeit Ω(1/ log n).
Überblick
Einleitung
Minimale Schnitte
Minimale aufspannende Bäume
Herunterladen
Explore flashcards