Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden de regels besproken die worden gebruikt voor het bouwen van multi-qubitstatussen uit één qubitstatus en worden de poortbewerkingen besproken die nodig zijn om op te nemen in een poortset om een universele veel-qubit-kwantumcomputer te vormen. Deze hulpprogramma's zijn nodig om inzicht te krijgen in de poortsets die vaak worden gebruikt in Q# code. Ze zijn ook belangrijk om intuïtiever te worden over waarom kwantumeffecten, zoals verstrengeling of interferentie, kwantumcomputing krachtiger maken dan klassieke computing.
Poorten met één qubit en meerdere qubits
De ware kracht van kwantumcomputing wordt alleen duidelijk wanneer u het aantal qubits verhoogt. Enkele qubits hebben enkele tegen-intuïtieve functies, zoals de mogelijkheid om meerdere statussen tegelijk te hebben. Als u echter alleen single-qubit-gates in een kwantumcomputer had, dan zou een rekenmachine en zeker een klassieke supercomputer de rekenkracht ervan verkleinen.
Kwantumcomputingskracht ontstaat deels omdat de dimensie van de vectorruimte van kwantumstatusvectoren exponentieel groeit met het aantal qubits. Dit betekent dat hoewel één qubit trivially kan worden gemodelleerd, het simuleren van een kwantumberekening met vijftig qubits de limieten van bestaande supercomputers zou verleggen. Als u de berekening vergroot met slechts één extra qubit, verdubbelt u het geheugen dat nodig is om de status op te slaan en verdubbelt u de rekentijd. Deze snelle verdubbeling van rekenkracht is waarom een kwantumcomputer met een relatief klein aantal qubits de krachtigste supercomputers van vandaag, morgen en verder kan overstijgen voor sommige rekenkundige taken.
Twee qubittoestanden
Stel dat u twee afzonderlijke qubits in de volgende toestanden hebt:
$$ \psi=\begin{bmatrix} \alpha \\ \beta \end{bmatrix} $$ $$ \phi=\begin{bmatrix} \gamma \\ \delta \end{bmatrix} $$
De corresponderende toestand van twee qubits is het resultaat van het tensor-product, of kronjorproduct, van vectoren, die als volgt wordt gedefinieerd:
$$ \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}. $$
Daarom, gegeven twee qubitstatussen $\psi$ en $\phi$, elk van dimensie 2, is de overeenkomstige tweequbitstatus $\psi\otimes\phi$ 4-dimensionaal. De vector
$$ \begin{bmatrix} \alpha_{{00}\\\alpha_{{01}\\\alpha__{{10}\\\alpha{{11}\end{bmatrix}$$
vertegenwoordigt een kwantumstatus op twee qubits als
$$ |\alpha_{{00}|^2 + |\alpha_{{01}|^2 + |\alpha_{10}|^2 + |\alpha_{{11}|^2 = 1. $$
Over het algemeen ziet u dat de eenheidsvector $v_1 \otimes v_2 \otimes\cdots\otimes v_n$ van dimensie $2 \cdot 2 \cdot 2 \cdots= 2^n$ de kwantumtoestand van $n$ qubits met deze constructie vertegenwoordigt. Net als bij enkele qubits bevat de kwantumstatusvector van meerdere qubits alle informatie die nodig is om het gedrag van het systeem te beschrijven. Zie Vectoren en Matrices in Quantum Computing voor meer informatie over vectoren en tensorproducten.
De rekenkundige basis voor twee qubitstatussen wordt gevormd door de tensorproducten van basisstatussen van één qubit. Voor een systeem met twee qubits zijn de volgende vier statussen:
$$00 \equiv\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix}1 \\ 0 \end{bmatrix}=\begin{bmatrix} 1 \\ 0 \\ 0 0 \\\end{bmatrix}$$
$$01 \equiv\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix}0 \\ 1 \end{bmatrix}=\begin{bmatrix} 0 \\ 1 \\ 0 0 \\\end{bmatrix}$$
$$ 10 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \end{bmatrix}$$
$$11 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix}0 \\ 1 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix}$$
Hoewel u altijd het tensorproduct van twee statussen met één qubit kunt gebruiken om een twee-qubitstatus te vormen, kunnen niet alle kwantumstatussen van twee qubits worden geschreven als het tensorproduct van twee statussen met één qubit. Er zijn bijvoorbeeld geen staten $\psi$ en $\phi$ zodanig dat hun tensor-product de status is
$$ \psi \otimes \phi = \begin{bmatrix}1/ \sqrt{{2}\\ 0 \\ 0 \\ 1/.\sqrt{{2}\end{bmatrix} $$
Een dergelijke twee-qubitstatus, die niet kan worden geschreven als het tensorproduct van statussen met één qubit, wordt een verstrengelde status genoemd; de twee qubits worden verstrengeld. Losjes gezegd, omdat de kwantumstatus niet kan worden beschouwd als een tensorproduct van enkelvoudige qubitstatussen, is de informatie die de status bevat niet beperkt tot een van de qubits afzonderlijk. In plaats daarvan wordt de informatie niet-lokaal opgeslagen in de correlaties tussen de twee statussen. Deze niet-lokaliteit van informatie is een van de belangrijkste onderscheidende functies van kwantumcomputing ten opzichte van klassieke computing en is essentieel voor veel kwantumprotocollen, waaronder kwantumfoutcorrectie.
Twee qubitstatussen meten
Het meten van twee qubitstatussen is vergelijkbaar met met metingen met één qubit. De status meten
$$ \begin{bmatrix} \alpha_{{00}\\\alpha_{{01}\\\alpha__{{10}\\\alpha{{11}\end{bmatrix}$$
geeft $00$ met kans $|\alpha_{{00}|^2$, $01$ met kans $|\alpha_{{01}|^2$, $10$ met kans $|\alpha_{10}|^2$ en $11$ met kans $|\alpha_{11}|^2$. De variabelen $\alpha_, {00}$_$\alpha{01}$, $\alpha_{10}$en $\alpha_{11}$ zijn bewust benoemd om deze verbinding duidelijk te maken. Na de meting, als het resultaat $00$ is, stort de kwantumtoestand van het systeem met twee qubits in en is nu
$$ 00 \equiv\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}. $$
Het is ook mogelijk om slechts één qubit van een kwantumtoestand met twee qubits te meten. Wanneer u slechts één qubit van een toestand van twee qubits meet, is de impact van de meting subtiel anders dan het meten van twee qubits. Het is anders omdat de hele status niet is samengevouwen tot een rekenkundige basisstatus, in plaats daarvan samengevouwen tot slechts één subsysteem. Met andere woorden, het meten van één qubit van een twee-qubittoestand laat het gerelateerde subsysteem alleen instorten naar een rekenbasisstaat.
U kunt dit zien door de eerste qubit van de volgende toestand te meten, die wordt gevormd door het toepassen van de Hadamard-transformatie $H$ op twee qubits die in eerste instantie zijn ingesteld op de 0-status:
$$H^{\otimes 2}\left( \begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\right)=\frac{{1}{2}\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -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{resultaat }= 0 & \frac{{1}{\sqrt{2}}\begin{bmatrix} 1 \\ 1 \\ 0 \\ 0 \end{bmatrix}\\\text{resultaat }= 1 & \frac{{1}{\sqrt{{2}}\begin{bmatrix} 0 \\ 0 \\ 1 \\ 1 \end{bmatrix}\\\end{cases}. $$
Beide resultaten hebben een kans van 50% optreden. Dit resultaat kan worden afgeleid van het feit dat de kwantumstatus voordat de meting niet verandert als $0$ wordt gewisseld met $1$ op de eerste qubit.
De wiskundige regel voor het meten van de eerste of tweede qubit is eenvoudig. Laat $e_k$ de $k^{\rmde}$ computationele basisvector zijn en $S$ de verzameling van alle $e_k$, waarbij de betrokken qubit de waarde $1$ aanneemt voor die waarde van $k$. Als u bijvoorbeeld geïnteresseerd bent in het meten van de eerste qubit, bestaat $S-$ uit $e_1\equiv 10$ en $e_3\equiv 11$. Als u geïnteresseerd bent in de tweede qubit $S$ bestaat uit $e_2\equiv 01$ en $e_3 \equiv 11$. Vervolgens is de kans op het meten van de gekozen qubit $1$ voor de toestandsvector $\psi$
$$P(\text{resultaat}= 1)=\sum _{e_k \text{ in de set } S}\psi^\dagger e_k e_k^\dagger\psi. $$
Notitie
In dit artikel wordt de little-endian-indeling gebruikt om de rekenkundige basis te labelen. In het little-endian-formaat komen eerst de minst significante bits. In de little-endian-notatie vertegenwoordigt de bitreeks 001 bijvoorbeeld het getal vier.
Aangezien elke qubitmeting slechts $0$ of $1$kan opleveren, is de waarschijnlijkheid van het meten van $0$$1-P(\text{resultaat}=1)$, waardoor u alleen een formule nodig hebt voor de waarschijnlijkheid van het meten van $1$.
De actie die een dergelijke meting op de status heeft, kan wiskundig worden uitgedrukt als
$$ \psi \mapsto \frac{\sum_{e_k \text{ in de set } S} e_k e_k^\dagger\psi}{\sqrt{P(\text{resultaat}= 1)}}. $$
De voorzichtige lezer kan zich zorgen maken over wat er gebeurt als de noemer nul is. Hoewel een dergelijke status niet is gedefinieerd, hoeft u zich geen zorgen te maken over dergelijke gevallen omdat de waarschijnlijkheid nul is.
Als je $\psi$ beschouwt als de eerder genoemde uniforme toestandsvector en je geïnteresseerd bent in het meten van de eerste qubit, dan
$$P(\text{meting van eerste qubit}= 1) = (\psi^\dagger e_1)(e_1^\dagger\psi)+(\psi^\dagger e_3)(e_3^\dagger\psi) =|e_1^\dagger\psi|2 + |e_3^\dagger\psi|2. $$
Dit is slechts de som van de twee waarschijnlijkheden die worden verwacht voor het meten van de resultaten $10$ en $11$. Voor ons voorbeeld levert dit op
$$ \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 \\ 1 \end{bmatrix}\right|^2 =\frac{{1}{{2} $$
wat perfect overeenkomt met onze intuïtiefheid. Op dezelfde manier kan de status nadat de eerste qubit is gemeten als $1$ worden geschreven als
$$ \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}$$
weer in overeenstemming met onze intuïtiefheid.
Twee qubitbewerkingen
Net als in het geval van één qubit is elke eenheidstransformatie een geldige bewerking op qubits. In het algemeen is een eenheidstransformatie op $n qubits een matrix $U$ van grootte $2^n 2^n $\times (zodat deze werkt op vectoren van grootte $2^n$), zodat $U^${-1} U^=.\dagger$ De CNOT-poort (controlled-NOT) is bijvoorbeeld een veelgebruikte twee-qubitpoort en wordt vertegenwoordigd door de volgende unitaire matrix:
$$ \text{CNOT}=\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0\end{bmatrix}$$
We kunnen ook twee qubitpoorten vormen door single-qubit-poorten toe te passen op beide qubits. Bijvoorbeeld, als u de poorten toepast
$$ \begin{bmatrix} a & b \\ c &; d \end{bmatrix}$$
en
$$ \begin{bmatrix}e & f \\g &; h\end{bmatrix}$$
voor respectievelijk de eerste en tweede qubits komt dit overeen met het toepassen van de twee-qubit eenheid zoals gegeven door hun tensorproduct:
U kunt dus twee qubitpoorten vormen door het tensorproduct van enkele bekende poorten met één qubit te nemen. Enkele voorbeelden van twee qubitpoorten zijn $H H\otimes$, $X \otimes\mathbf{1}$en $X \otimes Z$.
Houd er rekening mee dat hoewel twee enkelvoudige qubitpoorten een twee-qubitpoort definiëren door hun tensor-product te nemen, het omgekeerde niet waar is. Niet alle twee qubitpoorten kunnen worden geschreven als het tensorproduct van poorten met één qubit. Zo'n poort wordt een verstrengelingspoort genoemd. Een voorbeeld van een verstrengelingspoort is de CNOT-poort.
De intuïtie achter een controlled-not-gate kan worden gegeneraliseerd naar willekeurige poorten. Een gecontroleerde poort is in het algemeen een poort die fungeert als een identiteit, tenzij een specifieke qubit $1$ is. U geeft een gecontroleerde eenheid aan, die in dit geval wordt beheerd op de qubit met $het label x$, met een $\Lambda_x(U)$. Als voorbeeld $\Lambda_0(U) e_{1}\otimes{\psi}= e_{1}\otimes U{\psi}$ en $\Lambda_0(U) e_ e_{{0}\otimes{\psi}={{0}\otimes{\psi}$, waarbij $e_0$ en $e_1$ de rekenkundige basisvectoren zijn voor één qubit die overeenkomt met de waarden $0$ en $1.$ Denk bijvoorbeeld aan de volgende gecontroleerde Z-poort$$, dan kunt u dit uitdrukken als
$$ \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). $$
Het bouwen van beheerde eenheidsbestanden op een efficiënte manier is een grote uitdaging. De eenvoudigste manier om gecontroleerde unitaire operaties te implementeren, vereist het vormen van een database met gecontroleerde vormen van fundamentele poorten, die vervolgens in de oorspronkelijke unitaire operatie worden vervangen door hun gecontroleerde tegenhangers. Deze methode is vaak verspilling en inzicht kan vaak worden gebruikt om slechts een paar poorten te vervangen door gecontroleerde versies om dezelfde impact te bereiken. Daarom biedt het framework de mogelijkheid om ofwel de naïeve methode voor het besturen te gebruiken, of de gebruiker toe te staan een gecontroleerde versie van de unitair te definiëren, indien een geoptimaliseerde handmatig afgestemde versie bekend is.
Poorten kunnen ook worden beheerd met behulp van klassieke informatie. Een klassiek gecontroleerde niet-poort is bijvoorbeeld een gewone niet-poort die alleen wordt toegepast als een klassiek bit $1$ is, in tegenstelling tot een qubit. In deze zin kan een klassieke gecontroleerde poort worden beschouwd als een if-instructie in de kwantumcode waarbij de poort slechts in één vertakking van de code wordt toegepast.
Net als in het geval van één qubit is een twee-qubitpoortset universeel als een $4 4\times 4$ unitaire matrix kan worden benaderd door een product van poorten van deze set met willekeurige precisie. Een voorbeeld van een universele poortset is de Hadamard-poort, de T-poort en de CNOT-poort. Door producten van deze poorten te nemen, kunt u bij benadering elke eenheidsmatrix op twee qubits benaderen.
Veelqubitsystemen
We volgen precies dezelfde patronen die in het geval van twee qubits zijn verkend om kwantumstatussen met veel qubits te bouwen van kleinere systemen. Dergelijke toestanden worden opgebouwd door tensorproducten van kleinere toestanden te vormen. U kunt bijvoorbeeld de bittekenreeks $1011001$ coderen in een kwantumcomputer. U kunt dit coderen als
$$ 1011001 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}. $$
Kwantumpoorten werken op precies dezelfde manier. Als u bijvoorbeeld de $X-$-poort wilt toepassen op de eerste qubit en vervolgens een CNOT tussen de tweede en derde qubits wilt uitvoeren, kunt u deze transformatie als
$$ \begin{align}(X \otimes\operatorname{CNOT}_{12}\otimes\mathbf{1}\otimes \mathbf{\mathbf{1}\otimes \mathbf{\mathbf{1}\otimes\mathbf{1}) \begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\equiv 0011001. \end{align} $$
In veel qubitsystemen is het vaak nodig om qubits toe te wijzen en de toewijzing ervan ongedaan te maken die fungeren als tijdelijk geheugen voor de kwantumcomputer. Een dergelijke qubit wordt gezegd hulp te zijn. Standaard kunt u ervan uitgaan dat de qubitstatus wordt geïnitialiseerd tot $e_0$ bij de toewijzing. U kunt er verder van uitgaan dat de poort opnieuw terugkeert naar $e_0$ voordat de deallocatie plaatsvindt. Deze veronderstelling is belangrijk, omdat als een hulpqubit verstrengeld raakt met een ander qubitregister wanneer het gedealloceerd wordt, het deallocatieproces de hulpqubit beschadigt. Daarom gaat u er altijd van uit dat dergelijke qubits worden teruggezet naar de oorspronkelijke status voordat ze worden vrijgegeven.
Tot slot, hoewel er nieuwe poorten aan onze gateset moest worden toegevoegd om universele kwantumcomputing voor twee qubit kwantumcomputers te bereiken, hoeven er geen nieuwe poorten te worden geïntroduceerd in het geval van meerdere qubits. De poorten $H$, $T$en CNOT vormen een universele poortset op veel qubits, omdat een algemene eenheidstransformatie kan worden opgesplitst in een reeks van twee qubitrotaties. Vervolgens kunt u de theorie gebruiken die is ontwikkeld voor de case met twee qubits en deze hier opnieuw gebruiken wanneer u veel qubits hebt.
Notitie
Hoewel de lineaire algebraïsche notatie die voor dit punt wordt gebruikt, zeker kan worden gebruikt voor het beschrijven van toestanden met meerdere qubits, wordt het steeds lastiger wanneer u de grootte van de toestanden vergroot. De resulterende kolomvector voor een 7-bits tekenreeks is bijvoorbeeld $128$ dimensional, waardoor het omslachtig wordt om het uit te drukken met behulp van de eerder beschreven notatie. In plaats daarvan wordt diracnotatie, een symbolische afkorting die de weergave van kwantumtoestanden vereenvoudigt, gebruikt. Zie Dirac-notatie voor meer informatie.