Randomisierter Algorithmus

Bei randomisierten Algorithmen werden Zufallszahlen (in der Implementierung meist Pseudozufallszahlen) verwendet, um Algorithmen mit akzeptabler Laufzeit für komplizierte Probleme zu bekommen. Bei den meisten randomisierten Algorithmen "bezahlt" man allerdings für die gute Laufzeit damit, dass der Algorithmus mit einer beschränkten Wahrscheinlichkeit Fehler machen darf. Diese werden auch stochastische oder probabilistische Algorithmen genannt, allerdings sind nicht alle randomisierten Algorithmen probabilistisch (siehe unten).

Ob ein Fehler auftritt oder nicht, hängt sowohl von der Eingabe (der Instanz des Problems) als auch von der Zufallszahl ab. Dadurch kann man durch wiederholtes Durchführen des Algorithmus (mit verschiedenen Zufallszahlen) das korrekte Ergebnis als das "mehrheitliche Ergebnis" ermitteln. Die genauen Wahrscheinlichkeiten dabei hängen von Details des Algorithmus ab, die allgemeine Idee ist jedoch Folgende:

Also muss die Anzahl der Durchläufe des Algorithmus so gewählt werden, dass der entstehende Fehler vernachlässigbar ist. Deshalb werden randomisierte Algorithmen in Fällen angewendet, in denen die Laufzeit nicht zu hoch sein soll und eine gewisse Fehlerwahrscheinlichkeit tolerierbar ist.

Es gibt verschiedene Varianten von erlaubten Fehlern:

Monte-Carlo-Algorithmen gehören zu den Algorithmen mit einseitigem Fehler.

Eine Klasse von randomisierten Algorithmen, die nicht zu den probabilistischen Algorithmen gehören, sind die Las-Vegas-Algorithmen, die immer die korrekte Antwort liefern. Hier bestimmt die Zufallszahl die Laufzeit, es kann also vorkommen, dass ein Las-Vegas-Algorithmus sehr lang braucht, um das Ergebnis zu ermitteln.

Weblinks

Übersicht über randomisierten Algorithmen

See also: Randomisierter Algorithmus, Algorithmus, Asymptotische Laufzeit, Englische Sprache, Implementierung, Las-Vegas-Algorithmus, Miller-Rabin-Test, Monte-Carlo-Algorithmus, Primzahl, Pseudozufallszahlen