Nestrukturované vyhledávání
Shrnutí
Začneme popisem problému, který Groverův algoritmus řeší. Jako obvykle budeme v celé této diskusi označovat binární abecedu.
Předpokládejme, že
je funkce z binárních řetězců délky do bitů. Budeme předpokládat, že tuto funkci umíme efektivně vyhodnotit, ale jinak je libovolná a nemůžeme se spoléhat na to, že má nějakou speciální strukturu nebo konkrétní implementaci, která by vyhovovala našim potřebám.
Groverův algoritmus hledá řetězec , pro který Řetězce tohoto druhu budeme označovat jako řešení daného vyhledávacího problému. Pokud existuje více řešení, pak je kterékoliv z nich považováno za správný výstup, a pokud žádné řešení neexistuje, správná odpověď vyžaduje, abychom oznámili, že řešení neexistují.
Tento úkol je popisován jako problém nestrukturovaného vyhledávání, protože se nemůžeme spoléhat na to, že má nějakou konkrétní strukturu, která by ho usnadnila. Nehledáme v uspořádaném seznamu ani v datové struktuře speciálně navržené pro usnadnění vyhledávání – v podstatě hledáme jehlu v kupce sena.
Intuitivně si můžeme představit, že máme extrémně složitý Booleovský obvod, který počítá a snadno ho můžeme spustit na zvoleném vstupním řetězci. Ale protože je tento obvod tak složitý, nemáme žádnou naději porozumět mu jeho zkoumáním (kromě schopnosti vyhodnotit ho na zvolených vstupních řetězcích).
Jeden způsob, jak tento vyhledávací úkol provést klasicky, je jednoduše projít všechny řetězce a vyhodnotit na každém z nich, abychom zkontrolovali, zda je či není řešením. Dále budeme pro pohodlí psát
V je řetězců, takže procházení všech vyžaduje vyhodnocení Za předpokladu, že jsme omezeni na vyhodnocování na zvolených vstupech, je to to nejlepší, co můžeme deterministickým algoritmem dosáhnout, pokud chceme zaručit úspěch. S pravděpodobnostním algoritmem bychom mohli doufat v úsporu času náhodným výběrem vstupních řetězců pro ale stále budeme potřebovat vyhodnocení pokud chceme, aby tato metoda uspěla s vysokou pravděpodobností.
Groverův algoritmus řeší tento vyhledávací problém s vysokou pravděpodobností pomocí pouhých vyhodnocení Aby bylo jasno, tato vyhodnocení funkce musí probíhat v superpozici, podobně jako dotazovací algoritmy diskutované v lekci Kvantové dotazovací algoritmy, včetně Deutschova algoritmu, Deutsch-Jozsova algoritmu a Simonova algoritmu. Na rozdíl od těchto algoritmů používá Groverův algoritmus iterativní přístup: vyhodnocuje na superpozicích vstupních řetězců a prokládá tato vyhodnocení dalšími operacemi, které mají za následek vytvoření interferenčních vzorů, vedoucích k řešení s vysokou pravděpodobností (pokud existuje) po iteracích.
Formální formulace problému
Problém, který Groverův algoritmus řeší, formalizujeme pomocí dotazovacího modelu výpočtu. To znamená, že předpokládáme přístup k funkci prostřednictvím dotazovacího Gate definovaného obvyklým způsobem:
pro každé a Toto je akce na stavech standardní báze a její obecná akce je určena linearitou.
Jak bylo diskutováno v lekci Základy kvantových algoritmů, pokud máme Booleovský obvod pro výpočet můžeme tento popis Booleovského obvodu transformovat na kvantový Circuit implementující (za použití určitého počtu pracovních Qubitů, které začínají a končí výpočet ve stavu ). Takže ačkoli používáme dotazovací model k formalizaci problému, který Groverův algoritmus řeší, není omezen na tento model; Groverův algoritmus můžeme spustit na libovolné funkci pro kterou máme Booleovský obvod.
Zde je přesná formulace problému, který se jmenuje Search, protože hledáme řešení, tedy řetězec který způsobí, že se vyhodnotí na
Všimni si, že toto není problém se slibem — funkce je libovolná. Bude však užitečné zvážit následující slibovou variantu problému, kde máme zaručeno, že existuje právě jedno řešení. Tento problém se objevil jako příklad slibového problému v lekci Kvantové dotazovací algoritmy.
Také si všimni, že problém Or zmíněný ve stejné lekci úzce souvisí s problémem Search. U tohoto problému je cílem jednoduše určit, zda řešení existuje či nikoli, na rozdíl od jeho skutečného nalezení.