Operações em vários qubits
Este artigo revisa as regras usadas para criar Estados qubit de Estados de qubit único e discute as operações de portão necessárias para incluir em um conjunto de portões para formar um computador Quantum universal de muitos qubit. Essas ferramentas são necessárias para entender os conjuntos de portas comumente usados no Q# código. Eles também são importantes para obter intuição sobre por que os efeitos quânticos, como emaranhamento ou interferência, tornam a computação quântica mais poderosa do que a computação clássica.
Portas de qubit único e multi-qubit
O verdadeiro poder da computação quântica só se torna evidente à medida que você aumenta o número de qubits. Qubits únicos possuem alguns recursos contra-intuitivos, como a capacidade de estar em mais de um estado ao mesmo tempo. No entanto, se tudo o que você tivesse em um computador quântico fossem portas de qubit único, uma calculadora e certamente um supercomputador clássico diminuiriam seu poder computacional.
A capacidade de computação quântica surge, em parte, porque a dimensão do espaço vetorial dos vetores de estado quantum aumenta exponencialmente com o número de qubits. Isso significa que, embora um qubit possa ser modelado trivialmente, a simulação de uma computação quântica de 50 qubits expandiria, possivelmente, 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 praticamente dobra o tempo computacional. Essa potência computacional que é rapidamente duplicada é o motivo pelo qual um computador quantum com um número relativamente pequeno de qubits pode superar de longe os supercomputadores mais potentes 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 de dois qubits correspondente é fornecido pelo produto tensorial (ou produto de 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, considerando dois estados de qubit único $\psi$ e $\phi$, cada um de dimensão 2, o estado correspondente de dois qubit $\psi\otimes\phi$ será quadridimensional. 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+_^{{11}|2=1|\alpha.$$
Em geral, você pode ver que o estado quântico de $n$ qubits é representado por um vetor de unidade $v_1 \otimes v_2 \otimes\cdots\otimes v_n$ da dimensão $2 \cdot 2 \cdot 2 \cdots= 2^n$ usando essa construção. Assim como ocorre com qubits único, o vetor de estado do quantum 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 tensoriais, confira Vetores e matrizes na computação quântica.
A base computacional para estados de dois qubits é formada pelos produtos tensoriais 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}\\ 0 ,\\ 10 \equiv\begin{bmatrix}0 \\ 1\begin{bmatrix}\end{bmatrix}\otimes 1 0 \end{bmatrix}&\\ amp;=\begin{bmatrix}\\ 0 0\\ 1\\ 0 \end{bmatrix},\qquad 11\begin{bmatrix}\equiv 0 \\ 1\begin{bmatrix}\end{bmatrix}\otimes 0 \\ 1 0 \\ 0 \end{bmatrix}\begin{bmatrix}\\=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 gravados como o produto tensor de dois estados de qubit único. Por exemplo, não há estados $\psi=\begin{bmatrix}\alpha\\\beta\end{bmatrix}$ e $\phi=\begin{bmatrix}\gamma\\\delta\end{bmatrix}$, por isso, seu produto tensor é o estado
$$\psi\otimes\phi=\begin{bmatrix} 1/\sqrt{{2}\\ 0 \\ 0 \\ 1/\sqrt{{2}\end{bmatrix}.$$
Esse estado de dois qubits, que não pode ser escrito como o produto tensor de estados de qubit único, é chamado de "estado emaranhado"; os dois qubits são considerados entrelaçados. De modo flexível, como o estado quantum não pode ser considerado como um produto tensor de estados de qubit único, as informações que o estado mantém não são confinadas a nenhum dos qubits individualmente. Em vez disso, as informações são armazenadas não localmente nas correlações entre os dois estados. Essa não-localidade de informações é uma das principais características distintivas da computação quântica em relação à computação clássica e é essencial para vários protocolos quânticos, incluindo a correção de erros quânticos.
Medindo estados de dois qubits
Medir estados de dois qubit é muito semelhante a medir um só qubit. Como 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$, 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, mas sim para apenas um subsistema. Em outras palavras, medir um qubit de um estado de dois qubits apenas recolhe 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 como a &cot; &0 quot; estado:
$$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 amp; 1 & 1 \\ 1 & -1 & 1 amp; -&1 &\\ amp; 1 amp; -&1 amp; -1 \\ &1 & -1 amp; -1 && 1 \end{bmatrix}\begin{bmatrix}1\\ 0\\ 0\\ 0 1=\end{bmatrix}\\\frac{{1}{2}\begin{bmatrix} 1\\ 1 1\\ 1 1 resultado }=\begin{cases}\text{\end{bmatrix}\mapsto0 & \frac{{1}{\sqrt{2}}\begin{bmatrix}\\ 1 1\\ 0\\ 0 \end{bmatrix}\\\text{resultado }=1 & \frac{{1}{\sqrt{{2}}\begin{bmatrix}\\ 0 0\\ 1\\ 1 \end{bmatrix}\\\end{cases}. $$ Ambos os resultados têm 50% de probabilidade 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 o segundo qubit é simples. Seja e_k o k^{\rm th}$ vetor de base computacional e $S$ seja o conjunto de todos os $e_k$ tal que o qubit em questão assume 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 $, o S$ consistiria em $e_2\equiv 01$ e $e_3 \equiv 11$. Em seguida, a probabilidade de medir o qubit escolhido como $1$ é para o vetor de estado $\psi$
$$ P(\text{resultado}=1)=\sum_{e_k \text{ no conjunto de } S}\psi^\dagger e_k e_k^\dagger\psi. $$
Observação
Este artigo usa o formato little-endian para rotular a base computacional. No formato little endian, os bits menos significativos são apresentados primeiro. Por exemplo, o número quatro no formato little endian é representado pela cadeia de caracteres de bits 001.
Como cada medição de qubit só pode gerar $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 essa medida tem no estado pode ser expressa matematicamente como
$$\psi\mapsto\frac{\sum_{e_k \text{ no conjunto } S} e_k e_k^\dagger\psi}{\sqrt{P(\text{resultado}=1)}}. $$
O leitor cauteloso pode se preocupar com o que acontece se o denominador for zero. Embora esse estado seja indefinido, você não precisa se preocupar com essas eventualidades porque a probabilidade é zero!
Se você considerar $\psi$ o vetor de estado uniforme fornecido acima e estiver interessado em medir o primeiro qubit, então
$$ P(\text{medição do primeiro 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. $$
Observe que esta é apenas a soma das duas probabilidades que seriam esperadas para medir os resultados $10$ e $11$. Para nosso exemplo, isso é avaliado como
$$\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 nossa intuição. Da mesma forma, o estado após o primeiro qubit ser 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 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 ela atua em vetores de tamanho $2^n$), de modo que $U^{-1}= U^\dagger$. Por exemplo, o portão CNOT (controlada não) é um portão 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 portões de dois qubit aplicando portões 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 o 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 usando o produto tensor de algumas portas de qubit único conhecidas. Alguns exemplos de portões de dois qubits incluem $H \otimes H$, $X \otimes\mathbf{1}$ e $X \otimes Z$.
Observe que, embora qualquer um dos dois portões qubit defina um portão de dois qubits ao pegar seu produto tensor, o inverso não é verdadeiro. Nem todos os portões de dois qubits podem ser escritas como o produto tensor de portões de qubit único. Esse portão é chamado de portão de entrelaçamento. Um exemplo de um portão de entrelaçamento é o portão CNOT.
A intuição por trás de um portão controlado não 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 um unitário controlado, controlado 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}$, em que $e_0$ e $e_1$ são os vetores de base computacional para um qubit correspondente aos valores $0$ e $1$. Por exemplo, considere a seguinte porta Z$controlada$, 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 criação eficiente de unitários controlados é um grande desafio. A maneira mais simples de implementar isso requer formar um banco de dados de versões controladas de portões fundamentais e substituir cada portão fundamental na operação unitária original por sua contraparte controlada. Geralmente, isso é muito inútil e insights inteligentes muitas vezes podem ser usados apenas para substituir alguns portões por versões controladas para obter o mesmo impacto. Por esse motivo, 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 manualmente for conhecida.
Os portões também podem ser controlados usando informações clássicas. Um não portão controlado de modo clássico, por exemplo, é apenas um não portão comum, mas só será aplicado se um bit clássico for $1$, em vez de um bit quantum. Nesse sentido, um portão controlado de modo clássico pode ser considerado uma instrução if no código quantum em que o portão é aplicado somente em uma ramificação do código.
Como no caso de qubit único, um conjunto de portões de dois qubit será universal se qualquer matriz unitária de $4\times 4$ puder ser aproximada por um produto de portões desse conjunto para uma precisão arbitrária. Um exemplo de um conjunto de portão universal é o portão de Hadamard, o portão T e o portão CNOT. Ao usar produtos dessas portas, você pode aproximar qualquer matriz unitária em dois qubits.
Sistemas de vários qubit
Seguimos exatamente os mesmos padrões explorados no caso de dois qubit para criar estados quantum de vários qubits com base em sistemas menores. Esses estados são criados formando produtos tensores com base em estados menores. Por exemplo, considere a codificação da cadeia de caracteres de bits $1011001$ em um computador quantum. Você pode codificar isso como
$$ 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}. $$
Os portões quantum 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\begin{bmatrix} \end{bmatrix}\otimes0 \\ 1 \end{bmatrix}\begin{bmatrix}\otimes1 \\ 0\begin{bmatrix} \end{bmatrix}\otimes1 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ \\ 1 \end{bmatrix}\\&\qquad\qquad\equiv 0011001. \end{align}
Em muitos sistemas qubit, geralmente há a necessidade de alocar e desalocar qubits que servem como memória temporária para o computador quantum. Esse qubit é conhecido como auxiliar. Por padrão, você pode supor que o estado do qubit é inicializado para $e_0$ na alocação. Você pode supor ainda que ele seja retornado novamente para e_0 antes da $$ desalocação. Essa suposição é importante porque, se um qubit auxiliar se tornar entrelaçado com outro registro de qubit quando ele ficar 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.
Por fim, embora novos portões precisem ser adicionados ao nosso conjunto de portões para obter a computação quântica universal para dois computadores quantum qubit, nenhum portão novo precisará ser introduzido no caso de vários qubit. Os portões $H$, $T$ e CNOT formam um portão universal definido em muitos qubits porque qualquer transformação unitária geral pode ser quebrada em uma série de duas rotações de qubit. Em seguida, você pode aproveitar a teoria desenvolvida para o caso de dois qubits e usá-la novamente aqui quando tiver muitos qubits.
Observação
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 de coluna resultante para uma cadeia de caracteres de comprimento de 7 bits, por exemplo, tem $128$ dimensões, o que torna expressá-la usando a notação descrita anteriormente muito complicado. 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 de Dirac.