Introducción a la corrección de errores cuánticos

En este artículo se explican los conceptos básicos de la corrección de errores cuánticos, los tipos de errores cuánticos y algunos códigos comunes de corrección de errores cuánticos. También proporciona un ejemplo de cómo corregir errores mediante el código de tres cúbits.

¿Qué es la corrección de errores cuánticos?

La corrección cuántica de errores (QEC) es una técnica que nos permite proteger la información cuántica frente a errores. La corrección de errores es especialmente importante en los equipos cuánticos, ya que los algoritmos cuánticos eficaces usan equipos cuánticos a gran escala, que son sensibles al ruido.

El principio básico detrás de la corrección de errores cuánticos es que se aumenta el número de bits que se usan para codificar una cantidad determinada de información. Esta redundancia permite que el código detecte y corrija errores.

Las tasas de error de los equipos cuánticos suelen ser mayores que los errores del equipo clásico debido a los desafíos asociados a la creación y el funcionamiento de sistemas cuánticos. El ruido, la decoherencia y las imperfecciones en puertas cuánticas pueden provocar errores en cálculos cuánticos. Los equipos cuánticos actuales tienen tasas de error en el intervalo del 1 % al 0,1 %. En otras palabras, esto significa que, en promedio, una de cada 100 a 1000 operaciones de puerta cuántica produce un error.

Tipos de errores cuánticos

Hay dos tipos fundamentales de errores cuánticos: volteos de bits y volteos de fase.

Los errores de volteo de bits se producen cuando un cúbit cambia de $\ket{0}$ a $\ket{1}$ o viceversa. Los errores de volteo de bits también se conocen como \sigma_x-error, ya que asignan los estados $de cúbit \sigma_x\ket{{1}$=\ket{0} y $\sigma_x .\ket{0}$\ket{={1}$$ Este error es análogo a un error de volteo de bits clásico.

Los errores de volteo de fase se producen cuando un cúbit cambia su fase. También se conocen como \sigma_z-error, ya que asignan los estados $de cúbit \sigma_z\ket{\ket{0}{0}$= y $\sigma_z{1}\ket{= -.\ket{1}$$$ Este tipo de error no tiene ninguna analogía clásica.

En la computación cuántica, los errores cuánticos pueden manifestarse como volteos de bits, volteos de fase o una combinación de ambos.

¿Cómo funciona la corrección cuántica de errores?

Los códigos de corrección de errores cuánticos funcionan codificando la información cuántica en un conjunto mayor de cúbits, denominados cúbits físicos. El estado conjunto de los cúbits físicos representa un cúbit lógico.

Los cúbits físicos están sujetos a errores debido a la decoherencia y las imperfecciones en las puertas cuánticas. El código está diseñado para que se puedan detectar y corregir errores mediante la medición de algunos de los cúbits del código.

Por ejemplo, imagine que desea enviar el mensaje $\ket{0}$de un solo cúbit. Puede usar tres cúbits físicos para codificar el mensaje, enviando $\ket{000}$, que se conoce como codeword. Este código de corrección de errores es un código de repetición, porque el mensaje se repite tres veces.

Ahora, imagine que se produce un único error de volteo de bits durante la transmisión para que lo que recibe el destinatario sea el estado $\ket{010}$. En este escenario, el destinatario puede deducir que el mensaje previsto es $\ket{000}$. Sin embargo, si el mensaje está sujeto a dos errores de volteo de bits, el destinatario puede deducir un mensaje incorrecto. Por último, si se voltean los tres bits para que el mensaje $\ket{000}$ original se convierta en $\ket{111}$, el destinatario no tiene forma de saber si se produjo un error.

La distancia de código de un código QEC es el número mínimo de errores que cambian una palabra de código a otra, es decir, el número de errores que no se pueden detectar. La distancia $de código d$ se puede definir como

$$d = 2t + 1$$

donde $t$ es el número de errores que el código puede corregir. Por ejemplo, el código de tres bits puede detectar y corregir un error de volteo de bits, por lo que $t = 1$ y, por tanto, la distancia del código es $d = 3$.

Tenga en cuenta que los códigos de repetición, como el código de tres bits usado en este ejemplo, solo pueden corregir errores de volteo de bits y no los errores de volteo de fase. Para corregir ambos tipos de errores, se necesitan códigos de corrección de errores cuánticos más sofisticados.

Tipos de códigos QEC

Hay muchos tipos diferentes de códigos QEC, cada uno con sus propias propiedades y ventajas. Algunos códigos de QEC comunes son:

  • Código de repetición: el código de corrección de errores cuánticos más sencillo, donde un solo cúbit se codifica en varios cúbits repitiéndolo varias veces. El código de repetición puede corregir errores de volteo de bits, pero no errores de volteo por fases.

  • Código Shor: el primer código de corrección de errores cuánticos, desarrollado por Peter Shor. Codifica un cúbit lógico en nueve cúbits físicos. El código Shor puede corregir un error de volteo de un solo bit o un error de volteo de fase, pero no puede corregir ambos tipos de errores al mismo tiempo.

  • Código steane: se trata de un código de siete cúbits que puede corregir errores de volteo de bits y de volteo de fase. Tiene la ventaja de ser tolerante a errores, lo que significa que el propio proceso de corrección de errores no introduce errores adicionales.

  • Código de superficie: se trata de un código de corrección de errores topológico que usa una red multidimensional de cúbits bidimensionales para codificar cúbits lógicos. Tiene un umbral elevado de corrección de errores y se considera una de las técnicas más prometedores para la computación cuántica a gran escala y tolerante a errores. El estimador de recursos de Azure Quantum usa el código de superficie.

  • Código Hastings-Haah: este código de corrección de errores cuánticos ofrece mejores costos de tiempo espaciado que los códigos de superficie en cúbits majorana en muchos regímenes. En el caso de los conjuntos de instrucciones basados en puertas, la sobrecarga es mayor, lo que hace que este enfoque sea menos eficaz que el código de superficie.

Ejemplo: el código de tres cúbits

El código de corrección de errores de tres cúbits es un código de repetición simple que puede detectar y corregir un error de volteo de un bit. Codifica un único cúbit lógico en tres cúbits físicos repitiendo el cúbit tres veces.

Sugerencia

Consulte el Q# ejemplo de código para el código de tres cúbits.

Imagine que desea enviar un cúbit $\ket{\phi}=\alpha\ket{{0} único arbitrario + . \beta\ket{1}$ Para evitar errores, codifique los estados $\ket{0}$ base y $\ket{1}$ en un estado conjunto de tres cúbits. Los dos estados de base lógicos son $\ket{0_L}=\ket{000}$ y $\ket{1_L.}=\ket{111}$

Por lo tanto, el único cúbit $\ket{\phi}={0}\alpha\ket{+ \beta\ket{1}$ se codifica como:

$$\ket{\phi}{000}\ket{\alpha=_L + \beta\ket{\ket{\alpha{111}=0_L} + 1_L \beta\ket{}$$

Vamos a desglosar los pasos del código de tres cúbits.

Preparación de los cúbits

En primer lugar, codifica el único cúbit $\ket{\phi}=\alpha\ket{{0} +\beta\ket{1}$ en un estado conjunto de tres cúbits.

A continuación, preparará dos cúbits adicionales en el estado $\ket{0}$. Por lo tanto, el estado global de los tres cúbits es $(\alpha\ket{0} +\beta\ket{1}){000}\alpha\ket{\ket{0}\ket{0}= + . \beta\ket{{100}$

Por último, puede codificar el único cúbit en un estado conjunto de tres cúbits mediante la aplicación de dos operaciones CNOT. El primer CNOT usa el primer cúbit como control y actúa en el segundo cúbit, produciendo $\alpha\ket{000} + \beta\ket{110}$. El segundo CNOT usa el primer cúbit como control y actúa en el tercer cúbit. El estado de los tres cúbits es ahora $\alpha\ket{000} + \beta\ket{111}$.

Envío de cúbits

Envía los tres cúbits. Suponiendo que solo se pueden producir errores de volteo de un bit, los cúbits recibidos se encuentran en uno de los estados siguientes:

Valor Error
$\alpha\ket{000} + \beta\ket{111}$ Sin errores
$\alpha\ket{100} + \beta\ket{011}$ Cúbit 1
$\alpha\ket{010} + \beta\ket{101}$ Cúbit 2
$\alpha\ket{001} + \beta\ket{110}$ Cúbit 3

Adición de cúbits auxiliares

En primer lugar, se presentan dos cúbits más, preparados en el estado $\ket{00}$. Este par auxiliar de cúbits se usa para extraer información del error sin medir ni obtener información directamente sobre el estado lógico.

A continuación, se llevan a cabo cuatro operaciones CNOT: las dos primeras usan los cúbits primero y segundo recibidos como control y actúan sobre el primer cúbit auxiliar, y las dos últimas operaciones usan los primeros y los tres cúbits recibidos como control y actúan en el segundo bit auxiliar. El estado total de los cinco cúbits es ahora:

Valor Error
$(\alpha\ket{000} + \beta\ket{111})\ket{00}$ Sin errores
$(\alpha\ket{100} + \beta\ket{011})\ket{11}$ Cúbit 1
$(\alpha\ket{010} + \beta\ket{101})\ket{10}$ Cúbit 2
$(\alpha\ket{001} + \beta\ket{110})\ket{01}$ Cúbit 3

Recuperación del síndrome de error

Para recuperar la información de error, mida los dos cúbits auxiliares en los estados $\ket{0}$ de base computacional y $\ket{1}$. Al hacerlo, se recupera el estado conjunto, que se denomina síndrome de error porque ayuda a diagnosticar los errores en los cúbits recibidos.

Ahora sabe en cuál de los cuatro estados posibles están los tres cúbits recibidos. Puede corregir el error aplicando la operación de corrección. En este caso, está tratando con errores de volteo de bits, por lo que la corrección es una $operación \sigma_x$ aplicada a uno (o ninguno) de los cúbits.

Por ejemplo, si el síndrome de error es $\ket{00}$, los cúbits recibidos están en el estado $\alpha{000}\ket{+ \beta\ket{{111}$, que es el estado que envió originalmente. Si el síndrome de error es $\ket{11}$, los cúbits recibidos se encuentran en el estado $\alpha{100}\ket{+ b.\ket{{011}$ Hay un error de volteo en el primer cúbit, que puede corregir aplicando una $operación \sigma_x$ al primer cúbit.

Síndrome de error Contraer estado Corrección
$\ket{00}$ $\alpha\ket{000} + \beta\ket{111}$ No hacer nada
$\ket{01}$ $\alpha\ket{100} + \beta\ket{011}$ Aplicar $\sigma_x$ a cúbit 3
$\ket{10}$ $\alpha\ket{010} + \beta\ket{101}$ Aplicar $\sigma_x$ a cúbit 2
$\ket{11}$ $\alpha\ket{001} + \beta\ket{110}$ Aplicar $\sigma_x$ a cúbit 1

Extracción del cúbit original

Por último, para extraer el único cúbit que quería transmitir originalmente, se aplican dos operaciones CNOT: una usa el primer cúbit como control y actúa en el segundo cúbit, y otro usa el primer cúbit como control y actúa en el tercero.

El estado del primer cúbit es ahora $\alpha\ket{0} + \beta\ket{1}$, que es el cúbit original que quería transmitir.

Importante

El código QEC no obtiene información sobre los coeficientes $\alpha$ y $\beta$, por lo tanto, las superposiciones del estado computacional permanecen intactas durante la corrección.