Introdução à correção de erros quânticos
Este artigo explica os conceitos básicos da correção de erros quânticos, os tipos de erros quânticos e alguns códigos comuns de correção de erros quânticos. Ele também fornece um exemplo de como corrigir erros usando o código de três qubits.
O que é a correção de erros quânticos?
A correção de erros quânticos (QEC) é uma técnica que nos permite proteger informações quânticas de erros. A correção de erros é especialmente importante em computadores quânticos, porque algoritmos quânticos eficientes fazem uso de computadores quânticos de grande escala, que são sensíveis ao ruído.
O princípio básico por trás da correção de erros quânticos é que o número de bits usados para codificar uma determinada quantidade de informações é aumentado. Essa redundância permite que o código detete e corrija erros.
As taxas de erro para computadores quânticos são tipicamente mais altas do que os erros de computadores clássicos devido aos desafios associados à construção e operação de sistemas quânticos. Ruído, decoerência e imperfeições em portas quânticas podem causar erros em cálculos quânticos. Os computadores quânticos atuais têm taxas de erro na faixa de 1% a 0,1%. Em outras palavras, isso significa que, em média, uma em cada 100 a 1000 operações de porta quântica resulta em um erro.
Tipos de erros quânticos
Existem dois tipos fundamentais de erros quânticos: bit flips e phase flips.
Os erros de inversão de bits ocorrem quando um qubit muda de $\ket{0}$ para $\ket{1}$ ou vice-versa. Os erros de inversão de bits também são conhecidos como \sigma_x-erros, porque mapeiam os estados $de qubit \sigma_x\ket{{1}$=\ket{0} e $\sigma_x .\ket{0}$\ket{={1}$$ Este erro é análogo a um erro clássico de inversão de bits.
Os erros de inversão de fase ocorrem quando um qubit muda de fase. Eles também são conhecidos como \sigma_z-erros, porque mapeiam os estados $de qubit \sigma_z\ket{={0}$ \ket{0}e $\sigma_z \ket{{1}= -.\ket{1}$$$ Este tipo de erro não tem analógico clássico.
Na computação quântica, os erros quânticos podem se manifestar como inversões de bits, inversões de fase ou uma combinação de ambos.
Como funciona a correção de erros quânticos?
Os códigos de correção de erros quânticos funcionam codificando as informações quânticas em um conjunto maior de qubits, chamados de qubits físicos. O estado conjunto dos qubits físicos representa um qubit lógico.
Os qubits físicos estão sujeitos a erros devido à decoerência e imperfeições nas portas quânticas. O código é projetado para que os erros possam ser detetados e corrigidos medindo alguns dos qubits no código.
Por exemplo, imagine que você deseja enviar a mensagem $\ket{0}$de qubit único . Você pode usar três qubits físicos para codificar a mensagem, enviando $\ket{000}$, que é conhecido como uma palavra de código. Este código de correção de erros é um código de repetição, porque a mensagem é repetida três vezes.
Agora, imagine que um único erro de inversão de bits ocorre durante a transmissão para que o que o destinatário recebe é o estado $\ket{010}$. Nesse cenário, o destinatário pode ser capaz de inferir que a mensagem pretendida é $\ket{000}$. No entanto, se a mensagem estiver sujeita a dois erros de inversão de bits, o destinatário pode inferir uma mensagem incorreta. Finalmente, se todos os três bits são invertidos para que a mensagem $\ket{000}$ original se torne $\ket{111}$, o destinatário não tem como saber que um erro ocorreu.
A distância de código de um código QEC é o número mínimo de erros que alteram uma palavra de código em outra, ou seja, o número de erros que não podem ser detetados. A distância $do código d$ pode ser definida como
$$d = 2t + 1$$
onde $t$ é o número de erros que o código pode corrigir. Por exemplo, o código de três bits pode detetar e corrigir um erro de inversão de bits, então $t = 1$, e, portanto, a distância do código é $d = 3$.
Observe que os códigos de repetição, como o código de três bits usado neste exemplo, só podem corrigir erros de inversão de bits e não erros de inversão de fase. Para corrigir ambos os tipos de erros, são necessários códigos de correção de erros quânticos mais sofisticados.
Tipos de códigos QEC
Existem muitos tipos diferentes de códigos QEC, cada um com suas próprias propriedades e vantagens. Alguns códigos QEC comuns são:
Código de repetição: O código de correção de erro quântico mais simples, onde um único qubit é codificado em vários qubits repetindo-o várias vezes. O código de repetição pode corrigir erros de inversão de bits, mas não erros de inversão de fase.
Código Shor: O primeiro código de correção de erros quânticos, desenvolvido por Peter Shor. Ele codifica um qubit lógico em nove qubits físicos. O código Shor pode corrigir um erro de flip de um bit ou um erro de flip de fase, mas não pode corrigir os dois tipos de erros ao mesmo tempo.
Código Steane: Este é um código de sete qubits que pode corrigir erros de inversão de bits e de inversão de fase. Tem a vantagem de ser tolerante a falhas, o que significa que o processo de correção de erros em si não introduz erros extras.
Código de superfície: Este é um código de correção de erro topológico que usa uma rede bidimensional de qubits para codificar qubits lógicos. Tem um alto limiar de correção de erros e é considerada uma das técnicas mais promissoras para computação quântica em larga escala e tolerante a falhas. O código de superfície é usado pelo Azure Quantum Resource Estimator.
Código Hastings-Haah: Este código de correção de erros quânticos oferece melhores custos espaço-temporais do que os códigos de superfície em qubits de Majorana em muitos regimes. Para conjuntos de instruções baseados em portão, a sobrecarga é maior, o que torna essa abordagem menos eficiente do que o código de superfície.
Exemplo: O código de três qubits
O código de correção de erro de três qubits é um código de repetição simples que pode detetar e corrigir um erro de flip de um bit. Ele codifica um único qubit lógico em três qubits físicos, repetindo o qubit três vezes.
Gorjeta
Confira o Q# exemplo de código para o código de três qubits.
Imagine que você deseja enviar um único qubit $\ket{\phi}=\alpha\ket{{0} arbitrário + . \beta\ket{1}$ Para evitar erros, codifice os estados $\ket{0}$ base e $\ket{1}$ em um estado conjunto de três qubits. Os dois estados de base lógica são $\ket{0_L}=\ket{000}$ e $\ket{1_L}=\ket{111}$.
Portanto, o único qubit $\ket{\phi}={0}\alpha\ket{+ \beta\ket{1}$ é codificado como:
$$\ket{\phi}{000}\ket{\alpha=_L + \beta\ket{\ket{\alpha{111}=0_L} + 1_L \beta\ket{}$$
Vamos detalhar as etapas do código de três qubits.
Preparando os qubits
Primeiro, você codifica seu único qubit $\ket{\phi}=\alpha\ket{{0} +\beta\ket{1}$ em um estado conjunto de três qubits.
Em seguida, você prepara mais dois qubits no estado $\ket{0}$. Assim, o estado global de todos os três qubits é $(\alpha\ket{0} +\beta\ket{1})\ket{0}\ket{0}=\alpha\ket{{000} + \beta\ket{{100}$.
Por fim, você codifica o qubit único em um estado conjunto de três qubits, aplicando duas operações CNOT. O primeiro CNOT usa o primeiro qubit como controle e atua no segundo qubit, produzindo $\alpha\ket{000} + \beta\ket{110}$. O segundo CNOT usa o primeiro qubit como controle e atua no terceiro qubit. O estado dos três qubits é agora $\alpha\ket{000} + \beta\ket{111}$.
Enviando os qubits
Você envia os três qubits. Supondo que apenas erros de flip de um bit possam ocorrer, os qubits recebidos estão em um dos seguintes estados:
Estado | Erro |
---|---|
$\alpha\ket{000} + \beta\ket{111}$ | Sem erros |
$\alpha\ket{100} + \beta\ket{011}$ | Qubit 1 |
$\alpha\ket{010} + \beta\ket{101}$ | Qubit 2 |
$\alpha\ket{001} + \beta\ket{110}$ | Qubit 3 |
Adicionando qubits auxiliares
Primeiro, você introduz mais dois qubits, preparados no estado $\ket{00}$. Este par auxiliar de qubits é usado para extrair informações do erro sem medir diretamente ou obter informações sobre o estado lógico.
Em seguida, você executa quatro operações CNOT: as duas primeiras operações usam o primeiro e o segundo qubits recebidos como controle e atuam no primeiro qubit auxiliar, e as duas últimas operações usam o primeiro e o terceiro qubits recebidos como controle e agem no segundo bit auxiliar. O estado total de todos os cinco qubits é agora:
Estado | Erro |
---|---|
$\alpha\ket{000} ( + \beta\ket{111})\ket{00}$ | Sem erros |
$\alpha\ket{100} ( + \beta\ket{011})\ket{11}$ | Qubit 1 |
$\alpha\ket{010} ( + \beta\ket{101})\ket{10}$ | Qubit 2 |
$\alpha\ket{001} ( + \beta\ket{110})\ket{01}$ | Qubit 3 |
Recuperando a síndrome de erro
Para recuperar as informações de erro, você mede os dois qubits auxiliares nos estados $\ket{0}$ de base computacional e $\ket{1}$. Ao fazer isso, você recupera o estado articular, que é chamado de síndrome de erro porque ajuda a diagnosticar os erros nos qubits recebidos.
Agora você sabe em qual dos quatro estados possíveis os três qubits recebidos estão. Você pode corrigir o erro aplicando a operação de correção. Neste caso, você está lidando com erros de inversão de bits, portanto, a correção é uma $operação \sigma_x$ aplicada a um (ou nenhum) dos qubits.
Por exemplo, se a síndrome de erro for $\ket{00}$, então os qubits recebidos estão no estado $\alpha\ket{{000} + \beta\ket{{111}$, que é o estado que você enviou originalmente. Se a síndrome de erro for $\ket{11}$, então os qubits recebidos estão no estado $\alpha\ket{{100} + b\ket{{011}$. Há um pequeno erro de inversão no primeiro qubit, que você pode corrigir aplicando uma $operação \sigma_x$ ao primeiro qubit.
Síndrome de erro | Estado de colapso | Correção |
---|---|---|
$\ket{00}$ | $\alpha\ket{000} + \beta\ket{111}$ | Não fazer nada |
$\ket{01}$ | $\alpha\ket{100} + \beta\ket{011}$ | Aplicar $\sigma_x$ ao qubit 3 |
$\ket{10}$ | $\alpha\ket{010} + \beta\ket{101}$ | Aplicar $\sigma_x$ ao qubit 2 |
$\ket{11}$ | $\alpha\ket{001} + \beta\ket{110}$ | Aplicar $\sigma_x$ ao qubit 1 |
Extraindo o qubit original
Finalmente, para extrair o único qubit que você queria transmitir originalmente, você aplica duas operações CNOT: uma usa o primeiro qubit como controle e atua no segundo qubit, e outra usa o primeiro qubit como controle e age no terceiro.
O estado do primeiro qubit é agora $\alpha\ket{0} + \beta\ket{1}$, que é o qubit original que você queria transmitir.
Importante
O código QEC não obtém nenhuma informação sobre os coeficientes $\alpha$ e $\beta$, portanto, as superposições do estado computacional permanecem intactas durante a correção.