Adleman Beweis , daß in enthalten ist , P / p o l y zeigt , dass wenn es ein randomisierten Algorithmus für ein Problem , das ausgeführt wird in der Zeit t ( n ) an den Eingängen der Größe n , dann gibt es auch einen deterministischen Algorithmus für das Problem ist , das läuft in der Zeit Θ ( t ( n ) ⋅ n ) auf Eingaben der Größe n [der Algorithmus läuft den randomisierten Algorithmus auf Θ ( n )unabhängige Zufallsketten. Es muss eine Zufälligkeit für den wiederholten Algorithmus geben, die für alle möglichen Eingaben gilt. Der deterministische Algorithmus ist nicht einheitlich - er kann sich für verschiedene Eingabegrößen unterschiedlich verhalten. So zeigt Adlemans Argument, dass - wenn man sich nicht um Homogenität kümmert - die Randomisierung Algorithmen nur um einen Faktor beschleunigen kann, der in der Eingabegröße linear ist.
Was sind einige konkrete Beispiele, bei denen die Randomisierung die Berechnung beschleunigt (nach unserem besten Wissen)?
Ein Beispiel ist das Testen der Identität von Polynomen. Hier ist die Eingabe eine arithmetische Schaltung der Größe n, die ein m-variables Polynom über ein Feld berechnet, und die Aufgabe besteht darin, herauszufinden, ob das Polynom identisch Null ist. Ein randomisierter Algorithmus kann das Polynom an einem zufälligen Punkt auswerten, während der beste deterministische Algorithmus, den wir kennen (und möglicherweise der beste, der existiert), das Polynom an vielen Punkten auswertet.
Ein weiteres Beispiel ist der Minimum Spanning Tree, bei dem der beste randomisierte Algorithmus von Karger-Klein-Tarjan die lineare Zeit ist (und die Fehlerwahrscheinlichkeit exponentiell klein ist!), Während der beste deterministische Algorithmus von Chazelle in der Zeit abläuft ) ) ( α ist die inverse Ackermann-Funktion, daher ist die Zufallsbeschleunigung sehr gering). Interessanterweise wurde von Pettie und Ramachandran bewiesen, dass es auch einen einheitlichen deterministischen linearen Zeitalgorithmus gibt, wenn es einen nicht einheitlichen deterministischen linearen Zeitalgorithmus für den minimalen Spannbaum gibt.
Was sind einige andere Beispiele? Welche Beispiele kennen Sie, wenn die Randomisierungsgeschwindigkeit hoch ist, aber möglicherweise nur, weil wir noch keine ausreichend effizienten deterministischen Algorithmen gefunden haben?
quelle
Antworten:
quelle
Das erste Beispiel für eine solche randomisierte Strategie war von Dyer, Frieze und Kannan, und das Härteergebnis für deterministische Algorithmen stammt von Bárány und Füredi. Alistair Sinclair hat dazu nette Vorlesungsunterlagen .
Ich bin mir nicht sicher, ob ich den Teil der Frage "und es sollte nicht" vollständig verstehe, daher bin ich mir nicht sicher, ob dies der Rechnung entspricht.
quelle
Ich weiß nicht, ob dies Ihre Frage beantwortet (oder zumindest einen Teil davon). Beispiele aus der Praxis, bei denen die Randomisierung zu einer Beschleunigung führen kann, sind Optimierungsprobleme und die Beziehung zum No-Free-Lunch- Theorem ( NFL ) .
Es gibt eine Arbeit "Vielleicht kein kostenloses Mittagessen, aber zumindest eine kostenlose Vorspeise", in der gezeigt wird, dass die Verwendung von Zufalls- (Optimierungs-) Algorithmen eine bessere Leistung erzielen kann.
Verweise:
Zusammenfassung zu No-Free-Lunches (und Free-Lunches) von David H. Wolpert, Was kostet das Abendessen? ( Beachten Sie, dass NFL- Sätze aufgrund ihrer Beweisart niemals einen tatsächlichen " Preis " angeben. )
Spezifisch für die verallgemeinerte Optimierung (GO):
Schließlich eine einfache (und eine nicht so einfache) Bemerkung, warum Randomisierung (in der einen oder anderen Form) gegenüber streng deterministischen Algorithmen eine überlegene Leistung liefern kann.
quelle
Das beste Beispiel ist der Bereich, der derzeit als die besten Kandidaten für OWFs betrachtet wird, in dem es den Anschein hat, dass jeder beliebte OWF, der überraschenderweise zubereitet wird, einen randomisierten subexponentiellen Algorithmus hat, während es keinen deterministischen subexponentiellen Algorithmus gibt (zum Beispiel Ganzzahlfaktorisierung). In der Tat gibt es in vielen Fällen wahrscheinlich einen effizienten Algorithmus, dem einige Ratschläge gegeben wurden (Kryptoanalyse).
quelle
Wenn Sie einen Algorithmus mit Randomisierung haben, können Sie ihn jederzeit durch einen deterministischen Algorithmus mit Pseudozufallszahlen ersetzen: Nehmen Sie die Beschreibung des Problems, berechnen Sie einen Hash-Code und verwenden Sie diesen Hash-Code als Ausgangswert für einen guten Pseudozufallszahlengenerator . In der Praxis ist dies wahrscheinlich, wenn jemand einen Algorithmus mithilfe der Randomisierung implementiert.
Wenn wir den Hash-Code weglassen, besteht der Unterschied zwischen diesem Algorithmus und einem Algorithmus mit echter Randomisierung darin, dass ich die Folge der generierten Zufallszahlen vorhersagen kann und ein Problem erzeugen kann, bei dem die auf mein Problem angewendete vorhergesagte Zufallszahl immer auftritt die schlimmste Entscheidung treffen. Zum Beispiel könnte ich für Quicksort mit einem Pseudozufalls-Pivot ein Eingabearray erstellen, in dem der Pseudozufalls-Pivot immer den größtmöglichen Wert im Array findet. Mit wahrer Zufälligkeit ist das nicht möglich.
Mit dem Hash-Code wäre es für mich sehr schwierig , ein Problem zu konstruieren, bei dem die Pseudozufallszahlen die schlechtesten Ergebnisse liefern. Ich kann die Zufallszahlen immer noch vorhersagen, aber wenn ich das Problem ändere, ändert sich die Reihenfolge der Pseudozufallszahlen vollständig. Dennoch wäre es für Sie nahezu unmöglich zu beweisen, dass ich ein solches Problem nicht konstruieren kann.
quelle