Probabilistische Algorithmen, Wahrscheinlichkeitsverstärkung und

Werbung
Probabilistische Algorithmen,
Wahrscheinlichkeitsverstärkung und
Recycling von Zufallszahlen
nach Uwe Schöning, Perlen der Theoretischen Informatik
Schriftliche Ausarbeitung im Rahmen des Hauptseminares Informatik,
ZAIK Arbeitsgruppe Faigle/Schrader im WS 2008/2009
Erstellt von Andreas Palm (Prüfungsnr. 80531, Matrikelnummer 4328663)
Algorithmen werden meist an deren Laufzeit oder Speicherbedarf gemessen, da
diese beiden Ressourcen ganz offensichtlich begrenzt sind. Es gibt jedoch weitere
Ressourcen die beschränkt sind, so zum Beispiel Zufallszahlen. Auf den meisten
Systemen stehen diese nur in begrenzter Anzahl pro Zeiteinheit zur Verfügung.
Daher sollten Zufallszahlen ebenfalls sparsam verwendet werden. Wie man die
Nutzung von Zufallszahlen
len einschränken kann und wie sich das hier vorgestellte
Verfahren auf die Fehlerwahrscheinlichkeit auswirkt,
auswirkt werde ich im Folgenden
erläutern.
Probabilistische Algorithmen
Das Ergebnis von probabilistischen Algorithmen ist vom Zufall abhängig. Diese AlgoAlgo
rithmen benötigen daher stochastisch unabhängige und gleichverteilte Zufallszahlen,
wobei die Menge von der Fehlerwahrscheinlichkeit abhängt. Übertragen auf das
Turingmaschinenmodell
maschinenmodell hat jede Konfiguration also mehrere NachfolgekonfiguratioNachfolge
nen die mit gleicher Wahrscheinlichkeit angenommen werden. Bei einer Eingabe wird die Entscheidung des Algorithmus zu einer Zufallsvariablen. Es sind die beiden
Entscheidungen „akzeptiere“ und „verwerfe“ bzw. 1 und 0 möglich, die jedoch vom
Zufall beeinflusst
sst werden. Daher definieren wir: Ein
Ei Wort gilt als akzeptiert, wenn
der prob. Algorithmus mit einer Schwellenwert-Wahrscheinlichkeit
Wahrscheinlichkeit größer als die
Entscheidung „akzeptiere“ bzw. 1 ausgibt. Anstatt kann auch jeder andere Wert
0,1 festgelegt werden.
erden.
Zur Unterscheidung verschiedener probabilistischer Algorithmen definieren wir: Eine
Sprache liegt in der Komplexitätsklasse (probabilistic polynomial time), falls es
einen polynomial zeitbeschränkten probabilistischen Algorithmus gibt und einen
Schwellenwert , so dass gerade aus allen akzeptierten Wörtern besteht.
Eine speziellere Art von Algorithmen sind solche mit einer
einer Wahrscheinlichkeitslücke.
Sie akzeptieren mit einer Wahrscheinlichkeit für und mit WahrscheinWahrschein
lichkeit für .. Zwischen den beiden Grenzwerten besteht also eine
Lücke . Wir definieren: Eine Sprache liegt in der Klasse (bounded-error
(bounded
probabilistic
bilistic polynomial time), falls es einen
ei
polynomial zeitbeschränkten probapro
bilistischen Algorithmus gibt, einen
Schwellenwert und eine Wahrscheinlichkeitslücke , so dass der Algorithmus die
oben formulierte Bedingung erfüllt (d.h. für kein Eingabewort liegt die AkzeptierwahrAk
scheinlichkeit im Bereich , ) und so dass gerade aus allen (im obigen
Sinne) akzeptierten Wörtern besteht.
Einen solchen Algorithmus nennen wir
-Algorithmus.
Für einen Sonderfall aus definieren wir: Eine Sprache liegt in der Klasse (random polynomial),, falls es einen -Algorithmus
Algorithmus gibt, wobei für die zugehörigen
Konstanten und gilt: 2.
Ein -Algorithmus
Algorithmus akzeptiert ein Wort der Sprache also mit gleicher WahrWahr
scheinlichkeit wie ein -Algorithmus,
Algorithmus, der -Algorithmus
Algorithmus wird ein Wort , das
nicht in der Sprache liegt, aber mit Wahrscheinlichkeit 0 akzeptieren. Diese
Situation entspricht einer nichtdeterministischen Maschine.
Es folgt: und " und .
Bisher haben wir in erster Linie die Akzeptier-Situation
Akzeptier
betrachtet. Wenn wir gleiche Bedingungen an das
Verwerfen bei stellen, so erhalten wir eine
Komplexitätsklasse mit Fehlerwahrscheinlichkeit 0.
Wir definieren: Eine Sprache liegt in der Klasse (zero error probabilistic polynomial time) genau dann,
wenn und gilt. (Mit anderen Worten
-).
Wahrscheinlichkeitsverstärkung
Das Ziel der Wahrscheinlichkeitsverstärkung ist es einen Algorithmus mit nur
polynomialem Zeitaufwand so umzuformen, dass Wörter der Sprache „fast immer“
und andere Wörter „fast nie“
akzeptiert werden. Anders gesagt
möchten wir die Fehlerwahr
wahrscheinlichkeit verringern.
Betrachten wir zunächst einen -Algorithmus:
Algorithmus: Gibt der Algorithmus „akzeptieren“
aus, so können wir sicher sein, dass die Aussage korrekt ist. Bei der Aussage
„verwerfe“ ist eine Fehlerwahrscheinlichkeit größer 0 vorhanden. Führen wir den
Algorithmus nun mehrfach hintereinander aus, so lautet das Gesamtergebnis
„akzeptiere“ wenn mindestens ein Einzelergebnis „akzeptiere“ lautet. Das GesamtGesamt
ergebnis lautet somit nur dann „verwerfe“, wenn alle Einzelergebnisse „verwerfe“
„verw
lauten. Die Wahrscheinlichkeitslücke hat sich somit vergrößert.
Die Wahrscheinlichkeit, dass der Algorithmus nicht „akzeptiere“ ausgibt, obwohl die
Eingabe in der Sprache liegt,
liegt beträgt 1 . Nach Ausführungen beträgt die WahrWahr
%
'(
scheinlichkeit also nur noch #1 $ . Um eine Fehlerwahrscheinlichkeit von 2 zu
erreichen können wir wie folgt berechnen: #1 $% & 2'( ) '(
*+,-#'$
Ω . /.
(
Im Fall eines -Algorithmus
Algorithmus ist die Wahrscheinlichkeitsverstärkung etwas
komplizierter. Bei einem BPP-Algorithmus
BPP Algorithmus muss beiden Aussagen misstraut werden.
Wir haben kein sicheres Kriterium für oder ,, können aber bei mehrfacher
Wiederholung des Algorithmus eine Häufung eines der beiden Ergebnisse
beobachten. Dies ist vergleichbar mit einem Bernoulli-Experiment:
Bernoulli Experiment: Ein ZufallsexZu
periment wird -mal wiederholt. Es hat eine Erfolgswahrscheinlichkeit von 0 (mit
0 für und 0 für ). Die Fehlerwahrscheinlichkeit ist somit
9%
1 2 4 ⋅ 6 7 ∙ #1 6$%'7
3
7:;
wobei 6 . Um erneut eine Fehlerwahrscheinlichkeit von 2'( zu erhalten
erhalten wir (mit Hilfe der Schranke von Chernoff) . - / ∙ =.
<
Für beide Klassen, und , ergibt sich somit ein linearer Zusammenhang
zwischen und =, wenn wir eine exponential-kleine Fehlerschranke wählen.
Recycling von Zufallszahlen
Wenn wir nun davon ausgehen, dass wir einen probabilistischen Algorithmus >#?$mal ausführen müssen um eine Fehlerwahrscheinlichkeit von 2'Ω#@$ zu erhalten, so
werden >#A?$ Zufallsbits benötigt, unter der Annahme, dass der Algorithmus A
Zufallsbits benötigt. Unser offensichtliches Ziel ist es, diese Anzahl zu reduzieren
indem wir bereits verwendete Zufallszahlen so „recyclen“, dass sie erneut verwendet
werden können.
Für den Recyclingvorgang verwenden wir universelles Hashing. Aus einer Klasse B
von Hashfunktionen wählen wir zufällig eine Funktion ℎ, die A verbrauchte Zufallsbits
zu D A Bits macht. Die D neuen Bits werden dann mit A D „echten“ Zufallsbits
wieder auf A Bits ergänzt. Dieser Vorgang kann iteriert werden. Diese neue Folge von
A Zufallsbits bezeichnen wir im Folgenden als „Pseudozufallszahlen“.
Als Klasse von Hashfunktionen wählen wir die Menge an Hashfunktionen ℎ mit
Parameter E, F 0, 0 1. Dabei sei 0 eine Primzahl 2G mit Bitlänge >#A$. Die
Hashfunktion ℎH,I,J #$ laute dann #E F$ KL 0. Wir benötigen jedoch nur D Bits,
weshalb wir die Hashfunktion erweitern zu M#E F$ KL 0N KL 2O . Dies hat jedoch
zur Folge, dass die Klasse B ihre Gleichverteilung verliert und nicht mehr universal
ist, wir können jedoch zeigen, dass B „fast universal“ ist:
Eine Klasse B von Hashfunktionen von P0,1QG nach P0,1QO heißt fast universal, falls
für alle , R P0,1QG mit ≠ R gilt: Prℎ#$ ℎ#R$ & V W .
Für unseren Fall können wir zeigen: Prℎ#$ ℎ#R$ 1 Prℎ#$ X ∧ ℎ#R$ X
ZP;,QV
1
0 1
1 Pr#E F$ KL 0 [ ∧ #ER F$ KL 0 [\ & 0 ∙ O ∙
2
0
^
];,H' ]
&.
0
1
1 1
1
1
1/ ∙ O & O G
O
2
0 2
0 2
2
Definition: Seien _,_′ Wahrscheinlichkeitsverteilung auf einer endlichen Menge a.
Wir sagen, _ und _′ sind sich ähnlich bis auf eine Schranke , falls für jede Teilmenge b a gilt: |_#b$ _\ #b$| & .
Somit ist eine Verteilung _ fast gleichverteilt, wenn _ einer Gleichverteilung ähnlich
ist und es bleibt zu zeigen, dass wir mit B eine solche Ähnlichkeit erreichen können.
Dabei hilft uns das „Leftover Hash Lemma“:
Sei b eine beliebige Teilmenge von P0,1QG mit |b| 2d . Sei B eine fast universale
Klasse von Hashfunktionen von P0,1QG nach P0,1QO . Es gelte A e > D und es sei
g #e D$ ∕ 2. Dann ist die Verteilung von Mℎ, ℎ#$N fast gleichverteilt ( auf der
Menge B × P0,1QO ) bis auf die Schranke 1 ∕ 2j .
Das Lemma lässt sich gut in zwei Teilen beweisen:
1. Die Kollisionswahrscheinlichkeit ist AkMℎ , ℎ # $N Mℎ , ℎ # $Nl. Dies ist
gleich |m| ⋅ Aℎ# $ ℎ# $ und lässt sich anhand der Definitionen nach oben
hin wie folgt abschätzen: |m| ⋅ .V W n/ & .1 o/ ⋅ |m|V .
2. Indirekter Beweis der Aussage: Sei _ eine Verteilung auf einer endlichen
Menge a. Wenn die Kollisionswahrscheinlichkeit von _ höchstens
#1 2p $/|a| ist, dann ist _ fast gleichverteilt auf a mit Schranke p.
Angenommen, _ ist nicht fast gleichverteilt mit Schranke p. Dann gibt es nach
Definition eine Teilmenge r von a mit s_#r$ Sei nun v > p, so dass _#r$ |t|
|u|
|t|
|u|
s > p.
v. Bei zufälliger und unabhängiger Wahl
von L , L ist die Wahrscheinlichkeit für L L mindestens |t| für L , L r
und mindestens |u|'|t| für L , L r. Damit ist die Kollisionswahrscheinlichkeit
mindestens
w#t$|t|
#'w#t$$|u|'|t|
|u| |t| |u|'|t| mit einem Minimum für |r| x-
x-
was einen Widerspruch zur Voraussetzung ergibt, da durch v > p gilt:
yzx |u|
>
yz{ .
|u|
|u|
,
Betrachten wir nun das Verhalten eines -Algorithmus | unter Verwendung
unserer „Pseudozufallszahlen“, die wir im Folgenden mit , , … , @ bezeichnen. Sei
F# $F# $ … F#@ $ die Bitfolge, die wir erhalten, wenn wir den Algorithmus ?-mal
ausführen und sei
F#7 $ ~
1, | Fg3 [EeeDXEℎe 7 E?Xg0 3gA ‚
.
0, | Fg3 [EeeDXEℎe 7 €gA3A
| habe eine Fehlerwahrscheinlichkeit zwischen und . Es gilt also:
z
ƒ
2
3
& Pr|#$ 1 &
4‚
⇒ …3
1
1
& Pr|#$ 0 &
4
3
1
1
& Pr|#$ 1 &
3‚
⇒ …4
2
3
& Pr|#$ 0 &
3
4
Würden wir für den Algorithmus immer neue Zufallszahlen verwenden, so erhielten
wir eine Ausgabe F F … F@ . Es gilt also zu zeigen, dass sich die Verteilung der F#7 $
der der F7 bis auf eine Schranke ähneln.
Wir beweisen per Induktion: Für alle 3 0 ähnelt die Verteilung von
F# $ … F#7 $ℎ7y der Verteilung (bis auf eine Schranke ), die wir erhalten, wenn wir
die ersten 3 Bits unabhängig voneinander mit Wahrscheinlichkeit 0 als 1 und mit
Wahrscheinlichkeit 1 0 als 0 wählen; ℎ wird unter Gleichverteilung aus B gezogen,
dann folgt ein Zufallswort, das unter Gleichverteilung aus P0,1QG gezogen wird.
30
Wir müssen nur die Verteilung von ℎ betrachten. Die Schranke ; 0, da wir es in
diesem Fall mit echter Gleichverteilung zu tun haben.
31
Um zu zeigen, dass F# $ℎ einer in der Behauptung beschriebenen Verteilung bis
auf eine Schranke ähnlich ist, reicht es auch zu zeigen, dass F# $ℎℎ# $ einer
Verteilung ähnelt, bei der das erste Bit gemäß der #0, 1 0$-Verteilung gezogen wird,
ℎ zufällig aus B und die letzten D Bits zufällig aus P0,1QO . Weil zufällig ist, ist F# $
gemäß #0, 1 0$ verteilt. Wir müssen also zeigen, dass ℎℎ# $ annähernd (auf
B × P0,1QO ) gleichverteilt ist. Für stehen uns noch 0 ∙ 2G bzw. #1 0$ ∙ 2G , also
mindestens 2G /4 viele Wahlmöglichkeiten zur Verfügung. Das Leftover Hash Lemma
ist gültig, wenn wir e A 2 setzen und nennt uns als Schranke
3>1
2'j 2'#d'O$/ 2'#G'O'$/
Es gelte die Behauptung für 3 1, das heißt, die Verteilung von F# $ … F#7' $ℎ
ähnelt einer korrekten Verteilung bis auf eine Schranke 7' . Zu zeigen ist, dass die
Verteilung von F# $ … F#7 $ℎ7y der korrekten Darstellung F … F7 ℎX ähnelt. Wieder
genügt es zu zeigen, dass F# $ … F#7 $ℎℎ#7 $ der Verteilung von F … F7 ℎ€ ähnelt,
wobei die Fˆ unabhängig #0, 1 0$ verteilt sind, ℎ gleichverteilt aus B und €
gleichverteilt aus P0,1QO gezogen wird.
Seien ‰,Š,B Zufallsvariablen, so dass die Verteilungen ‰ und Š sich bis auf eine
Schranke p ähneln. beschreibe eine Transformation, so dass #Š$ und B sich bis
auf die Schranke p ähneln. Betrachten wir nun die Ähnlichkeit zwischen B und #‰$:
|Pr #‰$ b Pr B b|
& |Pr #‰$ b Pr #Š$ b| |Pr #Š$ b Pr B b|
& |Pr #‰$ b Pr #Š$ b| p
& |Pr‰ ' #b$ Pr Š ' #b$| p & p p
B und #‰$ sind sich also bis auf die Schranke p p ähnlich.
‰ F# $ … F#7' $ℎ7
Setzen wir nun:
Š F … F7' ℎX
B F … F7' F7 ℎ€
und definieren die Transformation durch: #F … F7' ℎX$ F … F7' F#X$ℎℎ#X$.
Dann ergibt sich: #Š$ F … F7' F#€$ℎℎ#€$ und #‰$ F# $ … F#7' $F#7 $ℎℎ#7 $.
‰ und Š sind sich nach Induktionsvoraussetzung bis auf die Schranke 7' ähnlich.
Aus dem Fall 3 1 wissen wir auch, dass sich #Š$ und B bis auf die Schranke ähnlich sind und es folgt somit, dass sich #‰$ und B bis auf die Schranke 7 7' 3 ähneln.
Für 3 ? folgt also, dass die Verteilung von F# $ … F#@ $ einer korrekten #0, 1 0$Verteilung bis auf die Schranke ? ?/2#G'O'$/ ähnlich ist. Wenn wir nun D A 2? 2 festlegen, so erhalten wir als Schranke ‹ 2'Ω#@$ , was gut genug ist um die
@
Fehlerwahrscheinlichkeit von 2'Ω#@$ zu erhalten. Dies lässt sich leicht wie folgt
zeigen:
Sei  eine korrekte #0, 1 0$-Verteilung und _ eine Verteilung die  ähnlich ist bis
auf die Schranke . Sei b die Menge der 0-1-Folgen der Länge ? mit nicht mehr als
?/2 vielen Einsen in der Folge. Dann können wir abschätzen:
Aw #b$ & AŽ #b$ ∑7:;M@7N07 #1 0$@'7 & 2'Ω#@$ ⇒ 2'Ω#@$ .
@/
Betrachten wir als Letztes, wie viele Zufallszahlen wir mit diesem Verfahren benötigen, wenn wir den Algorithmus ?-mal durchführen möchten. Wir erinnern uns, dass
wir ohne Recycling >#A?$ viele Zufallsbits benötigten. Zu Beginn benötigen wir A viele
Zufallsbits als Ausgangsbasis. Außerdem benötigen wir für jede weitere Ausführung
A D neue Zufallsbits und müssen ℎ zufällig aus B auswählen. Die Primzahl 0 zur
Bildung der Hashfunktionen ℎH,I,J hat eine Bitlänge von >#A$, so dass wir zur Auswahl von h >#A$ viele Zufallsbits benötigen. Es ergibt sich also: A #A D$#? 1$ >#A$. Soeben haben wir festgelegt, dass A D >#?$ gilt und benötigen somit
insgesamt >#A ? $ viele Zufallsbits, was eine deutliche Verbesserung darstellt.
Herunterladen