Randomisierte Algorithmen

Werbung
Randomisierte Algorithmen
Randomisierte Algorithmen
2. Erste Beispiele
Thomas Worsch
Fakultät für Informatik
Karlsruher Institut für Technologie
Wintersemester 2016/2017
1 / 35
Erste Beispiele
Randomisierter Identitätstest
Überblick
Ein randomisierter Identitätstest
Vergleich von Wörtern
Ein randomisierter Quicksortalgorithmus
2 / 35
Erste Beispiele
Randomisierter Identitätstest
2.1 Aufgabe
I
I
I
I
Gegeben: drei n × n Matrizen A, B, C ∈ Fn×n .
Gesucht: Antwort auf die Frage, ob AB = C ist.
F: Körper
Bits: neutrale Elemente 0 bzw. 1
3 / 35
Erste Beispiele
Randomisierter Identitätstest
2.2 Deterministische Lösungen
I
I
naiv: Θ(n3 ) Schritte
schneller:
I
I
Strassen (1969): Θ(n2.808... ) Schritte
Coppersmith/Winograd (1987): Θ(n2.376... ) Schritte
4 / 35
Erste Beispiele
Randomisierter Identitätstest
2.2 Deterministische Lösungen
I
I
naiv: Θ(n3 ) Schritte
schneller:
I
I
I
Strassen (1969): Θ(n2.808... ) Schritte
Coppersmith/Winograd (1987): Θ(n2.376... ) Schritte
Vassilevska Williams (2011): Θ(n2.373... ) Schritte
4 / 35
Erste Beispiele
Randomisierter Identitätstest
2.3 Randomisierter Algorithmus (Freivalds, 1977)
5 / 35
Erste Beispiele
Randomisierter Identitätstest
2.3 Randomisierter Algorithmus (Freivalds, 1977)
r ← hVektor von n unabhängigen Zufallsbitsi
5 / 35
Erste Beispiele
Randomisierter Identitätstest
2.3 Randomisierter Algorithmus (Freivalds, 1977)
r ← hVektor von n unabhängigen Zufallsbitsi
hBerechne und vergleiche ABr und Cri
5 / 35
Erste Beispiele
Randomisierter Identitätstest
2.3 Randomisierter Algorithmus (Freivalds, 1977)
r ← hVektor von n unabhängigen Zufallsbitsi
hBerechne und vergleiche ABr und Cri
x ← Br
y ← Ax
z ← Cr
if (y , z) then
return no
else
return yes
fi
Offensichtlicher Zeitbedarf Θ(n2 ).
5 / 35
Erste Beispiele
Randomisierter Identitätstest
2.4 Fingerabdrücke
I
I
y = A(Br) „Fingerabdruck“ von AB.
z = Cr „Fingerabdruck“ von C
6 / 35
Erste Beispiele
Randomisierter Identitätstest
2.5 Lemma
Ist AB , C und r ein Vektor unabhängiger Zufallsbits,
dann ist die Fehlerwahrscheinlichkeit des Algorithmus
Pr [ABr = Cr] ≤ 1/2 .
Beachte: Im Fall AB = C kann kein Fehler passieren.
7 / 35
Erste Beispiele
Randomisierter Identitätstest
2.6 Beweis
I
I
I
I
I
Sei D = AB − C, also D , 0.
Sei y = ABr und z = Cr.
Dr = 0 genau dann, wenn y = z (Fehler)
d sei eine Zeile von D, die nicht der Nullvektor ist.
dr ist Eintrag im Produktvektor Dr
obere Schranke für die Wahrscheinlichkeit, dass dr = 0?
8 / 35
Erste Beispiele
Randomisierter Identitätstest
2.6 Beweis (Fortsetzung)
I
I
Sei d = (d1, . . . , dn ) und o. B. d. A. seien Nichtnulleinträge
von d gerade d1, . . . , dk .
Í
dr = 0 genau dann, wenn ki=1 di ri = 0, also
rk = (−
k−1
Õ
di ri )/dk
i=1
I
I
I
I
Man stelle sich vor, r 1, . . . , rk−1 seien bereits gewählt.
Gleichung offensichtlich für höchstens einen der beiden
möglichen Werte für rk richtig.
Also ist Wahrscheinlichkeit für dr = 0 höchstens 1/2.
Also ist Wahrscheinlichkeit für Dr = 0 höchstens 1/2.
9 / 35
Erste Beispiele
Randomisierter Identitätstest
2.7 Korollar
I
I
Wenn AB = C ist, liefert Algorithmus 2.3 stets die richtige
Antwort.
Wenn AB , C ist, liefert Algorithmus 2.3 mit einer
Wahrscheinlichkeit größer gleich 1/2 die richtige Antwort.
10 / 35
Erste Beispiele
Randomisierter Identitätstest
2.8 Kleinere Fehlerwahrscheinlichkeit: wie?
11 / 35
Erste Beispiele
Randomisierter Identitätstest
2.8 Kleinere Fehlerwahrscheinlichkeit: wie?
I
I
Ziehe – wenn möglich – die Komponenten des
Zufallsvektors aus einer größeren Menge.
Führe k unabhängige Wiederholungen des Algorithmus
durch und produziere nur dann am Ende die Antwort yes,
wenn jeder Einzelversuch diese Antwort geliefert hat.
Pr [Y1 = yes ∧ Y2 = yes ∧ · · · ∧ Yk = yes]
Î
= ki=1 Pr [Yi = yes]
11 / 35
Erste Beispiele
Vergleich von Wörtern
Überblick
Ein randomisierter Identitätstest
Vergleich von Wörtern
Ein randomisierter Quicksortalgorithmus
12 / 35
Erste Beispiele
Vergleich von Wörtern
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
Í
Í
Sind a = ni=1 ai 2i−1 und b = ni=1 bi 2i−1 gleich?
Wieviele Bits muss man wohl übertragen, um
mit W.keit 1 − 1/n sicher sein zu können, dass a = b ist?
13 / 35
Erste Beispiele
Vergleich von Wörtern
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
Ín
a ← i=1 ai 2i−1
Í
b ← ni=1 bi 2i−1
if (a mod p = b mod p) then
return yes
else
return no
fi
14 / 35
Erste Beispiele
Vergleich von Wörtern
2.12 Satz
Bei zufälliger gleichverteilter Wahl einer Primzahl p kleiner oder
gleich n2 log n2 ist
1
Pr [a mod p = b mod p | a , b] ∈ O( ) .
n
Für den Beweis werden zwei Ergebnisse benötigt . . .
15 / 35
Erste Beispiele
Vergleich von Wörtern
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).
16 / 35
Erste Beispiele
Vergleich von Wörtern
2.14 Lemma
Die Anzahl k verschiedener Primteiler einer Zahl kleiner oder
gleich 2n ist höchstens n.
17 / 35
Erste Beispiele
Vergleich von Wörtern
2.15 Beweis (von Satz 2.12)
I
I
I
I
I
I
I
Sei c = |a − b|.
falsche Antwort, wenn c , 0 und von p geteilt
da c ≤ 2n , hat es höchstens n verschiedene Primteiler
sei die gewählte Primzahl aus dem Intervall von 2 bis t
dort gibt es π (t) ∈ Θ(t/ln t) Primzahlen
Die Wahrscheinlichkeit Pr [a mod p = b mod p | a , b], ein
p zu wählen, das zu einer falschen Antwort führt, ist also
n
höchstens O( t/ln
t ).
Für t = n2 ln n2 ergibt sich eine obere Schranke in O(1/n).
18 / 35
Erste Beispiele
Vergleich von Wörtern
2.16 Pattern Matching
I
I
I
I
Gegeben: Text x = x 1 · · · xn und kürzeres Suchmuster
y = y1 · · · ym .
Gesucht: Antwort auf die Frage, ob y in x vorkommt.
Bezeichne x(j) das Teilwort x j · · · x j+m−1 (Länge m).
Frage: Ist für ein 1 ≤ j ≤ n − m + 1 das zugehörige x(j) = y?
bezeichne x̂(j) =
Ím
i−1
i=1 x j+1+i−1 2
19 / 35
Erste Beispiele
Vergleich von Wörtern
2.17 Idee
x̂(j + 1) =
m
Õ
x j+1+i−12i−1
i=1
m−1
1
1Õ
= (x j − x j ) +
x j+1+i−12i + x j+1+m−12m−1
2
2 i=1
!
m−1
1 Õ
i
=
x j+i 2 − x j + x j+m 2m−1
2 i=0
!
m
1 Õ
i−1
=
x j+i−12 − x j + x j+m 2m−1
2 i=1
1
=
x̂(j) − x j + x j+m 2m−1 .
2
20 / 35
Erste Beispiele
Vergleich von Wörtern
2.18 Algorithmus
hÜberprüfung, ob Bitfolge y1 · · · ym in x 1 · · · xn vorkommti
hAusgabe: erstes j, wo das der Fall ist, oder −1 sonst.i
p ← hPrimzahl kleiner oder gleich n2m ln n2mi
hzufällig gleichverteilt aus diesen ausgewählt.i
Í
i−1 mod p
y← m
i=1 yi 2
Ím
z ← i=1 xi 2i−1 mod p
for j ← 1 to n − m do
if (y = z) then
return j herste Stelle, an der „Übereinstimmung“ i
fi
z ← (z − x j )/2 + x j+m 2m−1 mod p
od
return −1 hy kommt sicher nicht in x vori
21 / 35
Erste Beispiele
Vergleich von Wörtern
2.19 Satz
Algorithmus 2.18 liefert höchstens mit Wahrscheinlichkeit O(1/n)
eine falsche Antwort.
22 / 35
Erste Beispiele
Vergleich von Wörtern
2.20 Beweis
I
I
I
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 [y mod p = x(j) mod p | y , x(j)],
m
ist höchstens O( 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,
nm
ist höchstens O( t/ln
t ).
Wählt man t = n2m ln n2m, ergibt sich eine obere Schranke
in O(1/n).
23 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
Überblick
Ein randomisierter Identitätstest
Vergleich von Wörtern
Ein randomisierter Quicksortalgorithmus
24 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.21 Annahme
Alle Eingaben seien paarweise verschieden.
25 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
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 S 1 und S 2 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 S 1 [j1 ] ← S[i]; j1 ← j1 + 1 fi
if S[i] > y then S 2 [j2 ] ← S[i]; j2 ← j2 + 1 fi
od
return
RandQuickSort(S 1 [1 : j1 − 1]) · y · RandQuickSort(S 2 [1 : j2 − 1])
26 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.23 Eigenschaften
I
I
Algorithmus 2.22 liefert immer die korrekte Ausgabe
Wahl der y beeinflusst Laufzeit (bei gleicher Eingabe):
I
I
I
I
wenn z. B. y immer das Minimum: Laufzeit Θ(n2 ).
wenn z. B. y immer der Median: Laufzeit Θ(n log n).
Die Laufzeit ist hier also eine Zufallsvariable.
Was ist der Erwartungswert der Laufzeit?
27 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.24 Notation
I
I
Xij : Zufallsvariable
Xij = 1, falls „zwei Zahlen“ miteinander verglichen werden
Xij = 0, falls nicht
Gesuchter Erwartungswert ist gleich
" n−1
# n−1
ÕÕ
ÕÕ E
Xij =
E Xij
i=1 j>i
i=1 j>i
28 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.24 Notation
I
I
I
Xij : Zufallsvariable
Xij = 1, falls R[i] und R[j] miteinander verglichen werden
Xij = 0, falls nicht
Beachte: Indizes in der Resultatliste (sortierte Reihenfolge)
Gesuchter Erwartungswert ist gleich
" n−1
# n−1
ÕÕ
ÕÕ E
Xij =
E Xij
i=1 j>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 .
28 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.24 Notation
I
I
I
Xij : Zufallsvariable
Xij = 1, falls R[i] und R[j] miteinander verglichen werden
Xij = 0, falls nicht
Beachte: Indizes in der Resultatliste (sortierte Reihenfolge)
Gesuchter Erwartungswert ist gleich
" n−1
# n−1
ÕÕ
ÕÕ E
Xij =
E Xij
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!)
28 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.26 Satz
Der Erwartungswert der Laufzeit von RandQuickSort für
Eingaben der Länge n ist in O(n log n).
29 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
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
Wurzel des Baumes: zufällig gewähltes Pivotelement y.
linker Teilbaum: rekursiv nach gleicher Regel aus
RandQuickSort(S 1 [1 : j1 − 1]) und
rechter Teilbaum: rekursiv nach gleicher Regel aus
RandQuickSort(S 2 [1 : j2 − 1]).
30 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.27 Beweis (2)
I
durchlaufe Baum
I
I
I
I
I
beginnend bei der Wurzel,
nacheinander absteigend jedes Niveau
jeweils von links nach rechts alle Knoten
irgendwann erstmals Element R[k] mit i ≤ k ≤ j
hier Entscheidung, R[i] vor R[j] einzusortieren
31 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.27 Beweis (2)
I
durchlaufe Baum
I
I
I
I
I
I
beginnend bei der Wurzel,
nacheinander absteigend jedes Niveau
jeweils von links nach rechts alle Knoten
irgendwann erstmals Element R[k] mit i ≤ k ≤ j
hier Entscheidung, R[i] vor R[j] einzusortieren
zwei Fälle:
1. k = i oder k = j, d. h. R[i] oder R[j] ist Pivotelement und die
beiden werden miteinander verglichen.
2. i < k < j, d. h.
I
I
I
I
ein anderes Element ist Pivot
R[i] und R[j] werden nicht miteinander verglichen
kommen in verschiedene Teilbäume
werden folglich auch später nie miteinander verglichen
31 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.27 Beweis (3)
I
I
I
jedes (noch) zur Verfügung stehende Element
gleichwahrscheinlich als Pivotelement ausgewählt
offensichtlich eines der j − i + 1 Elemente R[i], . . . , R[j]
ausgewählt
Im betrachteten Schritt wird also gleichwahrscheinlich
I
I
I
eines von j − i + 1 Elementen ausgewählt und
in zwei Fällen (k = i, k = j) Vergleich von R[i] und R[j]
Wahrscheinlichkeit für Vergleich von R[i] und R[j]:
pij = 2/(j − i + 1).
32 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.27 Beweis (4)
Also:
E
" n−1
ÕÕ
#
Xij
n−1 Õ
Õ
E Xij
=
i=1 j>i
i=1 j>i
=
n−1
Õ
n
Õ
n−1 n−i+1
Õ
Õ 2
2
=
j − i + 1 i=1 k=2 k
j=i+1
i=1
n Õ
n
Õ
≤ 2
i=1
n-te harmonische Zahl: Hn =
Ín
1
= 2nHn .
k
k=1
1
k=1 k
= ln n + Θ(1).
33 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
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
34 / 35
Erste Beispiele
Randomisierter Quicksortalgorithmus
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.
35 / 35
Herunterladen