Randomisierte Algorithmen - Kapitel 1

Werbung
Randomisierte Algorithmen
Kapitel 1
Markus Lohrey
Universität Leipzig
http://www.informatik.uni-leipzig.de/~lohrey/RAND
WS 2005/2006
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
1 / 31
Organisatorisches
Vorlesung:
Di, 14.15 15.45, Raum 1.29
Di, 16.15 17.00, Raum 1.29
Übung:
Di, 17.00 17.45, Raum 1.29
Literatur:
R. Motwani, P. Raghavan. Randomized Algorithms. Cambridge
University Press
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
2 / 31
Beispiel 1: Quicksort
Randomisierter Algorithmus:
Klassischer deterministischer Algorithmus erweitert um Zufallskomponente
(Münzwurf ).
Quicksort:
Gegeben: Menge S von n Zahlen
Gesucht: S in sortierter (aufsteigender Reihenfolge)
Klassischer QS
1
Wähle ein Element y
2
S1
3
Sortiere rekursiv S1 .
:= {x ∈ S | x < y },
Sortiere rekursiv S2 .
4
∈ S.
S2
=⇒
=⇒
:= {x ∈ S | y < x }
Liste L1
Liste L2
Output: L1 yL2
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
3 / 31
Quicksort
Problem
Wie wählt man y in Schritt (1)? Optimale Wahl von y falls |S1 |, |S2 |
< n/2
(Median von S ).
Der Median von S kann in Zeit O (n ), d.h. Zeit c
·n
für Konstante c ,
gefunden werden (relativ kompliziert).
=⇒
T (n )
≤ 2 · T (n/2) + (c + 1) · n
=⇒
T (n )
∈O
Angenommen wir würden in Schritt (1) in Zeit O (n ) ein y
|S1 |, |S2 | ≤
=⇒
3/4 · n nden (davon gibt es
T (n )
≤ 2 · T (3/4 · n) + O (n)
Markus Lohrey (Universität Leipzig)
n/2
n · log(n)
∈S
mit
viele).
=⇒
Randomisierte Algorithmen
T (n)
∈O
n · log(n)
WS 2005/2006
4 / 31
y
Randomisierte Wahl von
Algorithmus randQS
∈S
1
Wähle ein y
2
zufällig und gleichverteilt aus S .
S1
3
Sortiere rekursiv S1
:= {x ∈ S | x < y },
Sortiere rekursiv S2
4
S2
=⇒
=⇒
:= {x ∈ S | y < x }
Liste L1
Liste L2
Output: L1 yL2
Analyse von randQS
Für 1
≤i ≤n
S(i )
sei
= das
Element von Rank i in S = das
eindeutige s
∈S
mit
|{y ∈ S | y ≤ s }| = i .
Deniere Zufallsvariable Xij durch:
(
Xij
=
1
falls S(i ) und S(j ) in einem Ablauf von randQS verglichen werden
0
sonst
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
5 / 31
Analyse von randQS
Wir wollen den Erwartungswert E [V ] für die Anzahl V der Vergleiche in
einem Ablauf von randQS berechnen.


n X
n X
X
X
Xij  =
E [Xij ]
E [V ] = E 
i =1 j >i
i =1 j >i
Linearity of Expectations
Sei pij
= Prob[S(i )
und S(j ) werden verglichen].
=⇒
Markus Lohrey (Universität Leipzig)
E [Xij ]
= 1 · pij + 0 · (1 − pij ) = pij
Randomisierte Algorithmen
WS 2005/2006
6 / 31
Analyse von randQS
Ein Ablauf von randQS kann durch einen binären Suchbaum T
beschrieben werden.
y
Element, das in Schritt (1) gewählt wird
S1
S2
∀x ∈ S1 : x < y
∀x ∈ S2 : x > y
Beobachtung
a
∈S
wird mit b
⇐⇒
∈S
verglichen
a ist Vorgänger von b in T oder b ist Vorgänger von a in T
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
7 / 31
Analyse von randQS
Beispiel: S
= {1, . . . , 10}
4
2
Level-Order-Traversal
9
π(T )
von T :
1
3
7
6
10
4, 2, 9, 1, 3, 7, 10, 6, 8, 5
8
5
Lemma
S(i ) wird mit S(j ) verglichen (i < j ) genau dann, wenn es
i < l < j , welches in π(T ) vor S(i ) und S(j ) steht, gibt.
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
kein
S(l ) mit
WS 2005/2006
8 / 31
Analyse von randQS
B
Beweis, ⇒:
Angenommen S(l ) (i
steht in
S(j ) .
π(T )
< l < j)
vor S(i ) und
Weder S(i ) kann Vorgänger
von S(j ) sein, noch S(j ) kann
S( l )
Vorgänger von S(i ) sein.
=⇒
S(i ) und S(j ) werden
nicht verglichen.
hier muss
(<
Markus Lohrey (Universität Leipzig)
S( ) )
l
S( )
i
sein
Randomisierte Algorithmen
hier muss
(>
S( ) )
l
S( )
j
sein
WS 2005/2006
9 / 31
Analyse von randQS
Beweis, ⇐:
Angenommen S(i ) wird nicht mit S(j ) verglichen.
=⇒
von S(j ) und S(j ) kein Vorgänger von S(i ) .
S(i ) kein Vorgänger
T
S(i )
S(i )
< S(l ) < S(j )
S(j )
und S(l ) vor S(i ) und S(j ) in
Markus Lohrey (Universität Leipzig)
π(T ).
Randomisierte Algorithmen
WS 2005/2006
10 / 31
Analyse von randQS
Beobachtung:
Jedes Element aus dem Intervall I
= {S(i ) , S(i +1) , . . . , S(j ) } ⊆ S
ist mit
gleicher Wahrscheinlichkeit das erste Element aus I in der Liste
Diese Wahrscheinlichkeit ist somit 1/|I |
E [V ]
Es gilt: Hn
=
n X
X
pij
=
= 1/(j −i +1).
n X
X
π(T ).
2
=⇒ pij = /(j −i +1).
2
j −i +1
i =1 j >i
i =1 j >i
n X
n
n nX
−i +1
X
X
1
1
=2·
≤2·
k
k
i =1 k =1
i =1 k =2
n
X
1
=2·n·
= n'te Harmonische
k
k =1
Zahl Hn
∈ Θ(log(n))
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
11 / 31
Analyse von randQS
Satz
Der Erwartungswert E [V ] für die Auswahl von Vergleichen von randQS ist
in
O(n · log(n)).
Bemerkungen:
randQS ist ein Las Vegas Algorithmus. Er liefert stets das richtige
Ergebnis, aber die Rechenzeit ist Zufallsvariable.
E [V ]
∈ O(n · log(n))
gilt für jeden Input. Keine Annahmen über
Wahrscheinlichkeitsverteilung für Input S .
Zufallsbits (=Münzwürfe) sollten als Rechenressource (wie Zeit und
Speicher) angesehen werden. Wie viele Zufallsbits sind nötig um ein
Element y zufällig und gleichverteilt aus einer Menge S auszuwählen?
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
12 / 31
Beispiel 2: Randomisierter Min-Cut-Algorithmus
Sei G ein zusammenhängender ungewichteter Multigraph (d.h. mehrere
).
Kanten zwischen zwei Knoten, aber keine Schlingen
Beispiel:
V (G )
= Menge
der Knoten von G
E (G )
= Menge
der Kanten von G
5
j
|V (G )| = n
zusammenhängend ist. Beispiel:
1
g
h
e
k
4
Ein Cut von G ist eine Menge C
f
i
2
⊆ E (G ), so dass G \ C
{f , g } ist Cut im obigen
3
nicht mehr
Graph.
Ein Min-Cut von G ist ein Cut C von G , so dass kein Cut C
|C 0 | < |C |
0 von G mit
existiert. Min-Cut-Size(G ) = Gröÿe eines (beliebigen) Min-Cut
von G . Beispiel: Min-Cut-Size(G )
Markus Lohrey (Universität Leipzig)
=2
für obigen Graphen.
Randomisierte Algorithmen
WS 2005/2006
13 / 31
Randomisierter Min-Cut-Algorithmus
Sei e eine Kante von G . merge(G , e ) ist der Multigraph, der durch
Verschmelzen der Endpunkte von e entsteht (entstehende Schleifen werden
entfernt).
Beispiel:
5
1
5
e
4
2
3
Kontrahieren von e
−−−−−−−−−−−→
4
merge(G , e )
G
Markus Lohrey (Universität Leipzig)
3
Randomisierte Algorithmen
WS 2005/2006
14 / 31
Randomisierter Min-Cut-Algorithmus
randMin-Cut
while G hat noch mindestens 3 Knoten do
wähle zufällig und gleichverteilt Kante e
G
∈ E (G )
aus
:= merge(G , e )
od
% G hat nun noch genau zwei Knoten
output E (G )
Bemerkungen:
Zeitbedarf stets n
−2
(n
= |V (G )|)
Liefert randMin-Cut stets einen Min-Cut von G zurück? Nein!
Lemma
Sei e
∈ E (G ).
Min-Cut-Size(G )
Markus Lohrey (Universität Leipzig)
≤ Min-Cut-Size(merge(G,e))
Randomisierte Algorithmen
WS 2005/2006
15 / 31
Randomisierter Min-Cut-Algorithmus
Beweis:
Sei C ein Min-Cut von G
0
= merge(G , e ).
Knoten, der
durch Kontra-
G0
hieren von
e
G
e
entsteht.
C
C
C ist auch ein Cut von G .
=⇒
Min-Cut-Size(G )
Markus Lohrey (Universität Leipzig)
≤ |C | = Min-Cut-Size(G 0 )
Randomisierte Algorithmen
WS 2005/2006
16 / 31
Analyse von randMin-Cut
Sei v
∈ V (G ).
d (v )
Grad von v :
= Anzahl
Beobachtung: |E (G )|
der Kanten, die v als Endpunkt haben
= 1/2 ·
P
v ∈V (G ) d (v )
Betrachte einen festen Min-Cut C von G . k
= |C | = Min-Cut-Size(G ).
Angenommen, in einem Ablauf von randMin-Cut wird nie eine Kante e
kontrahiert.
=⇒
∈C
randMin-Cut liefert C als Output und somit ein korrektes
Ergebnis.
Wir schätzen die Wahrscheinlichkeit
Prob[keine Kante aus C wird kontrahiert]
ab. Sei Ei das Ereignis, dass im i -ten Durchlauf der while-Schleife keine
Kante aus C kontrahiert wird.
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
17 / 31
Analyse von randMin-Cut
hV
i
n−2 E
i
i =1
h
i
V
= Prob[E1 ] · Prob[E2 |E1 ] · Prob[E3 |E1 ∧ E2 ] · . . . · Prob En−2 | nj =−13 Ej
Prob[keine Kante aus C wird kontrahiert]
Sei Gi der Graph nach dem
Es ist |V (Gi )|
=n−i +1
(i − 1)-ten
= Prob
Schleifendurchlauf (d.h. G1
und Min-Cut-Size(Gi )
= G ).
≥ k = Min-Cut-Size(G )
(wegen Lemma).
Behauptung: |E (Gi )|
≥ k ·(n−2i +1)
P
< k ·(n−2i +1) . =⇒ 21 · v ∈V (G ) d (v ) < 21 · k · |V (Gi )|.
=⇒ Es existiert ein Knoten v ∈ V (Gi ) mit d (v ) < k . Da
{e ∈ E (Gi ) | v ist Endpunkt von e } ein Cut von Gi ist, folgt:
Min-Cut-Size(Gi ) < k . Widerspruch!
Beweis: Sei |E (Gi )|
Markus Lohrey (Universität Leipzig)
i
Randomisierte Algorithmen
WS 2005/2006
18 / 31
Analyse von randMin-Cut
Angenommen, es gilt
Vi −1
j =1 Ej ,
d.h. in den Schleifendurchläufen 1, . . . , i
−1
wird keine Kante aus C kontrahiert.
=⇒
h
Prob Ei |
Vi −1 i
|C |
j =1 Ej = 1 − |E (G )
i
k
≥ 1 − k ·(n−i +1) = 1 −
2
2
n
−i +1
=
n
n
−i −1
−i +1
Also ergibt sich:
Prob[keine Kante aus C wird kontrahiert]
h V
i
Qn −2
i −1 E ≥ Qn−2 n − i − 1
Prob
E
|
i j =1 j
i =1
i =1 n − i + 1
n−2 n−3 n−4
3 2 1
=
·
·
· ... · · ·
n
n−1 n−2
5 4 3
=
=
2
n (n
− 1)
Markus Lohrey (Universität Leipzig)
≥
2
n2
Randomisierte Algorithmen
WS 2005/2006
19 / 31
Analyse von randMin-Cut
Satz
Ein Ablauf von randMin-Cut liefert mit Wahrscheinlichkeit mindestens 2/n2
einen Min-Cut zurück (n
Markus Lohrey (Universität Leipzig)
=
Anzahl der Knoten des Eingabebaumes).
Randomisierte Algorithmen
WS 2005/2006
20 / 31
Analyse von randMin-Cut
Wahrscheinlichkeitsverstärkung (probability amplication):
Wir wiederholen nun randMin-Cut
n /2 · (n − 2))
2
n2/2
mal (
=⇒
Gesamtlaufzeit:
und liefern den kleinsten Cut aus den einzelnen
Wiederholungen zurück.
Prob[keine der
n2/2
≤ (1 − 2/n2 )
· n2
< (1/e )20 .
Bei 10
2
n
/2
Wiederholungen liefert einen Min-Cut]
< 1/e
(e
=
Eulersche Konstante)
Wiederholungen ergibt sich eine Fehlerwahrscheinlichkeit von
Bemerkungen:
Wahrscheinlichkeitsverstärkung ist unter Beibehaltung einer
polynomiellen Laufzeit möglich, falls Fehlerwahrscheinlichkeit für einen
Durchlauf
< 1 − 1/p(n)
für ein Polynom p (n ) gilt:
(1 − 1/p(n))p(n) < 1/e
randMin-Cut ist ein Monte-Carlo-Algorithmus: Er liefert nur mit einer
Wahrscheinlichkeit
Markus Lohrey (Universität Leipzig)
<1
ein richtiges Ergebnis.
Randomisierte Algorithmen
WS 2005/2006
21 / 31
Beispiel 3: Binäre planare Partitionen
Denition: Eine binäre planare Partition ist ein binärer Baum P .
Jedem Knoten von P ist eine (evtl. unendliche) Region r (v )
⊆ R2
zugeordnet.
Für die Wurzel u von P gilt r (u )
= R2 .
Jedem internen Knoten v von P (d.h. jedem Nicht-Blatt) ist weiterhin
eine Gerade l (v ) zugeordnet, die r (v ) schneidet.
=⇒ l (v )
teilt r (v ) in zwei Regionen r1 und r2 auf. Diese Regionen
sind den beiden Kindern von v zugeordnet.
l
(v )
r
r
r
Markus Lohrey (Universität Leipzig)
(v )
(v1 )
(v2 )
Randomisierte Algorithmen
v
v1
v2
WS 2005/2006
22 / 31
Binäre planare Partitionen
Sei nun S
= {s1 , . . . , sn } eine Menge von Geradensegmenten (endlicher
∩ sj = ∅ für i 6= j . Eine binäre planare Parition P von S ist
Länge) mit si
eine binäre planare Partition P , so dass für jedes Blatt v von P gilt: Es gibt
höchstens ein 1
≤i ≤n
mit si
∩ r (v ) 6= ∅.
l (v1 )
Beispiel:
r (v7 )
v1
P:
v2
r (v4 )
v3
v4 v5 v6 v7
l (v2 )
s1
s2
r (v5 )
l (v3 )
r (v6 )
s3
Ziel: Finde binäre planare Partition P von S mit möglichst wenig
Baumknoten (bzw. wenig Regionen).
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
23 / 31
Binäre planare Partitionen
Für ein Geradensegment si sei l (si ) die Gerade mit si
Autopartition von S
= {s1 , . . . , sn }
⊆ l (si ).
Eine
ist eine binäre planare Paritition P von
S , so dass für jeden internen Knoten v des Baums P ein i mit l (v )
= l (si )
existiert.
Bemerkung: Für eine Autopartition P von S kann natürlich ein si
∈S
genau auf der Grenze von 2 Regionen r1 und r2 liegen. Wir ordnen dann si
entweder r1 oder r2 zu.
Beispiel:
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
24 / 31
Binäre planare Partitionen
Algorithmus randAuto
Input: Menge S
= {s1 , . . . , sn }
Output: Autopartition P von S
von Geradensegmenten, si
π
1
Wähle zufällig und gleichverteilt eine Permutation
2
while Es gibt Region r , die mit mindestens zwei s
∩ sj = ∅
von
∈S
für i
6= j
{1, . . . , n}
einen
nicht-leeren Schnitt hat do
Sei k
Teile
od
= min{i | r ∩ sπ(i ) 6= ∅}.
r mit l (sπ(k ) ) auf.
Für Geradensegmente si , sj
index(si , sj )
=


∞
k
∈S
sei
falls l (si ) nicht sj . schneidet
falls l (si ) genau k


Markus Lohrey (Universität Leipzig)
−1
Geradensegmente schneidet,
bevor l (si ) auf sj trit.
Randomisierte Algorithmen
WS 2005/2006
25 / 31
Analyse von randAuto
Beispiel:
s4
s3 s2
s5
s1
s6
s7
s8
index(s1 , s4 )
si
= index(s1 , s7 ) = 3,
a sj ⇐⇒ l (si )
index(s1 , s8 )
=∞
schneidet sj in der Autopartition, die randAuto erzeugt.
= k für u , v ∈ S und seien u1 , . . . , uk −1 ∈ S
die Geradensegmente, die l (u ) schneidet, bevor l (u ) auf v trit. Dann gilt:
u a v =⇒ u steht in der Zufallspermutation π vor allen Elementen
u1 , . . . , uk −1 (, v ).
Beobachtung: Sei index(u , v )
u1
u2
u3
v
u
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
26 / 31
Analyse von randAuto
Prob[u steht in
(
Cu ,v
E [Cu ,v ]
=
π
vor u1 , . . . , uk −1 (, v )]
1
falls u
0
sonst
av
= Prob[u a v ] ≤
=
1
k (+1)
(Indikatorvariable)
1
k (+1)
=
1
index(u , v )(+1)
Sei P die Autopartition von S , die randAuto produziert. Anzahl der
Regionen von P = n (Anzahl der Geradensegmente) + Anzahl der
Schnitte von Geradensegmenten.
=⇒
E [Anzahl der Regionen]
=n+
=
n
P
P
u∈S v ∈S E [Cu,v ] ≤
v 6=u
Markus Lohrey (Universität Leipzig)
+E
n
P
+
u ∈S
v ∈S Cu,v
v 6=u
P
P
P
1
u∈S v ∈S index(u , v )(+1)
v 6=u
Randomisierte Algorithmen
WS 2005/2006
27 / 31
Analyse von randAuto
Beobachtung: Für ein k
index(u , v )
∈N
und u
∈S
gibt es höchstens zwei v
∈S
mit
= k.
=⇒
X
1
v ∈S
v 6=u
index(u , v )(+1)
E [Anzahl der Regionen von P ]
Markus Lohrey (Universität Leipzig)
≤
n
+n·
≤
n −1
X
k =1
n−1
X
2
k (+1)
2
≤
n
+ 2n ·
k (+1)
k =1
= n + 2n · Hn ∈ Θ(n · log(n))
Randomisierte Algorithmen
n
X
k =1
WS 2005/2006
1
k
28 / 31
Analyse von randAuto
Satz
Der Erwartungswert für die Gröÿe der von randAuto konstruierten
Autopartition von S
= {s1 , . . . , sn }
ist in
O(n · log(n)).
Folgerung
= {s1 , . . . , sn } von Geradensegmenten mit
i 6= j =⇒ si ∩ sj = ∅ existiert eine binäre planare Partition von
Gröÿe O(n · log(n)).
Für jede Menge S
S der
Begründung: Eine Zufallsvariable X muss mit Wahrscheinlichkeit
Wert
≥ E [X ]
>0
einen
annehmen können.
Probabilistische Methode zum Beweis der Existenz eines bestimmten
kombinatorischen Objekts (hier: einer binären planaren Partition).
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
29 / 31
Randomisierte Komplexitätsklassen
Eine Sprache L
⊆ Σ∗
gehört zur Klasse RP (randomisierte Polynomialzeit),
falls ein randomisierter Algorithmus A existiert mit:
Es gibt ein Polynom p (n ), so dass A auf jeder Eingabe x
∈ Σ∗
höchstens p (|x |) Schritte rechnet.
x
x
∈ L =⇒
∈
/ L =⇒
≥ 1/2
x] = 0
Prob[A akzeptiert x ]
Prob[A akzeptiert
Bemerkung: Die Wahrscheinlichkeitsschranke 1/2 kann durch
Wahrscheinlichkeitsverstärkung erhöht werden.
Eine Sprache L gehört zur Klasse coRP genau dann, wenn L
Eine Sprache L
⊆
∈ RP.
Σ∗ gehört zur Klasse ZPP (Zero-Error Probabilistic
Polynomial Time), falls ein randomisierter (Las Vegas) Algorithmus
existiert mit:
Es gibt ein Polynom p (n ), so dass für jede Eingabe x
E [Rechenzeit von A bei Eingabe x ]
x
x
∈ L =⇒
∈
/ L =⇒
∈ Σ∗
gilt:
≤ p (n).
Prob[A akzeptiert x ]
Prob[A akzeptiert
Markus Lohrey (Universität Leipzig)
=1
x] = 0
Randomisierte Algorithmen
WS 2005/2006
30 / 31
Randomisierte Komplexitätsklassen
Satz
ZPP
= RP ∩ coRP
Beweis: Übungen
Markus Lohrey (Universität Leipzig)
Randomisierte Algorithmen
WS 2005/2006
31 / 31
Herunterladen