Randomisierter Algorithmus
Ein randomisierter Algorithmus (auch stochastischer oder probabilistischer Algorithmus) verwendet â im Gegensatz zu einem deterministischen Algorithmus â Zufallsbits, um seinen Ablauf zu steuern. Es wird nicht verlangt, dass ein randomisierter Algorithmus immer effizient eine richtige Lösung findet. Randomisierte Algorithmen sind in vielen FĂ€llen einfacher zu verstehen, einfacher zu implementieren und effizienter als deterministische Algorithmen fĂŒr dasselbe Problem. Ein Beispiel, das dies zeigt, ist der AKS-Primzahltest, der zwar deterministisch ist, aber viel ineffizienter und viel schwieriger zu implementieren als beispielsweise der Primzahltest von Solovay und Strassen.
Inhaltsverzeichnis |
[Bearbeiten] Algorithmustypen
[Bearbeiten] Las-Vegas
Randomisierte Algorithmen, die nie ein falsches Ergebnis liefern, bezeichnet man auch als Las-Vegas-Algorithmen. Es gibt zwei Varianten von Las-Vegas-Algorithmen:
- Algorithmen, die immer das richtige Ergebnis liefern, deren Rechenzeit aber (bei ungĂŒnstiger Wahl der Zufallsbits) sehr groĂ werden kann. In vielen FĂ€llen ist der Algorithmus nur im Erwartungsfall schnell, nicht aber im schlimmsten Fall. Ein Beispiel ist die Variante von Quicksort, bei der das Pivotelement zufĂ€llig gewĂ€hlt wird. Die erwartete Rechenzeit betrĂ€gt
, bei ungĂŒnstiger Wahl der Zufallsbits werden dagegen
Schritte benötigt. - Algorithmen, die versagen dĂŒrfen (= aufgeben dĂŒrfen), aber niemals ein falsches Ergebnis liefern dĂŒrfen. Die QualitĂ€t dieser Art von Algorithmen kann man durch eine obere Schranke fĂŒr die Versagenswahrscheinlichkeit beschreiben.
[Bearbeiten] Monte-Carlo
Randomisierte Algorithmen, die auch ein falsches Ergebnis liefern dĂŒrfen, bezeichnet man auch als Monte-Carlo-Algorithmen. Die QualitĂ€t von Monte-Carlo-Algorithmen kann man durch eine obere Schranke fĂŒr die Fehlerwahrscheinlichkeit beschreiben.
Von randomisierten Algorithmen spricht man nur, wenn man den Erwartungswert der Rechenzeit und/oder die Fehler- bzw. Versagenswahrscheinlichkeit abschÀtzen kann. Algorithmen, bei denen nur intuitiv plausibel ist, dass sie gute Ergebnisse liefern, oder Algorithmen, bei denen man dies durch Experimente auf typischen Eingaben bewiesen hat, bezeichnet man dagegen als heuristische Algorithmen.
Bei der Analyse von erwarteter Rechenzeit und/oder Fehlerwahrscheinlichkeit geht man in der Regel davon aus, dass die Zufallsbits unabhĂ€ngig erzeugt werden. In Implementierungen verwendet man anstelle von richtigen Zufallsbits ĂŒblicherweise Pseudozufallszahlen, die natĂŒrlich nicht mehr unabhĂ€ngig sind. Dadurch ist es möglich, dass sich Implementierungen schlechter verhalten, als die Analyse erwarten lĂ€sst.
[Bearbeiten] Fehlerarten von Monte-Carlo-Algorithmen fĂŒr Entscheidungsprobleme
Bei Entscheidungsproblemen (Problemen, die durch Ja-Nein-Fragen beschrieben werden können) unterscheidet man ein- und zweiseitigen Fehler:
- Bei zweiseitigem Fehler dĂŒrfen Eingaben, bei denen die richtige Antwort Ja lautet, auch verworfen werden, und Eingaben, bei denen die richtige Antwort Nein lautet auch akzeptiert werden. Die Fehlerwahrscheinlichkeit muss in diesem Fall sinnvollerweise kleiner als 1/2 sein, da man mit einem MĂŒnzwurf unabhĂ€ngig von der Eingabe die Fehlerwahrscheinlichkeit
erreichen kann (dieser Ansatz ist offensichtlich keine sinnvolle Lösung fĂŒr das betrachtete Problem). - Bei einseitigem Fehler dĂŒrfen Eingaben, bei denen die richtige Antwort Ja lautet, auch verworfen werden, dagegen mĂŒssen Eingaben, bei denen die richtige Antwort Nein lautet verworfen werden. Hierbei sind Fehlerwahrscheinlichkeiten kleiner als 1 sinnvoll.
[Bearbeiten] ZusammenhÀnge zwischen Las-Vegas- und Monte-Carlo-Algorithmen
Las-Vegas-Algorithmen lassen sich stets in Monte-Carlo-Algorithmen umformen: Die Ausgabe ? kann einfach als falsche Ausgabe interpretiert werden. Wenn eine obere Schranke
nur fĂŒr den Erwartungswert der Rechenzeit des Las-Vegas-Algorithmus bekannt ist, kann man den Algorithmus nach
Schritten abbrechen und ? ausgeben. Die Wahrscheinlichkeit, dass dies passiert, ist nach der Markow-Ungleichung durch 1/c beschrÀnkt.
Da Monte-Carlo-Algorithmen falsche Lösungen ausgeben können und diese falschen Lösungen nicht extra gekennzeichnet werden mĂŒssen, ist es schwieriger, Monte-Carlo-Algorithmen in Las-Vegas-Algorithmen umzuformen. Dies ist möglich, wenn man zusĂ€tzlich einen Verifizierer fĂŒr die Lösung hat, also einen Algorithmus, der zu einem Lösungsvorschlag testen kann, ob der Vorschlag korrekt ist. Man erhĂ€lt einen Las-Vegas-Algorithmus, indem man den gegebenen Monte-Carlo-Algorithmus ausfĂŒhrt, anschlieĂend mit dem Verifizierer ĂŒberprĂŒft, ob die berechnete Lösung korrekt ist, und dieses Verfahren so lange iteriert, bis eine korrekte Lösung berechnet wurde. Die worst-case-Rechenzeit dieses Ansatzes ist zwar nicht nach oben beschrĂ€nkt, allerdings kann man den Erwartungswert der Anzahl der Iterationen nach oben abschĂ€tzen. Wenn man keinen Verifizierer zur VerfĂŒgung hat, ist im Allgemeinen nicht klar, wie man aus einem Monte-Carlo-Algorithmus einen Las-Vegas-Algorithmus konstruieren kann.
[Bearbeiten] KomplexitÀtsklassen
[Bearbeiten] Die Klasse PP

Typ: & Monte Carlo Algorithmus
Die Klasse PP (probabilistic polynomial) sind alle Sprachen L, so dass es eine probabilistische Turingmaschine M gibt, die polynomiell zeitbeschrĂ€nkt ist und fĂŒr alle w diese Formel gilt.
In dieser Klasse existiert ein beidseitiger Fehler. Die Wahrscheinlichkeit, dass das erzielte Ergebnis korrekt ist, liegt ĂŒber 1/2.
[Bearbeiten] Die Klasse BPP

Typ: & Monte Carlo Algorithmus
Die Klasse BPP (bounded error probabilistic polynomial) sind alle Sprachen L, so dass es eine probabilistische Turingmaschine $M$ gibt, die polynomiell zeitbeschrĂ€nkt ist und fĂŒr alle w bei
diese Formel gilt.
In dieser Klasse existiert ein beidseitiger Fehler. Die Wahrscheinlichkeit, dass das erzielte Ergebnis korrekt ist, liegt in einem bekannten Bereich.
[Bearbeiten] Die Klasse RP
w â L: 
w â L: 
Typ: & Monte Carlo Algorithmus
Die Klasse RP (random polinomial) sind alle Sprachen L, so dass es eine probabilistische Turingmaschine M gibt, die polynomiell zeitbeschrÀnkt ist und diese Formel gilt.
In dieser Klasse liegt ein einseitiger Fehler vor.
[Bearbeiten] Die Klasse ZPP
w â L:

w â L:

Typ: & Las Vegas Algorithmus
Die Klasse ZPP (zero error probablistic polynomial) sind alle Sprachen L, so dass es eine probabilistische Turingmaschine M gibt, die polynomiell zeitbeschrÀnkt ist und diese Formel gilt.
[Bearbeiten] Verringerung der Fehler-/Versagenswahrscheinlichkeit (Probability Amplification)
Die Fehler- bzw. Versagenswahrscheinlichkeit von randomisierten Algorithmen kann durch unabhÀngiges Wiederholen verringert werden. Wenn man beispielsweise einen fehlerfreien Algorithmus mit einer Versagenswahrscheinlichkeit von 1/2 insgesamt
-mal laufen lÀsst, betrÀgt die Wahrscheinlichkeit, dass er in allen
Iterationen versagt nur noch
. Wenn er in mindestens einer Iteration ein Ergebnis liefert, ist dies auch richtig, so dass es auch ausgegeben werden kann. Auf diese Weise kann man zeigen, dass jede konstante Versagenswahrscheinlichkeit aus dem Intervall
(bis auf polynomielle Faktoren in der Rechenzeit) gleich gut ist. (Man ĂŒberlegt sich leicht, dass die Versagenswahrscheinlichkeit
fĂŒr zum Beispiel
ein wirklich winzig kleine Versagenswahrscheinlichkeit ist; man mĂŒsste den Algorithmus im Durchschnitt
-mal laufen lassen, bis er das erste Mal versagt.) Derselbe Ansatz funktioniert fĂŒr Algorithmen mit einseitigem Fehler. Bei Algorithmen mit zweiseitigem Fehler benötigt man dagegen eine Mehrheitsentscheidung, so dass die Analyse etwas schwieriger wird. Es ergibt sich aber wieder, dass jede konstante Fehlerwahrscheinlichkeit aus dem Intervall
(bis auf polynomielle Faktoren in der Rechenzeit) gleich gut ist.
[Bearbeiten] Derandomisierung
Unter Derandomisierung versteht man die Verringerung der Anzahl der Zufallsbits, die ein randomisierter Algorithmus benutzt. Dies ist aus dem folgenden Grund nĂŒtzlich: Man kann jeden randomisierten Algorithmus deterministisch machen, indem man ihn fĂŒr alle Belegungen der Zufallsbits simuliert. Allerdings bedeutet dies, dass bei der Verwendung von
Zufallsbits die Rechenzeit um einen Faktor
steigt, was in den meisten FĂ€llen zu exponentieller Rechenzeit fĂŒhrt. Falls aber der Algorithmus bei EingabelĂ€nge
nur
Zufallsbits benötigt, fĂŒhrt dies nur zu einer polynomiellen VergröĂerung der Rechenzeit.
Ein Ansatz zur Derandomisierung besteht darin, genauer zu analysieren, wie der Algorithmus die Zufallsbits benutzt. Bei manchen randomisierten Algorithmen genĂŒgt es, dass die verwendeten Zufallsbits paarweise unabhĂ€ngig sind. Man kann nun beispielsweise
paarweise unabhÀngige Zufallsvariablen aus
vollstÀndig unabhÀngigen Zufallsvariablen erzeugen. In einem zweiten Schritt kann man den Algorithmus mit dem zuvor beschriebenen Ansatz deterministisch machen.
[Bearbeiten] Literatur
- J. HromkoviÄ: Randomisierte Algorithmen: Methoden zum Entwurf von zufallsgesteuerten Systemen fĂŒr Einsteiger. Vieweg+Teubner, 2004, ISBN 3-519-00470-4.
- R. Motwani, P. Raghavan: Randomized Algorithms. Cambridge University Press, 1995, ISBN ISBN 0-521-47465-5.
- I. Wegener: KomplexitÀtstheorie - Grenzen der Effizienz von Algorithmen. Springer, 2003, ISBN ISBN 3-540-00161-1.










, bei ungĂŒnstiger Wahl der Zufallsbits werden dagegen
Schritte benötigt.
erreichen kann (dieser Ansatz ist offensichtlich keine sinnvolle Lösung fĂŒr das betrachtete Problem).