Compartilhar via


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 é correção de erros quânticos?

A correção de erros quânticos (QEC) é uma técnica que nos permite proteger as informações quânticas contra 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 detecte e corrija erros.

As taxas de erro para computadores quânticos são normalmente mais altas do que os erros de computador 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 nos 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: inversões de bits e inversões de fase.

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-errors, 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.

Erros de inversão de fase ocorrem quando um qubit muda sua fase. Eles também são conhecidos como \sigma_z-errors, porque mapeiam os estados $de qubit \sigma_z \ket{0}{0}$=\ket{e $\sigma_z{1}= \ket{-\ket{1}$.$$ Este tipo de erro não tem análogo 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 foi projetado para que os erros possam ser detectados 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, sending $\ket{000}$, que é conhecido como uma palavra de código. Esse código de correção de erros é um código de repetição, pois a mensagem é repetida três vezes.

Agora, imagine que um único erro de inversão de bits ocorra durante a transmissão, de modo que o destinatário receba o estado $\ket{010}$. Nesse cenário, o destinatário pode 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 poderá inferir uma mensagem incorreta. Finalmente, se todos os três bits forem invertidos para que a mensagem $\ket{000}$ original se torne $\ket{111}$, o destinatário não terá como saber que ocorreu um erro.

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 para outra, ou seja, o número de erros que não podem ser detectados. 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 detectar 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 os dois 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, em que 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 inversão de bit ou um erro de inversão 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 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: esse é um código de correção de erro topológico que usa uma rede bidimensional de qubits para codificar qubits lógicos. Possui um alto limite de correção de erros e é considerada uma das técnicas mais promissoras para computação quântica tolerante a falhas em larga escala. O código de superfície é usado pelo Avaliador de Recursos do Azure Quantum.

  • Código de Hastings-Haah: Este código de correção de erros quânticos oferece melhores custos de espaço-tempo do que os códigos de superfície em qubits de Majorana em muitos regimes. Para conjuntos de instruções baseados em porta, 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 detectar e corrigir um erro de inversão de bits. Ele codifica um único qubit lógico em três qubits físicos repetindo o qubit três vezes.

Dica

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, você codifica os estados $\ket{0}$ de base em $\ket{1}$ 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 qubit $\ket{\phi}={0}\alpha\ket{único + \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}$. Portanto, 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 todos os três qubits. Supondo que apenas erros de inversão de um bit possam ocorrer, os qubits recebidos estão em um dos seguintes estados:

Estado Erro
$\alpha\ket{000} + \beta\ket{111}$ Nenhum erro
$\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}$. Esse par auxiliar de qubits é usado para extrair informações do erro sem medir ou obter informações diretamente 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 atuam no segundo bit auxiliar. O estado total de todos os cinco qubits agora é:

Estado Erro
$\alpha\ket{000} ( + \beta\ket{111})\ket{00}$ Nenhum erro
$\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 do 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 conjunto, que é chamado de síndrome do 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. Nesse 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}$, os qubits recebidos estarão no estado $\alpha{000}\ket{+ \beta\ket{{111}$, que é o estado que você enviou originalmente. Se a síndrome de erro for $\ket{11}$, os qubits recebidos estarão no estado $\alpha{100}\ket{+ b.\ket{{011}$ Há um erro de inversão de bit 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

Por fim, 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 atua no terceiro.

O estado do primeiro qubit agora $\alpha\ket{0} é + \beta\ket{1}$, que é o qubit original que você deseja 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.