Descrierea algoritmului lui Grover
În această secțiune, vom descrie algoritmul lui Grover. Vom începe prin a discuta despre porțile de interogare în fază și cum se construiesc, urmate de descrierea algoritmului lui Grover în sine. În final, vom discuta pe scurt cum acest algoritm se aplică în mod natural la căutare.
Porți de interogare în fază
Algoritmul lui Grover utilizează operații cunoscute sub numele de porți de interogare în fază. Spre deosebire de o poartă de interogare obișnuită definită pentru o funcție dată în modul uzual descris anterior, o poartă de interogare în fază pentru funcția este definită ca
pentru orice șir
Operația poate fi implementată folosind o singură poartă de interogare , așa cum sugerează această diagramă:
Această implementare utilizează fenomenul de retroacțiune de fază și necesită ca un qubit de spațiu de lucru, inițializat în starea , să fie disponibil. Acest qubit rămâne în starea după finalizarea implementării și poate fi reutilizat (de exemplu, pentru a implementa porți ulterioare) sau pur și simplu ignorat.
Pe lângă operația vom folosi și o poartă de interogare în fază pentru funcția OR pe biți, definită astfel pentru fiecare șir
Explicit, poarta de interogare în fază pentru funcția OR pe biți operează astfel:
Spre a fi clar, acesta este modul în care operează pe stările bazei standard; comportamentul său pe stări arbitrare este determinat din această expresie prin liniaritate.
Operația poate fi implementată ca un Circuit cuantic începând cu un circuit boolean pentru funcția OR, construind apoi o operație (adică o poartă de interogare standard pentru funcția OR pe biți) folosind procedura descrisă în lecția Fundamente algoritmice cuantice, și în final o operație folosind fenomenul de retroacțiune de fază descris mai sus. Observă că operația nu depinde de funcția și, prin urmare, poate fi implementată printr-un Circuit cuantic fără nicio poartă de interogare.
Descrierea algoritmului
Acum că avem cele două operații și putem descrie algoritmul lui Grover.
Algoritmul se referă la un număr care reprezintă numărul de iterații pe care le efectuează (și, prin urmare, numărul de interogări ale funcției pe care le necesită). Acest număr nu este specificat de algoritmul lui Grover, așa cum îl descriem, și vom discuta mai târziu în lecție cum poate fi ales.
Operația iterată în pasul 2 va fi numită operația Grover pe parcursul restului acestei lecții. Iată o reprezentare ca Circuit cuantic a operației Grover când
În această diagramă, operația este reprezentată ca fiind mai mare decât ca indiciu vizual informal, sugerând că este probabil operația mai costisitoare. În special, atunci când lucrăm în modelul de interogare, necesită o interogare, în timp ce nu necesită nicio interogare. Dacă în schimb avem un circuit boolean pentru funcția și îl convertim într-un Circuit cuantic pentru ne putem aștepta în mod rezonabil că Circuitul cuantic rezultat va fi mai mare și mai complex decât unul pentru
Iată o diagramă a unui Circuit cuantic pentru întregul algoritm când și Pentru valori mai mari ale lui putem insera pur și simplu instanțe suplimentare ale operației Grover imediat înaintea măsurătorilor.
Aplicare la căutare
Algoritmul lui Grover poate fi aplicat problemei de Căutare astfel:
- Alege numărul în pasul 2. (Acest lucru este discutat mai târziu în lecție.)
- Rulează algoritmul lui Grover pe funcția folosind orice alegere am făcut pentru pentru a obține un șir
- Interoghează funcția pe șirul pentru a vedea dacă este o soluție validă:
- Dacă atunci am găsit o soluție, deci putem opri și returna
- Altfel, dacă putem fie să rulăm procedura din nou, posibil cu o altă alegere pentru fie să decidem să renunțăm și să returnăm „nicio soluție."
Odată ce am analizat cum funcționează algoritmul lui Grover, vom vedea că luând obținem o soluție la problema noastră de căutare (dacă există una) cu probabilitate mare.