Gibt es eine Erklärung für die Funktionsweise von Grovers Algorithmus?


27

Dieser Blogpost von Scott Aaronson ist eine sehr nützliche und einfache Erklärung von Shors Algorithmus .

Ich frage mich, ob es eine solche Erklärung für den zweitberühmtesten Quantenalgorithmus gibt: Grovers Algorithmus zum Durchsuchen einer ungeordneten Datenbank der Größe in O ( √)O(n)zeit.O(n)

Insbesondere für das zunächst überraschende Ergebnis der Laufzeit wünsche ich mir eine nachvollziehbare Intuition!

Antworten:


20

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 Falsefü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 0011wü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 Trueund 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 auf12n .

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|bjj(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 .


4

Ich finde einen grafischen Ansatz ziemlich gut, um einen Einblick zu geben, ohne zu technisch zu werden. Wir brauchen einige Eingaben:

  • |ψ|xx|ψ0 .
  • U1=(I2|ψψ|)
  • U2=I2|xx|.

This last operation is the one that can mark our marked item with a -1 phase. We can also define a state |ψ to be orthonormal to |x such that the {|x,|ψ} forms an orthonormal basis for the span of {|x,|ψ}. Both the operations that we have defined preserve this space: you start with some state in the span of {|x,|ψ}, and they return a state within the span. Moreover, both are unitary, so the length of the input vector is preserved.

A vector of fixed length within a two-dimensional space can be visualised as the circumference of a circle. So, let's set up a circle with two orthogonal directions corresponding to |ψ and |x. enter image description here

Our initial state |ψ will have small overlap with |x and large overlap with |ψ. If it were the other way around, search would be easy: we'd just prepare |ψ, measure, and test the output using the marking unitary, repeating until we got the marked item. It wouldn't take long. Let's call the angle between |ψ and |ψ the angle θ. enter image description here

Now let's take a moment to think about what our two unitary actions do. Both have a -1 eigenvalue, and all other eigenvalues +1. In our two-dimensional subspace, that reduces to a +1 eigenvalue and a -1 eigenvalue. Such an operation is a reflection in the axis defined by the +1 eigenvector. So, U1 is a reflection in the |ψ axis, while U2 is a reflection in the |ψ axis. enter image description here

Now, take an arbitrary vector in this space, and apply U2 followed by U1. The net effect is that the vector is rotated by an angle 2θ towards the |x axis. enter image description here

So, if you start from |ψ, you can repeat this sufficiently many times, and get to within an angle θ of |x. Thus, when we measure that state, we get the value x with high probability.

Now we need a little care to find the speed-up. Assume that the probability of finding |x in |ψ is p1. So, classically, we'd need O(1/p) attempts to find it. In our quantum scenario, we have that p=sinθθ (since θ is small), and we want a number of runs r such that sin((2r+1)θ)1. So, rπ2θπ2p. You can see the square-root speed-up right there.


3

The simple explanation for how (and hence why) Grover's algorithm works is that a quantum gate can only reshuffle (or otherwise distribute) probability amplitudes. Using an initial state with equal probability amplitudes for all states of the computational basis, one starts with an amplitude of 1/N. This much can be "added" to the desired (solution) state in each iteration, such that after N iterations one arrives at a probability amplitude of 1 meaning the desired state has been distilled.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.