Digamos que temos uma função que mapeia bits para bits (onde ).n m m < nfnmm < n
f: { 0 , 1 }n→ { 0 , 1 }m
É claro que poderíamos projetar um circuito clássico para executar esta operação. Vamos chamá-lo de . Ele recebe como entrada bits. Digamos que ele tome como entrada e produza . n X f ( X )CfnXf( X)
Agora, gostaríamos de fazer a mesma coisa usando um circuito quântico. Vamos chamá-lo de , que recebe como entrada e gera . Agora, lembre-se de que, como a mecânica quântica é linear, os qubits de entrada podem, é claro, estar em uma superposição de todas as seqüências de bits. Portanto, a entrada pode estar em algum estado . Por linearidade, a saída será .| X ⟩ | f ( X ) ⟩ n ∑ X ∈ { 0 , 1 } n α X | X ⟩ Σ X ∈ { 0 , 1 } n α X | f ( X ) ⟩vocêf| X⟩| f( X) ⟩n∑X∈ { 0 , 1 }nαX| X⟩∑X∈ { 0 , 1 }nαX| f(X)⟩
A evolução na mecânica quântica é unitária . E por ser unitário, é reversível. Isso significa essencialmente que, se você aplicar uma porta quântica em um estado de entrada e obter um estado de saída , sempre poderá aplicar uma porta inversa para voltar ao estado .| x ⟩ U | x ⟩ U † | x ⟩U|x⟩U|x⟩U†|x⟩
Observe com cuidado na figura acima que o número de linhas de entrada (ou seja, seis) é exatamente o mesmo que o número de linhas de saída em cada etapa. Isto é devido à unitariedade das operações. Compare isso com operações clássicas como AND lógico, onde fornece uma saída de bit único . Você não pode reconstruir os bits iniciais e da saída, pois mesmo e seriam mapeados para a mesma saída . Mas, considere o portão NÃO clássico. Se a entrada for ela gera0∧10010∧01∧0001 , enquanto que se a entrada for , gera 010. Como esse mapeamento é um, ele pode ser facilmente implementado como uma porta unitária reversível, a saber, a porta Pauli-X . No entanto, para implementar um AND clássico ou um OR clássico, precisamos pensar um pouco mais.
Considere o portão CSWAP . Aqui está um diagrama aproximado que mostra o esquema:
No portão SWAP, dependendo do bit de controle, os outros dois podem ou não ser trocados. Observe que existem três linhas de entrada e três linhas de saída. Portanto, pode ser modelado como uma porta quântica unitária. Agora, se : Se x = 0 , a saída é 0 , enquanto que se x = 1 , a saída é y .z= 0x = 00 0x = 1y
Se você notar, se , estamos emitindo ˉ x ∧ y, enquanto se x = 1 estamos emitindo x ∧ y . Para que pudéssemos gerar com sucesso a saída x ∧ y que queríamos embora acabamos com alguns "junk" saídas ˉ x ∧ y e x . Um fato interessante é que o inverso do portão CSWAP é o próprio portão CSWAP (verifique!).x = 0x¯∧ yx = 1x ∧ yx ∧ yx¯∧ yx
Isso é tudo! Lembre-se de que todos os portões clássicos podem ser construídos com o portão NAND , que obviamente pode ser construído com um portão AND e um NOT. Modelamos efetivamente o NOT clássico e o gate AND clássico usando portões quânticos reversíveis. Para garantir a segurança, também podemos adicionar o qauntum CNOT gate à nossa lista, porque, usando o CNOT, podemos copiar bits.
Portanto, a mensagem básica é que, usando as portas quânticas CSWAP, CNOT e NOT, podemos replicar qualquer porta clássica. Aliás, há um truque inteligente para se livrar dos bits "lixo" produzidos quando os portões quânticos são usados, mas isso é outra história.
PS: É muito importante livrar-se dos bits "lixo" ou eles podem causar erros de computação!
Créditos de Referência e Imagem: Mecânica Quântica e MOOC de Computação Quântica oferecidos por UC Berkeley no edX.