Desmistificação dos princípios da computação quântica


"Acho que posso dizer com segurança que ninguém entende a mecânica quântica", Richard Feynman

O tópico da computação quântica sempre atraiu escritores e jornalistas técnicos. Seu potencial computacional e complexidade lhe davam uma espécie de auréola mística. Com frequência, artigos temáticos e infográficos descrevem detalhadamente todos os tipos de perspectivas para esse setor, enquanto mal tocam nas questões de sua aplicação prática: isso pode enganar um leitor não muito cuidadoso.

Em artigos científicos populares, descrições de sistemas quânticos são omitidas e declarações como:

Um bit regular pode ser igual a "1" ou "0", mas um qubit pode ser simultaneamente igual a "1" e "0".

Se você tiver muita sorte (do qual não tenho certeza), eles lhe dirão que:

O qubit está em uma superposição entre "1" e "0".

Nenhuma dessas explicações parece plausível, porque estamos tentando formular um fenômeno da mecânica quântica usando ferramentas de linguagem criadas em um mundo muito tradicional. Para explicar claramente os princípios da computação quântica, é necessário usar outra linguagem - matemática.

Neste guia, falarei sobre as ferramentas matemáticas necessárias para modelar e entender os sistemas de computação quântica e como ilustrar e aplicar a lógica da computação quântica. Além disso, darei um exemplo de algoritmo quântico e direi qual é a sua vantagem sobre um computador tradicional.

Farei o possível para falar sobre tudo isso em uma linguagem compreensível, mas ainda espero que os leitores deste artigo tenham idéias básicas sobre álgebra linear e lógica digital (álgebra linear é descrita aqui , lógica digital é aqui ).

Para começar, vamos examinar os princípios da lógica digital. Baseia-se no uso de circuitos elétricos para cálculos. Para tornar nossa descrição mais abstrata, simplificamos o estado do fio para "1" ou "0", o que corresponderá aos estados "ligado" ou "desligado". Tendo construído os transistores em uma determinada sequência, criaremos os chamados elementos lógicos que pegam um ou mais valores dos sinais de entrada e os convertem em um sinal de saída com base em certas regras da lógica booleana.


Elementos lógicos comuns e tabelas de estado


Com base nas cadeias desses elementos básicos, é possível criar elementos mais complexos e, com base nas cadeias de elementos mais complexos, podemos confiar na obtenção de um análogo do processador central com um alto grau de abstração.

Como mencionei anteriormente, precisamos de uma maneira de mapear matematicamente a lógica digital. Primeiro, vamos apresentar a lógica matemática tradicional. Usando álgebra linear, os bits clássicos com os valores "1" e "0" podem ser representados como dois vetores de coluna:

onde os números à esquerda são a notação do vetor Dirac . Ao representar nossos bits dessa maneira, podemos modelar operações lógicas em bits usando transformações de vetor. Observe: apesar de, ao usar dois bits em elementos lógicos, você pode executar muitas operações (“AND” (AND), “Not” (NOT), “Excluir Or” (XOR) etc.) ao usar uma bits é possível realizar apenas quatro operações: conversão de identidade, negação, cálculo da constante "0" e cálculo da constante "1". Durante a conversão idêntica, o bit permanece inalterado, quando negado, o valor do bit é revertido (de "0" para "1" ou de "1" para "0"), e o cálculo da constante "1" ou "0" define o bit para "1" ou "0", independentemente do seu valor anterior.

Identidade
Transformação de identidade
Negação
Negação
Constante-0
Cálculo da constante "0"
Constante-1
Cálculo da constante "1"

Com base em nossa nova representação de um bit, é bastante fácil executar operações no bit correspondente usando a transformação de vetor:



Antes de prosseguir, vejamos o conceito de computação reversível , o que implica apenas que, para garantir a reversibilidade de uma operação ou elemento lógico, é necessário determinar uma lista de valores de sinal de entrada com base nos sinais de saída e nos nomes das operações utilizadas. Assim, podemos concluir que a transformação e negação da identidade são reversíveis, mas a operação de calcular as constantes “1” e “0” não é. Devido à unitariedade da mecânica quântica, os computadores quânticos usam operações exclusivamente reversíveis, e é por isso que vamos nos concentrar neles. Em seguida, converteremos os elementos irreversíveis em reversíveis para garantir que eles possam ser usados ​​por um computador quântico.

Usando o produto tensorial de bits individuais, muitos bits podem ser representados:

Agora que temos quase todos os conceitos matemáticos necessários, passaremos para o nosso primeiro elemento da lógica quântica. Este é o operador CNOT , ou o “NÃO” (NÃO) controlado, que é de grande importância na computação reversível e quântica. O elemento CNOT é aplicado a dois bits e retorna dois bits. O primeiro bit é atribuído como "controle" e o segundo - "controle". Se o bit de controle estiver definido como "1", o bit de controle altera seu valor; se o bit de controle estiver definido como "0", o bit de controle não será alterado.

Este operador pode ser representado como o seguinte vetor de transformação:

Para demonstrar tudo o que já lidamos, mostrarei como usar o elemento CNOT em relação a muitos bits:

Resumimos o que já foi dito: no primeiro exemplo, decompomos | 10⟩ em partes de seu produto tensorial e usamos a matriz CNOT para obter um novo estado correspondente do produto; então o fatoramos para | 11⟩ de acordo com a tabela de valores CNOT fornecidos anteriormente.

Então, lembramos de todas as regras matemáticas que nos ajudarão a lidar com cálculos tradicionais e bits comuns e, finalmente, podemos avançar para a computação quântica e qubits modernos.

Se você leu esse lugar, tenho boas notícias para você: os qubits podem ser facilmente expressos matematicamente. Em geral, se o bit clássico (cbit) pode ser definido como | 1⟩ ou | 0⟩, o qubit está simplesmente em superposição e pode ser igual a | 0⟩ e | 1⟩ antes da medição. Após a medição, ele cai em | 0⟩ ou | 1⟩. Em outras palavras, um qubit pode ser representado como uma combinação linear de | 0⟩ e | 1⟩ de acordo com a fórmula abaixo:

onde a₀ e a₁ representam, respectivamente, as amplitudes | 0⟩ e | 1⟩. Elas podem ser consideradas como “probabilidades quânticas”, que representam a probabilidade de um qubit colapsar em qualquer um dos estados após a sua medição, pois na mecânica quântica um objeto em superposição entra em colapso em um dos estados após a fixação. Expanda esta expressão e obtenha o seguinte:

Para simplificar minha explicação, usarei essa mesma noção neste artigo.

Para esse qubit, a chance de colapso após a medição é | a ₀ | ², e a chance de colapsar em um ₁ é igual a | a ₁ | ². Por exemplo, para o seguinte qubit:

a chance de colapso em "1" é | 1 / √2 | ² ou ½, ou seja, 50/50.

Como no sistema clássico todas as probabilidades na soma devem fornecer unidade (para uma distribuição de probabilidades completa), podemos concluir que os quadrados dos valores absolutos das amplitudes | 0⟩ e | 1⟩ devem totalizar um. Com base nessas informações, podemos compor a seguinte equação:

Se você está familiarizado com a trigonometria, notará que esta equação corresponde ao teorema de Pitágoras (a² + b² = c²), ou seja, podemos representar graficamente os possíveis estados do qubit na forma de pontos no círculo unitário, a saber:

Operadores e elementos lógicos são aplicados a qubits, bem como no caso de bits clássicos - baseados na transformação de matrizes. Todos os operadores de matriz reversível que lembramos até o momento, em particular o CNOT, podem ser usados ​​para trabalhar com qubits. Esses operadores de matriz tornam possível usar cada uma das amplitudes de um qubit sem medi-lo e recolhê-lo. Deixe-me dar um exemplo de como usar o operador de negação para qubit:

Antes de continuarmos, lembro que as amplitudes a e a são números complexos , de modo que o estado qubit pode ser exibido com mais precisão em uma esfera unitária tridimensional, também conhecida como esfera de Bloch :

No entanto, para simplificar a explicação, aqui nos restringimos a números reais.

Parece que chegou a hora de discutir alguns elementos lógicos que fazem sentido exclusivamente no contexto da computação quântica.

Um dos operadores mais importantes é o "elemento Hadamard": leva um pouco no estado "0" ou "1" e o coloca na superposição correspondente, com 50% de chance de reduzi-lo a "1" ou "0" após a medição.

Observe que há um número negativo no lado inferior direito do operador Hadamard. Isso se deve ao fato de o resultado do uso do operador depender do valor do sinal de entrada: - | 1⟩ ou | 0⟩ e, portanto, o cálculo é reversível.

Outro ponto importante relacionado ao elemento Hadamard é sua reversibilidade, ou seja, ele pode pegar um qubit na superposição correspondente e convertê-lo em | 0⟩ ou | 1⟩.

Isso é muito importante porque nos permite transformar a partir de um estado quântico sem determinar o estado do qubit - e, consequentemente, sem recolhê-lo. Assim, podemos estruturar a computação quântica com base em um princípio determinístico e não probabilístico.

Operadores quânticos contendo números exclusivamente reais são o oposto, portanto, podemos apresentar o resultado da aplicação do operador a um qubit como uma transformação dentro do círculo unitário na forma de uma máquina de estado:

Assim, o qubit, cujo estado é mostrado no diagrama acima, após a aplicação da operação Hadamard é convertido no estado indicado pela seta correspondente. Da mesma forma, podemos construir outra máquina de estado que ilustrará a transformação de um qubit usando o operador de negação, como mostrado acima (também conhecido como operador de negação de Pauli ou inversão de bits), como mostrado abaixo:

Para executar operações mais complexas com nosso qubit, você pode usar uma cadeia de muitos operadores ou aplicar elementos várias vezes. Um exemplo de transformação em série com base na representação de uma cadeia quântica é o seguinte:

Ou seja, se começamos com o bit | 0⟩, aplicamos o inverso do bit e, em seguida, a operação Hadamard, outra inversão de bits e, novamente, a operação Hadamard, após a qual a inversão final do bit, obtemos o vetor no lado direito da corrente. Sobrepondo várias máquinas de estado umas sobre as outras, podemos começar com | 0⟩ e rastrear as setas coloridas correspondentes a cada uma das transformações para entender como tudo isso funciona.

Desde que chegamos até aqui, é hora de considerar um dos tipos de algoritmos quânticos, ou seja, o algoritmo Deutsch-Joji , e mostrar sua vantagem sobre um computador clássico. Vale ressaltar que o algoritmo Deutsch-Yogi é completamente determinístico, ou seja, retorna a resposta correta em 100% dos casos (ao contrário de muitos outros algoritmos quânticos baseados na determinação probabilística de qubits).

Vamos imaginar que você tenha uma caixa preta que contém uma função / operador em um bit (lembre-se - ao usar um bit, apenas quatro operações são possíveis: transformar identicamente, negar, calcular a constante "0" e calcular a constante "1"). Que função é executada em uma caixa? Você não sabe qual, no entanto, pode classificar quantas variantes dos valores de entrada desejar e avaliar os resultados da saída.


Quantos sinais de entrada e saída terão que ser direcionados pela caixa preta para descobrir qual função é usada? Pense nisso por um segundo.

No caso de um computador clássico, você precisará fazer 2 consultas para determinar a função usada. Por exemplo, se quando você digita "1" obtemos "0" na saída, fica claro que a função para calcular a constante "0" ou a função de negação é usada, após o qual você terá que alterar o valor do sinal de entrada para "0" e ver o que acontece na saída.

No caso de um computador quântico, você também precisará de duas consultas, pois ainda precisará de dois valores de saída diferentes para determinar a função exata que se aplica ao valor de entrada. No entanto, se reformularmos um pouco a questão, verifica-se que os computadores quânticos ainda têm uma séria vantagem: se você quisesse descobrir se a função usada é constante ou variável, a superioridade estaria do lado dos computadores quânticos.

A função usada na caixa é uma variável, se valores diferentes do sinal de entrada fornecerem resultados diferentes na saída (por exemplo, conversão e inversão idênticas de um bit), e se o valor da saída não for alterado independentemente do valor de entrada, a função será constante (por exemplo, calculando a constante “1” ou o cálculo da constante “0”).

Usando o algoritmo quântico, é possível determinar se uma função em uma caixa preta é constante ou variável com base em apenas uma solicitação. Porém, antes de examinarmos detalhadamente como fazer isso, precisamos encontrar uma maneira que permita estruturar cada uma dessas funções em um computador quântico. Como qualquer operador quântico deve ser invertível, encontramos imediatamente um problema: as funções para calcular as constantes “1” e “0” não são.

Na computação quântica, a seguinte solução é frequentemente usada: um qubit de saída adicional é adicionado, que retorna qualquer valor do sinal de entrada recebido pela função.
Para:
Depois:


Assim, podemos determinar os valores de entrada apenas com base no valor obtido na saída, e a função se torna invertível. A estrutura dos circuitos quânticos cria a necessidade de um bit de entrada adicional. Para o desenvolvimento dos operadores correspondentes, assumimos que o qubit de entrada adicional esteja definido como | 0⟩.

Aplicando a mesma representação da cadeia quântica que usamos anteriormente, veremos como cada um dos quatro elementos (transformação de identidade, negação, cálculo da constante "0" e cálculo da constante "1") pode ser implementado usando operadores quânticos.

Por exemplo, desta maneira você pode implementar a função de calcular a constante "0":

Cálculo da constante "0":

Aqui não precisamos de operadores. O primeiro qubit de entrada (que assumimos igual a | 0⟩) ​​retorna com o mesmo valor, e o segundo valor de entrada retorna automaticamente - como de costume.

Com a função de calcular a constante "1", a situação é um pouco diferente:

Cálculo da constante "1":

Como aceitamos que o primeiro qubit de entrada seja sempre definido como | 0⟩, como resultado da aplicação do operador de inversão de bits, ele sempre fornecerá um na saída. E, como sempre, o segundo qubit fornece seu próprio valor na saída.

Quando o operador de transformação de identidade é exibido, a tarefa começa a se tornar mais complicada. Veja como fazê-lo:

Transformação de identidade:

O símbolo usado aqui denota o elemento CNOT: a linha superior indica o bit de controle e a linha inferior indica o bit de controle. Deixe-me lembrá-lo de que, ao usar o operador CNOT, o valor do bit de controle muda se o bit de controle for | 1⟩, mas permanecerá inalterado se o bit de controle for | 0⟩. Como assumimos que o valor da linha superior é sempre igual a | 0⟩, seu valor é sempre atribuído à linha inferior.

Da mesma forma, agimos com o operador de negação:

Negação:

Simplesmente invertemos o bit no final da linha de saída.

Agora que descobrimos a apresentação preliminar, vejamos as vantagens específicas de um computador quântico em relação a um computador tradicional quando se trata de determinar a constância ou a variabilidade de uma função oculta em uma caixa preta usando apenas uma consulta.

Para resolver esse problema usando a computação quântica em uma única solicitação, é necessário converter os qubits de entrada em uma superposição antes de serem transferidos para a função, conforme mostrado abaixo:

O elemento Hadamard é reaplicado ao resultado do uso da função para derivar qubits da superposição e tornar o algoritmo determinístico. Iniciamos o sistema no estado | 00⟩ e, pelas razões que irei falar agora, obtemos o resultado | 11⟩ se a função usada for constante. Se a função dentro da caixa preta for variável, depois de medir o sistema retornará o resultado | 01⟩.

Para lidar com o restante do artigo, passemos à ilustração que mostrei anteriormente:

Usando o operador de inversão de bits e aplicando o elemento Hadamard a ambos os valores de entrada iguais a | 0⟩, garantiremos sua tradução na mesma superposição | 0 | e | 1⟩, a saber:

Usando o exemplo de transferência desse valor de uma função para uma caixa preta, é fácil demonstrar que ambas as funções de um valor constante fornecem | 11⟩ à saída.

Cálculo da constante "0":

, , «1» |11⟩, :

«1»:

: |1⟩, -1² = 1.

, |01⟩ ( ), .

:

CNOT , , CNOT :

|01⟩, :

:

, , , .

?


. . , , , , , .

— , , , - (, !). — , , |0⟩ |1⟩ .

, « » (An Introduction to Quantum Algorithms) : , .

Source: https://habr.com/ru/post/pt476444/


All Articles