Volba počtu iterací
Zjistili jsme, že stavový vektor registru v Groverově algoritmu zůstává po provedení inicializačního kroku ve dvourozměrném podprostoru generovaném vektory a .
Cílem je najít prvek a tohoto cíle dosáhneme, pokud dokážeme získat stav — protože pokud tento stav změříme, máme zaručeno, že dostaneme výsledek měření Vzhledem k tomu, že stav po iteracích v kroku 2 je
měli bychom zvolit tak, aby
bylo co nejblíže v absolutní hodnotě, abychom maximalizovali pravděpodobnost získání z měření. Pro libovolný úhel hodnota osciluje s rostoucím , 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 z měření byla velká, bychom přirozeně chtěli zvolit co nejmenší, protože aplikací operace vyžaduje dotazů na funkci Protože se snažíme, aby bylo blízko v absolutní hodnotě, přirozeným způsobem je zvolit tak, aby
Řešením pro dostaneme
Samozřejmě 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
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 nachází přesně uprostřed mezi dvěma celými čísly, tento výraz pro 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 je dána vzorcem
takže doporučený počet iterací závisí na počtu řetězců v To představuje problém, pokud nevíme, kolik máme řešení, jak si probereme později.
Jednoznačné hledání
Nejprve se zaměřme na situaci, kdy existuje jediný řetězec takový, že Jinak řečeno, uvažujeme instanci problému jednoznačného hledání (Unique search). V tomto případě máme
což se dá pohodlně aproximovat jako
pro velká Pokud dosadíme do výrazu
dostaneme
Připomeňme, že je nejen počet provedení operace , ale také počet dotazů na funkci vyžadovaných algoritmem, takže jsme na dobré cestě k algoritmu, který vyžaduje dotazů.
Nyní prozkoumáme, jak dobře doporučená volba funguje. Pravděpodobnost, že závěrečné měření dá jedinečné řešení, lze explicitně vyjádřit jako
První argument, označuje počet položek, přes které hledáme, a druhý argument, který je v tomto případě , 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
Všimni si, že tyto pravděpodobnosti nejsou striktně rostoucí. Zejména máme zajímavou anomálii pro kde získáme řešení s jistotou. Obecně však lze dokázat, že
pro všechna takže pravděpodobnost úspěchu jde k v limitě, když roste, jak naznačují hodnoty výše. To je skvělé!
Všimni si ale, že i slabý odhad jako potvrzuje užitečnost Groverova algoritmu. Ať už dostaneme jakýkoli výsledek měření z jednoho spuštění procedury, vždy můžeme ověřit, zda pomocí jediného dotazu na A pokud nezískáme jediný řetězec pro který s pravděpodobností nejvýše při jednom spuštění procedury, pak po nezávislých spuštěních procedury bude pravděpodobnost, že jsme tento jediný řetězec nezískali, nejvýše To znamená, že pomocí dotazů na získáme jediné řešení s pravděpodobností alespoň Použitím lepšího odhadu zjistíme, že pravděpodobnost nalezení touto metodou je ve skutečnosti alespoň
Více řešení
Jak se mění počet prvků v mění se i úhel což může mít významný vliv na pravděpodobnost úspěchu algoritmu. Pro stručnost zapišme pro počet řešení a stejně jako dříve budeme předpokládat, že
Jako motivační příklad si představ, že máme řešení místo jediného řešení, které jsme uvažovali výše. To znamená, že
což je přibližně dvojnásobek úhlu, který jsme měli v případě když je velké. Předpokládej, že bychom nevěděli nic lepšího a zvolili stejnou hodnotu jako v případě s jediným řešením:
Efekt bude katastrofální, jak ukazuje následující tabulka pravděpodobností.
Tentokrát pravděpodobnost úspěchu jde k když 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 a skončíme blízko
Pokud však místo toho použijeme doporučenou volbu což je
pro
pak bude výkon lepší. Přesněji řečeno, s touto volbou dojde k úspěchu s vysokou pravděpodobností.
Zobecněním toho, co bylo tvrzeno dříve, lze dokázat, že
kde používáme dříve navrženou notaci: označuje pravděpodobnost, že Groverův algoritmus spuštěný na iterací odhalí řešení, když existuje celkem řešení z možností.
Tento dolní odhad 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 je výrazně menší než přesto usoudíme, že pravděpodobnost úspěchu je přiměřeně vysoká. Stejně jako dříve, samotný fakt, že je přiměřeně velké, znamená užitečnost algoritmu.
Také platí, že
Tento dolní odhad popisuje pravděpodobnost, že řetězec 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ž Groverův algoritmus je náhodné hádání.)
Nyní se podívejme na počet iterací (a tedy na počet dotazů)
pro
Pro každé platí a tedy
Z toho plyne, že
To se překládá do úspory počtu dotazů s růstem Konkrétně je potřebný počet dotazů
Neznámý počet řešení
Pokud je počet řešení neznámý, je potřeba jiný přístup, protože v této situaci nemáme žádnou znalost která by nám pomohla při volbě Existuje ve skutečnosti více přístupů.
Jeden jednoduchý přístup je zvolit
rovnoměrně náhodně. Volba 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 náhodným počtem opakování je podobná volbě náhodného jednotkového vektoru v prostoru generovaném a u kterého je pravděpodobné, že koeficient u 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
Existuje vylepšená metoda, která najde řešení, pokud existuje, pomocí dotazů, i když počet řešení není znám, a vyžaduje dotazů k určení, že neexistují žádná řešení, když
Základní myšlenka je volit rovnoměrně náhodně z množiny iterativně, pro rostoucí hodnoty Konkrétně můžeme začít s a zvyšovat ho exponenciálně, přičemž proces vždy ukončíme, jakmile je nalezeno řešení, a omezíme 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 s pravděpodobností úspěchu pro každou iteraci. (Volba funguje, jak ukazuje analýza. Zdvojnásobení 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
jsme implicitně předpokládali, že i 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 ř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 a je prázdná, nastane, když je konstantní; je prázdná, když pro každé a je prázdná, když pro každé To znamená, že
a proto
Takže bez ohledu na počet iterací které v těchto případech provedeme, měření vždy odhalí rovnoměrně náhodný řetězec