Como um computador quântico faz matemática básica no nível do hardware?

27

Ao ler este tópico do Reddit , percebi que, mesmo depois de alguns meses aprendendo sobre computação quântica, não tenho absolutamente nenhuma idéia de como um computador quântico realmente funciona.

Para tornar a pergunta mais precisa, digamos que temos um computador quântico de 5 qubit supercondutor baseado em qubit (como o IBM Quantum Computer de 5 qubit). Digito usando um teclado em um monitor (digamos, em um aplicativo básico de calculadora que o computador quântico possa ter). Depois disso, ele deve me devolver . Mas está acontecendo no nível do hardware? Algum tipo de sinal elétrico correspondente às entradas , e vai para a unidade de processamento do computador? De alguma forma, isso "inicializa" o par de elétrons de Cooper? O que acontece com os qubits de elétrons dos pares Cooper depois disso (acho que eles seriam trabalhados por alguns portões quânticos , que por sua vez são caixas pretas2+3523+)? Como finalmente me retorna a saída ?5

Estou surpreso com o pouco que eu poderia ter sobre o funcionamento básico de um computador quântico pesquisando na rede.

Sanchayan Dutta
fonte

Respostas:

27

Primeiro, um computador clássico faz matemática básica no nível do hardware na unidade aritmética e lógica (ALU). As portas lógicas recebem tensões de entrada baixa e alta e usa o CMOS para implementar portas lógicas, permitindo que portas individuais sejam executadas e construídas para executar operações maiores e mais complicadas. Nesse sentido, digitar em um teclado está enviando sinais elétricos, que acabam sendo enviados para a ULA (na forma de mais sinais elétricos), as operações corretas sendo executadas e mais sinais enviados, que são convertidos em exibir pixels na forma de um número na tela.

Que tal um computador quântico?

Existem duas maneiras possíveis de os processadores quânticos serem utilizados: sozinhos ou em conjunto com um processador clássico. No entanto, a maioria (incluindo o seu exemplo de supercondutor) de processadores quânticos não usa sinais elétricos, embora ainda seja assim que seu mouse, teclado e monitor, etc. transmitem e recebem informações. Portanto, é preciso haver uma maneira de converter o sinal elétrico em qualquer sinal que o processador quântico use (que abordarei mais adiante), bem como alguma maneira de dizer ao processador o que você deseja fazer. Esses dois problemas podem ser resolvidos ao mesmo tempo pelo pré e pós-processamento clássico, como no QISKit da IBM . A Microsoft está adotando um pouco mais de abordagem de cima para baixo no Q #, em que os programas para um processador quântico são escritos mais como um programa 'clássico', em oposição a um script, compilados e potencialmente otimizados para o hardware. Ou seja, se você tem uma função, ela pode executar operações clássicas, bem como fazer chamadas para o processador quântico para executar quaisquer operações quânticas necessárias. Isso me leva ao primeiro ponto:

Se você pedir a um computador com acesso a um processador quântico para calcular algo como , uma solução muito válida seria apenas computá-lo no processador clássico, como de costume.2+3

OK, digamos que você esteja forçando o processador clássico a usar o processador quântico, que neste caso é um dos chips supercondutores da IBM, usando qubits transmon , digamos, o IBM QX4 . Isso é muito pequeno para ter correção de erros, então vamos ignorar isso. Há três partes no uso de um processador de modelo de circuito: inicialização, evolução unitária e medição, explicadas em mais detalhes abaixo. Antes disso,

O que é um transmon?

Faça um loop supercondutor para permitir pares de Cooper e adicione uma ou duas junções de Josephson para dar uma ilha de caixa de pares de Cooper na região entre as duas junções de Josephson com energia de acoplamento de Josephson , onde o fluxo magnético quântico e é a corrente crítica da junção. A aplicação de uma tensão a esta caixa fornece uma 'capacitância de porta' e faz com que isso seja um qubit de carga . Para a energia Coulomb de um único par de Cooper , ondeEJ=IcΦ0/2π Φ0=h/2eIcVgCgEC=(2e)2/2CCé a soma da capacitância total da ilha. O Hamiltoniano de tal sistema é dado por onde é o número de pares de Cooper, é a mudança de fase na junção e . Ao executar operações unitárias, apenas os dois estados mais baixos do sistema são considerados, e com respectivas energias e e frequência qbit

H=EC(nng)2EJcosϕ,
nϕng=CgVg/2e|n=|0|n=|1E0=ω0E1=ω1ω=ω1ω0, descrevendo a base computacional de um qubit. Um qubit de carga típico pode ter . A adição de uma grande capacitância de manobra e o aumento da capacitância do gate essa relação, para que e tenhamos um transmon . Isso tem a vantagem de tempos de coerência mais longos, a um custo de anarmonicidade reduzida (onde os níveis de energia além dos dois primeiros estão mais próximos, potencialmente causando vazamentos).EC=5EJEJEC

Finalmente , chegamos à questão principal:

Como inicializamos, evoluímos e medimos um transmon?

  • Evolução unitária de um qubit: Aplicando um pulso de microondas para de frequência e fazendo a aproximação da onda rotativa fornece o Hamiltoniano dos estados de qubit (no caso ideal) como No entanto, devido à menor anarmonicidade, os pulsos de microondas precisam ser modelados para reduzir o vazamento a níveis mais altos de energia em um processo conhecido comoE(t)=Ex(t)cos(ωdt)+Ey(t)sin(ωdt)0<t<tgωd
    H=(ω1ωd12Ex(t)i2Ey(t)12Ex(t)+i2Ey(t)ω22ωd)
    Remoção de Derivados por Adiabatic Gate (DRAG) . Variando o pulso, diferentes Hamiltonianos podem ser alcançados, os quais, dependendo do tempo do pulso, podem ser usados ​​para implementar diferentes operações unitárias em um único qubit.
  • Medição / leitura: Um ressonador de microondas, com frequência de ressonância , pode ser acoplado ao transmon usando um capacitor. Essa interação faz com que ocorram oscilações de Rabi no sistema transmon-ressonador. Quando a força de acoplamento da cavidade e do qubit, , isso é conhecido como regime dispersivo . Nesse regime, o espectro de transmitância da cavidade é deslocado em dependendo do estado do qubit, aplicando um pulso de microondas e analisando a transmitância e a refletância ( por computador) pode então ser usado para medir o qubit.ωrgωωr±g2/(ωωr)
  • Evolução unitária de múltiplos qubit: Essa idéia de acoplar um qubit a um ressonador de microondas pode ser estendida acoplando o ressonador a outro qubit. Como no caso do gate de qubit único, os tempos do acoplamento, bem como os pulsos de microondas, podem ser usados ​​para que o primeiro qubit acople à cavidade, que é então acoplada ao segundo qubit e execute determinadas portas de 2 qubit. Níveis de energia mais altos também podem ser usados ​​para facilitar a implementação de certos portões devido às interações entre os níveis mais altos causados ​​pela cavidade. Um exemplo é mostrado aqui , onde a cavidade causa uma interação entre os estados de e|2|0|1|1. Um cruzamento evitado entre esses estados significa que uma porta de fase de 2 qubit pode ser implementada, embora em geral as portas de 2 qubit sejam implementadas menos bem (têm uma fidelidade mais baixa) do que as de um qubit único.
  • Inicialização: Leitura, potencialmente seguida por um único portão Pauli qubit (em cada qubit medido para estar no estado ) para garantir que todos os qubits iniciem no estado .X|1|0

A adição de 2 e 3 é agora uma questão "simples" de inicializar os qubits, executando as portas equivalentes a um somador reversível clássico e medindo o resultado, tudo implementado automaticamente. O resultado da medição é retornado por um computador clássico, como de costume.

Como um bônus , parece um pouco inútil passar por tudo isso para implementar portões que poderiam ser feitos em um computador clássico de qualquer maneira, por isso é possível implementar aproximadamente um somador quântico , que adiciona dois quantum (ao contrário clássico) afirma, com algum erro, em um dos processadores da IBM.

Mithrandir24601
fonte
15

Aqui está o meu processo para fazer aritmética em um computador quântico.

Etapa 1: encontre um circuito clássico que faça o que você está interessado.

Neste exemplo, um somador completo.

somador completo clássico

Etapa 2: converta cada porta clássica em uma porta reversível.

Tenha seus bits de saída presentes desde o início e inicialize-os com CNOTs, CCNOTs, etc.

somador semi-reversível

Etapa 3: use saídas temporárias.

Se você estava fazendo essa adição para, por exemplo, controlar se um oráculo de Grover está em -1 ou não, agora é a hora de aplicar uma porta Z ao seu qubit de saída.

Etapa 4: Livre-se dos valores intermediários, fazendo exatamente o oposto do que você fez para calculá-los.

Isso pode ou não incluir a eliminação dos bits de saída, dependendo de como o circuito se encaixa no seu algoritmo geral.

somador semi-reversível 2

Etapa 5: (às vezes) para cada bit de saída que você mantém, livre-se de um bit de entrada.

E não quero dizer "jogá-los no chão", quero dizer aplicar operações que os tornem 0, com certeza.

Quando você calcula c+=a, deixar para trás uma cópia do valor original de ctende a ser ruim. Destrói a coerência. Portanto, você deve olhar para o seu circuito somador (ou qualquer outra coisa) e pensar bem se há uma maneira de usar seus bits de saída para se livrar dos bits de entrada. Por exemplo, após a computação, c+avocê pode fazer uma subtração temporária fora do local em um registro r, xor r no registro armazenando a cópia indesejada e c, em seguida, reverter a subtração temporária.

(Uma exceção notável a "se você mantiver sua saída, não guarde muito de sua entrada" é o algoritmo de Shor. O algoritmo de Shor decompõe sua entrada de propósito , mas de uma maneira muito particular que ajuda na localização do período.)

Etapa 6: seja eficiente

Na etapa 5, eu disse que você poderia refutar a entrada de uma adição local fazendo uma adição fora do local seguida por uma subtração temporária fora do local. Isso é um pouco bobo. O processo geral de adição vai abranger 4n qubits (n para segurar a, n para segurar c, n para segurar c+a, n para segurar (c+a)-a). Se você é mais inteligente, pode ajustar tudo em 2nqubits ou (um pouco mais fácil) em 2n+1qubits :

adicionador cuccaro

Craig Gidney
fonte