Přeskočit na hlavní obsah
Tento projekt je v betě. Našel jsi chybu? Otevřít issue na GitHubu. Máš otázku nebo nápad? Zeptej se v Discussions — rádi si poslechneme tvou zpětnou vazbu!
Jaká je kvalita překladu na této stránce?

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 UfU_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

Zf∣x⟩=(−1)f(x)∣x⟩Z_f \vert x\rangle = (-1)^{f(x)} \vert x\rangle

pro každý řetězec x∈Σnx\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∈Σnx\in\Sigma^n.

OR(x)={0x=0n1x≠0n\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:

ZOR∣x⟩={∣x⟩x=0n−∣x⟩x≠0n.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 ZORZ_{\mathrm{OR}}, můžeme popsat Groverův algoritmus.

Algoritmus odkazuje na číslo tt, které je počtem iterací, které provádí (a tedy počtem dotazů na funkci ff, 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=H⊗nZORH⊗nZfG = 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=H⊗nZORH⊗nZfG = 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=3t=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 tt, čímž získáš řetězec x∈Σnx\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)=1f(x) = 1, pak jsme nalezli řešení, takže můžeme skončit a vypsat xx.

    • V opačném případě, pokud f(x)=0f(x) = 0, můžeme buď spustit proceduru znovu, případně s jinou volbou tt, 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í.