O poder de um computador quântico é medido em qubits, a unidade básica de medida em um computador quântico. .
Eu faço facepalm após cada leitura de tal frase. Isso não leva a nada bom; minha visão está começando a falhar; em breve, terei que recorrer ao Meklon.
Acho que é hora de sistematizar alguns parâmetros principais de um computador quântico. Existem alguns:
- Número de qubits
- Tempo de retenção de coerência (tempo de decoerência)
- Nível de erros
- Arquitetura do processador
- Preço, disponibilidade, condições de manutenção, tempo de amortização, ferramentas de programação, etc.
Número de qubits
Aqui tudo é óbvio; quanto mais, melhor. Na prática, no entanto, é preciso pagar pelos qubits, e o ideal é adquirir exatamente a quantidade de qubits necessária para executar a tarefa. Para um desenvolvedor de máquinas caça-níqueis exclusivas, é suficiente um qubit por máquina (para gerar aleatoriedade). Para um "bruteforce" RSA-2048, o mínimo é 2048 qubits.
Os algoritmos quânticos mais badalados levam os nomes de Grover e Shor. Grover permite "hackear" hashes. Para colapsar o bitcoin, são necessários computadores com pelo menos 256 qubits a bordo (pode-se ajustar a dificuldade do bitcoin, mas vamos nos manter neste número redondo). Shor permite a fatoração de números. Para fatorar um número com n bits, são necessários pelo menos n qubits.
O máximo atual: 50 qubits (). E, na verdade, 50 qubits é o limite. O limite de simulação de um computador quântico. Em teoria, podemos simular qualquer número de qubits em computadores clássicos. Na prática, adicionar um qubit à simulação requer dobrar os computadores clássicos. Adicione a isso os rumores de que o número de qubits dobra a cada ano e pergunte a si mesmo: como depurar algoritmos para 25651210242048 qubits? Não há simulador, em um processador quântico não se pode colocar um ponto de interrupção.
Tempo de retenção de coerência (tempo de decoerência)
Coerência e coerência não são a mesma coisa. Prefiro comparar a coerência com a regeneração da memória RAM. Em um módulo de RAM, há bilhões de células, cada uma com uma carga, zero ou um. Essa carga possui uma propriedade muito interessante: ela se esvai. Inicialmente, uma célula 'um' se torna uma célula em 0,99, depois 0,98, e assim por diante. Consequentemente, o zero acumula 0,01, 0,02, 0,03... É necessário atualizar essa carga, 'regenerá-la'. Tudo que é menos da metade é zerado, tudo o resto é elevado a um.
Os processadores quânticos não podem ser regenerados. Portanto, para todos os cálculos, há um único ciclo, até o primeiro qubit 'fugir'. O tempo até o primeiro 'vazamento' é chamado de tempo de decoerência. Coerência é o estado em que os qubits ainda não 'vazaram'. Você pode ver explicações um pouco mais maduras.
A decoerência está relacionada ao número de qubits: quanto mais qubits, mais difícil é manter a coerência. Por outro lado, com um grande número de qubits, é possível usar parte deles para corrigir erros relacionados à decoerência. Daí decorre, que a quantidade de qubits por si só não resolve nada. É possível dobrar o número de qubits e gastar 90% deles na fixação da decoerência.
Aproximadamente aqui surge o conceito de qubit lógico. Grosso modo, se você tem um processador de 100 qubits, mas 40 deles estão direcionados para a fixação da decoerência — sobram 60 qubits lógicos. Aqueles em que você executa seu algoritmo. O conceito de qubits lógicos é mais teórico atualmente, sobre implementações práticas, pessoalmente, não ouvi falar.
Erros e sua correção
Mais um problema dos processadores quânticos. Se você inverter um qubit, há uma probabilidade de 2% de que a operação resulte em erro. Se você entrelaçar 2 qubits, a probabilidade de erro atinge 8%. Pegue um número de 256 bits, faça um hash dele com SHA-256, conte o número de operações, calcule a probabilidade de realizar TODAS essas operações sem erros.
Os matemáticos oferecem uma solução: correção de erros. Existem algoritmos. A implementação de um entrelaçamento de 2 qubits lógicos requer 100.000 qubits físicos. O colapso do Bitcoin não acontecerá tão cedo.
Arquitetura do processador
Estritamente falando, não existem computadores quânticos. Existem apenas processadores quânticos. Para que serve a memória RAM, se o tempo de trabalho é limitado a milissegundos? Eu programo em Q#, mas é uma linguagem de alto nível. Reservei 15 cubits e faça o que quiser com eles. Se eu quiser, entrelaço o primeiro cubit com o décimo. Se eu desejar, entrelaço os primeiros seis.
Em um processador real, essa liberdade não existe. Pedi para entrelaçar o primeiro cubit com o 15 – o compilador gerará 26 operações adicionais. Se tiver sorte. Se não tiver sorte, gerará uma centena. A questão é que um cubit só pode se entrelaçar com os vizinhos. Eu não vi mais do que 6 vizinhos em um cubit. Em princípio, existem compiladores de programas quânticos otimizadores, mas eles ainda são mais teóricos.
Cada processador tem seu próprio conjunto de instruções, e as conexões entre cubits diferem. Em um mundo ideal, temos Rx, Ry, Rz arbitrários e suas combinações, além de entrelaçamento livre por dezenas de características, mais Swap: veja os operadores em . Na realidade, temos algumas pares de cubits, e o entrelaçamento CNOT (q[0], q[1]) custa uma operação, enquanto CNOT(q[1], q[0]) já custa 7. E a coerência diminui...
Preço, disponibilidade, condições de manutenção, tempo de amortização, ferramentas de programação...
Os preços não são divulgados, a disponibilidade para um cidadão comum é praticamente zero, o tempo de amortização não foi calculado na prática, e as ferramentas de programação estão apenas começando. A documentação está no arxiv.org.
Que informações deveríamos exigir dos especialistas ao lançar um novo computador quântico?
Além da lista acima, gosto das opções de e :
Se cada artigo sobre um novo computador quântico começasse com duas características — o número de cubits entrelaçados simultaneamente, e o tempo de retenção dos cubits. Ou ainda melhor — com o tempo de execução de um benchmark simples, como encontrar os fatores primos do número 91.
Uma grande entrevista com Cliff Click — o pai da compilação JIT em Java.
Fonte: habr.com
