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 hradlech 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í hradla

Groverův algoritmus využívá operace známé jako fázová dotazovací hradla. Na rozdíl od běžného dotazovacího hradla Uf,U_f, definovaného pro danou funkci ff obvyklým způsobem popsaným výše, je fázové dotazovací hradlo pro funkci ff definováno 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 hradla 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 hradel) nebo jednoduše zahozen.

Kromě operace ZfZ_f budeme také používat fázové dotazovací hradlo 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í hradlo 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ý obvod tak, že začneme s Booleovským obvodem pro funkci OR, poté sestrojíme operaci UORU_{\mathrm{OR}} (tedy standardní dotazovací hradlo 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 obvodem bez jakýchkoli dotazovacích hradel.

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ý obvod 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ý obvod pro Zf,Z_f, můžeme rozumně očekávat, že výsledný kvantový obvod bude větší a složitější než obvod pro ZOR.Z_{\mathrm{OR}}.

Zde je diagram kvantového obvodu 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í.