Der Algorithmus von Grover wird unter anderem verwendet, um einen Artikel in einer ungeordneten Liste von Artikeln zu suchen der Länge . Auch wenn es hier viele Fragen zu diesem Thema gibt, vermisse ich den Punkt.
Auf klassische Weise in einer Liste suchen
Normalerweise würde ich eine Suchfunktion auf diese Weise entwerfen.
Also gebe ich die Liste und den gewünschten Gegenstand als Eingabe an und erhalte die Position des Elements in der Liste als Ausgabe. Ich glaube, ich habe verstanden, dass die Informationen über durch das Orakeltor in den Algorithmus eingebettet sind , sodass unsere Funktion zu
Lassen Sie uns ein make praktisches Beispiel. Betrachten Sie die Suche nach dem Pik-As Pik-
Die Liste der Länge ist .
Das gesuchte Element ist . Ich sollte . Jede Karte kann mit Bits codiert werden. Die Liste enthält Elemente. Wir benötigen also Bits, um die Liste zu codieren. In diesem Fall implementiert das Orakel die Funktion:
Die Eingabe von Grovers Algorithmus ist jedoch kein Zustand von Qubits.
(NB: Das Bild des gemischten Decks ist hier zu sehen. )
Grover und sein Orakel
Mehrere Quellen (z. B. hier - grafisch erklärt) sagen, dass die Eingabe des Algorithmus unterschiedlich ist: Die Eingabe ist ein aus dem Suchraum entnommener Zustand wobei die Anzahl der Elemente der Liste ist. Jede Zahl entspricht der Position eines Elements in der Liste.
Die Eingabe von ist nun ein Qubit-Vektor , der eine Überlagerung aller Elemente im Suchraum sein muss .
Wir wissen
- entspricht ;
- entspricht ;
- entspricht ;
- entspricht welches das gewünschte Element ist;
- und so weiter...
In diesem Fall haben wir
Aber in diesem Fall müsste unser Orakel die Funktion implementieren.
Um das Orakel zu bauen, müssen wir wissen, dass an Position 5 ist. Wozu dient der Algorithmus, wenn wir bereits nach dem Element gesucht haben, um das Orakel zu bauen?