Operações em vários qubits
Este artigo analisa as regras usadas para construir estados de vários qubits a partir de estados de qubit único e discute as operações de porta necessárias para incluir em um conjunto de portas para formar um computador quântico universal de muitos qubits. Essas ferramentas são necessárias para entender os conjuntos de portas que são comumente usados no Q# código. Eles também são importantes para obter intuição sobre por que efeitos quânticos, como emaranhamento ou interferência, tornam a computação quântica mais poderosa do que a computação clássica.
Portões de qubit único e multiqubit
O verdadeiro poder da computação quântica só se torna evidente à medida que você aumenta o número de qubits. Qubits únicos possuem algumas características contraintuitivas, como a capacidade de estar em mais de um estado em um determinado momento. No entanto, se tudo o que você tinha em um computador quântico fossem portas de qubit único, então uma calculadora e certamente um supercomputador clássico diminuiria seu poder computacional.
O poder de computação quântica surge, em parte, porque a dimensão do espaço vetorial dos vetores de estado quântico cresce exponencialmente com o número de qubits. Isso significa que, embora um único qubit possa ser trivialmente modelado, simular uma computação quântica de cinquenta qubits sem dúvida ultrapassaria os limites dos supercomputadores existentes. Aumentar o tamanho da computação em apenas um qubit extra dobra a memória necessária para armazenar o estado e aproximadamente dobra o tempo computacional. Essa rápida duplicação do poder computacional é o motivo pelo qual um computador quântico com um número relativamente pequeno de qubits pode superar em muito os supercomputadores mais poderosos de hoje, amanhã e além para algumas tarefas computacionais.
Estados de dois qubits
Se você tiver dois qubits separados, um no estado $\psi=\begin{bmatrix}\\\beta\end{bmatrix}$\alphae outro no estado\end{bmatrix}$\\\gamma\delta$\phi=\begin{bmatrix}, o estado correspondente de dois qubits é dado pelo produto tensor (ou produto Kronecker) de vetores, que é definido da seguinte forma
$$\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}. $$
Portanto, dados dois estados $\psi$ de qubit único e $\phi$, cada um da dimensão 2, o estado $\psi\otimes\phi$ de dois qubits correspondente é 4-dimensional. O vetor
$$\begin{bmatrix}\alpha_{{00}\alpha\\_{\\\alpha{01}__{{10}\\\alpha{{11}\end{bmatrix}$$
representa um estado quântico em dois qubits se
$$|\alpha_{00}|^2+|\alpha_{01}|^2+|\alpha_{{10}|^2+|\alpha_{{11}|^2=1.$$
Mais geralmente, você pode ver que o estado quântico de $n$ qubits é representado por um vetor $unitário v_1 \otimes v_2 \otimes\cdots\otimes v_n$ de dimensão $2 \cdot 2 \cdot 2 \cdots= 2^n$ usando essa construção. Assim como acontece com qubits únicos, o vetor de estado quântico de vários qubits contém todas as informações necessárias para descrever o comportamento do sistema. Para obter mais informações sobre vetores e produtos tensores, consulte Vetores e matrizes na computação quântica.
A base computacional para estados de dois qubits é formada pelos produtos tensores de estados de base de um qubit. Por exemplo, você tem
$$\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\begin{bmatrix}\end{bmatrix}\otimes 0 \\ 1=\end{bmatrix}\begin{bmatrix} 0 \\ 1\\ 0\\ 0 \end{bmatrix},\\ 10\begin{bmatrix}\equiv 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix}1 \\ 0&\end{bmatrix} amp;=\begin{bmatrix}\\ 0 0\\ 1\\ 0 \end{bmatrix},\qquad 11\begin{bmatrix}\equiv 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix}0 \\ 1 \end{bmatrix}=\begin{bmatrix}0 \\ 0\\ 0 1 .\\ \end{bmatrix} \end{align} $$
Observe que, embora você sempre possa usar o produto tensor de dois estados de qubit único para formar um estado de dois qubits, nem todos os estados quânticos de dois qubits podem ser escritos como o produto tensor de dois estados de qubit único. Por exemplo, não há estados $\psi=\begin{bmatrix}\alpha\beta\end{bmatrix}$\\e\gamma$\phi=\begin{bmatrix}\\\delta\end{bmatrix}$ tal que o seu produto tensor é o estado
$$\psi\otimes\phi=\begin{bmatrix} 1/\sqrt{{2}\\ 0 \\ 0 \\ 1/\sqrt{{2}\end{bmatrix}.$$
Tal estado de dois qubits, que não pode ser escrito como o produto tensor de estados de qubit único, é chamado &de cotação; estado emaranhado&citação;; os dois qubits são ditos entrelaçados. Vagamente falando, porque o estado quântico não pode ser pensado como um produto tensor de estados qubit únicos, a informação que o estado detém não está confinada a nenhum dos qubits individualmente. Em vez disso, a informação é armazenada não localmente nas correlações entre os dois estados. Esta não-localidade de informação é uma das principais características distintivas da computação quântica em relação à computação clássica e é essencial para uma série de protocolos quânticos, incluindo a correção de erros quânticos.
Medição de estados de dois qubits
A medição de estados de dois qubits é muito semelhante às medições de qubit único. Medir o Estado
$$\begin{bmatrix}\alpha_{{00}\alpha\\_{\\\alpha{01}__{{10}\\\alpha{{11}\end{bmatrix}$$
$produz 00$ com probabilidade$|\alpha _{{00}|^2$, $01$ com probabilidade $|\alpha_{01}|^2$, $10$ com probabilidade $|\alpha_{10}|{^2$ e $11$ com probabilidade $|\alpha_{11}|^2$. As variáveis $\alpha_{00}, \alpha_{{01}, \alpha_{{10},$ e $\alpha_{11}$ foram deliberadamente nomeadas para tornar essa conexão clara. Após a medição, se o resultado for $00$, então o estado quântico do sistema de dois qubits entrou em colapso e agora é
$$00 \equiv\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 .\end{bmatrix} $$
Também é possível medir apenas um qubit de um estado quântico de dois qubits. Quando você mede apenas um qubit de um estado de dois qubits, o impacto da medição é sutilmente diferente da medição de dois qubits. Isso ocorre porque todo o estado não é recolhido para um estado de base computacional, em vez disso, é recolhido para apenas um subsistema. Em outras palavras, medir um qubit de um estado de dois qubits apenas colapsa o subsistema relacionado para um estado de base computacional.
Para ver isso, considere medir o primeiro qubit do estado a seguir, que é formado pela aplicação da transformada $de Hadamard H$ em dois qubits inicialmente definidos para a &cotação; &0 citação; indicar:
$$H^{\otimes 2}\left( \begin{bmatrix}1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix}1 \\ 0\right\end{bmatrix} ){1}{2}\begin{bmatrix}=\frac{ 1 & 1 amp; 1 & 1 \\ &1 & -1 & 1 & -1 \\ 1 & 1 & -1 amp; -1 & -1 amp; -1 &\\ & -1 & 1 \end{bmatrix}\begin{bmatrix}1\\ 0\\ 0\\ 0 1\\=\end{bmatrix}{1}{2}\begin{bmatrix}\frac{ 1\\ 1 resultado\\ }=\begin{cases}\text{\end{bmatrix}\mapsto0 & \frac{{1}{\sqrt{2}}\begin{bmatrix}\\ 1 1\\ 0\\ 0 resultado \end{bmatrix}\\\text{}=1 & \frac{{1}{\sqrt{{2}}\begin{bmatrix}\\ 0 0\\ 1\\ 1 .\end{bmatrix}\\\end{cases} $$ Ambos os resultados têm uma probabilidade de 50% de ocorrer. Isso pode ser intuído pelo fato de que o estado quântico antes da medição não muda se $0$ for trocado por $1$ no primeiro qubit.
A regra matemática para medir o primeiro ou segundo qubit é simples. Seja e_k o vetor de base computacional k^{\rm th}$ e $S$ seja o conjunto de todos os $e_k$ tal que o qubit em questão tome o valor $1$ para esse valor de $k$.$$$ Por exemplo, se você estiver interessado em medir o primeiro qubit, S $$ consistiria em $e_1\equiv 10$ e $e_3\equiv 11$. Da mesma forma, se você estiver interessado no segundo qubit $S$ consistiria em $e_2\equiv 01$ e $e_3 \equiv 11$. Então a probabilidade de medir o qubit escolhido para ser $1$ é para o vetor de estado $\psi$
$$ P(\text{resultado}=1)=\sum_{e_k \text{ no conjunto } S}\psi^\dagger e_k e_k^\dagger\psi. $$
Nota
Este artigo usa o formato little-endian para rotular a base computacional. No formato little endian, os bits menos significativos vêm primeiro. Por exemplo, o número quatro no formato little-endian é representado pela cadeia de bits 001.
Como cada medição de qubit só pode produzir $0$ ou $1$, a probabilidade de medir $0$ é simplesmente $1-P(\text{resultado}=1)$. É por isso que você só precisa de uma fórmula para a probabilidade de medir $1$.
A ação que tal medida tem sobre o Estado pode ser expressa matematicamente como
$$\psi\mapsto\frac{\sum_{e_k \text{ no conjunto } S} e_k e_k^\psi}{\sqrt{\daggerP(\text{resultado}=1)}}. $$
O leitor cauteloso pode se preocupar com o que acontece se o denominador for zero. Enquanto esse estado é indefinido, você não precisa se preocupar com tais eventualidades porque a probabilidade é zero!
Se você tomar $\psi$ para ser o vetor de estado uniforme dado acima e está interessado em medir o primeiro qubit, então
$$P(\text{medição do primeiro qubit}=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. $$
Note-se que esta é apenas a soma das duas probabilidades que seriam esperadas para medir os resultados $10$ e $11$. Para o nosso exemplo, isto avalia a
$$\frac{{1}{4}\left|\begin{bmatrix}&0 amp; &0 amp; &1 amp; \end{bmatrix}\begin{bmatrix}0 1\\ 1\\ 1\\ 1\right|\end{bmatrix}^2+\frac{1}{{4}\left|\begin{bmatrix}0& &0 amp; &0 amp; \end{bmatrix}\begin{bmatrix}1 1\\ 1 1\\\\ 1\right|\end{bmatrix}^2=\frac{{1}{{2}. $$
o que combina perfeitamente com a nossa intuição. Da mesma forma, o estado após o primeiro qubit é medido como $1$ pode ser escrito como
$$\frac{\frac{e_1}{2}+\frac{e_3}{2}}{\sqrt{\frac{1}{2}}}=\frac{1}{\sqrt{2}}\begin{bmatrix} 0\\ 0\\ 1\\ 1\end{bmatrix}$$
novamente de acordo com a nossa intuição.
Operações de dois qubits
Como no caso de qubit único, qualquer transformação unitária é uma operação válida em qubits. Em geral, uma transformação unitária em $n$ qubits é uma matriz $U$ de tamanho $2^n \times 2^n$ (de modo que atua em vetores de tamanho $2^n$), tal que $U^{-1}= U^\dagger$. Por exemplo, a porta CNOT (controlled-NOT) é uma porta de dois qubits comumente usada e é representada pela seguinte matriz unitária:
$$\operatorname{CNOT}=\begin{bmatrix} 1\ 0\ 0\ 0 0 \\ \ 1\ 0\ 0 0 \\ \ 0\ 0\ 1 \\ 0\ 0\ 1\ 0 \end{bmatrix}$$
Também podemos formar portas de dois qubits aplicando portas de qubit único em ambos os qubits. Por exemplo, se você aplicar os portões
$$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}$$
e
$$\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}$$
Para o primeiro e segundo qubits, respectivamente, isso equivale a aplicar o unitário de dois qubits dado por seu produto tensor: $$\begin{bmatrix} A\ B\\ C\ D \end{bmatrix}\otimes\begin{bmatrix} E\ 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}$$
Assim, você pode formar portas de dois qubits pegando o produto tensor de algumas portas de qubit único conhecidas. Alguns exemplos de portas de dois qubits incluem $H \otimes H$, $X \otimes\mathbf{1}$e $X \otimes Z$.
Observe que, embora quaisquer duas portas de qubit único definam uma porta de dois qubits tomando seu produto tensor, o inverso não é verdadeiro. Nem todas as portas de dois qubits podem ser escritas como o produto tensor de portas de qubit único. Tal portão é chamado de portão de emaranhamento . Um exemplo de portão de emaranhamento é o portão CNOT.
A intuição por trás de um portão controlado pode ser generalizada para portões arbitrários. Um portão controlado em geral é um portão que atua como identidade, a menos que um qubit específico seja $1$. Você denota uma unidade controlada, controlada neste caso no qubit rotulado $x$, com um $\Lambda_x(U)$. Como exemplo $\Lambda_0(U) e_{1}\otimes{{\psi}=e_{1}\otimes U{\psi}$ e$\Lambda _0(U) e_{{0}\otimes{\psi}=e_{0}\otimes{\psi}${, onde $e_0$ e $e_1$ são os vetores de base computacional para um único qubit correspondente aos valores $0$ e $1.$ Por exemplo, considere o seguinte portão Z$controlado,$ então você pode expressar isso como
$$\Lambda_0(Z)=\begin{bmatrix}1& &0 amp; &0 amp; \\0 0& &1 amp; &0 amp; \\0 0& &0 amp; &1 amp; \\0 0& &0 amp; &0 amp;-1 \end{bmatrix}=(\mathbf\mathbf{1}\otimes{ H)\operatorname{CNOT}(\mathbf{1}\otimes H). $$
A construção de unidades controladas de forma eficiente é um grande desafio. A maneira mais simples de implementar isso requer a formação de um banco de dados de versões controladas de portões fundamentais e a substituição de cada porta fundamental na operação unitária original por sua contraparte controlada. Isso muitas vezes é bastante desperdício e uma visão inteligente muitas vezes pode ser usada para apenas substituir alguns portões por versões controladas para alcançar o mesmo impacto. Por esta razão, a estrutura fornece a capacidade de executar o método ingênuo de controle ou permitir que o usuário defina uma versão controlada do unitário se uma versão otimizada ajustada à mão for conhecida.
Os portões também podem ser controlados usando informações clássicas. Uma não-porta classicamente controlada, por exemplo, é apenas uma não-porta comum, mas só é aplicada se um bit clássico for $1$ em oposição a um bit quântico. Neste sentido, uma porta classicamente controlada pode ser pensada como uma instrução if no código quântico em que a porta é aplicada apenas em um ramo do código.
Como no caso de qubit único, um conjunto de portas de dois qubits é universal se qualquer $matriz unitária de 4\times 4$ pode ser aproximada por um produto de portas deste conjunto com precisão arbitrária. Um exemplo de um conjunto de portões universais é o portão de Hadamard, o portão T e o portão CNOT. Ao tomar produtos desses portões, você pode aproximar qualquer matriz unitária em dois qubits.
Sistemas de muitos qubits
Seguimos exatamente os mesmos padrões explorados no caso de dois qubits para construir estados quânticos de muitos qubits a partir de sistemas menores. Tais estados são construídos formando produtos tensores de estados menores. Por exemplo, considere codificar a cadeia de bits $1011001$ em um computador quântico. Você pode codificar isso como
$$\equiv\begin{bmatrix} 1011001 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0\begin{bmatrix} \end{bmatrix}\otimes0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1\begin{bmatrix}\otimes\end{bmatrix} 1 \\ 0 1 0\begin{bmatrix} \end{bmatrix}\otimes\begin{bmatrix} \end{bmatrix}\otimes0 \\ \\ 1 .\end{bmatrix} $$
Os portões quânticos funcionam exatamente da mesma maneira. Por exemplo, se você deseja aplicar a $porta X$ ao primeiro qubit e, em seguida, executar um CNOT entre o segundo e o terceiro qubits, você pode expressar essa transformação como
\begin{\begin{align}& (X \otimes\operatorname{CNOT}_{\mathbf{1}\otimes{12}\otimes \mathbf{\otimes\mathbf{1} \mathbf{\mathbf{1}\otimes \mathbf{\mathbf{1}) \begin{bmatrix} 0 \\ 1\begin{bmatrix} \end{bmatrix}\otimes1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\begin{bmatrix}\otimes1 \\ 0\begin{bmatrix} \end{bmatrix}\otimes1 \\ 0\begin{bmatrix} \end{bmatrix}\otimes0 1 \end{bmatrix}\\\\&\qquad\qquad\equiv 0011001. \end{align}
Em muitos sistemas de qubit, muitas vezes há a necessidade de alocar e desalocar qubits que servem como memória temporária para o computador quântico. Diz-se que tal qubit é auxiliar. Por padrão, você pode assumir que o estado de qubit é inicializado para e_0$ após a $alocação. Você pode ainda supor que ele é devolvido novamente para $e_0 antes da$ deallocation. Essa suposição é importante porque se um qubit auxiliar ficar emaranhado com outro registro de qubit quando ele se tornar desalocado, o processo de desalocação danificará o qubit auxiliar. Por esse motivo, você sempre assume que esses qubits são revertidos para seu estado inicial antes de serem liberados.
Finalmente, embora novas portas precisassem ser adicionadas ao nosso conjunto de portas para alcançar a computação quântica universal para dois computadores quânticos qubit, nenhuma nova porta precisa ser introduzida no caso multi-qubit. As portas $H$, $T$ e CNOT formam uma porta universal definida em muitos qubits porque qualquer transformação unitária geral pode ser quebrada em uma série de duas rotações de qubit. Você pode então aproveitar a teoria desenvolvida para o caso de dois qubits e usá-la novamente aqui quando tiver muitos qubits.
Nota
Embora a notação algébrica linear que tem sido usada até agora possa certamente ser usada para descrever estados de vários qubits, ela se torna cada vez mais complicada à medida que você aumenta o tamanho dos estados. O vetor coluna resultante para uma cadeia de caracteres de 7 bits, por exemplo, é $128$ dimensional, o que torna a expressão usando a notação descrita anteriormente muito complicada. Em vez disso, a notação de Dirac, uma abreviação simbólica que simplifica a representação de estados quânticos, é usada. Para obter mais informações, consulte Notação Dirac.