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 xA1,x\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í xA1.x\in A_1. Vzhledem k tomu, že stav Q\mathsf{Q} po tt iteracích v kroku 2 je

Gtu=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

A1Gtu=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í xA1x\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 xA1x\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 f.f. 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

θ=sin1(A1N),\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 A1.A_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)=1.f(x)=1. Jinak řečeno, uvažujeme instanci problému jednoznačného hledání (Unique search). V tomto případě máme

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

což se dá pohodlně aproximovat jako

θ=sin1(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)=sin2((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=2n.N = 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=4,N=4, kde získáme řešení s jistotou. Obecně však lze dokázat, že

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

pro všechna N,N, 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 f.f. A pokud nezískáme jediný řetězec x,x, pro který f(x)=1,f(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 2m.2^{-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ň 12m.1 - 2^{-m}. Použitím lepšího odhadu p(N,1)11/Np(N,1) \geq 1 - 1/N zjistíme, že pravděpodobnost nalezení xA1x\in A_1 touto metodou je ve skutečnosti alespoň 1Nm.1 - N^{-m}.

Více řešení

Jak se mění počet prvků v A1,A_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=A1s = \vert A_1 \vert pro počet řešení a stejně jako dříve budeme předpokládat, že s1.s\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

θ=sin1(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=π4sin1(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 0,0, 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 t,t, což je

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

pro

θ=sin1(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)1sN,p(N,s) \geq 1 - \frac{s}{N},

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

Tento dolní odhad 1s/N1 - s/N pro pravděpodobnost úspěchu je poněkud zvláštní v tom, že více řešení znamená horší dolní odhad — ale za předpokladu, že ss je výrazně menší než N,N, přesto usoudíme, že pravděpodobnost úspěchu je přiměřeně vysoká. Stejně jako dříve, samotný fakt, že p(N,s)p(N,s) je přiměřeně velké, znamená užitečnost algoritmu.

Také platí, že

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

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

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

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

pro

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

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

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

Z toho plyne, že

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

To se překládá do úspory počtu dotazů s růstem s.s. Konkrétně je potřebný počet dotazů

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

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

Pokud je počet řešení s=A1s = \vert A_1 \vert neznámý, je potřeba jiný přístup, protože v této situaci nemáme žádnou znalost s,s, která by nám pomohla při volbě t.t. 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 1.1.

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=0.s=0.

Základní myšlenka je volit tt rovnoměrně náhodně z množiny {1,,T}\{1,\ldots,T\} iterativně, pro rostoucí hodnoty T.T. 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 T54TT \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=1A0xA0xA1=1A1xA1x\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

Zfu=±u,Z_f \vert u\rangle = \pm \vert u\rangle,

a proto

Gu=(2uuI)Zfu=±(2uuI)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í t,t, které v těchto případech provedeme, měření vždy odhalí rovnoměrně náhodný řetězec xΣn.x\in\Sigma^n.