Randomisierte Algorithmen
Randomisierte Algorithmen
2. Erste Beispiele
Thomas Worsch
Fakultรคt fรผr Informatik Karlsruher Institut fรผr Technologie
Wintersemester 2019/2020
รberblick
Ein randomisierter Identitรคtstest
Vergleich von Wรถrtern
Ein randomisierter Quicksortalgorithmus
Erste Beispiele
Randomisierter Identitรคtstest
2.1 Aufgabe
I Gegeben:drei๐ร๐ MatrizenA,B,CโF๐ร๐. I Gesucht:Antwort auf die Frage: istAB=C? I F: Kรถrper
I Bits: neutrale Elemente0bzw.1
Erste Beispiele
Randomisierter Identitรคtstest
2.2 Deterministische Lรถsungen
I naiv:ฮ(๐3)Schritte I schneller:
I Strassen (1969):ฮ(๐2.808...)Schritte
I Coppersmith/Winograd (1987):ฮ(๐2.376...)Schritte
Erste Beispiele
Randomisierter Identitรคtstest
2.2 Deterministische Lรถsungen
I naiv:ฮ(๐3)Schritte I schneller:
I Strassen (1969):ฮ(๐2.808...)Schritte
I Coppersmith/Winograd (1987):ฮ(๐2.376...)Schritte I Vassilevska Williams (2011):ฮ(๐2.373...)Schritte
Erste Beispiele
Randomisierter Identitรคtstest
2.3 Randomisierter Algorithmus (Freivalds, 1977)
hBerechne und vergleicheABrundCri x โBr
yโAx zโCr
if (yโ z)then return no else
return yes fi
Offensichtlicher Zeitbedarfฮ(๐2).
Erste Beispiele
Randomisierter Identitรคtstest
2.3 Randomisierter Algorithmus (Freivalds, 1977)
boolโis_A_times_B_equal_C(๐ด, ๐ต, ๐ถ):
rโ hVektor von๐unabhรคngigen Zufallsbitsi
hBerechne und vergleicheABrundCri x โBr
yโAx zโCr
if (yโ z)then return no else
return yes fi
Offensichtlicher Zeitbedarfฮ(๐2).
Erste Beispiele
Randomisierter Identitรคtstest
2.3 Randomisierter Algorithmus (Freivalds, 1977)
boolโis_A_times_B_equal_C(๐ด, ๐ต, ๐ถ):
rโ hVektor von๐unabhรคngigen Zufallsbitsi hBerechne und vergleicheABrundCri
zโCr
if (yโ z)then return no else
return yes fi
Offensichtlicher Zeitbedarfฮ(๐2).
Erste Beispiele
Randomisierter Identitรคtstest
2.3 Randomisierter Algorithmus (Freivalds, 1977)
boolโis_A_times_B_equal_C(๐ด, ๐ต, ๐ถ):
rโ hVektor von๐unabhรคngigen Zufallsbitsi hBerechne und vergleicheABrundCri x โBr
yโAx zโCr
if (yโ z)then return no else
return yes fi
2.4 Fingerabdrรผcke
I y=A(Br)โFingerabdruckโ vonAB. I z=CrโFingerabdruckโ vonC
Erste Beispiele
Randomisierter Identitรคtstest
2.5 Lemma
IstABโ Cundrein Vektor unabhรคngiger Zufallsbits, dann ist die Fehlerwahrscheinlichkeit des Algorithmus
P(ABr=Cr) โค1/2 .
Beachte: Im FallAB=Ckann kein Fehler passieren.
2.6 Beweis
I SeiD=ABโC, alsoDโ 0.
Seiy=ABrundz=Cr.
I Dr=0genau dann, wenny=z(Fehler)
I dsei eine Zeile vonD, die nicht der Nullvektor ist.
I drist Eintrag im ProduktvektorDr
I obere Schranke fรผr die Wahrscheinlichkeit, dassdr=0?
Erste Beispiele
Randomisierter Identitรคtstest
2.6 Beweis (Fortsetzung)
I d =(๐1, . . . , ๐๐)und๐der grรถรte Index mit๐๐ โ 0 I dr =ร๐
๐=1๐๐๐๐ =0genau dann, wenn๐๐๐๐ =โร
๐โ ๐๐๐๐๐, also
๐๐ = (โร
๐โ ๐
๐๐๐๐)/๐๐
I Vorstellung:๐1, . . . , ๐๐โ1bereits gewรคhlt I die๐๐ mit๐ <๐ โค๐ sind irrelevant
I Gleichung fรผr hรถchstenseinender beiden mรถglichen Werte fรผr๐๐ richtig.
I also Wahrscheinlichkeit fรผrdr=0hรถchstens1/2 I also Wahrscheinlichkeit fรผrDr=0hรถchstens1/2
2.7 Korollar
I WennAB =C, liefert Algorithmus 2.3 stets die richtige Antwort.
I WennAB โ C, liefert Algorithmus 2.3
mit Wahrscheinlichkeit grรถรer gleich1/2die richtige Antwort.
Erste Beispiele
Randomisierter Identitรคtstest
2.8 Kleinere Fehlerwahrscheinlichkeit: wie?
I ziehe โ wenn mรถglich โ die zufรคlligen๐๐ aus grรถรerer Menge I ๐unabhรคngige Wiederholungen des Algorithmus
am Ende nur dann Antwort yes, wenn alle Einzelversuche yes geliefert haben I im Fehlerfall:
P(๐1=yesโง๐2=yesโง ยท ยท ยท โง๐๐ =yes)
=ร๐
๐=1P(๐๐ =yes) โค2โ๐
2.8 Kleinere Fehlerwahrscheinlichkeit: wie?
I ziehe โ wenn mรถglich โ die zufรคlligen๐๐ aus grรถรerer Menge I ๐unabhรคngige Wiederholungen des Algorithmus
am Ende nur dann Antwort yes, wenn alle Einzelversuche yes geliefert haben I im Fehlerfall:
P(๐1=yesโง๐2=yesโง ยท ยท ยท โง๐๐ =yes)
=ร๐
๐=1P(๐๐ =yes) โค2โ๐
Erste Beispiele
Vergleich von Wรถrtern
รberblick
Ein randomisierter Identitรคtstest Vergleich von Wรถrtern
Ein randomisierter Quicksortalgorithmus
2.9 Aufgabe
I Gegeben:Zwei โDatenbestรคndeโ in Form von Bitfolgen๐1ยท ยท ยท๐๐und๐1ยท ยท ยท๐๐. I Gesucht:Antwort auf die Frage, ob die beiden Bitfolgen gleich sind.
I Anwendung:
Vergleich rรคumlich weit entfernter groรer Datenmengen I Sind๐=ร๐
๐=1๐๐2๐โ1und๐=ร๐
๐=1๐๐2๐โ1gleich?
I Wieviele Bits muss man wohl รผbertragen, um
mit W.keit1โ1/๐sicher sein zu kรถnnen, dass๐=๐ist?
Erste Beispiele
Vergleich von Wรถrtern
2.11 Algorithmus
hรberprรผfung, ob Bitfolgen๐1ยท ยท ยท๐๐und๐1ยท ยท ยท๐๐ gleich sindi
๐ โ hPrimzahl kleiner oder gleich๐2ln๐2i
hzufรคllig gleichverteilt aus diesen ausgewรคhlti ๐โ ร๐
๐=1๐๐2๐โ1 ๐โ ร๐
๐=1๐๐2๐โ1
if (๐mod๐ =๐ mod๐)then return yes
else
return no fi
2.12 Satz
Bei zufรคlliger gleichverteilter Wahl einer Primzahl๐kleiner oder gleich๐2log๐2ist
P(๐mod๐ =๐ mod๐ |๐ โ ๐) โ๐(1 ๐
) .
Fรผr den Beweis werden zwei Ergebnisse benรถtigt . . .
Erste Beispiele
Vergleich von Wรถrtern
2.13 Satz (Chebyshev)
Fรผr die Anzahl๐(๐)der Primzahlen kleiner oder gleich๐gilt:
7 8
๐ ln๐
โค ๐(๐) โค 9 8
๐ ln๐ Es ist also๐(๐) โฮ(๐/ln๐).
2.14 Lemma
Eine Zahl kleiner oder gleich2๐hat hรถchstens๐ verschiedene Primteiler.
Erste Beispiele
Vergleich von Wรถrtern
2.15 Beweis (von Satz 2.12)
I Sei๐ = |๐โ๐|.
I falsche Antwort, wenn๐ โ 0und von๐ geteilt
I da๐ โค 2๐, hat es hรถchstens๐verschiedene Primteiler I sei die gewรคhlte Primzahl aus dem Intervall von2bis๐ก I dort gibt es๐(๐ก) โฮ(๐ก/ln๐ก)Primzahlen
I Die WahrscheinlichkeitP(๐mod๐ =๐mod๐ |๐โ ๐), ein๐ zu wรคhlen, das zu einer falschen Antwort fรผhrt, ist also hรถchstens๐( ๐
๐ก/ln๐ก). I Fรผr๐ก =๐2ln๐2ergibt sich eine obere Schranke in๐(1/๐).
2.16 Pattern Matching
I Gegeben:Text๐ฅ =๐ฅ1ยท ยท ยท๐ฅ๐und kรผrzeresSuchmuster๐ฆ =๐ฆ1ยท ยท ยท๐ฆ๐. I Gesucht:Antwort auf die Frage, ob๐ฆin๐ฅvorkommt.
I Bezeichne๐ฅ(๐) das Teilwort๐ฅ๐ยท ยท ยท๐ฅ๐+๐โ1(Lรคnge๐).
Frage: Ist fรผr ein1โค ๐ โค๐โ๐+1das zugehรถrige๐ฅ(๐) =๐ฆ?
I bezeichne๐ฅห(๐)=ร๐
๐=1๐ฅ๐+1+๐โ12๐โ1
Erste Beispiele
Vergleich von Wรถrtern
2.17 Idee
ห
๐ฅ(๐+1) =
๐
ร
๐=1
๐ฅ๐+1+๐โ12๐โ1
= 1 2
(๐ฅ๐ โ๐ฅ๐) +1 2
๐โ1
ร
๐=1
๐ฅ๐+1+๐โ12๐ +๐ฅ๐+1+๐โ12๐โ1
= 1 2
๐โ1
ร
๐=0
๐ฅ๐+๐2๐โ๐ฅ๐
!
+๐ฅ๐+๐2๐โ1
= 1 2
๐
ร
๐=1
๐ฅ๐+๐โ12๐โ1โ๐ฅ๐
!
+๐ฅ๐+๐2๐โ1
= 1 ห
๐ฅ(๐) โ๐ฅ
+๐ฅ๐+๐2๐โ1 .
2.18 Algorithmus
hรberprรผfung, ob Bitfolge๐ฆ1ยท ยท ยท๐ฆ๐ in๐ฅ1ยท ยท ยท๐ฅ๐vorkommti hAusgabe: erstes๐, wo das der Fall ist, oderโ1sonst.i
๐ โ hPrimzahl kleiner oder gleich๐2๐ln๐2๐i hzufรคllig gleichverteilt aus diesen ausgewรคhlt.i ๐ฆ โ ร๐
๐=1๐ฆ๐2๐โ1 mod๐ ๐ง โร๐
๐=1๐ฅ๐2๐โ1 mod๐ for ๐ โ1 to๐โ๐do
if (๐ฆ =๐ง)then
return๐ herste Stelle, an der โรbereinstimmungโi fi
Erste Beispiele
Vergleich von Wรถrtern
2.19 Satz
Algorithmus 2.18 liefert hรถchstens mit Wahrscheinlichkeit๐(1/๐)eine falsche Antwort.
2.20 Beweis
I Sei wieder๐ก die obere Schranke des Intervalls, aus dem Primzahlen gewรคhlt werden.
I Nach Satz 2.13 gibt es dort๐(๐ก) โ ฮ(๐ก/ln๐ก)Primzahlen.
I WahrscheinlichkeitP(๐ฆ mod๐ =๐ฅ(๐) mod๐ |๐ฆ โ ๐ฅ(๐)), ist hรถchstens๐( ๐
๐ก/ln๐ก),
I da|๐ฆโ๐ฅ(๐) |hรถchstens๐verschiedene Primteiler besitzt.
I Die Wahrscheinlichkeit fรผr falsche Antwort,
weil an irgendeiner der๐(๐)Stellen der Test versagt, ist hรถchstens๐( ๐๐
๐ก/ln๐ก).
Erste Beispiele
Randomisierter Quicksortalgorithmus
รberblick
Ein randomisierter Identitรคtstest Vergleich von Wรถrtern
Ein randomisierter Quicksortalgorithmus
2.21 Annahme
Alle Eingaben seien paarweise verschieden.
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.22 Algorithmus
proc๐ [1 . . . ๐] โRandQuickSort(๐[1:๐])
hEingabe: ein Feld๐[1:๐] paarweise verschiedener Zahleni hAusgabe: ein Feld๐ [1:๐]die Zahlen aus๐ sortierti hZwischenablage in Feldern๐1und๐2i
๐ โrandom(1, ๐) hgleichverteilt Zahl aus[1 . . . ๐]i ๐ฆ โ๐[๐]
๐1 โ1; ๐2 โ1;
for๐ โ1 to๐ do
if๐[๐] <๐ฆthen๐1[๐1] โ๐[๐];๐1 โ ๐1+1fi if๐[๐] >๐ฆthen๐2[๐2] โ๐[๐];๐2 โ ๐2+1fi od
returnRandQuickSort(๐1[1: ๐1โ1]) ยท๐ฆยทRandQuickSort(๐2[1: ๐2โ1])
2.23 Eigenschaften
I Algorithmus 2.22 liefertimmer die korrekte Ausgabe I Wahl der๐ฆbeeinflusst Laufzeit (bei gleicher Eingabe):
I wenn z. B.๐ฆimmer das Minimum: Laufzeitฮ(๐2). I wenn z. B.๐ฆimmer der Median: Laufzeitฮ(๐log๐). I DieLaufzeitist hier also eineZufallsvariable.
I Was ist derErwartungswert der Laufzeit?
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.24 Notation
I ๐๐ ๐: Zufallsvariable
๐๐ ๐ =1, falls โzwei Zahlenโ miteinander verglichen werden ๐๐ ๐ =0, falls nicht
I Beachte: Indizes in derResultatliste(sortierte Reihenfolge)
I Gesuchter Erwartungswert ist gleich E
"๐โ1 ร
๐=1
ร
๐>๐
๐๐ ๐
#
=
๐โ1
ร
๐=1
ร
๐>๐
E ๐๐ ๐
I ๐๐ ๐: Wahrscheinlichkeit fรผr Vergleich von๐ [๐] und๐ [๐], alsoE
๐๐ ๐
=1ยท๐๐ ๐ +0ยท (1โ๐๐ ๐)=๐๐ ๐. I Die๐๐ ๐ sindnichtalle gleich! (Indizierung in๐ !)
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.24 Notation
I ๐๐ ๐: Zufallsvariable
๐๐ ๐ =1, falls๐ [๐]und๐ [๐]miteinander verglichen werden ๐๐ ๐ =0, falls nicht
I Beachte: Indizes in derResultatliste(sortierte Reihenfolge) I Gesuchter Erwartungswert ist gleich
E
"๐โ1 ร
๐=1
ร
๐>๐
๐๐ ๐
#
=
๐โ1
ร
๐=1
ร
๐>๐
E ๐๐ ๐
I
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.24 Notation
I ๐๐ ๐: Zufallsvariable
๐๐ ๐ =1, falls๐ [๐]und๐ [๐]miteinander verglichen werden ๐๐ ๐ =0, falls nicht
I Beachte: Indizes in derResultatliste(sortierte Reihenfolge) I Gesuchter Erwartungswert ist gleich
E
"๐โ1 ร
๐=1
ร
๐>๐
๐๐ ๐
#
=
๐โ1
ร
๐=1
ร
๐>๐
E ๐๐ ๐
I ๐๐ ๐: Wahrscheinlichkeit fรผr Vergleich von๐ [๐] und๐ [๐], alsoE
๐๐ ๐
=1ยท๐๐ ๐+0ยท (1โ๐๐ ๐)=๐๐ ๐.
I nicht
2.26 Satz
Der Erwartungswert der Laufzeit vonRandQuickSortfรผr Eingaben der Lรคnge๐ist in ๐(๐log๐).
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.27 Beweis (1)
I Seien๐ und๐ (1 โค๐ < ๐ โค๐) beliebig.
I Betrachte binรคre Bรคume mit den zu sortierenden Zahlen als Knoten, die durch je eine Ausfรผhrung vonRandQuickSortwie folgt rekursiv festgelegt sind:
I Wurzel des Baumes: zufรคllig gewรคhltes Pivotelement๐ฆ.
I linker Teilbaum: rekursiv nach gleicher Regel ausRandQuickSort(๐1[1: ๐1โ1]) und
I rechter Teilbaum: rekursiv nach gleicher Regel ausRandQuickSort(๐2[1:๐2โ1]).
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.27 Beweis (2)
I durchlaufe Baum
I beginnend bei der Wurzel,
I nacheinander absteigend jedes Niveau I jeweils von links nach rechts alle Knoten
I irgendwann erstmals Element๐ [๐] mit๐ โค ๐ โค ๐ I hier Entscheidung,๐ [๐] vor๐ [๐]einzusortieren
miteinander verglichen. 2. ๐ <๐ < ๐, d. h.
I ein anderes Element ist Pivot
I ๐ [๐]und๐ [๐]werden nicht miteinander verglichen I kommen in verschiedene Teilbรคume
I werden folglich auch spรคter nie miteinander verglichen
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.27 Beweis (2)
I durchlaufe Baum
I beginnend bei der Wurzel,
I nacheinander absteigend jedes Niveau I jeweils von links nach rechts alle Knoten
I irgendwann erstmals Element๐ [๐] mit๐ โค ๐ โค ๐ I hier Entscheidung,๐ [๐] vor๐ [๐]einzusortieren I zwei Fรคlle:
1. ๐ =๐oder๐ = ๐, d. h.๐ [๐] oder๐ [๐]ist Pivotelement und die beiden werden miteinander verglichen.
2. ๐ <๐ < ๐, d. h.
I ein anderes Element ist Pivot
I ๐ [๐]und๐ [๐]werden nicht miteinander verglichen I kommen in verschiedene Teilbรคume
2.27 Beweis (3)
I jedes (noch) mรถgliche Element gleichwahrscheinlich Pivot
I offensichtlich eines der ๐โ๐+1Elemente๐ [๐], . . . ,๐ [๐]ausgewรคhlt I Im betrachteten Schritt wird also gleichwahrscheinlich
I eines von๐ โ๐+1Elementen ausgewรคhlt und
I in zwei Fรคllen (๐=๐,๐ =๐) Vergleich von๐ [๐]und๐ [๐]
I Wahrscheinlichkeit fรผr Vergleich von๐ [๐]und๐ [๐]:๐๐ ๐ =2/(๐โ๐+1).
Erste Beispiele
Randomisierter Quicksortalgorithmus
2.27 Beweis (4)
Also:
E
"๐โ1
ร
๐=1
ร
๐>๐
๐๐ ๐
#
=
๐โ1
ร
๐=1
ร
๐>๐
E ๐๐ ๐
=
๐โ1
ร
๐=1 ๐
ร
๐=๐+1
2 ๐โ๐+1
=
๐โ1
ร
๐=1 ๐โ๐+1
ร
๐=2
2 ๐
โค 2
๐
ร
๐=1 ๐
ร
๐=1
1 ๐
=2๐๐ป๐ .
๐-te harmonische Zahl:๐ป๐ =ร๐
๐=1 1
๐ =ln๐+ฮ(1).
2.28
I Manche randomisierten Algorithmen liefern immer die richtige Antwort.
=โLas Vegas Algorithmen(sofern . . . )
I Manche randomisierten Algorithmen liefern manchmal eine falsche Antwort.
=โMonte Carlo Algorithmen
Erste Beispiele
Randomisierter Quicksortalgorithmus
Zusammenfassung
1. Randomisierte Algorithmen enthalten eine Zufallskomponente.
2. Das fรผhrt im Allgemeinen dazu, dass โselbst bei immer gleicher 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 will man im Allgemeinen kleine Fehlerwahrscheinlichkeiten.