Wahl der Anzahl der Iterationen
Wir haben festgestellt, dass der Zustandsvektor des Registers in Grovers Algorithmus im zweidimensionalen Unterraum verbleibt, der von und aufgespannt wird, sobald der Initialisierungsschritt durchgeführt wurde.
Das Ziel ist es, ein Element zu finden, und dieses Ziel wird erreicht, wenn wir den Zustand erhalten – denn wenn wir diesen Zustand messen, erhalten wir garantiert ein Messergebnis . Da der Zustand von nach Iterationen in Schritt 2
ist, sollten wir so wählen, dass
dem Betrag nach möglichst nahe an ist, um die Wahrscheinlichkeit zu maximieren, bei der Messung zu erhalten. Für jeden Winkel oszilliert der Wert mit zunehmendem , ist aber nicht notwendigerweise periodisch – es gibt keine Garantie, dass wir denselben Wert je zweimal erhalten.
Natürlich möchten wir neben der großen Wahrscheinlichkeit, ein Element aus der Messung zu erhalten, auch so klein wie möglich wählen, da Anwendungen der Operation Abfragen an die Funktion erfordern. Da wir darauf abzielen, dem Betrag nach nahe an zu bringen, ist eine natürliche Vorgehensweise, so zu wählen, dass
gilt. Auflösen nach ergibt
Da eine ganze Zahl sein muss, können wir diesen Wert nicht immer exakt treffen – aber wir können die nächste ganze Zahl zu diesem Wert nehmen, nämlich
Dies ist die empfohlene Anzahl von Iterationen für Grovers Algorithmus. Im Verlauf der Analyse werden wir sehen, dass die Nähe dieser ganzen Zahl zum Zielwert die Leistung des Algorithmus beeinflusst.
(Nebenbei bemerkt: Wenn der Zielwert genau in der Mitte zwischen zwei ganzen Zahlen liegt, ergibt dieser Ausdruck für das Aufrunden. Alternativ könnte man abrunden, was sinnvoll ist, da es eine Abfrage weniger bedeutet – aber das ist zweitrangig und für die Zwecke der Lektion unwichtig.)
Wenn wir uns daran erinnern, dass der Wert des Winkels durch die Formel
gegeben ist, sehen wir, dass die empfohlene Anzahl von Iterationen von der Anzahl der Zeichenketten in abhängt. Das stellt eine Herausforderung dar, wenn wir nicht wissen, wie viele Lösungen wir haben, wie wir später besprechen werden.
Eindeutige Suche
Konzentrieren wir uns zunächst auf die Situation, in der es genau eine Zeichenkette mit gibt. Anders gesagt betrachten wir eine Instanz des Eindeutigen-Such-Problems. In diesem Fall gilt
was bequem als
approximiert werden kann, wenn groß wird. Wenn wir in den Ausdruck
einsetzen, erhalten wir
Da nicht nur die Anzahl der Ausführungen der Operation ist, sondern auch die Anzahl der vom Algorithmus benötigten Abfragen an die Funktion , sind wir auf dem Weg zu einem Algorithmus, der Abfragen benötigt.
Untersuchen wir nun, wie gut die empfohlene Wahl von funktioniert. Die Wahrscheinlichkeit, dass die abschließende Messung die eindeutige Lösung ergibt, kann explizit ausgedrückt werden als
Das erste Argument, , bezieht sich auf die Anzahl der Elemente, über die wir suchen, und das zweite Argument, hier , auf die Anzahl der Lösungen. Etwas später werden wir dieselbe Notation allgemeiner verwenden, wenn es mehrere Lösungen gibt.
Hier ist eine Tabelle der Erfolgswahrscheinlichkeiten für zunehmende Werte von .
Beachte, dass diese Wahrscheinlichkeiten nicht streng monoton steigen. Insbesondere gibt es eine interessante Anomalie bei , wo wir mit Sicherheit eine Lösung erhalten. Es lässt sich jedoch allgemein beweisen, dass
für alle gilt, sodass die Erfolgswahrscheinlichkeit im Grenzwert für großes gegen strebt, wie die obigen Werte zu bestätigen scheinen. Das ist gut!
Aber beachte, dass selbst eine schwache Schranke wie den Nutzen von Grovers Algorithmus belegt. Für jedes Messergebnis , das wir aus dem Ausführen des Verfahrens erhalten, können wir immer mit einer einzigen Abfrage an prüfen, ob gilt. Und wenn wir mit einer Wahrscheinlichkeit von höchstens die eindeutige Zeichenkette mit beim einmaligen Ausführen des Verfahrens nicht erhalten, dann werden wir nach unabhängigen Ausführungen diese eindeutige Zeichenkette mit einer Wahrscheinlichkeit von höchstens nicht erhalten haben. Das heißt, mit Abfragen an erhalten wir die eindeutige Lösung mit einer Wahrscheinlichkeit von mindestens . Die bessere Schranke zeigt, dass die Wahrscheinlichkeit, mit dieser Methode zu finden, tatsächlich mindestens beträgt.
Mehrere Lösungen
Mit der Anzahl der Elemente in variiert auch der Winkel , was die Erfolgswahrscheinlichkeit des Algorithmus erheblich beeinflussen kann. Der Kürze halber schreiben wir für die Anzahl der Lösungen, und wie zuvor nehmen wir an, dass gilt.
Als motivierendes Beispiel stellen wir uns vor, dass wir Lösungen statt einer einzigen haben, wie wir oben betrachtet haben. Das bedeutet, dass
gilt, was ungefähr das Doppelte des Winkels im Fall ist, wenn groß ist. Angenommen, wir wüssten es nicht besser und würden denselben Wert von wie im Fall mit eindeutiger Lösung wählen:
Die Auswirkung wäre katastrophal, wie die folgende Tabelle der Wahrscheinlichkeiten zeigt.
Diesmal geht die Erfolgswahrscheinlichkeit gegen , wenn gegen Unendlich geht. Das liegt daran, dass wir uns doppelt so schnell drehen wie bei einer eindeutigen Lösung, sodass wir am Ziel vorbeizischen und nahe bei landen.
Wenn wir stattdessen die empfohlene Wahl von verwenden, nämlich
für
wird die Leistung besser. Genauer gesagt führt diese Wahl von mit hoher Wahrscheinlichkeit zum Erfolg.
Verallgemeinernd lässt sich beweisen, dass
gilt, wobei wir die oben vorgeschlagene Notation verwenden: bezeichnet die Wahrscheinlichkeit, dass Grovers Algorithmus, der für Iterationen ausgeführt wird, eine Lösung aufdeckt, wenn es insgesamt Lösungen unter Möglichkeiten gibt.
Diese untere Schranke von für die Erfolgswahrscheinlichkeit ist etwas eigenartig, da mehr Lösungen eine schlechtere untere Schranke implizieren – aber unter der Annahme, dass deutlich kleiner als ist, schließen wir dennoch, dass die Erfolgswahrscheinlichkeit vernünftig hoch ist. Wie zuvor impliziert die bloße Tatsache, dass vernünftig groß ist, den Nutzen des Algorithmus.
Es gilt auch, dass
Diese untere Schranke beschreibt die Wahrscheinlichkeit, dass eine gleichmäßig zufällig ausgewählte Zeichenkette eine Lösung ist – also arbeitet Grovers Algorithmus immer mindestens so gut wie das zufällige Raten. (Tatsächlich ist Grovers Algorithmus bei genau zufälliges Raten.)
Betrachten wir nun die Anzahl der Iterationen (und damit die Anzahl der Abfragen)
für
Für jedes gilt , und daher
Das impliziert, dass
Das entspricht einer Einsparung bei der Anzahl der Abfragen, wenn wächst. Insbesondere ist die benötigte Anzahl von Abfragen
Unbekannte Anzahl von Lösungen
Wenn die Anzahl der Lösungen unbekannt ist, ist ein anderer Ansatz erforderlich, da wir in dieser Situation keine Kenntnis von haben, um unsere Wahl von zu informieren. Es gibt tatsächlich mehrere Ansätze.
Ein einfacher Ansatz ist, gleichmäßig zufällig aus
zu wählen. Eine solche Wahl von findet immer eine Lösung (sofern eine existiert) mit einer Wahrscheinlichkeit von mehr als 40%, obwohl das nicht offensichtlich ist und eine Analyse erfordert, die hier nicht enthalten ist. Es ergibt jedoch Sinn, besonders wenn wir das geometrische Bild betrachten: Den Zustand von eine zufällige Anzahl von Malen zu drehen ist nicht unähnlich der Wahl eines zufälligen Einheitsvektors im von und aufgespannten Raum, bei dem es wahrscheinlich ist, dass der Koeffizient von vernünftig groß ist. Durch Wiederholen dieses Verfahrens und Überprüfen des Ergebnisses auf die gleiche Weise wie zuvor beschrieben kann die Wahrscheinlichkeit, eine Lösung zu finden, sehr nahe an gebracht werden.
Es gibt eine verfeinerte Methode, die eine Lösung findet, wenn eine existiert, mit Abfragen, auch wenn die Anzahl der Lösungen nicht bekannt ist, und die Abfragen benötigt, um festzustellen, dass es keine Lösungen gibt, wenn gilt.
Die grundlegende Idee besteht darin, iterativ gleichmäßig zufällig aus der Menge zu wählen, für zunehmende Werte von . Insbesondere können wir mit beginnen und es exponentiell erhöhen, den Prozess stets zu beenden, sobald eine Lösung gefunden wird, und zu begrenzen, um keine Abfragen zu verschwenden, wenn es keine Lösung gibt. Das Verfahren nutzt die Tatsache aus, dass weniger Abfragen erforderlich sind, wenn mehr Lösungen existieren. Es ist jedoch Sorgfalt geboten, um die Wachstumsrate von mit der Erfolgswahrscheinlichkeit jeder Iteration in Einklang zu bringen. ( funktioniert beispielsweise, wie eine Analyse zeigt. Eine Verdopplung von hingegen nicht – das ist eine zu schnelle Erhöhung.)
Die trivialen Fälle
In der gesamten bisherigen Analyse haben wir angenommen, dass die Anzahl der Lösungen nicht null ist. Tatsächlich haben wir durch den Bezug auf die Vektoren
implizit angenommen, dass und beide nicht leer sind. Hier werden wir kurz betrachten, was passiert, wenn eine dieser Mengen leer ist.
Bevor wir uns mit einer Analyse befassen, stellen wir das Offensichtliche fest: Wenn jede Zeichenkette eine Lösung ist, werden wir bei der Messung eine Lösung sehen; und wenn es keine Lösungen gibt, werden wir keine sehen. In gewissem Sinne muss man nicht tiefer gehen als das.
Wir können jedoch schnell die Mathematik für diese trivialen Fälle überprüfen. Die Situation, in der eine von und leer ist, tritt auf, wenn konstant ist; ist leer, wenn für jedes gilt, und ist leer, wenn für jedes gilt. Das bedeutet, dass
gilt und daher
Unabhängig von der Anzahl der Iterationen , die wir in diesen Fällen durchführen, werden die Messungen also immer eine gleichmäßig zufällige Zeichenkette ergeben.