Dela via


Åtgärder på flera kvantbitar

Den här artikeln granskar de regler som används för att skapa multi-qubit-tillstånd av enstaka qubit-tillstånd och diskuterar de gateåtgärder som krävs för att inkludera i en grinduppsättning för att bilda en universell kvantdator med många kvantbitar. Dessa verktyg är nödvändiga för att förstå de gate-uppsättningar som ofta används i Q# kod. De är också viktiga för att få intuition om varför kvanteffekter som sammanflätning eller interferens gör kvantberäkning mer kraftfull än klassisk databehandling.

Portar med enkel qubit och multi-qubit

Den verkliga kraften i kvantberäkning blir bara uppenbar när du ökar antalet kvantbitar. Enkla kvantbitar har vissa kontraintuitiva funktioner, till exempel möjligheten att vara i mer än ett tillstånd vid en viss tidpunkt. Men om allt du hade i en kvantdator var enstaka qubitgrindar, skulle en kalkylator och säkert en klassisk superdator dvärga dess beräkningskraft.

Kvantberäkningskraft uppstår delvis eftersom dimensionen av vektorutrymmet för kvanttillståndsvektorer växer exponentiellt med antalet kvantbitar. Det innebär att även om en enda kvantbit kan modelleras trivialt, skulle simulering av en kvantberäkning med femtio kvantbitar förmodligen tänja på gränserna för befintliga superdatorer. Om du ökar storleken på beräkningen med bara en extra qubit fördubblas det minne som krävs för att lagra tillståndet och fördubblar beräkningstiden ungefär. Den här snabba fördubblingen av beräkningskraften är anledningen till att en kvantdator med ett relativt litet antal kvantbitar mycket kan överträffa dagens, morgondagens och senare mest kraftfulla superdatorer för vissa beräkningsuppgifter.

Två qubit-tillstånd

Om du har två separata kvantbitar, en i tillståndet $\psi=\begin{bmatrix}\\\beta\end{bmatrix}$\alphaoch den andra i tillståndet\end{bmatrix}$\\\gamma\delta$\phi=\begin{bmatrix} , ges motsvarande två-qubit-tillstånd av tensorprodukten (eller Kronecker-produkten) av vektorer, som definieras enligt följande

$$\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}. $$

Därför är motsvarande två-qubit-tillstånd 4-dimensionellt med tanke på två enstaka kvantbitstillstånd $\psi$ och , var och $\phi$en av dimension 2.$\psi\otimes\phi$ Vektorn

$$\begin{bmatrix}\alpha_{{00}\alpha\\_{\\\alpha{01}__{{10}\\\alpha{{11}\end{bmatrix}$$

representerar ett kvanttillstånd på två kvantbitar om

$$|\alpha_{00}|^2+|\alpha_{01}|^2+|\alpha_{{10}|^2+|\alpha_{{11}|^2=1.$$

Mer allmänt kan du se att kvanttillståndet för n qubits representeras av en enhetsvektor $v_1 \otimes v_2 v_n\cdots\otimes$ \otimesav dimension $2 \cdot 2 \cdot 2 \cdots= 2^n$ med den här konstruktionen.$ $ Precis som med enkla kvantbitar innehåller kvanttillståndsvektorn för flera kvantbitar all information som behövs för att beskriva systemets beteende. Mer information om vektorer och tensorprodukter finns i Vektorer och matriser i Kvantberäkning.

Beräkningsbasen för två-qubit-tillstånd bildas av tensor-produkterna i en-qubit-bastillstånd. Du har till exempel

$$\begin{\begin{align}00 \equiv\begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&=\begin{bmatrix}1 0 0 0 , 01\begin{bmatrix}\equiv 1 \\ 0 0\begin{bmatrix}\end{bmatrix}\otimes\\ 1 \end{bmatrix}\begin{bmatrix}=0 \\ 1\\ 0 0\\ \end{bmatrix},\\ 10 \equiv\begin{bmatrix}0 \\ 1\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&\begin{bmatrix}=\qquad \end{bmatrix}\\\\ \\0 \\ 0 0\\ 1\\ 0 \end{bmatrix},\qquad 11\begin{bmatrix}\equiv 0 \\ 1\begin{bmatrix}\end{bmatrix}\otimes 0 \\ 1\begin{bmatrix}=\end{bmatrix} 0 0\\ \\ 0\\ 1 .\end{bmatrix} \end{align} $$

Observera att även om du alltid kan ta tensorprodukten från två enstaka kvantbitstillstånd för att bilda ett två-qubit-tillstånd, kan inte alla kvanttillstånd med två kvantbitar skrivas som tensor-produkten av två enstaka kvantbitstillstånd. Det finns till exempel inga tillstånd $\psi=\begin{bmatrix}\alpha\beta\end{bmatrix}$\\och\gamma$\phi=\begin{bmatrix}\\\delta\end{bmatrix}$ så att deras tensorprodukt är tillståndet

$$\psi\otimes\phi=\begin{bmatrix}1/\sqrt{{2}\\ 0 \\ 0 \\ 1/.\sqrt{{2}\end{bmatrix}$$

Ett sådant två-qubit-tillstånd, som inte kan skrivas som tensorprodukten av enstaka qubittillstånd, kallas ett &citat; sammanflätat tillstånd"; de två kvantbitarna sägs vara sammanflätade. Eftersom kvanttillståndet inte kan betraktas som en tensorprodukt av enskilda qubittillstånd är informationen som tillståndet innehåller inte begränsad till någon av kvantbitarna individuellt. Informationen lagras i stället icke-lokalt i korrelationerna mellan de två tillstånden. Denna icke-lokala information är en av de viktigaste utmärkande funktionerna i kvantberäkning över klassisk databehandling och är viktig för ett antal kvantprotokoll, inklusive kvantfelkorrigering.

Mäta två qubit-tillstånd

Mätning av två qubit-tillstånd liknar mycket enkla kvantbitsmätningar. Mäta tillståndet

$$\begin{bmatrix}\alpha_{{00}\alpha\\_{\\\alpha{01}__{{10}\\\alpha{{11}\end{bmatrix}$$

ger 00 med sannolikhet _{{00}|$|\alpha^2$, $01$ med sannolikhet $|\alpha_{01}|^2$, $10$ med sannolikhet $|\alpha_{10}|{^2$ och $11$ med sannolikhet $|\alpha_{11}|^2.$$ $ Variablerna $\alpha_{00}, \alpha_{01}{, \alpha_{10}{och$ $\alpha_{11}$ namngavs avsiktligt för att göra anslutningen tydlig. Efter mätningen, om resultatet är $00$, har kvanttillståndet för två-qubit-systemet kollapsat och är nu

$$ 00 \equiv\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}. $$

Det går också att mäta bara en kvantbit av ett kvanttillstånd med två kvantbitar. När du bara mäter en qubit av ett två-qubit-tillstånd skiljer sig mätningens effekt subtilt från att mäta två kvantbitar. Det beror på att hela tillståndet inte har komprimerats till ett beräkningsbastillstånd, utan att det komprimeras till endast ett undersystem. Med andra ord komprimerar mätningen av en qubit av ett två-qubit-tillstånd endast det relaterade undersystemet till ett beräkningsbastillstånd.

För att se detta bör du överväga att mäta den första kvantbiten i följande tillstånd, som bildas genom att tillämpa Hadamard-transformering $H$ på två kvantbitar som ursprungligen ställts in på citatet &; 0" tillstånd:

$$H^{\otimes 2}\left( \begin{bmatrix}1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix}1 \\ 0 \end{bmatrix}\right){1}{2}\begin{bmatrix}\frac{= 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 amp; -1 & -&1 &\\ amp; -1 & 1 \end{bmatrix}\begin{bmatrix}1\\ 0\\ 0 0\\=\end{bmatrix}\frac{{1}{2}\begin{bmatrix} 1\\ 1\\ 1\\ 1\end{bmatrix}\mapsto\begin{cases}\text{utfall }=0 & \frac{{1}{\sqrt{2}}\begin{bmatrix}1\\ 1\\ 0\\ 0 \end{bmatrix}\\\text{utfall }=1 & \frac{{1}{\sqrt{{2}}\begin{bmatrix}0\\ 0 0\\ 1\\ 1 \end{bmatrix}\\\end{cases}. $$ Båda utfallen har 50 % sannolikhet att inträffa. Det kan intuiteras från det faktum att kvanttillståndet före mätningen inte ändras om $0$ växlas med $1$ på den första kvantbiten.

Den matematiska regeln för att mäta den första eller andra kvantbiten är enkel. Låt e_k vara k^{\rm th}$ beräkningsbasvektor och $S$ vara uppsättningen av alla $e_k$ så att qubiten i fråga tar värdet $1$ för det värdet av $k$.$$$ Om du till exempel är intresserad av att mäta den första kvantbiten $skulle S$ bestå av $e_1\equiv 10$ och $e_3\equiv 11$. På samma sätt, om du är intresserad av den andra qubit $S$ skulle bestå av $e_2\equiv 01$ och $e_3 \equiv 11$. Då är sannolikheten att mäta den valda kvantbiten till $1$ för tillståndsvektor $\psi$

$$ P(\text{resultat}=1)=\sum_{e_k \text{ i uppsättningen } S}\psi^\dagger e_k e_k^\dagger\psi. $$

Kommentar

Den här artikeln använder formatet little-endian för att märka beräkningsbasen. I lite endianskt format kommer de minst betydande bitarna först. Till exempel representeras talet fyra i lite endianskt format av strängen bits 001.

Eftersom varje kvantbitsmätning bara kan ge 0 eller 1 är sannolikheten att mäta $0$ helt enkelt $1 P(\text{utfall}=1)$.$$$ $ Därför behöver du bara en formel för sannolikheten att mäta $1$.

Åtgärden som en sådan mätning har på tillståndet kan uttryckas matematiskt som

$$\psi\mapsto\frac{\sum_{e_k \text{ i uppsättningen } S} e_k e_k^\psi}{\sqrt{\daggerP(\text{resultat}=1)}}. $$

Den försiktiga läsaren kan oroa sig för vad som händer om nämnaren är noll. Även om ett sådant tillstånd är odefinierat behöver du inte oroa dig för sådana eventualiteter eftersom sannolikheten är noll!

Om du är $\psi$ den enhetliga tillståndsvektor som anges ovan och är intresserad av att mäta den första kvantbiten

$$P(\text{mätning av första qubit}=1) = (\psi^\dagger e_1)(e_1^\psi\dagger)+(\psi^\dagger e_3)(e_3^\dagger\psi)=|e_1^^\psi|\dagger2+|e_3^\dagger\psi|^2. $$

Observera att detta bara är summan av de två sannolikheterna som skulle förväntas för att mäta resultaten $10$ och $11$. I vårt exempel utvärderas detta till

$$\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\\ 1\end{bmatrix}\right|^2=\frac{{1}{{2}. $$

som perfekt matchar vår intuition. På samma sätt kan tillståndet efter den första kvantbiten mätas som $1$ skrivas som

$$\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}$$

igen i enlighet med vår intuition.

Åtgärder med två kvantbitar

Precis som i single-qubit-fallet är alla enhetstransformeringar en giltig åtgärd på kvantbitar. I allmänhet är en enhetlig transformering på $n$ qubits en matris $U$ av storlek $2^n \times 2^n$ (så att den fungerar på vektorer av storlek $2^n$), så att $U^{-1}= U^\dagger$. Till exempel är CNOT-grinden (controlled-NOT) en vanlig två-qubit-grind och representeras av följande enhetsmatris:

$$\operatorname{CNOT}=\begin{bmatrix} 1\ 0\ 0\ 0 \\ 0\ 1\ 0\ 0 0 \\ \ 0\ 0\ 1 \\ 0\ 0\ 1\ 0 \end{bmatrix}$$

Vi kan också skapa två qubitgrindar genom att använda enstaka qubitgrindar på båda qubitarna. Om du till exempel använder portarna

$$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}$$

och

$$\begin{bmatrix} e\ f g\\ \ h \end{bmatrix}$$

till den första respektive andra qubits, motsvarar detta att tillämpa två-qubit unitary som ges av deras tensor produkt: $$\begin{bmatrix} a\ b c\\\ d e\otimes\begin{bmatrix}\end{bmatrix}\ f\\ g\ h \end{bmatrix}=\begin{bmatrix} ae\ af\ be\ bf \\ ag\ ah\ bg\ bh \\ ce\ cf\ de\ df \\ cg\ ch\ dg\ dh .\end{bmatrix}$$

Därför kan du skapa två qubitgrindar genom att ta tensorprodukten av några kända portar med en enda qubit. Några exempel på två qubit-portar är $H \otimes H$, $X \otimes\mathbf{1}$och $X \otimes Z$.

Observera att även om två portar med en enda qubit definierar en två-qubit-grind genom att ta deras tensorprodukt, är converse inte sant. Alla två qubitgrindar kan inte skrivas som tensorprodukt av enstaka qubitgrindar. En sådan grind kallas en sammanflätningsgrind . Ett exempel på en sammanflätningsgrind är CNOT-grinden.

Intuitionen bakom en kontrollerad-inte-grind kan generaliseras till godtyckliga grindar. En kontrollerad grind i allmänhet är en grind som fungerar som identitet om inte en specifik qubit är $1$. Du anger en kontrollerad enhetsenhet, som i det här fallet styrs $på qubiten märkt x$, med en $\Lambda_x(U)$. Till exempel $\Lambda_0(U) e_{1}\otimes{{\psi}=e_{1}\otimes U{\psi}$ och $\Lambda_0(U) e_{0}\otimes{\psi}={e_{{0}\otimes{\psi}$, där $e_0$ och $e_1$ är beräkningsbasvektorerna för en enda kvantbit som motsvarar värdena $0$ och $1.$ Tänk till exempel på följande kontrollerade Z-grind$$ så kan du uttrycka detta som

$$\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). $$

Att skapa kontrollerade enheter på ett effektivt sätt är en stor utmaning. Det enklaste sättet att implementera detta är att skapa en databas med kontrollerade versioner av grundläggande portar och ersätta varje grundläggande grind i den ursprungliga enhetsåtgärden med dess kontrollerade motsvarighet. Detta är ofta ganska slösaktigt och smarta insikter kan ofta användas för att bara ersätta några grindar med kontrollerade versioner för att uppnå samma inverkan. Därför ger ramverket möjlighet att utföra antingen den naiva metoden för att kontrollera eller tillåta användaren att definiera en kontrollerad version av enhetsversionen om en optimerad handjusterad version är känd.

Grindar kan också styras med klassisk information. En klassiskt styrd not-gate är till exempel bara en vanlig not-gate, men den tillämpas bara om en klassisk bit är $1$ i motsats till en kvantbit. I den meningen kan en klassiskt kontrollerad grind betraktas som en if-instruktion i kvantkoden där grinden endast tillämpas i en gren av koden.

Precis som i fallet med enkel qubit är en två-qubit-grinduppsättning universell om någon $4 4-enhetsmatris\times$ kan approximeras av en produkt av grindar från den här uppsättningen till godtycklig precision. Ett exempel på en universell grinduppsättning är Hadamard-grinden, T-grinden och CNOT-grinden. Genom att ta produkter från dessa portar kan du approximeras vilken enhetsmatris som helst på två kvantbitar.

System med många kvantbitar

Vi följer exakt samma mönster som utforskas i två-qubit-fallet för att skapa kvanttillstånd med många kvantbitar från mindre system. Sådana tillstånd skapas genom att tensor-produkter bildas i mindre tillstånd. Överväg till exempel att koda bitsträngen $1011001$ i en kvantdator. Du kan koda detta som

$$1011001 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 0 \\\begin{bmatrix} \end{bmatrix}\otimes1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 1 \\\begin{bmatrix}\otimes\end{bmatrix}0\begin{bmatrix} \end{bmatrix}\otimes1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 .\end{bmatrix}\equiv\begin{bmatrix} $$

Kvantgrindar fungerar på exakt samma sätt. Om du till exempel vill tillämpa X-grinden $$ på den första kvantbiten och sedan utföra en CNOT mellan den andra och tredje kvantbiten kan du uttrycka den här omvandlingen som

\begin{\begin{align}&ere; (X \otimes\operatorname{CNOT}_{{12}\otimes\mathbf{1}\otimes \mathbf{\mathbf{1}\otimes \mathbf{\otimes\mathbf{1} \mathbf{\mathbf{1}) \begin{bmatrix} 0 \\ 1 1 \end{bmatrix}\otimes\\\begin{bmatrix} 0 0\begin{bmatrix} \end{bmatrix}\otimes\\ 1\begin{bmatrix} \end{bmatrix}\otimes0 \\ 1 1\begin{bmatrix} \end{bmatrix}\otimes\\ 0\begin{bmatrix} \end{bmatrix}\otimes1 \\ 0 0 \end{bmatrix}\otimes\\\begin{bmatrix} 1 \end{bmatrix}\\&\qquad\qquad\equiv 0011001. \end{align}

I många kvantbitssystem finns det ofta ett behov av att allokera och frigöra kvantbitar som fungerar som tillfälligt minne för kvantdatorn. En sådan qubit sägs vara extra. Som standard kan du anta att kvantbitstillståndet initieras för att $e_0$ vid allokering. Du kan dessutom anta att den returneras igen för att $e_0$ innan den frigörs. Det här antagandet är viktigt eftersom om en extra kvantbit blir sammanflätad med ett annat qubitregister när det frigörs kommer processen för frigöring att skada den extra kvantbiten. Därför förutsätter du alltid att sådana kvantbitar återställs till sitt ursprungliga tillstånd innan de släpps.

Slutligen, även om nya portar behövde läggas till i vår grinduppsättning för att uppnå universell kvantberäkning för två kvantbitars kvantdatorer, behöver inga nya grindar införas i multi-qubit-fallet. Portarna $H$, $T$ och CNOT utgör en universell grind inställd på många kvantbitar eftersom alla allmänna enhetliga omvandlingar kan brytas in i en serie med två kvantbitsrotationer. Du kan sedan använda teorin som utvecklats för fallet med två qubit och använda den igen här när du har många qubits.

Kommentar

Även om den linjära algebraiska notationen som har använts hittills säkert kan användas för att beskriva multi-qubit-tillstånd, blir det alltmer besvärligt när du ökar storleken på tillstånden. Den resulterande kolumnvektorn för en längd 7-bitarssträng är $till exempel 128-dimensionell$ , vilket gör det mycket besvärligt att uttrycka den med notationen som beskrevs tidigare. I stället används Dirac-notation, en symbolisk förkortning som förenklar representationen av kvanttillstånd. Mer information finns i Dirac-notation.