Přeskočit na hlavní obsah

Popis Groverova algoritmu

V této sekci popíšeme Groverův algoritmus. Začneme diskusí o fázových dotazovacích Gate a o tom, jak je sestrojit, poté přejdeme k popisu samotného Groverova algoritmu. Na závěr stručně probereme, jak se tento algoritmus přirozeně aplikuje na vyhledávání.

Fázové dotazovací Gate

Groverův algoritmus využívá operace známé jako fázové dotazovací Gate. Na rozdíl od běžného dotazovacího Gate Uf,U_f, definovaného pro danou funkci ff obvyklým způsobem popsaným výše, je fázový dotazovací Gate pro funkci ff definován jako

Zfx=(1)f(x)xZ_f \vert x\rangle = (-1)^{f(x)} \vert x\rangle

pro každý řetězec xΣn.x\in\Sigma^n.

Operaci ZfZ_f lze implementovat pomocí jednoho dotazovacího Gate Uf,U_f, jak naznačuje tento diagram:

A quantum circuit implementing a Z_f gate using one query gate together with the phase kickback phenomenon

Tato implementace využívá jev fázového zpětného rázu (phase kickback) a vyžaduje, aby byl k dispozici jeden pracovní Qubit inicializovaný do stavu \vert -\rangle. Tento Qubit zůstane ve stavu \vert - \rangle i po dokončení implementace a může být znovu použit (například pro implementaci dalších ZfZ_f Gate) nebo jednoduše zahozen.

Kromě operace ZfZ_f budeme také používat fázový dotazovací Gate pro nn-bitovou funkci OR, která je definována následovně pro každý řetězec xΣn.x\in\Sigma^n.

OR(x)={0x=0n1x0n\mathrm{OR}(x) = \begin{cases} 0 & x = 0^n\\[0.5mm] 1 & x \neq 0^n \end{cases}

Explicitně, fázový dotazovací Gate pro nn-bitovou funkci OR funguje takto:

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

Pro upřesnění, takto ZORZ_{\mathrm{OR}} funguje na stavech standardní báze; jeho chování na libovolných stavech je z tohoto výrazu určeno linearitou.

Operaci ZORZ_{\mathrm{OR}} lze implementovat jako kvantový Circuit tak, že začneme s Booleovským obvodem pro funkci OR, poté sestrojíme operaci UORU_{\mathrm{OR}} (tedy standardní dotazovací Gate pro nn-bitovou funkci OR) pomocí postupu popsaného v lekci Základy kvantových algoritmů a nakonec operaci ZORZ_{\mathrm{OR}} pomocí jevu fázového zpětného rázu popsaného výše. Všimni si, že operace ZORZ_{\mathrm{OR}} nezávisí na funkci f,f, a proto ji lze implementovat kvantovým Circuit bez jakýchkoli dotazovacích Gate.

Popis algoritmu

Nyní, když máme dvě operace ZfZ_f a ZOR,Z_{\mathrm{OR}}, můžeme popsat Groverův algoritmus.

Algoritmus odkazuje na číslo t,t, které je počtem iterací, které provádí (a tedy počtem dotazů na funkci f,f, které vyžaduje). Toto číslo tt není v Groverově algoritmu, jak ho popisujeme, specifikováno, a později v lekci probereme, jak ho lze zvolit.

Grover's algorithm
  1. Inicializuj nn-Qubitový registr Q\mathsf{Q} do stavu samých nul 0n\vert 0^n \rangle a poté aplikuj Hadamardovu operaci na každý Qubit registru Q.\mathsf{Q}.
  2. Aplikuj tt-krát unitární operaci G=HnZORHnZfG = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f na registr Q\mathsf{Q}
  3. Změř Qubity registru Q\mathsf{Q} měřením ve standardní bázi a vypiš výsledný řetězec.

Operace G=HnZORHnZfG = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f iterovaná v kroku 2 bude po zbytek této lekce nazývána Groverova operace. Zde je reprezentace Groverovy operace jako kvantový Circuit pro n=7 ⁣:n=7\!:

A quantum circuit representation of the Grover operation

V tomto diagramu je operace ZfZ_f zobrazena jako větší než ZOR,Z_{\mathrm{OR}}, což slouží jako neformální vizuální nápověda naznačující, že se pravděpodobně jedná o nákladnější operaci. Konkrétně, když pracujeme v rámci dotazovacího modelu, ZfZ_f vyžaduje jeden dotaz, zatímco ZORZ_{\mathrm{OR}} nevyžaduje žádné dotazy. Pokud místo toho máme Booleovský obvod pro funkci ff a převedeme ho na kvantový Circuit pro Zf,Z_f, můžeme rozumně očekávat, že výsledný kvantový Circuit bude větší a složitější než Circuit pro ZOR.Z_{\mathrm{OR}}.

Zde je diagram kvantového Circuit pro celý algoritmus při n=7n=7 a t=3.t=3. Pro větší hodnoty tt stačí přidat další instance Groverovy operace bezprostředně před měření.

A quantum circuit for Grover's algorithm when t=3

Groverův algoritmus lze na problém Search aplikovat následovně:

  • Zvol číslo tt v kroku 2. (Toto je probráno později v lekci.)
  • Spusť Groverův algoritmus na funkci ff s jakoukoli zvolenou hodnotou t,t, čímž získáš řetězec xΣn.x\in\Sigma^n.
  • Dotázej se funkce ff na řetězec x,x, abys zjistil, zda je platným řešením:
    • Pokud f(x)=1,f(x) = 1, pak jsme nalezli řešení, takže můžeme skončit a vypsat x.x.
    • V opačném případě, pokud f(x)=0,f(x) = 0, můžeme buď spustit proceduru znovu, případně s jinou volbou t,t, nebo se můžeme rozhodnout vzdát a vypsat „žádné řešení."

Jakmile zanalyzujeme, jak Groverův algoritmus funguje, uvidíme, že při volbě t=O(N)t = O(\sqrt{N}) získáme řešení našeho vyhledávacího problému (pokud existuje) s vysokou pravděpodobností.