Operace s několika qubity
Tento článek si probere pravidla používaná k sestavení stavů více qubitů z stavů s jedním qubitem a popisuje operace brány potřebné k zahrnutí do brány nastavené tak, aby vytvořily univerzální kvantový počítač M-qubit. Tyto nástroje jsou nezbytné k pochopení sad bran, které se běžně používají v Q# kódu. Jsou také důležité získat intuitivní přehled o tom, proč kvantové efekty, jako je propletení nebo interference, vykreslují kvantové výpočty výkonnější než klasické výpočty.
Brány s jedním qubitem a více qubity
Skutečný výkon kvantového computingu se projeví jenom při zvýšení počtu qubitů. Jeden qubit má některé čítače intuitivních funkcí, jako je schopnost být v daném okamžiku ve více než jednom stavu. Pokud byste ale měli vše, co jste měli v kvantovém počítači, byly jedno qubitové brány, pak kalkulačka a určitě klasický superpočítač by překrýval jeho výpočetní výkon.
Kvantový výpočetní výkon vzniká částečně proto, že dimenze vektorového prostoru kvantových stavových vektorů exponenciálně roste s počtem qubitů. To znamená, že zatímco jeden qubit může být triviálně modelován, simulace kvantových výpočtů s padesáti qubity by pravděpodobně nasdílel limity stávajících superpočítačů. Zvětšení velikosti výpočtu pouze o jeden další qubit zdvojnásobí paměť potřebnou k uložení stavu a přibližně zdvojnásobí výpočetní dobu. Díky tomuto rychlému doublování výpočetního výkonu může kvantový počítač s relativně malým počtem qubitů daleko překonat nejvýkonnější superpočítače dnešního dne, zítra a dále u některých výpočetních úloh.
Stavy dvou qubitů
Pokud máte dva samostatné qubity, jeden ve stavu a druhý ve stavu $\psi=\begin{bmatrix}\\\alpha\beta\\\end{bmatrix}$\gamma$\phi=\begin{bmatrix}\delta\end{bmatrix}$ , odpovídající stav dvou qubitů je dán tensorovým produktem (neboli kroneckerovým produktem), který je definován takto:
$$\psi\otimes\phi=\begin{bmatrix}\alpha\\\beta\end{bmatrix}\otimes\begin{bmatrix}\gamma\\\delta\end{bmatrix}=\begin{bmatrix}\alpha\begin{bmatrix}\gamma\\\delta\end{bmatrix}\\\beta\begin{bmatrix}\gamma\\\delta\end{bmatrix}\end{bmatrix}=\begin{bmatrix}\alpha\gamma\\\alpha\delta\\\beta\gamma\\\beta\delta\end{bmatrix}. $$
Vzhledem k tomu, že jsou dva stavy $\psi$ jednoho qubitu a $\phi$každý z dimenzí 2, odpovídající stav $\psi\otimes\phi$ dvou qubitů je 4rozměrný. Vektor
$$\begin{bmatrix}\alpha_{{00}\\\alpha___{{01}\\\alpha{{10}\\\alpha{{11}\end{bmatrix}$$
představuje kvantový stav na dvou qubitech, pokud
$$|\alpha_{00}|^2+|\alpha_^{01}|2+|\alpha_^{{10}|2+|\alpha_{{11}|^2=1.$$
Obecněji můžete vidět, že kvantový stav $n qubitů je reprezentován jednotkovým vektorem $v_1 \otimes v_2 v_n\cdots$\otimes \otimesdimenze $2 \cdot 2 \cdot 2 \cdot 2\cdots=^n$ pomocí této konstrukce.$ Stejně jako u jednoho qubitu obsahuje kvantový stavový vektor více qubitů všechny informace potřebné k popisu chování systému. Další informace o vektorech a produktech tensoru najdete v tématu Vektory a matice v kvantových výpočtech.
Výpočetní základ pro stavy dvou qubitů tvoří tensorové produkty jedno qubitových stavů. Máte například
$$\begin{\begin{align}00 \equiv\begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&=\begin{bmatrix}1 \\ 0 0\\ 0 \end{bmatrix}\\ ,\qquad 01\begin{bmatrix}\equiv 1 \\ 0 0 \\ \end{bmatrix}\otimes\begin{bmatrix}1=\end{bmatrix}\begin{bmatrix} 0 1\\ 0 \\ 0\\ \end{bmatrix},\\ 10 \equiv\begin{bmatrix}0 \\ 0 1 1 \end{bmatrix}\otimes\begin{bmatrix}\\ 0&\end{bmatrix} amp;=\begin{bmatrix}0 0 1 0 , 11\begin{bmatrix}\equiv 0 \\ 1\begin{bmatrix}\end{bmatrix}\otimes 0 \\ 1 \end{bmatrix}=\begin{bmatrix}0 0 \\ 0\\\\ 1 .\end{bmatrix}\qquad \end{bmatrix}\\\\ \\ \end{align} $$
Všimněte si, že i když můžete vždy vzít tenzorový součin dvou stavů jedno qubitu tak, aby vytvořil stav dvou qubitů, ne všechny dva qubitové kvantové stavy se dají zapsat jako tensorový součin dvou stavů s jedním qubitem. Například neexistují žádné stavy $\psi=\begin{bmatrix}\alpha\beta\end{bmatrix}$\\a\gamma$\phi=\begin{bmatrix}\\\delta\end{bmatrix}$ tak, že jejich tenzorový produkt je stavem
$$\psi\otimes\phi=\begin{bmatrix}1/\sqrt{{2}\\ 0 \\ 0 \\ 1/.\sqrt{{2}\end{bmatrix}$$
Takový dvou qubitový stav, který nelze zapsat jako tensorový součin stavů jednoho qubitu, se nazývá " propletený stav"; o dvou qubitech se říká, že jsou propletené. Volně řečeno, protože kvantový stav nemůže být považován za tensorový součin stavů jednoho qubitu, informace, které jsou ve stavu uloženy, nejsou omezeny na jeden z qubitů jednotlivě. Informace se místo toho ukládají nemístně v korelacích mezi těmito dvěma stavy. Tato nelokace informací je jednou z hlavních rozlišujících vlastností kvantového computingu oproti klasickému výpočetnímu prostředí a je nezbytná pro řadu kvantových protokolů včetně opravy kvantových chyb.
Měření stavů dvou qubitů
Měření stavů dvou qubitů se velmi podobá měření jednoho qubitu. Měření stavu
$$\begin{bmatrix}\alpha_{{00}\\\alpha___{{01}\\\alpha{{10}\\\alpha{{11}\end{bmatrix}$$
$00$ s pravděpodobností$|\alpha _{00}|{^2$, $01$ s pravděpodobností $|\alpha_{01}|^2$, $10$ s pravděpodobností $|\alpha_{{10}|^2$ a $11$ s pravděpodobností $|\alpha_{11}|^2$. Proměnné $\alpha_{00}, _{01}{, \alpha\alpha_{{10}a$ $\alpha_{11}$ byly záměrně pojmenovány, aby bylo toto připojení jasné. Po měření, pokud je $výsledek 00$, pak se kvantový stav dvou qubitového systému sbalil a je teď
$$ 00 \equiv\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}. $$
Je také možné měřit jenom jeden qubit kvantového stavu se dvěma qubity. Když změříte jenom jeden qubit stavu dvou qubitů, dopad měření se liší od měření dvou qubitů. Důvodem je to, že celý stav není sbalený do výpočetního základního stavu, spíše je sbalený pouze do jednoho subsystému. Jinými slovy, měření jednoho qubitu dvou qubitů pouze sbalí související subsystém do výpočetního základního stavu.
Chcete-li to vidět, zvažte měření prvního qubitu následujícího stavu, který je vytvořen použitím hadamard transformace $H$ na dva qubity původně nastavené na " 0" stav:
$$H^{\otimes 2\left}( \begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0\right\end{bmatrix} ) =\frac{{1}{2}\begin{bmatrix}1 & 1 & 1 & 1 &\\ amp; -1 & &1 amp; -1 &\\ amp; 1 amp; 1 & -1 & -1 \\ & -1 & -1 amp; 1 & 1\\ \end{bmatrix}\begin{bmatrix}0 0\\ 0=\frac{\end{bmatrix}\\{1}{2}\begin{bmatrix} 1\\ 1\\ 1\begin{cases}\text{\\\end{bmatrix}\mapsto výsledek }=0 & \frac{{1}{\sqrt{2}}\begin{bmatrix}1 1\\ 0 0\text{\\ \end{bmatrix}\\výsledek }=1 & \frac{{1}{\sqrt{{2}}\begin{bmatrix}\\0\\ 0\\ 1 1\\ \end{bmatrix}\\\end{cases}. $$ Oba výsledky mají 50% pravděpodobnost výskytu. To může být intuitováno ze skutečnosti, že kvantový stav před měřením se nezmění, pokud $se hodnota 0$ prohodí s $hodnotou 1$ na prvním qubitu.
Matematické pravidlo pro měření prvního nebo druhého qubitu je jednoduché. Pojďme e_k být k^{\rm th výpočetním}$ základovým vektorem a $S$ množinou všech $e_k$ tak, aby qubit v dané hodnotě hodnotě $1$ pro danou $hodnotu k$.$$ $ Pokud byste například chtěli změřit první qubit, $bude S$ obsahovat $e_1\equiv 10$ a $e_3\equiv 11$. Podobně pokud vás zajímá druhý qubit $S$ , bude obsahovat $e_2\equiv 01$ a $e_3 \equiv 11$. Pravděpodobnost měření zvoleného qubitu na $hodnotu 1$ je pro stavový vektor. $\psi$
$$ P(\text{výsledek}=1)=\sum_{e_k \text{ v sadě } S}\psi^\dagger e_k e_k^\dagger\psi. $$
Poznámka:
Tento článek používá k označení výpočetního základu malý endian formát. V malém endovském formátu přichází jako první nejméně významné bity. Například číslo čtyři v malém endian formátu je reprezentováno řetězcem bitů 001.
Vzhledem k tomu, že každé měření qubitu může přinést $pouze 0$ nebo $1$, pravděpodobnost měření $0$ je jednoduše $1-P(\text{výsledek}=1)$. Proto potřebujete jenom vzorec pro pravděpodobnost měření $1$.
Akce, kterou má takové měření ve stavu, může být vyjádřena matematicky jako
$$\psi\mapsto\frac{\sum_{e_k \text{ v sadě } S} e_k e_k^\psi}{\sqrt{\daggerP(\text{výsledek}=1)}}. $$
Opatrný čtenář se může obávat toho, co se stane, když jmenovatel je nula. I když je takový stav nedefinovaný, nemusíte se starat o takové případy, protože pravděpodobnost je nula.
Pokud použijete $\psi$ jednotný stavový vektor uvedený výše a zajímá vás měření prvního qubitu, pak
$$P(\text{měření prvního qubitu}=1) = (\psi^\dagger e_1)(e_1^\psi\dagger)+(\psi^\dagger e_3)(e_3^\dagger\psi)=|e_1^\dagger\psi|^2+|e_3^\dagger\psi|^2. $$
Všimněte si, že se jedná pouze o součet dvou pravděpodobností, které by se očekávaly při měření výsledků $10$ a $11$. V našem příkladu se to vyhodnotí jako
$$\frac{{1}{4}\left|\begin{bmatrix}0& 0& 1& 0\end{bmatrix}\begin{bmatrix}1 1\\\\ 1 1\\\end{bmatrix}\right|^2+\frac{1}{{4}\left|\begin{bmatrix}0& 0& 0& 1\end{bmatrix}\begin{bmatrix}1\\ 1\\ 1\right|\end{bmatrix}\\^2.=\frac{{1}{{2} $$
které dokonale odpovídají naší instinktii. Podobně se stav po prvním qubitu měří jako $1$ , lze zapsat jako
$$\frac{\frac{}{2}e_1+\frac{e_3}{2}}{\sqrt{\frac{1}{2}}}=\frac{1}{\sqrt{2}}\begin{bmatrix} 0 0\\\\ 1 1\\\end{bmatrix}$$
opět v souladu s naší intuitivně.
Operace se dvěma qubity
Stejně jako v případě jednoho qubitu je jakákoli unitární transformace platnou operací s qubity. Obecně platí, že jednotková transformace $na n$ qubitech je matice $U$ s velikostí $2^n \times 2^n$ (takže působí na vektory velikosti $2^n$), takže $U^{-1}= U^\dagger$. Brána CNOT (controlled-NOT) je například běžně používanou bránou se dvěma qubity a je reprezentována následující jednotkovou maticí:
$$\operatorname{CNOT}=\begin{bmatrix} 1\ 0\ 0\ 0 \\ \ 0\ 1\ 0\ 0 \\ \ 0\ 0\ 0\ 1 \\ 0\ 0\ 1\ 0\ 0\ 0 \end{bmatrix}$$
Dvě qubitové brány můžeme také vytvořit použitím jedno qubitových bran na obou qubitech. Pokud například použijete brány.
$$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}$$
a
$$\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}$$
k prvnímu a druhému qubitu, v uvedeném pořadí je to ekvivalentem použití dvou qubitové jednotky dané jejich tensorovým produktem: $$\begin{bmatrix} a\ b\\ c\ d e\end{bmatrix}\otimes\begin{bmatrix}\ f\\ g\ h\begin{bmatrix} \end{bmatrix}=ae\ af\ be\ bf \\ ag\ ah\ bg\ bh \\ ce\ cf\ de\ df \\ cg\ ch\ dg\ dh .\end{bmatrix}$$
Můžete tedy vytvořit dvě qubitové brány tím, že vezmete tenzorový součin některých známých jedno qubitových bran. Mezi příklady dvou qubitových bran patří $H\otimes, $$X\mathbf{1}$\otimes a $X \otimes Z$.
Všimněte si, že zatímco jakékoli dvě jedno qubitové brány definují bránu dvou qubitů tím, že vezme svůj tensor produkt, naopak není pravda. Ne všechny dvě qubitové brány lze zapsat jako tensorový součin jedno qubitových bran. Taková brána se nazývá propletující brána. Jedním z příkladů propletující brány je brána CNOT.
Intuitivně za kontrolovanou bránou nelze zobecnit na libovolnou bránu. Kontrolovaná brána je obecně brána, která funguje jako identita, pokud konkrétní qubit není $1$. Označujete řízenou jednotkovou jednotku řízenou v tomto případě na qubitu označeném $x$ s $\Lambda_x(U).$ Jako příklad $\Lambda_0(U) e_{1}\otimes{{\psi}=e_{1}\otimes U{\psi}$ a $\Lambda_0(U) e_{0}\otimes{\psi}={e_{{0}\otimes{\psi}$, kde $e_0$ a $e_1$ jsou výpočetní základní vektory pro jeden qubit odpovídající hodnotám $0$ a $1.$ Představte si například následující kontrolovanou bránu-Z$$, kterou pak můžete vyjádřit jako
$$\Lambda_0(Z)=\begin{bmatrix}1& 0& 0& 0\\0& 1& 0& 0\\0& 0& 1& 0\\0& 0& 0&-1 \end{bmatrix}=(\mathbf\mathbf{1}\otimes{ H)\operatorname{CNOT}(\mathbf{1}\otimes H). $$
Efektivním způsobem je vytváření kontrolovaných jednotek zásadní výzvou. Nejjednodušší způsob, jak tento postup implementovat, vyžaduje vytvoření databáze kontrolovaných verzí základních bran a nahrazení všech základních bran v původní jednotné operaci jejím řízeným protějškem. Často je to poměrně plýtvání a chytrý přehled často lze použít k nahrazení několika bran kontrolovanými verzemi, aby se dosáhlo stejného dopadu. Z tohoto důvodu poskytuje architektura možnost provádět buď naïvu metodu řízení, nebo umožnit uživateli definovat řízenou verzi jednotek, pokud je známá optimalizovaná ručně vyladěná verze.
Brány lze také ovládat pomocí klasických informací. Klasicky řízená not-brána, například, je jen obyčejná ne-brána, ale je použita pouze v případě, že klasický bit je $1$ na rozdíl od kvantového bitu. V tomto smyslu lze klasicky řízenou bránu považovat za příkaz if v kvantovém kódu, kde je brána použita pouze v jedné větvi kódu.
Stejně jako v případě jednoho qubitu je dvou qubitová brána univerzální, pokud je $možné odhadnout 4\times 4$ jednotkovou matici pomocí součinu bran z této sady na libovolnou přesnost. Jedním z příkladů univerzální sady bran je hadamardská brána, brána T a brána CNOT. Když vezmete produkty těchto bran, můžete odhadnout jakoukoli jednotkovou matici na dvou qubitech.
N-qubitové systémy
Sledujeme přesně stejné vzory, které jsme prozkoumali v případě dvou qubitů a vytvořili kvantové stavy mítů z menších systémů. Tyto stavy se vytvářejí vytvořením tensorových produktů menších stavů. Zvažte například kódování bitového řetězce $1011001$ v kvantovém počítači. Můžete ho zakódovat jako
$$1011001 0 \\ 1 1 \end{bmatrix}\otimes\\\begin{bmatrix} 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1\begin{bmatrix} \end{bmatrix}\otimes0 \\ 1 1\otimes\\ \end{bmatrix}\begin{bmatrix} 0\begin{bmatrix} \end{bmatrix}\otimes1 \\ 0 0\begin{bmatrix} \end{bmatrix}\otimes\\ 1 .\end{bmatrix}\equiv\begin{bmatrix} $$
Kvantové brány fungují úplně stejným způsobem. Pokud chcete například použít bránu $X$ u prvního qubitu a pak provést CNOT mezi druhým a třetím qubitem, můžete tuto transformaci vyjádřit jako
\begin{\begin{align}&zesilovač; (X \otimes\operatorname{CNOT}_{{12}\otimes\mathbf{1}\otimes \mathbf{\mathbf{1}\otimes \mathbf{\otimes\mathbf{1} \mathbf \mathbf{\mathbf{1}) \begin{bmatrix} 0 \\ 1 1 \end{bmatrix}\otimes\\\begin{bmatrix} 0 0\begin{bmatrix} \\ \end{bmatrix}\otimes1\begin{bmatrix} \end{bmatrix}\otimes0 \\ 1\begin{bmatrix} \end{bmatrix}\otimes\\ 0 \\\begin{bmatrix}\begin{bmatrix} \end{bmatrix}\otimes\end{bmatrix}\otimes0 \\ 1 \end{bmatrix}\\&\qquad\qquad\equiv 0011001. \end{align}
V mnoha qubitových systémech je často potřeba přidělit a uvolnit qubity, které slouží jako dočasná paměť pro kvantový počítač. Takový qubit je prý pomocný. Ve výchozím nastavení můžete předpokládat, že se stav qubitu inicializuje na $e_0$ při přidělení. Můžete dále předpokládat, že se vrátí znovu do $e_0$ před uvolněním. Tento předpoklad je důležitý, protože pokud se pomocný qubit proplete s jiným qubitovým registrem, jakmile se uvolní, proces zrušení přidělení poškodí pomocný qubit. Z tohoto důvodu vždy předpokládáte, že se tyto qubity před uvolněním vrátí k jejich počátečnímu stavu.
A konečně, i když je potřeba do naší brány přidat nové brány, aby bylo možné dosáhnout univerzálního kvantového computingu pro dva kvantové počítače qubitu, není nutné v případě více qubitů zavést žádné nové brány. Brány $H$, $T$ a CNOT tvoří univerzální bránu nastavenou na mnoha qubitech, protože všechny obecné jednotkové transformace je možné rozdělit na řadu dvou obměny qubitů. Pak můžete využít teorii vyvinutou pro případ dvou qubitů a použít ji znovu zde, pokud máte mnoho qubitů.
Poznámka:
I když lineární algebraická notace, která byla dosud použita, lze jistě použít k popisu více qubitových stavů, stává se stále těžkopádnější při zvětšení velikosti stavů. Výsledný vektor sloupce pro délku 7bitového řetězce je $například 128$ dimenzionální, což z něj dělá vyjádření pomocí notace popsané dříve velmi těžkopádné. Místo toho se používá diracový zápis, symbolický zkratka, která zjednodušuje reprezentaci kvantových stavů. Další informace najdete v zápisu Dirac.