Es gibt eine gute Erklärung von Craig Gidney hier (er hat auch andere interessante Inhalte, einschließlich einem Schaltungssimulator, auf seinem Blog ).
Im Wesentlichen gilt der Algorithmus von Grover, wenn Sie eine Funktion haben, die zurückgibt True
für eine ihrer möglichen Eingaben und False
für alle anderen . Die Aufgabe des Algorithmus ist es, denjenigen zu finden, der zurückkehrt True
.
Dazu drücken wir die Eingänge als Bitstrings aus und kodieren diese mit dem |0⟩ und |1⟩ Zustände einer Reihe von Qubits. Die Bitfolge 0011
würde also im Vier-Qubit-Zustand |0011⟩ codiert 0011 ⟩ , zum Beispiel.
Wir müssen auch in der Lage sein, die Funktion unter Verwendung von Quantentoren zu implementieren. Insbesondere müssen wir eine Folge von Gattern finden, die ein einheitliches U so implementieren, dass
U|a⟩=−|a⟩,U|b⟩=|b⟩
wo a ist der String - Bit für die die Funktion zurückkehren würde True
und b ist eine beliebige , für die es wäre zurückkehren False
.
Wenn wir mit einer Überlagerung aller möglichen Bitfolgen beginnen, was durch einfaches Hadamarding von allem ziemlich einfach ist, beginnen alle Eingänge mit der gleichen Amplitude von 12n√ (wobeindie Länge der Bitfolgen ist, über die wir suchen, und daher die Anzahl der verwendeten Qubits). Wenn wir dann das OrakelUanwenden, ändert sich die Amplitude des gesuchten Zustands auf−12n√ .
Dies ist kein leicht zu beobachtender Unterschied, daher müssen wir ihn verstärken. Um dies zu tun verwenden wir die Grover Diffusion Operator , D . Der Effekt dieses Operators besteht im Wesentlichen darin, zu untersuchen, wie sich jede Amplitude von der mittleren Amplitude unterscheidet, und diese Differenz dann zu invertieren. Wenn also eine bestimmte Amplitude um einen bestimmten Betrag größer als die mittlere Amplitude war, wird sie um denselben Betrag kleiner als der Mittelwert und umgekehrt.
Insbesondere wenn Sie eine Überlagerung von Bitfolgen bj , hat der Diffusionsoperator den Effekt
D:∑jαj|bj⟩↦∑j(2μ−αj)|bj⟩
Dabei ist μ=∑jαj die mittlere Amplitude. So wird jede Amplitude μ+δ zu μ−δ . Um zu sehen , warum es diesen Effekt hat, und wie es zu implementieren, finden Sie diese Skriptum .
Die meisten Amplituden sind geringfügig größer als der Mittelwert (aufgrund des Effekts der Single −12n√ ), so werden sie durch diese Operation ein wenig kleiner als der Durchschnitt. Keine große Veränderung.
Der gesuchte Staat wird stärker betroffen sein. Seine Amplitude ist viel kleiner als der Mittelwert und wird daher viel größer als der Mittelwert, nachdem der Diffusionsoperator angewendet wurde. Der Endeffekt des Diffusionsoperators besteht daher darin, einen Interferenzeffekt auf die Zustände zu verursachen, der eine Amplitude von 1 überstreicht12n√ von allen falschen Antworten und fügt es dem richtigen hinzu. Durch Wiederholen dieses Vorgangs können wir schnell zu dem Punkt gelangen, an dem sich unsere Lösung so stark von der Masse abhebt, dass wir sie identifizieren können.
Dies alles zeigt natürlich, dass die gesamte Arbeit vom Diffusionsoperator erledigt wird. Die Suche ist nur eine Anwendung, mit der wir eine Verbindung herstellen können.
Weitere Informationen zur Implementierung der Funktionen und des Diffusionsoperators finden Sie in den Antworten auf andere Fragen .