Randomisierte Algorithmen Kapitel 2: Erste Beispiele

Werbung
Randomisierte Algorithmen
Kapitel 2: Erste Beispiele
Überblick
Ein randomisierter Identitätstest
Vergleich von Wörtern
Ein randomisierter Quicksortalgorithmus
Überblick
Ein randomisierter Identitätstest
Vergleich von Wörtern
Ein randomisierter Quicksortalgorithmus
2.1 Aufgabe
I
I
Gegeben: drei n × n Matrizen A, B, C ∈ Fn×n .
Gesucht: Antwort auf die Frage, ob AB = C ist.
F: Körper mit neutralen Elementen 0 resp. 1, Bits genannt.
2.2 Einfache deterministische Lösung
I
I
Ausmultiplizieren
bester bekannter Multiplikationsalgorithmus von
Coppersmith und Winograd:
2.2 Einfache deterministische Lösung
I
I
Ausmultiplizieren
bester bekannter Multiplikationsalgorithmus von
Coppersmith und Winograd:
Θ(n2.376... ) Schritte
2.3 Randomisierter Algorithmus (Freivalds, 1977)
2.3 Randomisierter Algorithmus (Freivalds, 1977)
hMit einem Bit“ ist einer der Werte 0 oder 1 gemeint.i
”
r ← hVektor von n unabhängigen Zufallsbitsi
x ← Br
y ← Ax
z ← Cr
if (y 6= z) then
return no
else
return yes
fi
Offensichtlicher Zeitbedarf O(n2 ).
2.4 Fingerabdrücke
I
I
y = A(Br) Fingerabdruck von AB.
z = Cr Fingerabdruck von C
2.5 Lemma
Ist AB 6= C und r ein Vektor unabhängiger Zufallsbits,
dann ist die Fehlerwahrscheinlichkeit des Algorithmus
Pr [ABr = Cr] ≤ 1/2 .
2.6 Beweis
I
I
I
I
I
I
Sei D = AB − C, also D 6= 0.
Sei y = ABr und z = Cr.
Dann gilt y = z genau dann, wenn Dr = 0.
Sei d die erste Zeile von D.
O.B.d.A. sei d = (d1 , . . . , dn ) nicht der Nullvektor und die
Nichtnulleinträge von d seien gerade d1 , . . . , dk .
Erster Eintrag im Produktvektor Dr ist dr.
Untere Schranke für Wahrscheinlichkeit, dass dr 6= 0,
ist auch untere Schranke für Wahrscheinlichkeit, dass
Dr 6= 0.
Suche obere Schranke für die Wahrscheinlichkeit, dass
dr = 0.
2.6 Beweis (Fortsetzung)
I
dr = 0 genau dann, wenn
genau dann, wenn
Pk
rk = (−
i=1
k−1
X
di ri = 0, also
di ri )/dk
i=1
I
I
I
Man stelle sich vor, r1 , . . . , rk−1 seien bereits gewählt.
Gleichung offensichtlich für höchstens einen der beiden
möglichen Werte für rk richtig.
Also ist diese Wahrscheinlichkeit höchstens 1/2.
Mit Wahrscheinlichkeit größer gleich 1/2 ist also dr 6= 0
und damit auch Dr 6= 0.
2.7 Korollar
I
I
Wenn AB = C ist, liefert Algorithmus 2.3 stets die
richtige Antwort.
Wenn AB 6= C ist, liefert Algorithmus 2.3 mit einer
Wahrscheinlichkeit größer gleich 1/2 die richtige Antwort.
2.8 Wie kann man die Fehlerwahrscheinlichkeit
verkleinern?
I
I
Ziehe — wenn möglich — die Komponenten des
Zufallsvektors aus einer größeren Menge.
Führe k unabhängige Wiederholung des Algorithmus
durch und produziere nur dann am Ende die Antwort yes,
wenn jeder Einzelversuch diese Antwort geliefert hat.
Pr [Y1 = yes Q
∧ Y2 = yes ∧ · · · ∧ Yk = yes]
= ki=1 Pr [Yi = yes]
Überblick
Ein randomisierter Identitätstest
Vergleich von Wörtern
Ein randomisierter Quicksortalgorithmus
2.9 Aufgabe
I
I
I
I
I
Gegeben: Zwei Datenbestände“ in Form von Bitfolgen
”
a1 · · · an und b1 · · · bn .
Gesucht: Antwort auf die Frage, ob die beiden Bitfolgen
gleich sind.
Anwendung:
Vergleich räumlich weit entfernter großer Datenmengen
P
P
Sind a = ni=1 ai 2i−1 und b = ni=1 bi 2i−1 gleich?
Wieviele Bits muss man wohl übertragen, um mit
Wahrscheinlichkeit 1 − 1/n sicher sein zu können, dass
a = b ist?
2.11 Algorithmus
hÜberprüfung, ob Bitfolgen a1 · · · an und b1 · · · bn gleich sindi
p ← hPrimzahl kleiner oder gleich n2 ln n2 i
hzufällig gleichverteilt aus diesen ausgewählti
P
a ← Pni=1 ai 2i−1
b ← ni=1 bi 2i−1
if (a mod p = b mod p) then
return yes
else
return no
fi
2.12 Satz
Bei zufälliger gleichverteilter Wahl einer Primzahl p kleiner
oder gleich n2 log n2 ist
1
Pr [Fp (a) = Fp (b) | a 6= b] ∈ O
.
n
2.13 Satz (Chebyshev)
Für die Anzahl π(n) der Primzahlen kleiner oder gleich n gilt:
7 n
9 n
≤ π(n) ≤
8 ln n
8 ln n
Es ist also π(n) ∈ Θ(n/ ln n).
2.14 Lemma
Die Anzahl k verschiedener Primteiler einer Zahl kleiner oder
gleich 2n ist höchstens n.
2.15 Beweis (von Satz 2.12)
I
I
I
I
I
I
Algorithmus 2.11 liefert genau dann eine falsche Antwort,
wenn c 6= 0 ist und von p geteilt wird.
Da c ≤ 2n ist, hat es nach dem vorangegangenen Lemma
höchstens n verschiedene Primteiler.
Es sei t die obere Schranke des Intervalls, aus dem
Primzahl gewählt wird.
Nach Satz 2.13 gibt es dort π(t) ∈ Θ(t/ ln t) Primzahlen.
Die Wahrscheinlichkeit Pr [Fp (a) = Fp (b) | a 6= b], ein p
zu wählen, das
falschen Antwort führt, ist also
zu einer
n
höchstens O t/ ln t .
Für t = n2 ln n2 ergibt sich eine obere Schranke in
O(1/n).
2.16 Pattern Matching
I
I
I
Gegeben: Text x = x1 · · · xn und kürzeres Suchmuster
y = y1 · · · ym .
Gesucht: Antwort auf die Frage, ob y in x vorkommt.
Bezeichne x(j) das Teilwort xj · · · xj+m−1 (Länge m).
Frage: Ist für ein 1 ≤ j ≤ n − m + 1 das zugehörige
x(j) = y ?
2.17 Idee
x(j + 1) =
m
X
xj+1+i−1 2i−1
i=1
m−1
1
1X
=
xj+1+i−1 2i + xj+1+m−1 2m−1
(xj − xj ) +
2
2 i=1
!
m−1
1 X
=
xj+i 2i − xj + xj+m 2m−1
2 i=0
!
m
1 X
=
xj+i−1 2i−1 − xj + xj+m 2m−1
2 i=1
=
1
(x(j) − xj ) + xj+m 2m−1 .
2
2.18 Algorithmus
hÜberprüfung, ob Bitfolge y1 · · · ym in x1 · · · xn vorkommti
hAusgabe: erstes j, wo das der Fall ist, oder −1 sonst.i
p ← hPrimzahl kleiner oder gleich n2 m ln n2 mi
hzufällig
gleichverteilt aus diesen ausgewählt.i
P
i−1
y ← Pm
y
2
mod p
i=1 i
m
i−1
z ← i=1 xi 2 mod p
for j ← 1 to n − m do
if (y = z) then
return j herste Stelle, an der Übereinstimmung“i
”
fi
z ← (z − xj )/2 + xj+m 2m−1 mod p
od
return −1 hy kommt sicher nicht in x vor i
2.19 Satz
Algorithmus 2.18 liefert höchstens mit Wahrscheinlichkeit
O(1/n) eine falsche Antwort.
2.20 Beweis
I
I
I
Sei wieder t die obere Schranke des Intervalls, aus dem
Primzahlen gewählt werden.
Nach Satz 2.13 gibt es dort π(t) ∈ Θ(t/ ln t) Primzahlen.
Wahrscheinlichkeit
Pr[Fp (y ) = Fp (x(j)) | y 6= x(j)],
ist höchstens O
I
I
I
m
t/ ln t
,
da |y − x(j)| höchstens m verschiedene Primteiler besitzt.
Die Wahrscheinlichkeit für falsche Antwort,
weil an irgendeiner
der O(n) Stellen der Test versagt,
ist höchstens O t/nm
.
ln t
Wählt man t = n2 m ln n2 m, ergibt sich eine obere
Schranke in O(1/n).
Überblick
Ein randomisierter Identitätstest
Vergleich von Wörtern
Ein randomisierter Quicksortalgorithmus
2.21 Annahme
Alle Eingaben seien paarweise verschieden.
Übung:
Was tun, wenn mehrere Elemente mit gleichem
Sortierschlüssel auftreten?
(Und zwar sogar so, dass die relative Reihenfolge solcher
Elemente erhalten bleibt!)
2.22 Algorithmus
proc R[1 . . . n] ← RandQuickSort(S[1 : n])
hEingabe: ein Feld S[1 : n] paarweise verschiedener Zahleni
hAusgabe: ein Feld R[1 : n] die Zahlen aus S sortierti
hZwischenablage in Feldern S1 und S2 i
i ← random(1, n)
hgleichverteilt Zahl aus [1 . . . n]i
y ← S[i]
j1 ← 1; j2 ← 1;
for i ← 1 to n do
if S[i] < y then S1 [j1 ] ← S[i]; j1 ← j1 + 1 fi
if S[i] > y then S2 [j2 ] ← S[i]; j2 ← j2 + 1 fi
od
return
RandQuickSort(S1 [1 : j1 −1])·y ·RandQuickSort(S2 [1 : j2 −1])
2.23 Eigenschaften
I
I
Algorithmus 2.22 liefert immer die korrekte Ausgabe
Auswahl der y hat Einfluß auf die Laufzeit (selbst bei
festgehaltener Eingabefolge).
I
I
I
Wird immer der kleinste Wert als Pivotelement gewählt,
so ergibt sich eine quadratische Laufzeit.
Wird immer der Median gewählt, ist die Laufzeit
Θ(n log n).
Die Laufzeit dieses Algorithmus ist also eine
Zufallsvariable.
2.24 Notation
I
I
I
I
Nun soll der Erwartungswert der Laufzeit bestimmt
werden.
Xij : Zufallsvariable
Xij = 1, falls R[i] und R[j] miteinander verglichen werden
Xij = 0, falls nicht
Beachte: Indizes in der Resultatliste
Gesuchter Erwartungswert ist gleich
" n
#
n X
XX
X
Xij =
E [Xij ]
E
i=1 j>i
I
I
i=1 j>i
pij : Wahrscheinlichkeit für Vergleich von R[i] und R[j],
also E [Xij ] = 1 · pij + 0 · (1 − pij ) = pij .
Die pij sind nicht alle gleich! (Indizierung in R!)
2.26 Satz
Der Erwartungswert der Laufzeit von RandQuickSort für
Eingaben der Länge n ist in O(n log n).
2.27 Beweis (1)
I
I
Seien i und j (1 ≤ i < j ≤ n) beliebig aber fest.
Betrachte binäre Bäume mit den zu sortierenden Zahlen
als Knoten, die durch je eine Ausführung von
RandQuickSort wie folgt rekursiv festgelegt sind:
I
I
I
Die Wurzel des Baumes ist das zufällig gewählte
Pivotelement y .
Der linke Teilbaum ergibt sich rekursiv nach der gleichen
Regel gemäß der Ausführung beim Aufruf
RandQuickSort(S1 [1 : j1 − 1]) und
analog der rechte gemäß der Ausführung beim Aufruf
RandQuickSort(S2 [1 : j2 − 1]).
2.27 Beweis (2)
Es gilt:
(V) Zwei Elemente werden genau dann miteinander
verglichen, wenn das eine (direkter oder indirekter)
Vorgänger des anderen ist, also das andere im linken oder
rechten Unterbaum des einen ist.
Bei einem In-Order-Durchlauf des Baumes ergäbe sich die
sortierte Reihenfolge der Werte.
2.27 Beweis (3)
I
I
I
Interessante Reihenfolge: Beginne bei der Wurzel,
besuche nacheinander absteigend auf jedem Niveau
jeweils von links nach rechts alle Knoten.
Irgendwann wird zu ersten Mal ein Element R[k]
angetroffen, für das i ≤ k ≤ j ist.
Zeige:
1. R[i] und R[j] werden genau dann miteinander
verglichen, wenn k tatsächlich i oder j ist.
2. Jedes der Elemente R[i], . . . , R[j] ist
gleichwahrscheinlich das erste in der gewählten
Besuchsreihenfolge und es sind j − i + 1 Elemente.
I
Da in genau 2 Fällen (k ∈ {i, j}) R[i] und R[j]
miteinander verglichen werden, ist pij = 2/(j − i + 1).
2.27 Beweis (4a)
zu 1. Beachte: Alle Elemente R[i], . . . , R[j] befinden sich in
dem Teilbaum mit R[k] als Wurzel.
zu 2. Läge ein Element R[m], i ≤ m ≤ j außerhalb des
Teilbaumes, dann gölte nämlich für den spätesten
gemeinsamen Vorgänger x: R[m] < x < R[k] oder
R[k] < x < R[m], je nachdem, ob R[m] links
”
außerhalb“ oder rechts außerhalb“ liegt.
”
zu 3. Es wäre also auch x aus dem Bereich R[i], . . . , R[j] und
käme in der Besuchsreihenfolge vor R[k] (da es ja ein
Vorgänger ist) im Widerspruch zur Festlegung von R[k].
2.27 Beweis (4b)
1. (Fortsetzung)
1.1 Es sei nun k ∈ {i, j}, etwa k = i. Dann liegt R[j] in
einem Unterbaum von R[i], also werden die beiden
wegen der Überlegung (V) miteinander verglichen.
1.2 Es sei k ∈
/ {i, j}. Da R[i] < R[k], liegt es im linken
Unterbaum, und analog R[j] im rechten Unterbaum von
R[k]. Wegen Überlegung (V) werden also R[i] und R[j]
nicht miteinander verglichen.
2. Dieser Punkt sollte klar sein.
2.27 Beweis (5)
Also:
"
E
n X
X
#
Xij
=
i=1 j>i
n X
X
E [Xij ]
i=1 j>i
=
n X
n
X
n n−i+1
X
X 2
2
=
j −i +1
k
j=i+1
i=1 k=2
i=1
n X
n
X
≤ 2
i=1 k=1
n-te harmonische Zahl: Hn =
Pn
1
= 2nHn .
k
1
k=1 k
= ln n + Θ(1).
2.28
I
I
Manche randomisierten Algorithmen liefern immer die
richtige Antwort.
=⇒ Las Vegas Algorithmen (sofern . . . )
Manche randomisierten Algorithmen liefern manchmal
eine falsche Antwort.
=⇒ Monte Carlo Algorithmen
Zusammenfassung
1. Randomisierte Algorithmen enthalten eine
Zufallskomponente.
2. Das führt im Allgemeinen dazu, dass — bei festgehaltener
Eingabe — z.B. die Laufzeit eine randomisierten
Algorithmus eine Zufallsvariable ist.
3. Manche randomisierten Algorithmen liefern immer das
richtige Ergebnis.
4. Manche randomisierten Algorithmen liefern unter
Umständen ein falsches Ergebnis. Dann ist man im
Allgemeinen an kleinen Fehlerwahrscheinlichkeiten
interessiert.
Herunterladen