Přeskočit na hlavní obsah

Volba počtu iterací

Zjistili jsme, že stavový vektor registru Q\mathsf{Q} v Groverově algoritmu zůstává po provedení inicializačního kroku ve dvourozměrném podprostoru generovaném vektory ∣A0⟩\vert A_0\rangle a ∣A1⟩\vert A_1\rangle.

Cílem je najít prvek x∈A1x\in A_1, a tohoto cíle dosáhneme, pokud dokážeme získat stav ∣A1⟩\vert A_1\rangle — protože pokud tento stav změříme, máme zaručeno, že dostaneme výsledek měření x∈A1x\in A_1. Vzhledem k tomu, že stav Q\mathsf{Q} po tt iteracích v kroku 2 je

Gt∣u⟩=cos⁡((2t+1)θ)∣A0⟩+sin⁡((2t+1)θ)∣A1⟩,G^t \vert u \rangle = \cos\bigl((2t + 1)\theta\bigr) \vert A_0\rangle + \sin\bigl((2t + 1)\theta\bigr) \vert A_1\rangle,

měli bychom zvolit tt tak, aby

⟨A1∣Gt∣u⟩=sin⁡((2t+1)θ)\langle A_1 \vert G^t \vert u \rangle = \sin((2t + 1)\theta)

bylo co nejblíže 11 v absolutní hodnotě, abychom maximalizovali pravděpodobnost získání x∈A1x\in A_1 z měření. Pro libovolný úhel θ∈(0,2π)\theta \in (0,2\pi) hodnota sin⁡((2t+1)θ)\sin((2t + 1)\theta) osciluje s rostoucím tt, i když nemusí být nutně periodická — není zaručeno, že někdy dostaneme stejnou hodnotu dvakrát.

Kromě toho, že chceme, aby pravděpodobnost získání prvku x∈A1x\in A_1 z měření byla velká, bychom přirozeně chtěli zvolit tt co nejmenší, protože tt aplikací operace GG vyžaduje tt dotazů na funkci ff. Protože se snažíme, aby sin⁡((2t+1)θ)\sin( (2t + 1) \theta) bylo blízko 11 v absolutní hodnotě, přirozeným způsobem je zvolit tt tak, aby

(2t+1)θ≈π2.(2t + 1) \theta \approx \frac{\pi}{2}.

Řešením pro tt dostaneme

t≈π4θ−12.t \approx \frac{\pi}{4\theta} - \frac{1}{2}.

Samozřejmě tt musí být celé číslo, takže tuto hodnotu nemusíme nutně trefit přesně — ale co můžeme udělat, je vzít nejbližší celé číslo k této hodnotě, což je

t=⌊π4θ⌋.t = \Bigl\lfloor \frac{\pi}{4\theta} \Bigr\rfloor.

Toto je doporučený počet iterací pro Groverův algoritmus. Jak budeme pokračovat v analýze, uvidíme, že blízkost tohoto celého čísla k cílové hodnotě přirozeně ovlivňuje výkon algoritmu.

(Jen na okraj — pokud se cílová hodnota π/(4θ)−1/2\pi/(4\theta) - 1/2 nachází přesně uprostřed mezi dvěma celými čísly, tento výraz pro tt dostaneme zaokrouhlením nahoru. Alternativně bychom mohli zaokrouhlit dolů, což dává smysl, protože to znamená o jeden dotaz méně — ale to je vedlejší a pro účely této lekce nepodstatné.)

Připomeňme, že hodnota úhlu θ\theta je dána vzorcem

θ=sin⁡−1(∣A1∣N),\theta = \sin^{-1}\biggl(\sqrt{\frac{\vert A_1\vert}{N}}\biggr),

takže doporučený počet iterací tt závisí na počtu řetězců v A1A_1. To představuje problém, pokud nevíme, kolik máme řešení, jak si probereme později.

Nejprve se zaměřme na situaci, kdy existuje jediný řetězec xx takový, že f(x)=1f(x)=1. Jinak řečeno, uvažujeme instanci problému jednoznačného hledání (Unique search). V tomto případě máme

θ=sin⁡−1(1N),\theta = \sin^{-1}\biggl( \sqrt{\frac{1}{N}} \biggr),

což se dá pohodlně aproximovat jako

θ=sin⁡−1(1N)≈1N\theta = \sin^{-1}\biggl( \sqrt{\frac{1}{N}} \biggr) \approx \sqrt{\frac{1}{N}}

pro velká N.N. Pokud dosadíme θ=1/N\theta = 1/\sqrt{N} do výrazu

t=⌊π4θ⌋t = \Bigl\lfloor \frac{\pi}{4\theta} \Bigr\rfloor

dostaneme

t=⌊π4N⌋.t = \Bigl\lfloor \frac{\pi}{4}\sqrt{N} \Bigr\rfloor.

Připomeňme, že tt je nejen počet provedení operace GG, ale také počet dotazů na funkci ff vyžadovaných algoritmem, takže jsme na dobré cestě k algoritmu, který vyžaduje O(N)O(\sqrt{N}) dotazů.

Nyní prozkoumáme, jak dobře doporučená volba tt funguje. Pravděpodobnost, že závěrečné měření dá jedinečné řešení, lze explicitně vyjádřit jako

p(N,1)=sin⁡2((2t+1)θ).p(N,1) = \sin^2 \bigl( (2t + 1) \theta \bigr).

První argument, N,N, označuje počet položek, přes které hledáme, a druhý argument, který je v tomto případě 11, označuje počet řešení. O něco později použijeme stejnou notaci obecněji, kde bude více řešení.

Zde je tabulka pravděpodobností úspěchu pro rostoucí hodnoty N=2nN = 2^n.

Np(N,1)20.500000000041.000000000080.9453125000160.9613189697320.9991823155640.99658568081280.99561986572560.99994704215120.999448026210240.999461244720480.999996847840960.999945346181920.9999157752163840.9999997811327680.9999868295655360.9999882596\begin{array}{ll} N & p(N,1)\\ \hline 2 & 0.5000000000\\ 4 & 1.0000000000\\ 8 & 0.9453125000\\ 16 & 0.9613189697\\ 32 & 0.9991823155\\ 64 & 0.9965856808\\ 128 & 0.9956198657\\ 256 & 0.9999470421\\ 512 & 0.9994480262\\ 1024 & 0.9994612447\\ 2048 & 0.9999968478\\ 4096 & 0.9999453461\\ 8192 & 0.9999157752\\ 16384 & 0.9999997811\\ 32768 & 0.9999868295\\ 65536 & 0.9999882596 \end{array}

Všimni si, že tyto pravděpodobnosti nejsou striktně rostoucí. Zejména máme zajímavou anomálii pro N=4N=4, kde získáme řešení s jistotou. Obecně však lze dokázat, že

p(N,1)≥1−1Np(N,1) \geq 1 - \frac{1}{N}

pro všechna NN, takže pravděpodobnost úspěchu jde k 11 v limitě, když NN roste, jak naznačují hodnoty výše. To je skvělé!

Všimni si ale, že i slabý odhad jako p(N,1)≥1/2p(N,1) \geq 1/2 potvrzuje užitečnost Groverova algoritmu. Ať už dostaneme jakýkoli výsledek měření xx z jednoho spuštění procedury, vždy můžeme ověřit, zda f(x)=1f(x) = 1 pomocí jediného dotazu na ff. A pokud nezískáme jediný řetězec xx, pro který f(x)=1f(x) = 1, s pravděpodobností nejvýše 1/21/2 při jednom spuštění procedury, pak po mm nezávislých spuštěních procedury bude pravděpodobnost, že jsme tento jediný řetězec xx nezískali, nejvýše 2−m2^{-m}. To znamená, že pomocí O(mN)O(m \sqrt{N}) dotazů na ff získáme jediné řešení xx s pravděpodobností alespoň 1−2−m1 - 2^{-m}. Použitím lepšího odhadu p(N,1)≥1−1/Np(N,1) \geq 1 - 1/N zjistíme, že pravděpodobnost nalezení x∈A1x\in A_1 touto metodou je ve skutečnosti alespoň 1−N−m1 - N^{-m}.

Více řešení​

Jak se mění počet prvků v A1A_1, mění se i úhel θ\theta, což může mít významný vliv na pravděpodobnost úspěchu algoritmu. Pro stručnost zapišme s=∣A1∣s = \vert A_1 \vert pro počet řešení a stejně jako dříve budeme předpokládat, že s≥1s\geq 1.

Jako motivační příklad si představ, že máme s=4s = 4 řešení místo jediného řešení, které jsme uvažovali výše. To znamená, že

θ=sin⁡−1(4N),\theta = \sin^{-1}\biggl( \sqrt{\frac{4}{N}} \biggr),

což je přibližně dvojnásobek úhlu, který jsme měli v případě ∣A1∣=1,\vert A_1 \vert = 1, když je NN velké. Předpokládej, že bychom nevěděli nic lepšího a zvolili stejnou hodnotu tt jako v případě s jediným řešením:

t=⌊π4sin⁡−1(1/N)⌋.t = \Biggl\lfloor \frac{\pi}{4\sin^{-1}\bigl(1/\sqrt{N}\bigr)}\Biggr\rfloor.

Efekt bude katastrofální, jak ukazuje následující tabulka pravděpodobností.

NSuccess probability41.000000000080.5000000000160.2500000000320.0122070313640.02038076891280.01445307582560.00007050585120.001931074110240.002300908320480.000007750640960.000230150281920.0003439882163840.0000007053327680.0000533810655360.0000472907\begin{array}{ll} N & \text{Success probability}\\ \hline 4 & 1.0000000000\\ 8 & 0.5000000000\\ 16 & 0.2500000000\\ 32 & 0.0122070313\\ 64 & 0.0203807689\\ 128 & 0.0144530758\\ 256 & 0.0000705058\\ 512 & 0.0019310741\\ 1024 & 0.0023009083\\ 2048 & 0.0000077506\\ 4096 & 0.0002301502\\ 8192 & 0.0003439882\\ 16384 & 0.0000007053\\ 32768 & 0.0000533810\\ 65536 & 0.0000472907 \end{array}

Tentokrát pravděpodobnost úspěchu jde k 00, když NN jde k nekonečnu. To se děje proto, že efektivně rotujeme dvakrát rychleji než v případě s jediným řešením, takže přeletíme přes cíl ∣A1⟩\vert A_1\rangle a skončíme blízko −∣A0⟩-\vert A_0\rangle.

Pokud však místo toho použijeme doporučenou volbu tt, což je

t=⌊π4θ⌋t = \Bigl\lfloor \frac{\pi}{4\theta}\Bigr\rfloor

pro

θ=sin⁡−1(sN),\theta = \sin^{-1}\biggl( \sqrt{\frac{s}{N}} \biggr),

pak bude výkon lepší. Přesněji řečeno, s touto volbou tt dojde k úspěchu s vysokou pravděpodobností.

Np(N,4)41.000000000080.5000000000161.0000000000320.9453125000640.96131896971280.99918231552560.99658568085120.995619865710240.999947042120480.999448026240960.999461244781920.9999968478163840.9999453461327680.9999157752655360.9999997811\begin{array}{ll} N & p(N,4)\\ \hline 4 & 1.0000000000\\ 8 & 0.5000000000\\ 16 & 1.0000000000\\ 32 & 0.9453125000\\ 64 & 0.9613189697\\ 128 & 0.9991823155\\ 256 & 0.9965856808\\ 512 & 0.9956198657\\ 1024 & 0.9999470421\\ 2048 & 0.9994480262\\ 4096 & 0.9994612447\\ 8192 & 0.9999968478\\ 16384 & 0.9999453461\\ 32768 & 0.9999157752\\ 65536 & 0.9999997811 \end{array}

Zobecněním toho, co bylo tvrzeno dříve, lze dokázat, že

p(N,s)≥1−sN,p(N,s) \geq 1 - \frac{s}{N},

kde používáme notaci navrženou dříve: p(N,s)p(N,s) označuje pravděpodobnost, že Groverův algoritmus spuštěný po tt iteracích odhalí řešení, když existuje celkem ss řešení z NN možností.

Tato dolní mez 1−s/N1 - s/N pro pravděpodobnost úspěchu je poněkud zvláštní v tom, že více řešení znamená horší dolní mez — ale za předpokladu, že ss je výrazně menší než NN, přesto usuzujeme, že pravděpodobnost úspěchu je poměrně vysoká. Jako dříve, pouhá skutečnost, že p(N,s)p(N,s) je dostatečně velké, implikuje užitečnost algoritmu.

Také se stává, že

p(N,s)≥sN.p(N,s) \geq \frac{s}{N}.

Tato dolní mez popisuje pravděpodobnost, že řetězec x∈Σnx\in\Sigma^n vybraný rovnoměrně náhodně je řešením — takže Groverův algoritmus si vždy vede alespoň tak dobře jako náhodný odhad. (Ve skutečnosti, když t=0t=0, Groverův algoritmus je náhodným odhadem.)

Nyní se podívejme na počet iterací (a tedy počet dotazů)

t=⌊π4θ⌋,t = \Bigl\lfloor \frac{\pi}{4\theta}\Bigr\rfloor,

pro

θ=sin⁡−1(sN).\theta = \sin^{-1}\biggl(\sqrt{\frac{s}{N}}\biggr).

Pro každé α∈[0,1]\alpha \in [0,1] platí, že sin⁡−1(α)≥α\sin^{-1}(\alpha)\geq \alpha, a tedy

θ=sin⁡−1(sN)≥sN.\theta = \sin^{-1}\left(\sqrt{\frac{s}{N}}\right) \geq \sqrt{\frac{s}{N}}.

To implikuje, že

t≤π4θ≤π4Ns.t \leq \frac{\pi}{4\theta} \leq \frac{\pi}{4}\sqrt{\frac{N}{s}}.

To se projeví jako úspora v počtu dotazů s rostoucím ss. Konkrétně, počet potřebných dotazů je

O(Ns).O\biggl(\sqrt{\frac{N}{s}}\biggr).

Neznámý počet řešení​

Pokud je počet řešení s=∣A1∣s = \vert A_1 \vert neznámý, je potřeba jiný přístup, protože v této situaci nemáme žádnou znalost ss, která by nám pomohla při volbě tt. Existuje ve skutečnosti více přístupů.

Jeden jednoduchý přístup je zvolit

t∈{1,…,⌊πN/4⌋}t \in \Bigl\{ 1,\ldots,\bigl\lfloor\pi\sqrt{N}/4\bigr\rfloor \Bigr\}

rovnoměrně náhodně. Volba tt tímto způsobem vždy najde řešení (za předpokladu, že existuje) s pravděpodobností větší než 40 %, i když to není zřejmé a vyžaduje analýzu, která zde nebude zahrnuta. Dává to však smysl, zvláště když uvažujeme geometrický obrázek: rotace stavu Q\mathsf{Q} náhodným počtem opakování je podobná volbě náhodného jednotkového vektoru v prostoru generovaném ∣A0⟩\vert A_0\rangle a ∣A1⟩\vert A_1\rangle, u kterého je pravděpodobné, že koeficient u ∣A1⟩\vert A_1\rangle je přiměřeně velký. Opakováním této procedury a kontrolou výsledku stejným způsobem jako dříve lze pravděpodobnost nalezení řešení přiblížit velmi blízko k 11.

Existuje vylepšená metoda, která najde řešení, pokud existuje, pomocí O(N/s)O(\sqrt{N/s}) dotazů, i když počet řešení ss není znám, a vyžaduje O(N)O(\sqrt{N}) dotazů k určení, že neexistují žádná řešení, když s=0s=0.

Základní myšlenka je volit tt rovnoměrně náhodně z množiny {1,…,T}\{1,\ldots,T\} iterativně, pro rostoucí hodnoty TT. Konkrétně můžeme začít s T=1T = 1 a zvyšovat ho exponenciálně, přičemž proces vždy ukončíme, jakmile je nalezeno řešení, a omezíme TT shora, abychom neplýtvali dotazy, když řešení neexistuje. Tento proces využívá skutečnosti, že méně dotazů je potřeba, když existuje více řešení. Je však třeba dát pozor na vyvážení rychlosti růstu TT s pravděpodobností úspěchu pro každou iteraci. (Volba T←⌈54T⌉T \leftarrow \lceil \frac{5}{4}T\rceil funguje, jak ukazuje analýza. Zdvojnásobení TT však ne — to se ukazuje jako příliš rychlý nárůst.)

Triviální případy​

V celé analýze, kterou jsme právě prošli, jsme předpokládali, že počet řešení je nenulový. Odkazováním na vektory

∣A0⟩=1∣A0∣∑x∈A0∣x⟩∣A1⟩=1∣A1∣∑x∈A1∣x⟩\begin{aligned} \vert A_0\rangle &= \frac{1}{\sqrt{\vert A_0\vert}} \sum_{x\in A_0} \vert x\rangle \\ \vert A_1\rangle &= \frac{1}{\sqrt{\vert A_1\vert}} \sum_{x\in A_1} \vert x\rangle \end{aligned}

jsme implicitně předpokládali, že A0A_0 i A1A_1 jsou neprázdné. Zde stručně zvážíme, co se stane, když jedna z těchto množin je prázdná.

Než se pustíme do analýzy, uvědomme si zřejmou věc: pokud je každý řetězec x∈Σnx\in\Sigma^n řešením, pak uvidíme řešení při měření; a pokud žádná řešení neexistují, neuvidíme žádné. V jistém smyslu není potřeba jít hlouběji.

Můžeme však rychle ověřit matematiku pro tyto triviální případy. Situace, kdy jedna z množin A0A_0 a A1A_1 je prázdná, nastane, když je ff konstantní; A1A_1 je prázdná, když f(x)=0f(x) = 0 pro každé x∈Σn,x\in\Sigma^n, a A0A_0 je prázdná, když f(x)=1f(x) = 1 pro každé x∈Σn.x\in\Sigma^n. To znamená, že

Zf∣u⟩=±∣u⟩,Z_f \vert u\rangle = \pm \vert u\rangle,

a proto

G∣u⟩=(2∣u⟩⟨u∣−I)Zf∣u⟩=±(2∣u⟩⟨u∣−I)∣u⟩=±∣u⟩.\begin{aligned} G \vert u \rangle & = \bigl( 2 \vert u\rangle \langle u \vert - \mathbb{I}\bigr) Z_f\vert u\rangle \\ & = \pm \bigl( 2 \vert u\rangle \langle u \vert - \mathbb{I}\bigr) \vert u\rangle \\ & = \pm \vert u\rangle. \end{aligned}

Takže bez ohledu na počet iterací tt, které v těchto případech provedeme, měření vždy odhalí rovnoměrně náhodný řetězec x∈Σnx\in\Sigma^n.