Randomisierung: Komplexitätstheorie und Praxis

Werbung
SEMINARARBEIT
Randomisierung: Komplexitätstheorie
und Praxis
(Studiengang Informatik)
von Eugen Schilke
Januar 2004
Inhaltsverzeichnis
1 Probabilistische Algorithmen
2
2 Zufallsquellen
4
3 Anwendungsbeispiele
5
4 Randomisierte Komplexitätsklassen
7
5 Schaltkreise und ihre Größe
10
6 De-Randomisierung
12
Literaturverzeichnis
13
1
1
Probabilistische Algorithmen
Der Zufall spielt eine wichtige Rolle in fast allen Bereichen der Informatik. Wichtige
Gebiete, wie z.B. die algorithmische Zahlentheorie und die Kryptographie sind in ihrer
heutigen Form ohne probabilistische Algorithmen gar nicht denkbar.
Probabilistische Algorithmen benutzen im Laufe der Berechnung Zufallszahlen. Das
Resultat der Berechnung eines solchen Algorithmus ist daher nicht eine feste Antwort,
sondern eine Zufallsvariable: die Antwort ist abhängig von den während der Berechnung zufällig getroffenen Entscheidungen. Dabei ist zu beachten, dass dies nichts mit
Annahme über die Verteilung der möglichen Eingaben zu tun hat. Die Zufälligkeit
betrifft nicht die Eingabe, sondern nur die Auswahl der Entscheidungen während der
Berechnung.
Randomisierte bzw. probabilistische Algorithmen sind oft schneller und einfacher als
der deterministischer Algorithmus für das gleiche Problem. Dafür muss man in Kauf
nehmen, dass das probabilistische Verfahren nicht mit hundertprozentiger Wahrscheinlichkeit das richtige Ergebnis liefert. Probabilistische Algorithmen werden oft in zwei
Gruppen unterteilt [Sch97]: Las Vegas Algorithmen und Monte Carlo Algorithmen.
Las Vegas Algorithmen
Diese Algorithmen produzieren keine falschen Ausgaben. Höchstens die Ausgabe Mis”
serfolg“ ist zugelassen.
Beispiel: n-Damen-Problem
gegeben: n x n-Brett, n Damen (Schachspiel)
gesucht: Aufstellung der n Damen, sodass sie sich nicht gegenseitig bedrohen.
Lösung existiert für alle n ≥ 4. Bekannte deterministische Verfahren (Backtracking)
haben exponentielle Laufzeit.
1.for i = 1 to n:
Wenn in Reihe i alle Felder bedroht sind, Abbruch.
Anderenfalls wähle zufällig eines der nicht bedrohten Felder.
2. Wiederhole (1), bis eine Lösung gefunden ist.
Algorithmus terminiert nicht immer. Wenn aber eine Lösung gefunden wird, ist diese
mit Wahrscheinlichkeit 1 richtig.
Monte Carlo Algorithmen
Bei diesen Algorithmen können falsche Ausgaben vorkommen. Bei Entscheidungsproblemen unterscheidet man zwischen:
• beidseitigem Fehler: Jede Antwort kann falsch sein.
• einseitigem Fehler: Ausgabe 1 immer korrekt, Ausgabe 0 nicht immer (oder umgekehrt)
2
Die Wahrscheinlichkeit von falschen Aussagen kann aber mit verschiedenen Techniken
reduziert werden.
Beispiel: Symbolische Determinante
Gegeben ist ein bipartiter Graph G = (U, V, E) mit U = u1 , ..., un , V = v1 , ..., vn und
E ⊆ U ×V . Existiert ein perfektes Matching, d.h. existiert ein M ⊆ E, |M | = n, so dass
für alle (u, v) und (u0 , v 0 ) ∈ M gilt: (u, v) 6= (u0 , v 0 ) ⇒ u 6= u0 und v 6= v 0 ? Wir können
dieses Problem in der Sprache der Matrizen und Determinanten wie folgt beschreiben.
Für ein bipartiter Graph G = (U, V, E) betrachten wir eine n × n Matrix AG = (aij )
wobei i, j-te Element ist eine Variable xij , wenn (ui , vj ) ∈ E, und 0 sonst. Von dieser
Matrix AG betrachten wir jetzt die Determinante
det AG =
X
σ(π)
π
n
Y
ai,π(i)
i=1
Hier ist π eine Permutation von {1, ..., n} und σ(π) = 1, wenn π das Produkt einer
geraden Anzahl von Transpositionen ist, und σ(π) = −1 sonst.
Q
Eine Permutation π defniert ein perfektes Matching genau dann, wenn
ai,π(i) 6= 0.
Da alle diese Produkte paarweise verschieden sind folgt: G erlaubt ein perfektes Matching ⇔ det AG 6≡ 0. Wenn wir also symbolische Determinanten ( Determinanten von
Matrizen die Variablen enthalten können ) effizient berechnen könnten, dann könnten
wir damit auch das Heiratsproblem lösen.
Aus der linearen Algebra ist bekannt, wie man Determinanten von numerischen Matrizen berechnen kann: Man transformiere die gegebene Matrix in eine Dreiecksmatrix mit
derselben Determinante und berechne das Produkt der Diagonalelemente. Dies erfordert O(n3 ) arithmetische Operationen. Außerdem bleiben die Einträge der transformierten Matrizen polynomial beschränkt, da es sich um Subdeterminanten der gegebenen
Matrix handelt. Leider ist die Anwendung dieses Verfahrens auf symbolische Matrizen
problematisch. Die Einträge der transformierten Matrizen sind rationale Funktionen in
den Einträgen der ursprünglichen Matrix, und diese Funktionen haben im Allgemeinen
exponentiell viele Terme. Gauß-Elimination scheint also nicht hilfreich zur Berechnung
symbolischer Determinanten zu sein.
Aber wir brauchen ja gar nicht unbedingt die Determinante von AG zu berechnen.
Es reicht uns zu wissen, ob sie identisch 0 ist oder nicht. Die Idee des probabilistischen Algoritihmus für das Perfect Matching Problem besteht einfach darin, ein Tupel
(i1 , ..., im ) zufällig gewählter Zahlen in die Matrix AG einzusetzen und dann mittels
Gauß-Elimination die Determinante der numerischen Matrix AG (i1 , ..., im ) auszurechnen.
Wenn sich herausstellt, dass det AG (i1 , ..., im ) 6≡ 0, dann ist offensichtlich die symbolische Determinante det AG nicht identisch 0. Die Umkehrung gilt jedoch natürlich nicht:
Es kann passieren, dass det AG , dass wir aber zufällig eine Nullstelle von det AG erwischt haben. Das folgende Lemma1 erlaubt uns aber, durch geeignete Wahl des Bereichs
aus dem wir (i1 , ..., im ) auswählen, die Wahrscheinlichkeit, dass wir Nullstellen eines
nicht identisch verschwindenden Polynoms det AG erwischen, zu kontrollieren.
Lemma 1.1. Sei M ∈ Z mit M > 0 und p(x1 , ..., xm ) ein Polynom mit p 6≡ 0. Jedes
xi habe höchstens den Grad d. Dann gilt:
1
hier ohne Beweis, s. [Pap94] Kap. 11
3
Die Zahl der Tupel (a1 , ..., am ) ∈ {0, 1, ..., M − 1}m mit p(a1 , ..., am ) = 0 ist höchstens
m · d · M m−1 .
Damit können wir nun einen probabilistischen Algorithmus für das Perfect Matching
Problem angeben. Sei G = (V, E) und AG (x1 , ..., xm ) die zugehörige symbolische Matrix. Ferner sei deg(det AG ) ≤ 1, da jede Variable höchstens vom Grad 1 ist. Wir setzen
M = 2m.
1. Wähle zufällig m Zahlen (i1 , ..., im ) zwischen 0 und M − 1.
2. Berechne die Determinante det AG (i1 , ..., im ) mit dem
Gauß-Eliminationverfahren.
3. Wenn det AG (i1 , ..., im ) 6= 0 gilt, dann ist die Ausgabe:
G hat ein Perfect Matching.
Wenn det AG (i1 , ..., im ) = 0 gilt, dann ist die Ausgabe:
G hat kein Perfect Matching.
Der Algorithmus ist vom Typ Monte Carlo mit einseitigem Fehler, da die Antwort G
”
hat ein Perfect Matching“ immer korrekt ist. Die Antwort G hat kein Perfect Mat”
m−1
1
= m·d
ching“ gilt mit einer Wahrscheinlichkeit ≥ 21 , da m·d·M
Mm
M = 2 . Durch Vergrößerung von M gegenüber m kann die Fehlerwahrscheinlichkeit gedrückt werden. Auch
die Zahl der unabhängigen Experimente verkleinert die Fehlerwahrscheinlichkeit. Bei
k unabhängigen Experimenten ergibt sich eine Fehlerwahrscheinlichkeit von höchstens
2−k .
2
Zufallsquellen
Für die Realisierung von guten probabilistischen Algorithmen brauchen wir eine perfekte Zufallsquelle, die unendliche Bitfolgen (x1 , x2 , ...) produziert, die den Anforderungen
der Unabhängigkeit und der Fairness genügen sollen. Die Anforderung der Unabhängigkeit bedeutet, dass die Wahrscheinlichkeit, dass xi = 1 ist darf nicht von Ergebnissen
in der Vergangenheit oder in der Zukunft abhängen. Die Anforderung der Fairness
bedeutet, dass die Wahrscheinlichkeit muss exakt bei 21 liegen.
Die Fairness-Anforderung ist kein echtes Problem. Mit folgenden von von Neumann
stammenden Verfahren, lässt sich jede nicht faire Quelle von unabhängigen Zufallbits
y1 y2 ... in eine perfekte Zufallsquelle umwandeln:
1. Zerlege die Folge y1 y2 ... in Paare
2. Interpretiere 01 als 0 und 10 als 1
3. Ignoriere 00 und 11
Um mit dem obigen Verfahren eine perfekte Zufallsfolge der Länge n zu erhalten,
2
brauchen wir eine Folge der gegebenen Quelle mit erwarteter Länge 1−c
, wobei
2
2
c = p + (1 − p) die so genannte Koinzidenz-Wahrscheinlichkeit darstellt.
Das echte Problem stellt die Unabhängigkeits-Anforderung dar. Durch physikalische
Prozesse scheint Unabhängigkeit sehr schwierig zu realisieren.
Es gibt hier verschiedene Ansätze:
• Durch mathematische Konstruktion lassen sich Pseudo-Zufallsreihen erzeugen.
Allerdings beruht die Unabhängigkeit dieser Reihen gemeinhin auf unbewiesenen
komplexitätstheoretischen Vermutungen.
4
In vielen Computersystemen werden Pseudo-Zufallszahlen mit Kongruenzen erzeugt:
1. Fixiere a, b, c.
2. Gegeben sei ein Startwert x0 ∈ N
3. Für i > 0: xi = axi−1 + b(mod c).
Es ist inzwischen bekannt, dass solche Pseudo-Zufallszahlen relativ wertlos sind.
Es ist leicht aus einer Folge x0 ...xi den nächsten Wert xi+1 (und sogar die ge”
heimen“ Parameter a, b, c) auszurechnen.
• Schwache Zufallsquellen: Sei 0 < δ < 12 und p : {0, 1}∗ −→ [δ, 1 − δ] eine beliebige
(unbekannte) Funktion. Die δ-Zufallsquelle Sp erzeugt Bitfolgen y1 y2 ...yn ..., so
dass für alle n ∈ N und u = u1 ...un ∈ {0, 1}∗ gilt:
n
Y
Pr[y1 ...yn = u] =
(ui p(u1 ...ui−1 ) + (1 − ui )(1 − p(u1 ...ui−1 ))).
i=1
Die Wahrscheinlichkeit Pr[yi = 1] = p(y1 ...yi − 1) ∈ [δ, 1−δ] hängt also in beliebig
komplizierter Weise von vorher erzeugten Bits ab, aber diese Abhängigkeit von
der Vergangenheit bestimmt ein Bit höchstens mit Wahrscheinlichkeit 1 − δ < 1.
Eine perfekte Zufallsquelle wäre eine 21 -Zufallsquelle. Für δ < 21 nennen wir die
δ-Zufallsquellen schwach.
Echte“ Zufälligkeit ist bisher noch nicht erreicht worden, sodass hier also durchaus eine
”
Fehlerquelle bei der Implementierung probabilistischer Algorithmen entstehen kann. Es
ist zweifelhaft, ob perfekte Zufallsquellen, die o.g. Anforderungen genügen, physikalisch
realisierbar sind. Nach dem derzeitigen Stand vermutet man, dass eine Erzeugung von
Zufallszahlen auf physikalischem Wege sehr langsam sein würde im Vergleich zu der
Geschwindigkeit beim Ausführen arithmetischer Operationen.
3
Anwendungsbeispiele
Alle Programmierumgebungen und Programmbibliotheken bieten Routinen an, um Zufallszahlen zu erzeugen. Im letzten Kapitel habe ich zwei Methoden vorgestellt, mit
deren Hilfe solche Zufallszahlen erzeugt werden können. Hinter diesen Programmen
verbergen sich nicht physikalische Prozesse wie elektronisches Rauschen oder radioaktiver Zerfall, sondern deterministische Algorithmen, die so genannten Zufallszahlengeneratoren. Zur Betonung ihrer deterministischen Natur werden sie auch PseudoZufallszahlgeneratoren genannt.
Für die verschiedensten Programmieranwendungen, beispielsweise Verschlüsselungen
oder Glücksspiele, benötigt man echte Zufallszahlen. Bei echten Zufallszahlengeneratoren handelt es sich um mechanische oder elektrische Geräte, die Zufallszahlen aus der
ihnen zugrunde liegenden Verteilung liefern.
Der Vorteil von echten Zufallszahlengeneratoren ist, daß eine Prognose, wie ein Zufallsexperiment ausgehen wird, nicht möglich ist. Soll allerdings ein Zufallsexperiment
mit genau den gleichen Zufallszahlen ein zweites Mal durchgeführt werden so ist dies
nicht möglich. Ein Grund für ein solches Vorgehen ist z.B. die Veränderung von Parametern der zugrunde liegenden Verteilung, um Veränderungen im Simulationsablauf
5
vorher und nachher festzustellen. Ein weiterer Nachteil, der bei echten Zufallszahlengeneratoren auftreten kann, ist der, daß sich die zugrunde gelegte Verteilung aufgrund
von Verschleiß der mechanischen Generatoren schleichend verändert. Echte Zufallszahlengeneratoren müssen daher immer daraufhin überprüft werden, ob die Zufallszahlen,
die sie liefern, immer noch der Verteilung entsprechen, die zugrunde gelegt ist.
In diesem Kapitel möchte ich einige Methoden zur Erzeugung von echten Zufallszahlen
vorstellen und auf technische Details von diesen Methoden eingehen.
Hotbits
Im Internet stellen mehrere Dienste kostenlos echte Zufallszahlen bereit. Hotbits [Bit03]
misst die Zeiten zwischen radioaktiven Zerfallsprozessen, die von einer an einen Computer gekoppelten Geiger-Müller Röhre wahrgenommenen werden.
Die Zufallszahlenfolge wird mit Hilfe eines Formulars bestellt. Wenn die an den
Empfänger abgeliefert wurde, wird sie auf dem Server gelöscht. Damit wird gewährleistet, dass keiner anderer die gleiche Zufallszahlenfolge bekommt. Leider wird die generierte Menge von Zufallsbits durch die Hardware auf bescheidene Tempo von etwa 30
Byte pro Sekunde reduziert. Deshalb werden die generierte Zahlen vor der Auslieferung
zwischengespeichert.
Eine Alternative dazu wird vom RandomX Paket für Java geliefert. Ein mit RandomX
entwickeltes Programm kann aus einer Vielfalt von Pseudozufallszahlgeneratoren oder
echten zufälligen Zahlen von HotBits wählen, die in diesem Fall über das Internet
angefordert werden.
Intel
Die Sicherheitsexperten bei Intel [Cor03] haben einen auf thermischem Rauschen basierenden Zufallszahlengenerator entwickelt, der echte Zufallszahlen erzeugt. Thermisches
Rauschen ist eines der wenigen Quellen natürlicher Ereignisse, die wirklich zufällig und
unberechenbar sind (weitere sind z. B. radioaktiver Zerfall, Fluoreszenz oder Elektronenspin). Es entsteht durch die Erwärmung eines Widerstands auf dem Chip während
des Betriebes. Die Temperatur, die der Widerstand abstrahlt, variiert im Lauf der Zeit,
da sie durch Variationen im Luftstrom beeinflußt wird.
Auf Hardware basierende Zufallszahlengeneratoren gibt es bereits, aber sie sind sperrig
und teuer. Durch Intels Bemühungen ist zum ersten Mal ein auf Hardware basierende
Zufallszahlengenerator entwickelt worden, der in Großserie auf einem Standard-Bauteil
produziert wird. Intel plant, den Zufallszahlengenerator auf seinem 810-Chipsatz auszuliefern, der in den ganz normalen Desktops verwendet werden soll.
FH Ravensburg-Weingarten
(Projektarbeit: Erzeugen echter Zufallszahlen“)
”
Ziel der Projektarbeit [RW03] ist die Bereitstellung echter Zufallszahlen über das Internet. Grundlage ist ein Forschungsprojekt von Prof. Dr. Wolfgang Ertel (FH RavensburgWeingarten) zusammen mit der Firma MAXTOR (San Jose, CA, USA).
Die Erzeugung echter Zufallszahlen basiert auf einem Prozess zur Positionierung der
Lese-/Schreibköpfe von Festplatten aufgrund nicht-deterministischer Einflüsse. Diese
6
Einflüsse können unter anderem Servovibrationen während des Schreibvorgangs und
die aktuelle Distanz des Lese-/Schreibkopfes zum Zylinder sein. Gegenüber anderen
Zufallsquellen wie z.B. der Auswertung des thermischen Rauschen eines Widerstands
ist diese Methode um ein vielfaches schneller.
Um den von der Festplatte erzeugten Bitstream zur Korrektur der Kopfposition auslesen zu können, kommt das Tool MAXATA von Maxtor zum Einsatz. Diese DOSAnwendung ermöglicht es, direkt auf die IDE-Controller des Systems zuzugreifen, um
so makrobasiert Kommandos an das Laufwerk zu schicken.
Am Ende des Kapitels möchte ich noch der Ausschnitt der geeigneten Quellen zur
Erzeugung von echten Zufallszahlen geben: das Rauschen ( jitter“) auf einem geeigne”
ten Oszillator, die Turbulenzen der Luftströmung um eine rotierende Festplatte, das
Auslesen von /dev/audio..., wenn kein Mikrophon angeschlossen ist, das Rauschen von
Videokamera mit abgedeckter Linse, Radioaktiver Zerfall.
4
Randomisierte Komplexitätsklassen
Um Monte Carlo Algorithmen zu studieren, müssen wir keine neue Turingmaschine
entwerfen, die eine Münze werfen kann. Stattdessen können wir eine normale nichtdeterministische Turingmaschine benutzen. Nur die Interpretation von Akzeptieren der
Eingabe wird geändert. Nach Papadimitriou [Pap94] ist solche Maschine folgendermassen definiert:
Definition 4.1. Sei N eine polynomial-zeitbeschränkte NTM mit folgenden Eigenschaften:
• N ist präzise, das heißt bei jeder Eingabe hält die Maschine nach der gleichen
Zahl von Schritten.
• In jedem Schritt hat N genau zwei nichtdeterministische Wahlmöglichkeiten.
So definierte Turingmaschine N nennen wir auch standardisierte NTM“ .
”
Definition 4.2. Sei L eine Sprache. L ∈ RP (für randomized polynomial time) wenn
eine standardisierte p(n)-zeitbeschränkte NTM N existiert, mit
• N , gestartet mit x, hält für wenigstens die Hälfte der 2p(|x|) Berechnungen in
akzeptierenden Zustand, wenn x ∈ L.
• N , gestartet mit x, verwirft alle Eingaben, wenn x 6∈ L.
Nach dieser Definition enthält die Komplexitätsklasse RP die Probleme, für die ein
polynomial-zeitbeschränkter Monte Carlo Algorithmus existiert. Wenn wir nichtdeterministische Wahlen als Münzwürfe interpretieren, wird jedes Blatt des Berechnungs1
baumes mit Wahrscheinlichkeit 2p(|x|)
erreicht.
Satz 4.1. Es gilt : P ⊆ RP ⊆ NP
7
Beweis: P ⊆ RP gilt, weil jede deterministische Berechnung kann als Monte Carlo
Algorithmus angesehen werden, wenn der Ausgang des Münzenwurfs ignoriert wird.
Nach Definition ist jede Monte Carlo Algorithmus nichtdeterministisch, deshalb gilt
RP ⊆ NP.
Das Komplement von RP kann wie folgt definiert werden:
Definition 4.3. Sei L eine Sprache. L ∈ coRP wenn eine standardisierte p(n)zeitbeschränkte NTM N existiert, mit
• N , gestartet mit x, hält für weniger als die Hälfte der 2p(|x|) Berechnungen in
akzeptierenden Zustand, wenn x 6∈ L.
• N , gestartet mit x, akzeptiert alle Eingaben, wenn x ∈ L.
Jetzt können wir uns die Frage stellen, ob RP bezüglich der Komplementbildung abgeschlossen ist? Wir definieren die Klasse ZPP (für polynomial randomized algorithms
with zero probability of error ) wie folgt:
Definition 4.4. ZPP := RP ∩ coRP
Falls eine Sprache L in ZPP liegt, gibt es sowohl einen RP-Algorithmus für L als auch
ein RP-Algorithmus für das Komplement von L. Das heißt, dass es eine probabilistische
Maschine gibt, die entweder die richtige Antwort auf die Frage x ∈ L“ liefert, oder
”
aber mit weiß nicht“ antwortet. Allerdings kann man die Wahrscheinlichkeit, dass
”
weiß nicht“ geantwortet wird, beliebig klein machen.
”
Ist also L in ZPP, so gibt es einen probabilistischen Polynomialzeitalgorithmus, der
sich nie irrt und nur mit sehr geringer Wahrscheinlichkeit aufgibt. Wenn er aufgibt, so
kann man den Algorithmus erneut laufen lassen. Nach Definition aus dem Kapitel 1 ist
das ein Algorithmus vom Las-Vegas Typ.
Definition 4.5. Sei L eine Sprache. L ∈ PP (für probabilistic polynomial time) wenn
es eine standardisierte NTM N existiert und es gilt: gestartet mit x, hält N für mehr
als die Hälfte der Berechnungen in akzeptierenden Zustand, wenn x ∈ L.
Satz 4.2. Es gilt : NP ⊆ PP
Beweis: Sei L ∈ NP berechnet durch eine polynomial-zeitbeschränkte NTM N . Wir
konstruieren eine PP-Maschine N 0 für L: N 0 ist identisch mit N , mit dem einzigen
Unterschied, dass N 0 einen neuen initialen Zustand hat, aus dem nichtdeterministisch
in den initialen Zustand von N oder direkt in akzeptierenden Endzustand übergegangen
werden kann.
Sei jetzt x die Eingabe von N 0 . N macht p(|x|) viele Schritte und hat 2p(|x|) viele Berechnungen. Wenigstens die Hälfte der Berechnungen von N 0 ist akzeptierend. Das heißt
mehr als die Hälfte der Berechnungen von N 0 ist akzeptierend nur wenn mindestens
eine Berechnung von N akzeptierend ist. Dann gilt x ∈ L und L ∈ PP.
Wir haben gesehen, dass die Klasse ZPP den Probabilismus der Klasse RP einschränkt,
bis er praktisch kaum noch in Erscheinung tritt. Jetzt möchten wir die Forderungen an
unsere probabilistischen Maschinen aufweichen.
8
Die Idee ist, dass wir eigentlich nicht darauf bestehen müssen, dass eine RP-Maschine
die Eingaben x 6∈ L immer verwirft. Da wir uns sowieso mit gewisser Fehlerwahrscheinlichkeit abgefunden haben, liegt es nahe, auch im Falle x 6∈ L lediglich zu verlangen,
dass die Eingabe mit sehr kleiner Wahrscheinlichkeit akzeptiert wird. Die Sprachen in
der Klasse BPP haben genau diese Eigenschaft.
Definition 4.6. Sei L eine Sprache. L ∈ BPP (für bounded probability of error)
wenn es ein ε und eine standardisierte polynomial-zeitbeschränkte NTM N existiert,
mit
• x ∈ L ⇒ Pr(N akzeptiert x) ≥ 1/2 + ε
• x 6∈ L ⇒ Pr(N verwirf t x) ≥ 1/2 + ε, d.h. Pr(N akzeptiert x) ≤ 1/2 − ε
Abbildung 1: BPP Komplexitätsklasse
Die Fehlerwahrscheinlichkeit von RP- und BPP-Algorithmen kann man durch ein Majoritätsvotum reduzieren. Diese Technik wird auch die Wahrscheinlichkeitsverstärkung
genannt. Die Wahrscheinlichkeitsverstärkung bedeutet im Wesentlichen das Vergrößern
der Wahrscheinlichkeitslücke. Man läßt einen Algorithmus mehrere Male auf dieselbe
Eingabe durchlaufen, mit jeweils neuen Zufallszahlen. Je mehr Einzelergebnisse, desto größer die Wahrscheinlichkeitsversärkung. Bei RP-Algorithmus kann die Eingabe
akzeptiert werden, wenn die im mindestens einem Durchlauf akzeptiert wurde. Die Ausgabe eines BPP-Algorithmus ist in beiden Fällen (d.h. akzeptieren oder verwerfen) zu
mißtrauen. Trotzdem liefert jedes Einzelergebnis eine gewissen Evidenz, die sich bei
mehreren Versuchen verstärken kann.
In diesem Kapitel wurden vier Komplexitätsklassen RP, ZPP, PP und BPP definiert.
Die Fehlerarten können auf die folgende Weise klassifiziert werden: Es gibt zweiseitigen Fehler (d.h., Wörter aus der Sprache L dürfen auch verworfen werden, Wörter, die
nicht in L sind, dürfen auch akzeptiert werden), einseitigen Fehler (Wörter aus L dürfen
verworfen werden, Wörter, die nicht L sind, dürfen aber nicht akzeptiert werden), sowie den fehlerfreien Fall (der Algorithmus darf die Antwort verweigern, wenn er aber
antwortet, muss das Ergebnis stimmen. Die Fehlerwahrscheinlichkeit bei zweiseitigem
Fehler muss kleiner als 12 und bei einseitigem Fehler kleiner als 1 sein. Man unterscheidet
daher auch die Falle, dass die Fehlerwahrscheinlichkeit beliebig nahe an der trivialen
Schranke sein darf (hier spricht man auch von unbeschranktem Fehler) oder dass die
Fehlerwahrscheinlichkeit einen konstanten Abstand von der trivialen Fehlerschranke
haben muss, in diesem Fall spricht man von beschranktem Fehler. Bei dieser Klassifizierung der Fehlerarten erhält man sechs mögliche Definitionen von probabilistischen
Komplexitatsklassen, die in der Tabelle 4.1 dargestellt sind.
Die Beziehungen zwischen Komlexitätsklassen sind in einer Inklusionsdiagramm ( Abbildung 2 ) zusammengefasst. Man sieht, dass die BPP, RP und co-RP Algorithmen
auch praktisch realisierbar sind.
9
zweiseitiger
Fehler
unbeschränkter Fehler
beschränkter Fehler
⊇
PP
|
einseitiger
Fehler
∪
NP
|
⊇
BPP
fehlerfrei
⊇
∪
RP
NP ∩ co-NP
|
⊇
∪
ZPP
Tabelle 4.1: Fehlerartenklassifizierung
Abbildung 2: Komlexitätsklassenhierarhie
5
Schaltkreise und ihre Größe
Einen Schaltkreis kann man als Beschreibung einer booleschen Funktion f : {0, 1}n →
{0, 1} auffassen. Der besteht aus booleschen Gattern, die fest verdrahtet sind. Die Aufgabe jedes Gatters im Schaltkreis ist, einmal im Laufe der Berechnung eine feste, ihm
zugewiesene boolesche Funktion auszuführen. Das Modell ist deshalb sehr restriktiv,
weil die Kommunikationsstruktur konstant ist und der Nachrichtentransport nur in
eine Richtung verläuft.
Alle Knoten des Schaltkreises haben Eingangsgrad 0, 1 oder 2. Die Knoten mit Eingangsgrad 0 sind die Eingangsknoten, mit Ausgangsgrad 0, die Ausgangsknoten.
Die Gatter des Schaltkreises sind mit Elementen einer vollständigen Basis {∨, ∧, ¬}
gelabelt. Ein Beispielschaltkreis für das XOR Gatter ist in der Abbildung 3 dargestellt.
Aus dem Beispiel sollte klar sein, wie man aus dem Schaltkreis die Funktion erhält, die
der Schaltkreis berechnet.
Definition 5.1. Die Größe eines Schaltkreises ist die Anzahl der Gatter im zugrunde
liegenden Graphen.
10
Abbildung 3: Schaltkreis für das XOR auf 2 Bits
Definition 5.2. Eine Schaltkreisfamilie ist eine Menge C = {Cn }n∈N von Schaltkreisen, wobei Cn genau n Eingangsknoten besitzt. Wir sagen, dass eine Sprache L ⊆ {0, 1}∗
hat polynomial große Schaltkreise wenn das eine Schaltkreisfamilie C = {Cn }n∈N ist
und folgendes gilt:
• Die Grösse von Cn für irgendeinen bestimmten Polynom p ist höchstens p(n).
• Für alle x ∈ {0, 1}∗ ist die Ausgabe von C|x| true, wenn x ∈ L und false, wenn
x 6∈ L.
Welche Arten von Sprachen haben polynomial große Schaltkreise?
Satz 5.1. Alle Probleme in P haben polynomial große Schaltkreise.
Beweis: Sei L ∈ P eine Sprache, die von einer Türingmaschine in Zeit p(n) entschieden
wird. Für jede Eingabe x kann ein Schaltkreis C mit O(p|x|2 ) vielen Gatter konstruiert
werden, so dass C(x) = true wenn x ∈ L, und C(x) = false sonst2 . Da L ⊆ {0, 1}∗,
können wir aus der Eingabe x gültige Belegung von Eingängen des Schaltkreises erzeugen.
Liegen alle Sprachen, die polynomial große Schaltkreise haben, in P? Leider nicht. Auch
für nichtberechenbare Funktionen existieren Schaltkreisfamilien.
Beispiel: Für das unär kodierte diagonalisierte Halteproblem
{1n | die n − te T uringmaschine stoppt bei Eingabe n}
existiert eine Schaltkreisfamilie mit logarithmischer Tiefe. Um Schaltkreise als Modell
für effiziente Berechnungen zu verwenden, müssen die Schaltkreise deshalb selber effizient berechenbar sein. Es wird meistens verlangt, dass die Schaltkreise von einer logarithmisch platzbeschränkten Turingmaschine berechnet werden können. Solche Schaltkreise werden uniform genannt. Alle Sprachen, die uniforme polynomial große Schaltkreise
haben, liegen in P.
2
Die Konstruktion von Schaltkreisen ist in [Pap94] beschrieben.
11
6
De-Randomisierung
Jetzt möchen die Aussage über die Komplexität von probabilistischen Algorithmen
treffen. Folgender Satz hilft uns dabei:
Satz 6.1. Alle Probleme in BPP haben polynomial große Schaltkreise.
Beweis: Sei L ∈ BPP die Sprache, die von einer nichtdeterministischen Maschine N
nach Mehrheit entschieden wird. Wir behaupten, dass L eine polynomiale Schaltkreisfamilie Cn hat.
Unser Schaltkreis basiert auf Serie von Bitfolgen An = (a1 , ..., am ) mit ai ∈ {0, 1}p(n)
für i = 1, ..., m, wobei p(n) die Berechnungslänge von N mit Eingabe von Länge n ist
und m = 12(n + 1). Jede Bitfolge ai aus An ist die mögliche Entscheidungsfolge für N
und damit beschreibt sie vollständig die Berechnung von N mit der Eingabe der Länge
n. Das bedeutet, Cn mit Eingabe x simuliert N für jede Bitfolge aus An und nimmt
nach Mehrheit der Ergebnis aus m Durchläufen.
Wir wissen wie man polynomiale Berechnungen mit Schaltkreisen simuliert, deshalb
können wir für An die Schaltkreisfamilie Cn so konstruieren, dass die polynomial viele
Gatter hat.
Jetzt müssen wir noch zeigen, dass es so ein An gibt, so dass Cn richtig funktioniert.
Das heißt, wir müssen folgendes zeigen:
Behauptung: Für alle n > 0 gibt es ein Satz An von m = 12(n + 1) Bitfolgen, so dass
für alle Eingaben x mit |x| = n weniger als die Hälfte der Entscheidungen falsch sind.
Beweis: Sehen wir uns die Serie An von m Bitfolgen der Länge p(n), die zufällig
aus m unabhängigen Stichproben aus {0, 1}p(n) ausgewählt wurden. Wie groß ist die
Wahrscheinlichkeit dass für jede x aus {0, 1}n mehr als die Hälfte der Entscheidungen
richtig sind? Wir sollen zeigen, dass diese Wahrscheinlichkeit wenigstens 12 ist.
Für jede x aus {0, 1}n sind höchstens 41 der Berechnungen falsch. Da die Folgen aus
An zufällig und unabhängig ausgewählt wurden, ist die erwartete Anzahl von falschen
Einsen 14 m. Nach Chernoff Ungleichung ist die Wahrscheinlichkeit, dass die Anzahl der
m
1
.
falschen Bitfolgen 12 m oder größer ist, höchstens e− 12 < 2n+1
n
Jetzt gilt letzte Ungleichung für alle x aus {0, 1} . Also, die Wahrscheinlichkeit, dass in
An keine akzeptierende Folge für x gibt, ist höchstens die Summe aller Wahrscheinlich1
keiten unter allen x; und diese Summe ist höchstens 2n 2n+1
= 12 . Wir können daraus
schließen, dass mit Wahrscheinlichkeit von mindestens 12 hat unsere zufällige Auswahl
von Folgen die gewünschte Eigenschaft.
Andererseits betrachten wir die Menge von allen 2p(n)12(n+1) Auswahlmöglichkeiten von
12(n+1) Bitfolgen (Abbildung 4). Die Untermenge Sx enthält alle Folgen, bei denen die
richtige Antwort für Eingabe x nach Mehrheit abgelehnt wurde. Die Grosse von solcher
p(n)12(n+1)
Untermenge ist höchstens 2 2(n+1) . Die Vereinigung von solchen Mengen kann sicher
p(n)12(n+1)
nicht größer als 2n 2 2(n+1) Elementen enthalten. Wenn wir die von 2p(n)12(n+1) großen
Menge aller Elemente subtrahieren, sehen wir dass mindestens die Hälfte aller Folgen
für Eingabe x akzeptierend sind.
Bemerkung: Wir wissen nur, dass so eine tolle Folge An existieren muss, nicht aber wie
wir die finden können.
12
Abbildung 4: Bitfolgen
Der Beweis des Theorems ist jetzt vollständig: Wenn wir so eine Folge An haben, dann
können wir ein Schaltkreis Cn mit O(n2 p2 (n)) Gatter bauen, der simuliert N mit jeder
von diesen Folgen und nimmt dann Ergebnis nach Mehrheit. Aus der Eigenschaft von
An folgt, dass Cn nur dann true ausgibt, wenn Eingabe aus L ∩ {0, 1}n ist. Folglich
hat L polynomial große Schaltkreise.
Literatur
[Bit03] Hot Bits. Zufallszahlen. http://www.fourmilab.ch/hotbits/, 2003. 6
[Cor03] Intel Corporation. RNG. http://www.intel.com/design/security/rng/rng.htm,
2003. 6
[Pap94] Christos M. Papadimitriou. Computational complexity. Addison-Wesley Publishing Company, Inc., 1994. 3, 7, 11
[RW03] FH Ravensburg-Weingarten. Projektarbeit: Erzeugen echter Zufallszahlen“.
”
http://erde.fbe.fh-weingarten.de/rrng//., 2003. 6
[Sch97] Uwe Schöning. Algorithmen - kurz gefasst. Spektrum, Akad. Verl., 1997. 2
13
Zugehörige Unterlagen
Herunterladen