Sari la conținutul principal

Analiză

Acum vom analiza algoritmul lui Grover pentru a înțelege cum funcționează. Vom începe cu ceea ce s-ar putea descrie ca o analiză simbolică, în care calculăm cum acționează operația Grover GG asupra anumitor stări, după care vom lega această analiză simbolică de o imagine geometrică ce ajută la vizualizarea modului în care funcționează algoritmul.

Soluții și non-soluții​

Să începem prin definirea a două mulțimi de șiruri.

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}

Mulțimea A1A_1 conține toate soluțiile problemei noastre de căutare, iar A0A_0 conține șirurile care nu sunt soluții (pe care le putem numi non-soluții atunci când este convenabil). Aceste două mulțimi satisfac A0∩A1=∅A_0 \cap A_1 = \varnothing și A0∪A1=ΣnA_0 \cup A_1 = \Sigma^n, adică formează o bipartiție a lui Σn\Sigma^n.

Vom defini în continuare doi vectori unitari care reprezintă superpozițiile uniforme peste mulțimile de soluții și non-soluții.

∣A0⟩=1∣A0∣∑x∈A0∣x⟩∣A1⟩=1∣A1∣∑x∈A1∣x⟩\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 vorbind, fiecare dintre acești vectori este definit doar când mulțimea corespunzătoare este nevidă, dar de acum înainte ne vom concentra pe cazul în care nici A0A_0 nici A1A_1 nu sunt vide. Cazurile A0=∅A_0 = \varnothing și A1=∅A_1 = \varnothing se tratează ușor separat, și le vom aborda mai târziu.

Ca notă, notația folosită aici este comună: ori de câte ori avem o mulțime finită și nevidă SS, putem scrie ∣S⟩\vert S\rangle pentru a denota vectorul de stare cuantică uniform distribuit peste elementele lui SS.

Să definim și ∣u⟩\vert u \rangle ca starea cuantică uniformă peste toate șirurile de nn biți:

∣u⟩=1N∑x∈Σn∣x⟩.\vert u\rangle = \frac{1}{\sqrt{N}} \sum_{x\in\Sigma^n} \vert x\rangle.

Observă că

∣u⟩=∣A0∣N∣A0⟩+∣A1∣N∣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.

Avem de asemenea că ∣u⟩=H⊗n∣0n⟩\vert u\rangle = H^{\otimes n} \vert 0^n \rangle, deci ∣u⟩\vert u\rangle reprezintă starea registrului Q\mathsf{Q} după inițializarea din pasul 1 al algoritmului lui Grover.

Aceasta implică faptul că, chiar înainte ca iterațiile lui GG să aibă loc în pasul 2, starea lui Q\mathsf{Q} este conținută în spațiul vectorial bidimensional generat de ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle, iar coeficienții acestor vectori sunt numere reale. Așa cum vom vedea, starea lui Q\mathsf{Q} va păstra întotdeauna aceste proprietăți — adică starea este o combinație liniară reală a lui ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle — după orice număr de iterații ale operației GG din pasul 2.

O observație despre operația Grover​

Ne vom îndrepta acum atenția spre operația Grover

G=H⊗nZORH⊗nZf,G = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f,

începând cu o observație interesantă despre aceasta.

Imaginează-ți pentru un moment că am înlocui funcția ff cu compoziția lui ff cu funcția NOT — sau, cu alte cuvinte, funcția obținută prin negarea bitului de ieșire al lui ff. Vom numi această funcție nouă gg și o putem exprima în simboluri în câteva moduri alternative.

g(x)=¬f(x)=1⊕f(x)=1−f(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}

Observă că

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

pentru orice șir x∈Σnx\in\Sigma^n, și prin urmare

Zg=−Zf.Z_g = - Z_f.

Aceasta înseamnă că, dacă am substitui funcția ff cu funcția gg, algoritmul lui Grover nu ar funcționa diferit — deoarece stările obținute din algoritm în cele două cazuri sunt în mod necesar echivalente la o fază globală.

Aceasta nu este o problemă! Intuitiv vorbind, algoritmului nu îi pasă care șiruri sunt soluții și care nu — trebuie doar să poată distinge soluțiile de non-soluții pentru a funcționa corect.

Acțiunea operației Grover​

Acum să analizăm acțiunea lui GG asupra vectorilor de stare cuantică ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle.

Mai întâi, să observăm că operația ZfZ_f are o acțiune foarte simplă asupra lui ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle.

Zf∣A0⟩=∣A0⟩Zf∣A1⟩=−∣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}

În al doilea rând, avem operația H⊗nZORH⊗nH^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n}. Operația ZORZ_{\mathrm{OR}} este definită ca

ZOR∣x⟩={∣x⟩x=0n−∣x⟩x≠0n,Z_{\mathrm{OR}} \vert x\rangle = \begin{cases} \vert x\rangle & x = 0^n \\[2mm] -\vert x\rangle & x \neq 0^n, \end{cases}

din nou pentru orice șir x∈Σnx\in\Sigma^n, iar o modalitate alternativă convenabilă de a exprima această operație este următoarea:

ZOR=2∣0n⟩⟨0n∣−I.Z_{\mathrm{OR}} = 2 \vert 0^n \rangle \langle 0^n \vert - \mathbb{I}.

O modalitate simplă de a verifica că această expresie este în concordanță cu definiția lui ZORZ_{\mathrm{OR}} este să evaluăm acțiunea sa asupra stărilor din baza standard.

Operația H⊗nZORH⊗nH^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} poate fi astfel scrisă:

H⊗nZORH⊗n=2H⊗n∣0n⟩⟨0n∣H⊗n−I=2∣u⟩⟨u∣−I,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},

folosind aceeași notație, ∣u⟩,\vert u \rangle, pe care am folosit-o mai sus pentru superpozița uniformă peste toate șirurile de nn biți.

Acum avem tot ce ne trebuie pentru a calcula acțiunea lui GG asupra lui ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle. Să calculăm mai întâi acțiunea lui GG asupra lui ∣A0⟩\vert A_0\rangle.

G∣A0⟩=(2∣u⟩⟨u∣−I)Zf∣A0⟩=(2∣u⟩⟨u∣−I)∣A0⟩=2∣A0∣N∣u⟩−∣A0⟩=2∣A0∣N(∣A0∣N∣A0⟩+∣A1∣N∣A1⟩)−∣A0⟩=(2∣A0∣N−1)∣A0⟩+2∣A0∣⋅∣A1∣N∣A1⟩=∣A0∣−∣A1∣N∣A0⟩+2∣A0∣⋅∣A1∣N∣A1⟩\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}

În al doilea rând, să calculăm acțiunea lui GG asupra lui ∣A1⟩\vert A_1\rangle.

G∣A1⟩=(2∣u⟩⟨u∣−I)Zf∣A1⟩=−(2∣u⟩⟨u∣−I)∣A1⟩=−2∣A1∣N∣u⟩+∣A1⟩=−2∣A1∣N(∣A0∣N∣A0⟩+∣A1∣N∣A1⟩)+∣A1⟩=−2∣A1∣⋅∣A0∣N∣A0⟩+(1−2∣A1∣N)∣A1⟩=−2∣A1∣⋅∣A0∣N∣A0⟩+∣A0∣−∣A1∣N∣A1⟩\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}

În ambele cazuri folosim ecuația

∣u⟩=∣A0∣N∣A0⟩+∣A1∣N∣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

împreună cu expresiile

⟨u∣A0⟩=∣A0∣Nși⟨u∣A1⟩=∣A1∣N\langle u \vert A_0\rangle = \sqrt{\frac{\vert A_0 \vert}{N}} \qquad\text{și}\qquad \langle u \vert A_1\rangle = \sqrt{\frac{\vert A_1 \vert}{N}}

care rezultă din aceasta.

Pe scurt, avem

G∣A0⟩=∣A0∣−∣A1∣N∣A0⟩+2∣A0∣⋅∣A1∣N∣A1⟩G∣A1⟩=−2∣A1∣⋅∣A0∣N∣A0⟩+∣A0∣−∣A1∣N∣A1⟩.\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}

Așa cum am notat deja, starea lui Q\mathsf{Q} imediat înainte de pasul 2 este conținută în spațiul bidimensional generat de ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle, și tocmai am stabilit că GG mapează orice vector din acest spațiu la un alt vector din același spațiu. Aceasta înseamnă că, în scopul analizei, ne putem concentra atenția exclusiv pe acest subspațiu.

Pentru a înțelege mai bine ce se întâmplă în cadrul acestui spațiu bidimensional, să exprimăm acțiunea lui GG pe acest spațiu ca o matrice,

M=(∣A0∣−∣A1∣N−2∣A1∣⋅∣A0∣N2∣A0∣⋅∣A1∣N∣A0∣−∣A1∣N),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},

ale cărei prime și a doua rânduri/coloane corespund respectiv lui ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle. Până acum în această serie, am conectat întotdeauna rândurile și coloanele matricelor cu stările clasice ale unui sistem, dar matricele pot fi folosite și pentru a descrie acțiunile aplicațiilor liniare pe baze diferite, cum avem aici.

Deși nu este deloc evident la prima vedere, matricea MM este ceea ce obținem prin ridicarea la pătrat a unei matrice cu aspect mai simplu.

(∣A0∣N−∣A1∣N∣A1∣N∣A0∣N)2=(∣A0∣−∣A1∣N−2∣A1∣⋅∣A0∣N2∣A0∣⋅∣A1∣N∣A0∣−∣A1∣N)=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

Matricea

(∣A0∣N−∣A1∣N∣A1∣N∣A0∣N)\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}

este o matrice de rotație, pe care o putem exprima alternativ ca

(∣A0∣N−∣A1∣N∣A1∣N∣A0∣N)=(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}

for

θ=sin⁡−1(∣A1∣N).\theta = \sin^{-1}\biggl(\sqrt{\frac{\vert A_1\vert}{N}}\biggr).

Acest unghi θ\theta va juca un rol foarte important în analiza care urmează, deci merită subliniată importanța sa aici, când îl vedem pentru prima dată.

În lumina acestei exprimări a acestei matrice, observăm că

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}.

Acest lucru se întâmplă deoarece rotirea cu unghiul θ\theta de două ori este echivalentă cu rotirea cu unghiul 2θ2\theta. O altă modalitate de a vedea acest lucru este să folosim expresia alternativă

θ=cos⁡−1(∣A0∣N),\theta = \cos^{-1}\biggl(\sqrt{\frac{\vert A_0\vert}{N}}\biggr),

împreună cu formulele de unghi dublu din trigonometrie:

cos⁡(2θ)=cos⁡2(θ)−sin⁡2(θ)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}

În concluzie, starea registrului Q\mathsf{Q} la începutul pasului 2 este

∣u⟩=∣A0∣N∣A0⟩+∣A1∣N∣A1⟩=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,

iar efectul aplicării GG asupra acestei stări este de a o roti cu un unghi 2θ2\theta în spațiul generat de ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle. Astfel, de exemplu, avem

G∣u⟩=cos⁡(3θ)∣A0⟩+sin⁡(3θ)∣A1⟩G2∣u⟩=cos⁡(5θ)∣A0⟩+sin⁡(5θ)∣A1⟩G3∣u⟩=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}

și în general

Gt∣u⟩=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.

Imaginea geometrică​

Acum să conectăm analiza prin care tocmai am trecut la o imagine geometrică. Ideea este că operația GG este produsul a două reflecții, ZfZ_f și H⊗nZORH⊗n.H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n}. Iar efectul net al compunerii a două reflecții este de a efectua o rotație.

Să începem cu ZfZ_f. Așa cum am observat deja anterior, avem

Zf∣A0⟩=∣A0⟩Zf∣A1⟩=−∣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}

În spațiul vectorial bidimensional generat de ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle, aceasta este o reflecție față de dreapta paralelă cu ∣A0⟩\vert A_0\rangle, pe care o vom numi L1L_1. Iată o figură care ilustrează acțiunea acestei reflecții asupra unui vector unitar ipotetic ∣ψ⟩\vert\psi\rangle, pe care îl presupunem a fi o combinație liniară reală a lui ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle.

O figură care descrie acțiunea unei reflecții asupra unui vector.

În al doilea rând, avem operația H⊗nZORH⊗nH^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n}, pe care am văzut deja că o putem scrie ca

H⊗nZORH⊗n=2∣u⟩⟨u∣−I.H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} = 2 \vert u \rangle \langle u \vert - \mathbb{I}.

Aceasta este tot o reflecție, de data aceasta față de dreapta L2L_2 paralelă cu vectorul ∣u⟩\vert u\rangle. Iată o figură care descrie acțiunea acestei reflecții asupra unui vector unitar ∣ψ⟩\vert\psi\rangle.

O figură care descrie acțiunea unei a doua reflecții asupra unui vector.

Când compunem aceste două reflecții, obținem o rotație — cu dublul unghiului dintre dreptele de reflecție — după cum ilustrează această figură.

O figură care descrie acțiunea operației Grover asupra unui vector.

Aceasta explică, în termeni geometrici, de ce efectul operației Grover este de a roti combinațiile liniare ale lui ∣A0⟩\vert A_0\rangle și ∣A1⟩\vert A_1\rangle cu un unghi de 2θ2\theta.