Beschreibung von Grovers Algorithmus
In diesem Abschnitt beschreiben wir Grovers Algorithmus. Wir beginnen mit der Diskussion von Phasen-Abfrage-Gates und wie man sie konstruiert, gefolgt von der Beschreibung des Algorithmus selbst. Abschließend erörtern wir kurz, wie der Algorithmus natürlicherweise auf die Suche angewendet wird.
Phasen-Abfrage-Gates
Grovers Algorithmus verwendet Operationen, die als Phasen-Abfrage-Gates bekannt sind. Im Gegensatz zu einem gewöhnlichen Abfrage-Gate , das für eine gegebene Funktion wie zuvor beschrieben definiert ist, wird ein Phasen-Abfrage-Gate für die Funktion wie folgt definiert:
für jede Zeichenkette .
Die Operation kann mit einem einzigen Abfrage-Gate implementiert werden, wie dieses Diagramm zeigt:
Diese Implementierung macht sich das Phase-Kickback-Phänomen zunutze und erfordert, dass ein Hilfs-Qubit, das im Zustand initialisiert ist, verfügbar ist. Dieses Qubit verbleibt nach der Implementierung im Zustand und kann wiederverwendet werden (etwa zur Implementierung nachfolgender -Gates) oder einfach verworfen werden.
Zusätzlich zur Operation verwenden wir auch ein Phasen-Abfrage-Gate für die -stellige OR-Funktion, die für jede Zeichenkette wie folgt definiert ist:
Explizit wirkt das Phasen-Abfrage-Gate für die -stellige OR-Funktion so:
Um klar zu sein: So wirkt auf Standard-Basiszustände; sein Verhalten bei beliebigen Zuständen ergibt sich durch Linearität aus diesem Ausdruck.
Die Operation kann als Quantencircuit implementiert werden, indem man mit einem Booleschen Circuit für die OR-Funktion beginnt, diesen in eine -Operation umwandelt (also ein Standard-Abfrage-Gate für die -stellige OR-Funktion) – nach dem in der Lektion Algorithmische Grundlagen der Quantenberechnung beschriebenen Verfahren –, und schließlich eine -Operation mithilfe des Phase-Kickback-Phänomens konstruiert. Beachte, dass keine Abhängigkeit von der Funktion hat und daher durch einen Quantencircuit ohne Abfrage-Gates implementiert werden kann.
Beschreibung des Algorithmus
Nun, da wir die beiden Operationen und haben, können wir Grovers Algorithmus beschreiben.
Der Algorithmus bezieht sich auf eine Zahl , die die Anzahl der Iterationen angibt (und damit die Anzahl der Abfragen an die Funktion ). Diese Zahl wird von Grovers Algorithmus in der hier beschriebenen Form nicht festgelegt; wir erörtern später in der Lektion, wie sie gewählt werden kann.
Die in Schritt 2 iterierte Operation wird im Rest dieser Lektion als Grover-Operation bezeichnet. Hier ist eine Quantencircuit-Darstellung der Grover-Operation für
In diesem Diagramm wird die -Operation als größer als dargestellt – ein informeller visueller Hinweis darauf, dass sie wahrscheinlich die aufwändigere Operation ist. Insbesondere erfordert im Abfragemodell eine Abfrage, während keine Abfragen benötigt. Wenn wir stattdessen einen Booleschen Circuit für die Funktion haben und diesen in einen Quantencircuit für umwandeln, darf man davon ausgehen, dass der resultierende Quantencircuit größer und komplexer ist als einer für .
Hier ist ein Diagramm eines Quantencircuits für den gesamten Algorithmus bei und . Für größere Werte von können wir einfach weitere Instanzen der Grover-Operation unmittelbar vor den Messungen einfügen.
Anwendung auf die Suche
Grovers Algorithmus kann wie folgt auf das Such-Problem angewendet werden:
- Wähle die Zahl in Schritt 2. (Dies wird später in der Lektion besprochen.)
- Führe Grovers Algorithmus für die Funktion mit der gewählten Zahl aus, um eine Zeichenkette zu erhalten.
- Frage die Funktion für die Zeichenkette ab, um zu prüfen, ob sie eine gültige Lösung ist:
- Falls haben wir eine Lösung gefunden und können aufhören und ausgeben.
- Falls können wir das Verfahren entweder erneut ausführen, möglicherweise mit einer anderen Wahl für , oder wir können aufgeben und „keine Lösung" ausgeben.
Sobald wir analysiert haben, wie Grovers Algorithmus funktioniert, werden wir sehen, dass wir durch die Wahl mit hoher Wahrscheinlichkeit eine Lösung für unser Suchproblem erhalten (sofern eine existiert).