Dotazový model výpočtu
Když modelujeme výpočty v matematických termínech, typicky máme na mysli takový druh procesu, jaký představuje následující obrázek, kde jsou informace poskytnuty jako vstup, proběhne výpočet a je vyprodukován výstup.
I když je pravda, že počítače, které dnes používáme, nepřetržitě přijímají vstup a produkují výstup, v podstatě interagují jak s námi, tak s jinými počítači způsobem, který tento obrázek nezachycuje, záměrem není reprezentovat průběžný provoz počítačů. Spíše je cílem vytvořit jednoduchou abstrakci výpočtu, zaměřenou na izolované výpočetní úlohy. Například vstup může kódovat číslo, vektor, matici, graf, popis molekuly nebo něco složitějšího, zatímco výstup kóduje řešení výpočetní úlohy, kterou máme na mysli.
Klíčová myšlenka je, že vstup je výpočtu poskytnut, obvykle ve formě binárního řetězce, přičemž žádná jeho část není skryta.
Popis modelu
V dotazovacím modelu výpočtu není celý vstup poskytnut výpočtu jako ve standardnějším modelu naznačeném výše. Místo toho je vstup zpřístupněn ve formě funkce, ke které výpočet přistupuje prostřednictvím dotazů. Alternativně můžeme nahlížet na výpočty v dotazovacím modelu jako na výpočty s náhodným přístupem k bitům (nebo segmentům bitů) vstupu.
V kontextu dotazovacího modelu často říkáme, že vstup je poskytován orákulem nebo černou skříňkou. Oba termíny naznačují, že úplný popis vstupu je před výpočtem skryt a jediný způsob, jak k němu přistupovat, je klást otázky. Je to, jako bychom se dotazovali Orákula v Delfách ohledně vstupu: neřekne nám vše, co ví, odpovídá pouze na konkrétní otázky. Termín černá skříňka dává smysl zejména tehdy, když si vstup představujeme jako funkci; nemůžeme nahlédnout dovnitř funkce a porozumět tomu, jak funguje, můžeme ji pouze vyhodnotit na argumentech, které si vybereme.
V této lekci budeme pracovat výhradně s binárními řetězci, na rozdíl od řetězců obsahujících jiné symboly, takže pro pohodlí budeme dále psát pro binární abecedu. Budeme uvažovat o různých výpočetních problémech, přičemž několik jednoduchých příkladů bude popsáno zanedlouho, ale u všech bude vstup reprezentován funkcí tvaru
pro dvě kladná celá čísla a Přirozeně bychom mohli zvolit jiný název místo ale v celé lekci zůstaneme u
Říci, že výpočet provádí dotaz, znamená, že je vybrán nějaký řetězec a poté je řetězec zpřístupněn výpočtu orákulem. Přesný způsob, jak to funguje pro kvantové algoritmy, bude probrán zanedlouho — musíme se ujistit, že to lze provést unitární kvantovou operací umožňující dotazy v superpozici — ale prozatím o tom můžeme přemýšlet intuitivně na vysoké úrovni.
Nakonec, způsob, jakým budeme měřit efektivitu dotazovacích algoritmů, je jednoduchý: budeme počítat počet dotazů, které vyžadují. To souvisí s časem potřebným k provedení výpočtu, ale není to přesně totéž, protože ignorujeme čas pro operace jiné než dotazy a také zacházíme s dotazy, jako by každý měl jednotkovou cenu. Můžeme vzít v úvahu i operace kromě dotazů, pokud chceme (a to se občas dělá), ale omezení pozornosti pouze na počet dotazů pomáhá udržet věci jednoduché.
Příklady dotazovacích problémů
Zde je několik jednoduchých příkladů dotazovacích problémů.
-
OR. Vstupní funkce má tvar (takže pro tento problém). Úkolem je vypsat pokud existuje řetězec pro který a vypsat pokud takový řetězec neexistuje. Pokud si funkci představíme jako posloupnost bitů, ke kterým máme náhodný přístup, problém spočívá ve výpočtu OR těchto bitů.
-
Parita. Vstupní funkce má opět tvar Úkolem je určit, zda je počet řetězců pro které sudý nebo lichý. Přesněji řečeno, požadovaný výstup je pokud má množina sudý počet prvků, a pokud má lichý počet prvků. Pokud si funkci představíme jako posloupnost bitů, ke kterým máme náhodný přístup, problém spočívá ve výpočtu parity (neboli exkluzivního OR) těchto bitů.
-
Minimum. Vstupní funkce má tvar pro libovolnou volbu kladných celých čísel a Požadovaným výstupem je řetězec který je první v lexikografickém (tj. slovníkovém) uspořádání Pokud si funkci představíme jako posloupnost celých čísel zakódovaných jako řetězce délky v binárním zápisu, ke kterým máme náhodný přístup, problém spočívá ve výpočtu minima těchto celých čísel.
Uvažujeme také dotazovací problémy, kde máme slib ohledně vstupu. To znamená, že dostaneme nějaký druh záruky ohledně vstupu a neneseme odpovědnost za to, co se stane, když tato záruka není splněna. Jiný způsob, jak tento typ problému popsat, je říci, že některé vstupní funkce (ty, pro které slib není splněn) jsou považovány za vstupy typu „nezáleží na tom". Na algoritmy nejsou kladeny vůbec žádné požadavky, pokud dostanou vstupy typu „nezáleží na tom".
Zde je jeden příklad problému se slibem:
- Unique search. Vstupní funkce má tvar a je nám slíbeno, že existuje právě jeden řetězec pro který přičemž pro všechny řetězce Úkolem je najít tento jedinečný řetězec
Všechny čtyři právě popsané příklady jsou přirozené v tom smyslu, že se snadno popisují a můžeme si představit různé situace nebo kontexty, ve kterých by se mohly vyskytnout.
Naproti tomu některé dotazovací problémy nejsou vůbec takto „přirozené". Při studiu dotazovacího modelu totiž někdy přicházíme s velmi složitými a vysoce umělými problémy, u kterých si lze jen těžko představit, že by je někdo kdy chtěl v praxi řešit. To ale neznamená, že tyto problémy nejsou zajímavé! Věci, které se na první pohled mohou zdát umělé nebo nepřirozené, mohou poskytnout nečekané vodítka nebo inspirovat nové myšlenky. Shorův kvantový algoritmus pro faktorizaci, který byl inspirován Simonovým algoritmem, je skvělým příkladem. Důležitou součástí studia dotazovacího modelu je také hledání extrémů, které mohou osvětlit jak potenciální výhody, tak omezení kvantového počítání.
Dotazovací Gate
Když popisujeme výpočty pomocí Circuit, dotazy se provádějí speciálními Gate nazývanými dotazovací Gate.
Nejjednodušší způsob, jak definovat dotazovací Gate pro klasické Booleovské Circuit, je jednoduše jim umožnit přímo počítat vstupní funkci jak naznačuje následující obrázek.
Když je Booleovský Circuit vytvořen pro dotazovací problém, ke vstupní funkci se přistupuje prostřednictvím těchto Gate a počet dotazů, které Circuit provádí, je jednoduše počet dotazovacích Gate, které se v Circuit vyskytují. Vstupní vodiče samotného Booleovského Circuit jsou inicializovány na pevné hodnoty, které by měly být považovány za součást algoritmu (na rozdíl od vstupů problému).
Například zde je Booleovský Circuit s klasickými dotazovacími Gate, který řeší výše popsaný problém parity pro funkci tvaru :
Tento algoritmus provádí dva dotazy, protože obsahuje dva dotazovací Gate. Funguje tak, že funkce je dotázána na dvou možných vstupech, a a výsledky jsou zapojeny do Booleovského Circuit, který počítá XOR. (Tento konkrétní Circuit se objevil jako příklad Booleovského obvodu v lekci Kvantové obvody kurzu Základy kvantové informace.)
Pro kvantové Circuit tato definice dotazovacích Gate nefunguje, protože tyto Gate budou pro některé volby funkce neunitární. Místo toho tedy definujeme unitární dotazovací Gate, které na stavech standardní báze fungují tak, jak naznačuje tento obrázek:
Zde předpokládáme, že a jsou libovolné řetězce. Zápis označuje bitový exkluzivní OR dvou řetězců, které mají v tomto případě délku Například
Intuitivně řečeno, Gate (pro libovolně zvolenou funkci ) zrcadlí horní vstupní řetězec a XORuje hodnotu funkce na spodní vstupní řetězec což je unitární operace pro každou volbu funkce Ve skutečnosti se jedná o deterministickou operaci a je svou vlastní inverzí. To znamená, že jako matice je vždy permutační matice, tedy matice s jedinou v každém řádku a v každém sloupci, přičemž všechny ostatní prvky jsou Aplikace permutační matice na vektor jednoduše přemístí prvky vektoru (odtud termín permutační matice), a proto nemění euklidovskou normu tohoto vektoru — což odhaluje, že permutační matice jsou vždy unitární.
Je třeba zdůraznit, že když analyzujeme dotazovací algoritmy pouhým počítáním dotazů, které dotazovací algoritmus provede, zcela ignorujeme obtížnost fyzické konstrukce dotazovacích Gate — jak pro klasickou, tak pro kvantovou verzi právě popsanou. Intuitivně řečeno, konstrukce dotazovacích Gate je součástí přípravy vstupu, nikoli součástí hledání řešení.
To se může zdát nerozumné, ale musíme mít na paměti, že se nesnažíme popisovat praktické počítání ani plně vyčíslit potřebné zdroje. Spíše definujeme teoretický model, který pomáhá osvětlit potenciální výhody kvantového počítání. K tomuto bodu se vrátíme v lekci následující po této, kdy obrátíme pozornost ke standardnějšímu modelu výpočtu, kde jsou vstupy dány explicitně Circuit jako binární řetězce.