Kvantová Fourierova transformace
Pro tento modul Qiskit in Classrooms musí mít studenti funkční prostředí Python s nainstalovanými následujícími balíčky:
qiskitv2.1.0 nebo novějšíqiskit-ibm-runtimev0.40.1 nebo novějšíqiskit-aerv0.17.0 nebo novějšíqiskit.visualizationnumpypylatexenc
Jak nastavit a nainstalovat výše uvedené balíčky, najdeš v průvodci Instalace Qiskit. Aby bylo možné spouštět úlohy na skutečných kvantových počítačích, studenti si budou muset vytvořit účet u IBM Quantum® podle kroků v průvodci Nastavení účtu IBM Cloud.
Tento modul byl otestován a využil 13 sekund času QPU. Jedná se o odhad v dobré víře; tvoje skutečné využití se může lišit.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-aer qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'
Úvod
Fourierova transformace je všudypřítomný nástroj s aplikacemi v matematice, fyzice, zpracování signálů, kompresi dat a nespočtu dalších oblastí. Kvantová verze Fourierovy transformace, příhodně pojmenovaná kvantová Fourierova transformace, tvoř í základ pro některé z nejdůležitějších kvantových algoritmů.
Dnes, po připomenutí klasické Fourierovy transformace, si povíme, jak kvantovou Fourierovu transformaci implementujeme na kvantovém počítači. Potom si probereme jedno z využití kvantové Fourierovy transformace v algoritmu zvaném algoritmus odhadu fáze. Kvantový odhad fáze je podprogram v Shorově slavném algoritmu pro faktorizaci, který se někdy označuje jako „korunní klenot" kvantového výpočtu. Tento modul směřuje k dalšímu modulu zcela věnovanému Shorovu algoritmu, ale je také zamýšlen jako samostatný celek. Kvantová Fourierova transformace je fascinující a užitečný algoritmus sám o sobě!
Klasická Fourierova transformace
Než se pustíme do kvantové Fourierovy transformace, připomeňme si nejprve klasickou verzi. Fourierova transformace je metoda přechodu z jedné tzv. „báze" do jiné. Dvě báze si můžeš představit jako různé perspektivy téhož problému — obě jsou platnými způsoby vyjádření funkce, ale jedna nebo druhá může být přehlednější v závislosti na konkrétním problému. Příklady dvojic bází propojených Fourierovou transformací jsou poloha a hybnost, a čas a frekvence.
Podívejme se na příklad toho, jak by nám Fourierova transformace mohla pomoci zjistit, jakou notu hraje nástroj, na základě jeho zvukového průběhu. Typicky vidíme průběhy vyjádřené v časové bázi — tedy amplituda vlny je vyjádřena jako funkce času.

Tento průběh můžeme Fourierovou transformací přejít z časové báze do frekvenční báze:

Ve frekvenční bázi jasně vidíme výrazný vrchol přibližně na 260 Hz. To je střední C!
Možná by ses i bez Fourierovy transformace dokázal/a dopátrat, že se hraje střední C, ale co kdybychom hráli více not najednou? Průběh by se pak v časové bázi zkomplikoval:

Ale frekvenční spektrum jasně identifikuje tři vrcholy:

Byl to akord C dur, zahrnující noty C, E a G.
Tento druh Fourierovy analýzy nám pomáhá extrahovat frekvenční složky jakéhokoliv složitého signálu.
Diskrétní Fourierova transformace
Fourierova transformace je užitečná pro celou řadu aplikací zpracování signálů. Ve většině těchto reálných aplikací (včetně výše uvedeného hudebního př íkladu) ale chceme transformovat diskrétní sadu datových bodů — ne spojitou funkci. V tomto případě používáme diskrétní Fourierovu transformaci. Diskrétní Fourierova transformace (DFT) pracuje s vektorem a zobrazí ho na vektor podle vzorce:
kde definujeme . (Poznamenejme, že existují i jiné konvence se záporným znaménkem v exponentu, takže buď opatrný/á, když DFT uvidíš jinde.) Připomeňme, že je periodická funkce s periodou . Fourierova transformace tak v podstatě rozkládá (diskrétní) funkci na lineární kombinaci jejích složkových periodických funkcí, z nichž každá má periodu .
Kvantová Fourierova transformace
Viděli jsme tedy, jak se Fourierova transformace používá k vyjádření funkce jako lineární kombinace nové sady tzv. „bázových funkcí". Transformace báze se provádí i na stavech qubitů. Například stav jednoho qubitu lze vyjádřit ve výpočetní bázi jako s bázovými stavy a , nebo v bázi jako s bázovými stavy a . Obě vyjádření jsou stejně platná, ale jedno může být přirozenější než druhé v závislosti na typu problému, který chceš řešit.
Stavy qubitů lze také vyjádřit ve Fourierově bázi, kde je stav vyjádřen jako lineární kombinace stavů Fourierovy báze , namísto obvyklých stavů výpočetní báze . K tomu je potřeba aplikovat kvantovou Fourierovu transformaci (QFT):
kde jako výše a je počet bázových stavů v tvém kvantovém systému. Protože pracujeme s qubity, qubitů nám dá bázových stavů, tedy . Bázové stavy jsou zde zapsány jako jediné číslo , kde nabývá hodnot od do , ale běžněji se setkáme s bázovými stavy vyjádřenými jako , , , ..., , kde každá binární číslice reprezentuje stav qubitu 0 až zprava doleva. Existuje snadný způsob, jak tyto binární stavy převést na jediné číslo: stačí s nimi zacházet jako s binárními čísly! Tedy , , , a tak dále až po .
Vybuduj intuici pro stavy Fourierovy báze
Právě jsme si tedy připomněli, jaké jsou stavy výpočetní báze a jak jsou řazeny: jsou to stavy, kde každý qubit je buď ve stavu , nebo , a řadíme je od stavu, kde jsou všechny qubity , , po stav, kde jsou všechny , .
Jak ale dává smysl Fourierova báze stavů? Všechny stavy Fourierovy báze jsou rovnými superpozicemi všech stavů výpočetní báze, ale jednotlivé stavy se od sebe liší periodicitou fáze jejich složek. Abychom to pochopili konkrétněji, podívejme se na čtyři stavy Fourierovy báze dvouqubitového systému. Nejnižší stav Fourierovy báze je ten, jehož fáze se vůbec nemění:
Tento stav si můžeme vizualizovat vynesením komplexní amplitudy každého členu do grafu. Červená čára slouží jako vodítko a ukazuje, jak se fáze této amplitudy otáčí v komplexní rovině v závislosti na stavu výpočetní báze. Pro zůstává fáze konstantní:

Další stav Fourierovy báze je ten, jehož fáze složek se otočí od do právě jednou:
A toto otočení vidíme v grafu komplexní amplitudy v závislosti na stavu výpočetní báze:

Každý stav má tedy fázi o radiánů vyšší než předchozí stav (při řazení standardním způsobem), protože v tomto příkladu máme čtyři bázové stavy (). Další bázový stav se otočí od 0 do dvakrát: