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