Susuriin natin ngayon ang Grover's algorithm para maunawaan kung paano ito gumagana.
Magsisimula tayo sa isang uri ng simbolikong pagsusuri, kung saan kinakalkula natin kung paano kumikilos ang Grover operation na G sa ilang partikular na estado, at pagkatapos ay iuugnay natin ang simbolikong pagsusuring ito sa isang geometric na larawan na nakakatulong para maislarawan kung paano gumagana ang algorithm.
Magsimula tayo sa pamamagitan ng pagtukoy ng dalawang set ng mga string.
A0A1={x∈Σn:f(x)=0}={x∈Σn:f(x)=1}
Ang set na A1 ay naglalaman ng lahat ng solusyon sa ating problema sa paghahanap, habang ang A0 naman ay naglalaman ng mga string na hindi solusyon (na maaari nating tawaging hindi-solusyon kung maginhawa).
Ang dalawang set na ito ay nagsasatisfy ng A0∩A1=∅ at A0∪A1=Σn, ibig sabihin, ito ay isang bipartition ng Σn.
Susunod, tutukuyin natin ang dalawang unit vector na kumakatawan sa mga uniform superposition sa mga set ng solusyon at hindi-solusyon.
Sa teknikal na pagsasalita, ang bawat isa sa mga vector na ito ay natutukoy lamang kapag ang kaukulang set ay hindi walang laman, ngunit mula rito ay magtutuon tayo sa kasong hindi walang laman ang A0 at A1.
Ang mga kaso na A0=∅ at A1=∅ ay madaling harapin nang hiwalay, at gagawin natin ito mamaya.
Sa karagdagan, ang notasyong ginagamit dito ay karaniwan: sa tuwing mayroon tayong finite at hindi walang lamang set na S, maaari tayong magsulat ng ∣S⟩ para ilarawan ang quantum state vector na uniform sa mga elemento ng S.
Tukuyin din natin ang ∣u⟩ bilang isang uniform quantum state sa lahat ng n-bit string:
∣u⟩=N1x∈Σn∑∣x⟩.
Pansinin na
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩.
Mayroon din tayong ∣u⟩=H⊗n∣0n⟩, kaya ang ∣u⟩ ay kumakatawan sa estado ng register na Q pagkatapos ng initialization sa hakbang 1 ng Grover's algorithm.
Ibig sabihin nito, bago pa mangyari ang mga iteration ng G sa hakbang 2, ang estado ng Q ay nasa loob ng two-dimensional vector space na spanned ng ∣A0⟩ at ∣A1⟩, at bukod doon, ang mga coefficient ng mga vector na ito ay mga tunay na numero.
Makikita natin na ang estado ng Q ay palaging magkakaroon ng mga katangiang ito — ibig sabihin, ang estado ay isang tunay na linear combination ng ∣A0⟩ at ∣A1⟩ — pagkatapos ng anumang bilang ng iteration ng operation na G sa hakbang 2.
simula sa isang kawili-wiling obserbasyon tungkol dito.
Isipin nang sandali na pinalitan natin ang function na f ng composition ng f at ng NOT function — o, sa madaling salita, ang function na nakukuha natin sa pamamagitan ng pag-flip ng output bit ng f.
Tatawagin natin itong bagong function na g, at maaari nating ipahayag ito gamit ang mga simbolo sa ilang alternatibong paraan.
g(x)=¬f(x)=1⊕f(x)=1−f(x)={10f(x)=0f(x)=1
Pansinin na
(−1)g(x)=(−1)1⊕f(x)=−(−1)f(x)
para sa bawat string na x∈Σn, at samakatuwid
Zg=−Zf.
Ibig sabihin nito, kung papalitan natin ang function na f ng function na g, hindi magbabago ang Grover's algorithm — dahil ang mga estado na nakukuha natin mula sa algorithm sa dalawang kaso ay kinakailangang katumbas hanggang sa isang global phase.
Wala itong problema!
Sa simpleng pagsasalita, hindi pinapansin ng algorithm kung aling mga string ang solusyon at aling mga string ang hindi — kailangan lang nitong makilala ang mga solusyon at hindi-solusyon para gumana nang tama.
Tingnan natin ngayon ang kilos ng G sa mga quantum state vector na ∣A0⟩ at ∣A1⟩.
Una, pansinin na ang operation na Zf ay may napakasimpleng kilos sa ∣A0⟩ at ∣A1⟩.
Zf∣A0⟩Zf∣A1⟩=∣A0⟩=−∣A1⟩
Pangalawa, mayroon tayong operation na H⊗nZORH⊗n.
Ang operation na ZOR ay tinukoy bilang
ZOR∣x⟩=⎩⎨⎧∣x⟩−∣x⟩x=0nx=0n,
muli para sa bawat string na x∈Σn, at ang isang maginhawang alternatibong paraan ng pagpapahayag ng operation na ito ay ganito:
ZOR=2∣0n⟩⟨0n∣−I.
Ang isang simpleng paraan para i-verify na ang expression na ito ay naaayon sa kahulugan ng ZOR ay ang suriin ang kilos nito sa mga standard basis state.
Ang operation na H⊗nZORH⊗n ay maaaring isulat nang ganito:
H⊗nZORH⊗n=2H⊗n∣0n⟩⟨0n∣H⊗n−I=2∣u⟩⟨u∣−I,
gamit ang parehong notasyon, ∣u⟩, na ginamit natin sa itaas para sa uniform superposition sa lahat ng n-bit string.
At ngayon mayroon na tayong kailangan para kalkulahin ang kilos ng G sa ∣A0⟩ at ∣A1⟩.
Una, kalkulahin natin ang kilos ng G sa ∣A0⟩.
Tulad ng nabanggit na natin, ang estado ng Q bago pa mangyari ang hakbang 2 ay nasa loob ng two-dimensional space na spanned ng ∣A0⟩ at ∣A1⟩, at napatunayan na natin na ang G ay nagmamapa ng anumang vector sa space na ito patungo sa isa pang vector sa parehong space.
Ibig sabihin nito, para sa layunin ng pagsusuri, maaari nating itutok ang ating atensyon nang eksklusibo sa subspace na ito.
Para mas maunawaan kung ano ang nangyayari sa loob ng two-dimensional space na ito, ipahayag natin ang kilos ng G sa space na ito bilang isang matrix,
kung saan ang una at ikalawang row/column ay naaayon sa ∣A0⟩ at ∣A1⟩, ayon sa pagkakasunod.
Sa ngayon sa seryeng ito, palagi tayong nag-uugnay ng mga row at column ng mga matrix sa mga classical state ng isang sistema, ngunit ang mga matrix ay maaari ring gamitin para ilarawan ang mga kilos ng mga linear mapping sa iba't ibang basis tulad ng mayroon tayo dito.
Bagaman hindi ito halatang makikita sa unang tingin, ang matrix na M ay ang makukuha natin sa pamamagitan ng pag-square ng isang mas simpleng matrix.
Ang angle na θ ay magkakaroon ng napakahalagang papel sa pagsusuring susunod, kaya sulit na bigyang-diin ang kahalagahan nito dito habang nakikita natin ito sa unang pagkakataon.
Sa liwanag ng expression na ito ng matrix, mapapansing
Ito ay dahil ang pag-rotate ng angle na θ nang dalawang beses ay katumbas ng pag-rotate ng angle na 2θ.
Ang isa pang paraan para makita ito ay ang gamitin ang alternatibong expression na
θ=cos−1(N∣A0∣),
kasama ang mga double angle formula mula sa trigonometry:
cos(2θ)sin(2θ)=cos2(θ)−sin2(θ)=2sin(θ)cos(θ).
Sa buod, ang estado ng register na Q sa simula ng hakbang 2 ay
at ang epekto ng pag-apply ng G sa estado na ito ay ang pag-rotate nito ng angle na 2θ sa loob ng space na spanned ng ∣A0⟩ at ∣A1⟩.
Halimbawa, mayroon tayong
Iuugnay natin ngayon ang pagsusuring dumaan tayo kanina sa isang geometric na larawan.
Ang ideya ay ang operation na G ay produkto ng dalawang reflection,
Zf at H⊗nZORH⊗n.
At ang net effect ng pagsasagawa ng dalawang reflection ay ang pagsasagawa ng isang rotation.
Magsimula tayo sa Zf.
Tulad ng naobserbahan na natin kanina, mayroon tayong
Zf∣A0⟩Zf∣A1⟩=∣A0⟩=−∣A1⟩.
Sa loob ng two-dimensional vector space na spanned ng ∣A0⟩ at ∣A1⟩,
ito ay isang reflection tungkol sa linya na parallel sa ∣A0⟩, na tatawagin nating L1.
Narito ang isang figure na naglalarawan ng kilos ng reflection na ito sa isang hypothetical unit vector na ∣ψ⟩,
na inaasahan nating isang tunay na linear combination ng ∣A0⟩ at ∣A1⟩.
Pangalawa, mayroon tayong operation na H⊗nZORH⊗n, na nakita na nating maaaring isulat bilang
H⊗nZORH⊗n=2∣u⟩⟨u∣−I.
Ito rin ay isang reflection, sa pagkakataong ito tungkol sa linya L2 na parallel sa vector na ∣u⟩.
Narito ang isang figure na naglalarawan ng kilos ng reflection na ito sa isang unit vector na ∣ψ⟩.
Kapag sinama natin ang dalawang reflection na ito, nakakakuha tayo ng rotation — ng dalawang beses ang angle sa pagitan ng mga linya ng reflection — tulad ng inilalarawan ng figure na ito.
Ipinapaliwanag nito, sa geometric na termino, kung bakit ang epekto ng Grover operation ay ang pag-rotate ng mga linear combination ng ∣A0⟩ at ∣A1⟩ ng angle na 2θ.