Zum Hauptinhalt springen

Analyse

Wir analysieren nun Grovers Algorithmus, um zu verstehen, wie er funktioniert. Wir beginnen mit dem, was man als symbolische Analyse beschreiben könnte, bei der wir berechnen, wie die Grover-Operation GG auf bestimmte Zustände wirkt, und verbinden diese symbolische Analyse dann mit einem geometrischen Bild, das dabei hilft, die Funktionsweise des Algorithmus zu visualisieren.

Lösungen und Nicht-Lösungen

Beginnen wir mit der Definition zweier Mengen von Zeichenketten.

A0={xΣn:f(x)=0}A1={xΣn:f(x)=1}\begin{aligned} A_0 &= \bigl\{ x\in\Sigma^n : f(x) = 0\bigr\} \\ A_1 &= \bigl\{ x\in\Sigma^n : f(x) = 1\bigr\} \end{aligned}

Die Menge A1A_1 enthält alle Lösungen unseres Suchproblems, während A0A_0 die Zeichenketten enthält, die keine Lösungen sind (die wir als Nicht-Lösungen bezeichnen, wenn es praktisch ist). Diese beiden Mengen erfüllen A0A1=A_0 \cap A_1 = \varnothing und A0A1=ΣnA_0 \cup A_1 = \Sigma^n, das heißt, dies ist eine Bipartition von Σn\Sigma^n.

Als Nächstes definieren wir zwei Einheitsvektoren, die gleichmäßige Überlagerungen über die Mengen der Lösungen und Nicht-Lösungen darstellen.

A0=1A0xA0xA1=1A1xA1x\begin{aligned} \vert A_0\rangle &= \frac{1}{\sqrt{\vert A_0\vert}} \sum_{x\in A_0} \vert x\rangle \\ \vert A_1\rangle &= \frac{1}{\sqrt{\vert A_1\vert}} \sum_{x\in A_1} \vert x\rangle \end{aligned}

Formal gesehen ist jeder dieser Vektoren nur definiert, wenn die entsprechende Menge nicht leer ist, aber im Folgenden konzentrieren wir uns auf den Fall, dass weder A0A_0 noch A1A_1 leer ist. Die Fälle A0=A_0 = \varnothing und A1=A_1 = \varnothing lassen sich leicht separat behandeln, was wir später tun werden.

Nebenbei sei bemerkt: Die hier verwendete Notation ist üblich – immer wenn wir eine endliche und nicht leere Menge SS haben, können wir S\vert S\rangle schreiben, um den Quantenzustandsvektor zu bezeichnen, der gleichmäßig über den Elementen von SS verteilt ist.

Definieren wir außerdem u\vert u \rangle als gleichmäßigen Quantenzustand über alle nn-Bit-Zeichenketten:

u=1NxΣnx.\vert u\rangle = \frac{1}{\sqrt{N}} \sum_{x\in\Sigma^n} \vert x\rangle.

Beachte, dass

u=A0NA0+A1NA1.\vert u\rangle = \sqrt{\frac{\vert A_0 \vert}{N}} \vert A_0\rangle + \sqrt{\frac{\vert A_1 \vert}{N}} \vert A_1\rangle.

Wir haben außerdem, dass u=Hn0n\vert u\rangle = H^{\otimes n} \vert 0^n \rangle gilt, also stellt u\vert u\rangle den Zustand des Registers Q\mathsf{Q} nach der Initialisierung in Schritt 1 von Grovers Algorithmus dar.

Das impliziert, dass der Zustand von Q\mathsf{Q} unmittelbar vor den Iterationen von GG in Schritt 2 im zweidimensionalen Vektorraum liegt, der von A0\vert A_0\rangle und A1\vert A_1\rangle aufgespannt wird, und dass die Koeffizienten dieser Vektoren reelle Zahlen sind. Wie wir sehen werden, werden diese Eigenschaften des Zustands – dass er eine reelle Linearkombination von A0\vert A_0\rangle und A1\vert A_1\rangle ist – nach jeder Anzahl von Iterationen der Operation GG in Schritt 2 erhalten bleiben.

Eine Beobachtung zur Grover-Operation

Wir wenden uns nun der Grover-Operation zu:

G=HnZORHnZf,G = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f,

beginnend mit einer interessanten Beobachtung darüber.

Stellen wir uns kurz vor, wir würden die Funktion ff durch die Komposition von ff mit der NOT-Funktion ersetzen – oder anders gesagt, durch die Funktion, die wir erhalten, wenn wir das Ausgabebit von ff invertieren. Wir nennen diese neue Funktion gg und können sie symbolisch auf einige alternative Weisen ausdrücken.

g(x)=¬f(x)=1f(x)=1f(x)={1f(x)=00f(x)=1g(x) = \neg f(x) = 1 \oplus f(x) = 1 - f(x) = \begin{cases} 1 & f(x) = 0\\[1mm] 0 & f(x) = 1 \end{cases}

Beachte, dass

(1)g(x)=(1)1f(x)=(1)f(x)(-1)^{g(x)} = (-1)^{1 \oplus f(x)} = - (-1)^{f(x)}

für jede Zeichenkette xΣnx\in\Sigma^n gilt und daher

Zg=Zf.Z_g = - Z_f.

Das bedeutet, wenn wir die Funktion ff durch die Funktion gg ersetzen würden, würde Grovers Algorithmus nicht anders funktionieren – denn die Zustände, die wir aus dem Algorithmus in den beiden Fällen erhalten, sind notwendigerweise äquivalent bis auf eine globale Phase.

Das ist kein Problem! Intuitiv gesprochen ist es dem Algorithmus egal, welche Zeichenketten Lösungen sind und welche nicht – er muss nur in der Lage sein, Lösungen von Nicht-Lösungen zu unterscheiden, um korrekt zu funktionieren.

Wirkung der Grover-Operation

Betrachten wir nun die Wirkung von GG auf die Quantenzustandsvektoren A0\vert A_0\rangle und A1\vert A_1\rangle.

Zunächst stellen wir fest, dass die Operation ZfZ_f eine sehr einfache Wirkung auf A0\vert A_0\rangle und A1\vert A_1\rangle hat.

ZfA0=A0ZfA1=A1\begin{aligned} Z_f \vert A_0\rangle & = \vert A_0\rangle \\[1mm] Z_f \vert A_1\rangle & = -\vert A_1\rangle \end{aligned}

Zweitens haben wir die Operation HnZORHnH^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n}. Die Operation ZORZ_{\mathrm{OR}} ist definiert als

ZORx={xx=0nxx0n,Z_{\mathrm{OR}} \vert x\rangle = \begin{cases} \vert x\rangle & x = 0^n \\[2mm] -\vert x\rangle & x \neq 0^n, \end{cases}

wiederum für jede Zeichenkette xΣnx\in\Sigma^n, und eine praktische alternative Ausdrucksweise dieser Operation ist:

ZOR=20n0nI.Z_{\mathrm{OR}} = 2 \vert 0^n \rangle \langle 0^n \vert - \mathbb{I}.

Eine einfache Möglichkeit, zu überprüfen, dass dieser Ausdruck mit der Definition von ZORZ_{\mathrm{OR}} übereinstimmt, besteht darin, seine Wirkung auf Standard-Basiszustände zu evaluieren.

Die Operation HnZORHnH^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} kann daher wie folgt geschrieben werden:

HnZORHn=2Hn0n0nHnI=2uuI,H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} = 2 H^{\otimes n} \vert 0^n \rangle \langle 0^n \vert H^{\otimes n} - \mathbb{I} = 2 \vert u \rangle \langle u \vert - \mathbb{I},

wobei wir dieselbe Notation u\vert u \rangle wie oben für die gleichmäßige Überlagerung über alle nn-Bit-Zeichenketten verwenden.

Und nun haben wir, was wir brauchen, um die Wirkung von GG auf A0\vert A_0\rangle und A1\vert A_1\rangle zu berechnen. Zuerst berechnen wir die Wirkung von GG auf A0\vert A_0\rangle.

GA0=(2uuI)ZfA0=(2uuI)A0=2A0NuA0=2A0N(A0NA0+A1NA1)A0=(2A0N1)A0+2A0A1NA1=A0A1NA0+2A0A1NA1\begin{aligned} G \vert A_0 \rangle & = \bigl( 2 \vert u\rangle \langle u \vert - \mathbb{I}\bigr) Z_f \vert A_0\rangle \\ & = \bigl( 2 \vert u\rangle \langle u \vert - \mathbb{I}\bigr) \vert A_0\rangle \\ & = 2 \sqrt{\frac{\vert A_0\vert}{N}} \vert u\rangle -\vert A_0 \rangle\\ & = 2 \sqrt{\frac{\vert A_0\vert}{N}} \biggl( \sqrt{\frac{\vert A_0\vert}{N}} \vert A_0\rangle + \sqrt{\frac{\vert A_1\vert}{N}} \vert A_1\rangle\biggr) -\vert A_0 \rangle \\ & = \biggl( \frac{2\vert A_0\vert}{N} - 1\biggr) \vert A_0 \rangle + \frac{2 \sqrt{\vert A_0\vert \cdot \vert A_1\vert}}{N} \vert A_1 \rangle \\ & = \frac{\vert A_0\vert - \vert A_1\vert}{N} \vert A_0 \rangle + \frac{2 \sqrt{\vert A_0\vert \cdot \vert A_1\vert}}{N} \vert A_1 \rangle \end{aligned}

Und zweitens berechnen wir die Wirkung von GG auf A1\vert A_1\rangle.

GA1=(2uuI)ZfA1=(2uuI)A1=2A1Nu+A1=2A1N(A0NA0+A1NA1)+A1=2A1A0NA0+(12A1N)A1=2A1A0NA0+A0A1NA1\begin{aligned} G \vert A_1 \rangle & = \bigl( 2 \vert u\rangle \langle u \vert - \mathbb{I} \bigr) Z_f \vert A_1\rangle \\ & = - \bigl( 2 \vert u\rangle \langle u \vert - \mathbb{I} \bigr) \vert A_1\rangle \\ & = - 2 \sqrt{\frac{\vert A_1\vert}{N}} \vert u\rangle + \vert A_1 \rangle \\ & = - 2 \sqrt{\frac{\vert A_1\vert}{N}} \biggl(\sqrt{\frac{\vert A_0\vert}{N}} \vert A_0\rangle + \sqrt{\frac{\vert A_1\vert}{N}} \vert A_1\rangle\biggr) + \vert A_1 \rangle \\ & = - \frac{2 \sqrt{\vert A_1\vert \cdot \vert A_0\vert}}{N} \vert A_0 \rangle + \biggl( 1 - \frac{2\vert A_1\vert}{N} \biggr) \vert A_1 \rangle \\ & = - \frac{2 \sqrt{\vert A_1\vert \cdot \vert A_0\vert}}{N} \vert A_0 \rangle + \frac{\vert A_0\vert - \vert A_1\vert}{N} \vert A_1 \rangle \end{aligned}

In beiden Fällen verwenden wir die Gleichung

u=A0NA0+A1NA1\vert u\rangle = \sqrt{\frac{\vert A_0 \vert}{N}} \vert A_0\rangle + \sqrt{\frac{\vert A_1 \vert}{N}} \vert A_1\rangle

zusammen mit den daraus folgenden Ausdrücken

uA0=A0NunduA1=A1N.\langle u \vert A_0\rangle = \sqrt{\frac{\vert A_0 \vert}{N}} \qquad\text{und}\qquad \langle u \vert A_1\rangle = \sqrt{\frac{\vert A_1 \vert}{N}}.

Zusammenfassend haben wir

GA0=A0A1NA0+2A0A1NA1GA1=2A1A0NA0+A0A1NA1.\begin{aligned} G \vert A_0 \rangle & = \frac{\vert A_0\vert - \vert A_1\vert}{N} \vert A_0 \rangle + \frac{2 \sqrt{\vert A_0\vert \cdot \vert A_1\vert}}{N} \vert A_1 \rangle\\[2mm] G \vert A_1 \rangle & = - \frac{2 \sqrt{\vert A_1\vert \cdot \vert A_0\vert}}{N} \vert A_0 \rangle + \frac{\vert A_0\vert - \vert A_1\vert}{N} \vert A_1 \rangle. \end{aligned}

Wie bereits festgestellt, liegt der Zustand von Q\mathsf{Q} unmittelbar vor Schritt 2 im zweidimensionalen Raum, der von A0\vert A_0\rangle und A1\vert A_1\rangle aufgespannt wird, und wir haben gerade gezeigt, dass GG jeden Vektor in diesem Raum auf einen anderen Vektor im selben Raum abbildet. Das bedeutet, dass wir uns für die Analyse ausschließlich auf diesen Unterraum konzentrieren können.

Um besser zu verstehen, was in diesem zweidimensionalen Raum vor sich geht, drücken wir die Wirkung von GG auf diesen Raum als Matrix aus,

M=(A0A1N2A1A0N2A0A1NA0A1N),M = \begin{pmatrix} \frac{\vert A_0\vert - \vert A_1\vert}{N} & -\frac{2 \sqrt{\vert A_1\vert \cdot \vert A_0\vert}}{N} \\[2mm] \frac{2 \sqrt{\vert A_0\vert \cdot \vert A_1\vert}}{N} & \frac{\vert A_0\vert - \vert A_1\vert}{N} \end{pmatrix},

deren erste und zweite Zeile/Spalte jeweils A0\vert A_0\rangle und A1\vert A_1\rangle entsprechen. Bisher in dieser Reihe haben wir die Zeilen und Spalten von Matrizen immer mit den klassischen Zuständen eines Systems verbunden, aber Matrizen können auch verwendet werden, um die Wirkungen linearer Abbildungen auf anderen Basen zu beschreiben, wie wir es hier haben.

Obwohl es auf den ersten Blick überhaupt nicht offensichtlich ist, ist die Matrix MM das, was wir erhalten, wenn wir eine einfacher aussehende Matrix quadrieren.

(A0NA1NA1NA0N)2=(A0A1N2A1A0N2A0A1NA0A1N)=M\begin{pmatrix} \sqrt{\frac{\vert A_0\vert}{N}} & - \sqrt{\frac{\vert A_1\vert}{N}} \\[2mm] \sqrt{\frac{\vert A_1\vert}{N}} & \sqrt{\frac{\vert A_0\vert}{N}} \end{pmatrix}^2 = \begin{pmatrix} \frac{\vert A_0\vert - \vert A_1\vert}{N} & -\frac{2 \sqrt{\vert A_1\vert \cdot \vert A_0\vert}}{N} \\[2mm] \frac{2 \sqrt{\vert A_0\vert \cdot \vert A_1\vert}}{N} & \frac{\vert A_0\vert - \vert A_1\vert}{N} \end{pmatrix} = M

Die Matrix

(A0NA1NA1NA0N)\begin{pmatrix} \sqrt{\frac{\vert A_0\vert}{N}} & - \sqrt{\frac{\vert A_1\vert}{N}} \\[2mm] \sqrt{\frac{\vert A_1\vert}{N}} & \sqrt{\frac{\vert A_0\vert}{N}} \end{pmatrix}

ist eine Rotationsmatrix, die wir alternativ als

(A0NA1NA1NA0N)=(cos(θ)sin(θ)sin(θ)cos(θ))\begin{pmatrix} \sqrt{\frac{\vert A_0\vert}{N}} & - \sqrt{\frac{\vert A_1\vert}{N}} \\[2mm] \sqrt{\frac{\vert A_1\vert}{N}} & \sqrt{\frac{\vert A_0\vert}{N}} \end{pmatrix} = \begin{pmatrix} \cos(\theta) & -\sin(\theta) \\[2mm] \sin(\theta) & \cos(\theta) \end{pmatrix}

für

θ=sin1(A1N)\theta = \sin^{-1}\biggl(\sqrt{\frac{\vert A_1\vert}{N}}\biggr)

ausdrücken können.

Dieser Winkel θ\theta wird in der folgenden Analyse eine sehr wichtige Rolle spielen, deshalb lohnt es sich, seine Bedeutung zu betonen, wenn wir ihn hier zum ersten Mal sehen.

Angesichts dieses Ausdrucks beobachten wir, dass

M=(cos(θ)sin(θ)sin(θ)cos(θ))2=(cos(2θ)sin(2θ)sin(2θ)cos(2θ)).M = \begin{pmatrix} \cos(\theta) & -\sin(\theta) \\[2mm] \sin(\theta) & \cos(\theta) \end{pmatrix}^2 = \begin{pmatrix} \cos(2\theta) & -\sin(2\theta) \\[2mm] \sin(2\theta) & \cos(2\theta) \end{pmatrix}.

Das liegt daran, dass eine zweimalige Rotation um den Winkel θ\theta einer Rotation um den Winkel 2θ2\theta entspricht. Eine weitere Möglichkeit, das einzusehen, ist die Verwendung des alternativen Ausdrucks

θ=cos1(A0N),\theta = \cos^{-1}\biggl(\sqrt{\frac{\vert A_0\vert}{N}}\biggr),

zusammen mit den Doppelwinkelformeln der Trigonometrie:

cos(2θ)=cos2(θ)sin2(θ)sin(2θ)=2sin(θ)cos(θ).\begin{aligned} \cos(2\theta) & = \cos^2(\theta) - \sin^2(\theta)\\[1mm] \sin(2\theta) & = 2 \sin(\theta)\cos(\theta). \end{aligned}

Zusammenfassend ist der Zustand des Registers Q\mathsf{Q} zu Beginn von Schritt 2

u=A0NA0+A1NA1=cos(θ)A0+sin(θ)A1,\vert u\rangle = \sqrt{\frac{\vert A_0\vert}{N}} \vert A_0\rangle + \sqrt{\frac{\vert A_1\vert}{N}} \vert A_1\rangle = \cos(\theta) \vert A_0\rangle + \sin(\theta) \vert A_1\rangle,

und der Effekt, GG auf diesen Zustand anzuwenden, besteht darin, ihn um einen Winkel 2θ2\theta im von A0\vert A_0\rangle und A1\vert A_1\rangle aufgespannten Raum zu rotieren. So haben wir zum Beispiel

Gu=cos(3θ)A0+sin(3θ)A1G2u=cos(5θ)A0+sin(5θ)A1G3u=cos(7θ)A0+sin(7θ)A1\begin{aligned} G \vert u \rangle &= \cos(3\theta) \vert A_0\rangle + \sin(3\theta) \vert A_1\rangle\\[1mm] G^2 \vert u \rangle &= \cos(5\theta) \vert A_0\rangle + \sin(5\theta) \vert A_1\rangle\\[1mm] G^3 \vert u \rangle &= \cos(7\theta) \vert A_0\rangle + \sin(7\theta) \vert A_1\rangle \end{aligned}

und allgemein

Gtu=cos((2t+1)θ)A0+sin((2t+1)θ)A1.G^t \vert u \rangle = \cos\bigl((2t + 1)\theta\bigr) \vert A_0\rangle + \sin\bigl((2t + 1)\theta\bigr) \vert A_1\rangle.

Geometrisches Bild

Verbinden wir nun die gerade durchgeführte Analyse mit einem geometrischen Bild. Die Idee ist, dass die Operation GG das Produkt zweier Spiegelungen ist: ZfZ_f und HnZORHnH^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n}. Und der Nettoeffekt von zwei Spiegelungen ist eine Rotation.

Beginnen wir mit ZfZ_f. Wie wir bereits zuvor beobachtet haben, gilt

ZfA0=A0ZfA1=A1.\begin{aligned} Z_f \vert A_0\rangle & = \vert A_0\rangle \\[1mm] Z_f \vert A_1\rangle & = -\vert A_1\rangle. \end{aligned}

Im zweidimensionalen Vektorraum, der von A0\vert A_0\rangle und A1\vert A_1\rangle aufgespannt wird, ist das eine Spiegelung an der Geraden parallel zu A0\vert A_0\rangle, die wir L1L_1 nennen werden. Hier ist eine Abbildung, die die Wirkung dieser Spiegelung auf einen hypothetischen Einheitsvektor ψ\vert\psi\rangle illustriert, der als reelle Linearkombination von A0\vert A_0\rangle und A1\vert A_1\rangle angenommen wird.

Eine Abbildung, die die Wirkung einer Spiegelung auf einen Vektor zeigt.

Zweitens haben wir die Operation HnZORHnH^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n}, die wir bereits als

HnZORHn=2uuIH^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} = 2 \vert u \rangle \langle u \vert - \mathbb{I}

schreiben können.

Das ist ebenfalls eine Spiegelung, diesmal an der Geraden L2L_2 parallel zum Vektor u\vert u\rangle. Hier ist eine Abbildung, die die Wirkung dieser Spiegelung auf einen Einheitsvektor ψ\vert\psi\rangle zeigt.

Eine Abbildung, die die Wirkung einer zweiten Spiegelung auf einen Vektor zeigt.

Wenn wir diese zwei Spiegelungen komponieren, erhalten wir eine Rotation – um das Doppelte des Winkels zwischen den Spiegelungsgeraden – wie diese Abbildung zeigt.

Eine Abbildung, die die Wirkung der Grover-Operation auf einen Vektor zeigt.

Das erklärt in geometrischen Begriffen, warum der Effekt der Grover-Operation darin besteht, Linearkombinationen von A0\vert A_0\rangle und A1\vert A_1\rangle um einen Winkel von 2θ2\theta zu rotieren.