Saltar al contenido principal

Códigos de repetición

Comenzamos la lección con una discusión de los códigos de repetición. Los códigos de repetición no protegen la información cuántica contra todo tipo de error que pueda ocurrir en los qubits, pero constituyen la base del código de Shor de 9 qubits, que conoceremos en la próxima lección, y también son útiles para explicar los fundamentos de la corrección de errores.

Codificación y decodificación clásica

Los códigos de repetición son ejemplos extremadamente simples de códigos correctores de errores. La idea es que podemos proteger los bits contra errores simplemente repitiendo cada bit un número fijo de veces.

Consideremos primero el código de repetición de 3 bits, inicialmente solo en el contexto de la información clásica. Este código codifica un bit en tres bits repitiendo el bit tres veces, de modo que 00 se codifica como 000000 y 11 se codifica como 111111.

00001111\begin{aligned} 0 & \mapsto 000\\ 1 & \mapsto 111 \end{aligned}

Si nada sale mal, obviamente podemos distinguir las dos posibilidades para el bit original a partir de sus codificaciones. El punto es que si ocurrió un error y uno de los tres bits se invirtió (es decir, un 0 se convirtió en 1 o viceversa), aún podemos determinar cuál era el bit original — identificando cuál de los dos valores binarios aparece dos veces. De manera equivalente, podemos decodificar calculando el valor mayoritario (es decir, el valor binario que aparece con más frecuencia).

abcmajority(a,b,c)a b c \mapsto \operatorname{majority}(a,b,c)

Por supuesto, la decodificación no funcionará correctamente si 2 o 3 bits de la codificación se invierten, y se recuperará el bit incorrecto — pero si a lo sumo 1 de los 3 bits se invierte, la decodificación es correcta. Esta es una propiedad típica de los códigos correctores de errores en general: permiten la corrección de errores, pero solo si no hay demasiados.

Reducción de ruido para el canal binario simétrico

Como ejemplo de una situación en la que la probabilidad de error puede reducirse mediante un código de repetición, supongamos que nuestro objetivo es transmitir un solo bit a un receptor hipotético, y podemos transmitir bits a través de un llamado canal binario simétrico, que invierte cada bit enviado de forma independiente con probabilidad pp. Es decir, con probabilidad 1p1-p el receptor recibe el bit que fue enviado a través del canal, pero con probabilidad pp el bit se invierte y el receptor obtiene el valor de bit opuesto.

Si no usamos el código de repetición de 3 bits y simplemente enviamos el bit deseado a través del canal, el receptor recibe el bit incorrecto con probabilidad pp. Si, por el contrario, primero codificamos el bit a enviar con el código de repetición de 3 bits y luego enviamos cada uno de los tres bits de la codificación a través del canal, cada uno se invierte independientemente con probabilidad pp. La probabilidad de una inversión de bit es ahora mayor, porque tres bits en lugar de uno podrían invertirse — pero si a lo sumo uno de los bits se invierte, el receptor decodifica correctamente. Un error persiste después de la decodificación solo si dos o más bits se invierten durante la transmisión.

La probabilidad de que dos bits se inviertan durante la transmisión es 3p2(1p)3p^2(1-p) — esto es p2(1p)p^2(1-p) por cada una de las tres posibilidades de cuál bit no se invierte —, mientras que la probabilidad de que los tres bits se inviertan es p3p^3. La probabilidad total de dos o tres inversiones de bits es por lo tanto

3p2(1p)+p3=3p22p3.3 p^2 (1 - p) + p^3 = 3 p^2 - 2 p^3.

Para valores de pp menores que un medio, esto resulta en una reducción de la probabilidad de que el receptor reciba el bit incorrecto. En este caso, sigue existiendo una probabilidad de error, pero el código reduce la probabilidad. (Para valores de pp mayores que un medio, en cambio, el código en realidad aumenta la probabilidad de que el receptor reciba el bit incorrecto.)

Gráfico de probabilidad de error para el código de repetición de 3 bits para un canal binario simétrico

Codificación de qubits

El código de repetición de 3 bits es un código corrector de errores clásico, pero podemos considerar qué ocurre cuando lo usamos para proteger qubits contra errores. Como veremos, no es un código de corrección de errores cuánticos particularmente impresionante, ya que en realidad hace más probables algunos errores. Sin embargo, es el primer paso hacia el código de Shor y nos será útil desde el punto de vista pedagógico.

Cuando hablamos del código de repetición de 3 bits para qubits, nos referimos a una codificación de un qubit en la que los estados de la base estándar se repiten tres veces, de modo que un vector de estado de un qubit se codifica de la siguiente manera.

α0+β1α000+β111\alpha \vert 0\rangle + \beta \vert 1\rangle \mapsto \alpha \vert 000\rangle + \beta \vert 111\rangle

Esta codificación se puede implementar fácilmente con el siguiente circuito cuántico, que utiliza dos qubits de trabajo inicializados y dos puertas NOT controladas.

Circuito de codificación para el código de repetición de 3 bits

Cabe destacar en particular que esta codificación no es lo mismo que repetir el estado cuántico tres veces, es decir, una codificación de un vector de estado de qubit dado como ψψψψ.\vert\psi\rangle \mapsto \vert\psi\rangle\vert\psi\rangle\vert\psi\rangle. Tal codificación no se puede implementar para un estado cuántico desconocido ψ\vert\psi\rangle debido al teorema de no clonación.

Errores de inversión de bit

Supongamos ahora que después de la codificación ocurre un error. Concretamente, supongamos que una puerta XX — es decir, una inversión de bit — ocurre en uno de los qubits. Si, por ejemplo, el qubit del medio sufre una inversión de bit, el estado de los tres qubits se transforma en este estado:

α010+β101.\alpha \vert 010\rangle + \beta \vert 101\rangle.

Este no es, por supuesto, el único error que podría ocurrir — y también es legítimo cuestionar la suposición de que un error toma la forma de una operación unitaria perfecta. Volveremos a estas preguntas en la última sección de la lección; por ahora, podemos considerar un error así como un tipo posible de error (aunque uno fundamentalmente importante).

A partir de la expresión matemática del estado anterior, es claramente visible que el bit del medio es el que difiere dentro de cada ket. Pero supongamos que tuviéramos los tres qubits en nuestro poder y no conociéramos su estado. Si sospecháramos que pudo haber ocurrido una inversión de bit, una forma de verificarlo sería realizar una medición en la base estándar, que en el caso presente daría 010010 o 101101 con probabilidades α2\vert\alpha\vert^2 y β2\vert\beta\vert^2 respectivamente. En ambos casos, concluiríamos que el bit del medio se invirtió — pero desafortunadamente perderíamos el estado cuántico original α0+β1\alpha\vert 0\rangle + \beta \vert 1\rangle. Este es precisamente el estado que queremos proteger, por lo que la medición en la base estándar no es una opción satisfactoria.

Lo que podemos hacer en su lugar es usar el siguiente circuito cuántico, en el que el estado codificado se introduce en los tres qubits superiores. Este circuito mide de forma no destructiva la paridad de los estados de la base estándar de los dos qubits superiores, así como de los dos qubits inferiores de la codificación de tres qubits.

Circuito de detección de errores para el código de repetición de 3 bits

Bajo la suposición de que a lo sumo un bit se invirtió, se puede deducir fácilmente de los resultados de medición la ubicación de la inversión de bit (o la ausencia de esta). Como muestran los siguientes cuatro diagramas de circuito, el resultado de medición 0000 indica que no ocurrió ninguna inversión de bit, mientras que las otras tres posibilidades indican qué qubit sufrió una inversión de bit.

Detección de errores para el código de repetición de 3 bits (sin errores)

Detección de errores para el código de repetición de 3 bits (error en qubit 0)

Detección de errores para el código de repetición de 3 bits (error en qubit 1)

Detección de errores para el código de repetición de 3 bits (error en qubit 2)

Lo fundamental es que el estado de los tres qubits superiores no colapsa en ninguno de los casos, lo que nos permite corregir un error de inversión de bit — si ocurrió uno — simplemente aplicando la misma inversión de bit de nuevo con una puerta XX. La siguiente tabla resume los estados que obtenemos con a lo sumo una inversión de bit, los resultados de medición (que en el contexto de la corrección de errores se denominan síndrome) y la corrección necesaria para volver a la codificación original.

EstadoSíndromeCorrección
α000+β111\alpha\vert 000\rangle + \beta \vert 111\rangle0000III\mathbb{I}\otimes\mathbb{I}\otimes\mathbb{I}
α001+β110\alpha\vert 001\rangle + \beta \vert 110\rangle0101IIX\mathbb{I}\otimes\mathbb{I}\otimes X
α010+β101\alpha\vert 010\rangle + \beta \vert 101\rangle1111IXI\mathbb{I}\otimes X\otimes\mathbb{I}
α100+β011\alpha\vert 100\rangle + \beta \vert 011\rangle1010XIIX\otimes\mathbb{I}\otimes\mathbb{I}

Aquí solo consideramos la posibilidad de que haya ocurrido a lo sumo una inversión de bit. Esto no funcionaría correctamente si hubieran ocurrido dos o tres inversiones de bits, y tampoco hemos considerado otros posibles errores además de las inversiones de bits.

Errores de inversión de fase

En el ámbito cuántico, los errores de inversión de bit no son los únicos errores de los que debemos preocuparnos. También debemos ocuparnos, por ejemplo, de los errores de inversión de fase, que se describen mediante puertas ZZ. De manera similar a los errores de inversión de bit, podemos considerar los errores de inversión de fase como otro tipo posible de error que puede afectar a un qubit.

Sin embargo, como veremos en la última sección de la lección sobre la llamada discretización de errores para códigos correctores de errores cuánticos, el enfoque en los errores de inversión de bit y los errores de inversión de fase está bien fundamentado. La capacidad de corregir un error de inversión de bit, un error de inversión de fase o ambos simultáneamente implica automáticamente la capacidad de corregir cualquier error cuántico arbitrario en un solo qubit.

Desafortunadamente, el código de repetición de 3 bits no protege en absoluto contra inversiones de fase. Supongamos que un estado de qubit α0+β1\alpha\vert 0\rangle + \beta\vert 1\rangle fue codificado con el código de repetición de 3 bits, y ocurre un error de inversión de fase en el qubit del medio. Esto produce el estado

(IZI)(α000+β111)=α000β111,(\mathbb{I} \otimes Z \otimes \mathbb{I}) ( \alpha \vert 000\rangle + \beta \vert 111\rangle) = \alpha \vert 000\rangle - \beta \vert 111\rangle,

que es exactamente el estado que habríamos obtenido al codificar el estado de qubit α0β1\alpha\vert 0\rangle - \beta\vert 1\rangle. De hecho, un error de inversión de fase en cualquiera de los tres qubits de la codificación tiene el mismo efecto, lo que equivale a un error de inversión de fase en el qubit original antes de la codificación. Suponiendo que el estado cuántico original es desconocido, no hay forma de determinar que ha ocurrido un error, ya que el estado resultante es una codificación perfectamente válida de un estado de qubit diferente. En particular, ejecutar el circuito de detección de errores sobre el estado α000β111\alpha \vert 000\rangle - \beta \vert 111\rangle produce con certeza el síndrome 0000, lo que sugiere falsamente que no han ocurrido errores.

Además, ahora hay tres qubits en lugar de uno que podrían sufrir potencialmente errores de inversión de fase. En una situación donde los errores de inversión de fase ocurren independientemente en cada qubit con cierta probabilidad p>0p > 0 (de manera similar a un canal binario simétrico, pero para inversiones de fase en lugar de inversiones de bit), este código en realidad aumenta la probabilidad de un error de inversión de fase después de la decodificación para valores pequeños de pp. Más precisamente, después de la decodificación obtenemos un error de inversión de fase en el qubit original si ha ocurrido un número impar de errores de inversión de fase en los tres qubits de la codificación, lo cual ocurre con probabilidad

3p(1p)2+p33 p (1 - p)^2 + p^3

Este valor es mayor que pp para 0<p<1/20<p<1/2, por lo que el código aumenta la probabilidad de un error de inversión de fase para valores de pp en este rango.

Código de repetición modificado para errores de inversión de fase

Hemos observado que el código de repetición de 3 bits ignora completamente los errores de inversión de fase y, por lo tanto, parece poco útil para manejar este tipo de errores. Sin embargo, podemos modificar el código de repetición de 3 bits de manera sencilla para que detecte errores de inversión de fase. Esta modificación hace que el código sea insensible a los errores de inversión de bit — pero como veremos en la siguiente sección, podemos combinar el código de repetición de 3 bits con esta versión modificada para obtener el código de Shor, que puede corregir tanto errores de inversión de bit como de inversión de fase.

Aquí está la versión modificada del circuito de codificación anterior, que ahora puede detectar errores de inversión de fase. La modificación es muy simple: aplicamos una puerta de Hadamard a cada qubit después de las dos puertas NOT controladas.

Circuito de codificación modificado para el código de repetición de 3 bits

Una puerta de Hadamard transforma un estado 0\vert 0\rangle en un estado +\vert + \rangle y un estado 1\vert 1\rangle en un estado \vert - \rangle, de modo que el efecto global es que el estado de un qubit α0+β1\alpha\vert 0\rangle + \beta \vert 1\rangle se codifica como

α++++β\alpha \vert {+}\,{+}\,{+} \rangle + \beta \vert {-}\,{-}\,{-} \rangle

donde +++=+++\vert {+}\,{+}\,{+} \rangle = \vert + \rangle \otimes \vert + \rangle \otimes\vert + \rangle y =.\vert {-}\,{-}\,{-} \rangle = \vert - \rangle \otimes \vert - \rangle \otimes\vert - \rangle.

Un error de inversión de fase, es decir, una puerta ZZ, intercambia los estados +\vert + \rangle y \vert - \rangle, por lo que esta codificación es útil para la detección (y corrección) de errores de inversión de fase. Concretamente, el circuito de detección de errores anterior se puede modificar de la siguiente manera.

Circuito de detección de errores de fase para el código de repetición de 3 bits

Para expresarlo en palabras: tomamos el circuito anterior y simplemente añadimos puertas de Hadamard al principio y al final en los tres qubits superiores. La idea es que las primeras tres puertas de Hadamard convierten los estados +\vert + \rangle y \vert - \rangle de vuelta en estados 0\vert 0\rangle y 1\vert 1\rangle, luego se realizan las mismas verificaciones de paridad que antes, y luego la segunda capa de puertas de Hadamard convierte el estado de vuelta en estados +\vert + \rangle y \vert - \rangle, de modo que restauramos nuestra codificación. Para referencia futura, observamos que este circuito de detección de errores de fase se puede simplificar de la siguiente manera.

Circuito simplificado de detección de errores de fase

Los siguientes cuatro diagramas de circuito describen cómo funciona nuestra versión modificada del código de repetición de 3 bits, incluyendo los pasos de codificación y detección de errores, cuando ocurre a lo sumo un error de inversión de fase. El comportamiento es similar al del código de repetición de 3 bits ordinario para inversiones de bit.

Detección de errores de inversión de fase para el código de repetición de 3 bits modificado (sin errores)

Detección de errores de inversión de fase para el código de repetición de 3 bits modificado (error en qubit 0)

Detección de errores de inversión de fase para el código de repetición de 3 bits modificado (error en qubit 1)

Detección de errores de inversión de fase para el código de repetición de 3 bits modificado (error en qubit 2)

Aquí hay una tabla análoga a la anterior, esta vez considerando la posibilidad de a lo sumo un error de inversión de fase.

EstadoSíndromeCorrección
α++++β\alpha\vert {+}\,{+}\,{+} \rangle + \beta \vert {-}\,{-}\,{-}\rangle0000III\mathbb{I}\otimes\mathbb{I}\otimes\mathbb{I}
α+++β+\alpha\vert {+}\,{+}\,{-}\rangle + \beta \vert {-}\,{-}\,{+}\rangle0101IIZ\mathbb{I}\otimes\mathbb{I}\otimes Z
α+++β+\alpha\vert {+}\,{-}\,{+}\rangle + \beta \vert {-}\,{+}\,{-}\rangle1111IZI\mathbb{I}\otimes Z\otimes\mathbb{I}
α+++β+\alpha\vert {-}\,{+}\,{+} \rangle + \beta \vert {+}\,{-}\,{-}\rangle1010ZIIZ\otimes\mathbb{I}\otimes\mathbb{I}

Desafortunadamente, esta versión modificada del código de repetición de 3 bits ya no puede corregir errores de inversión de bit. Pero no todo está perdido. Como se anticipó antes, podremos combinar los dos códigos que acabamos de considerar en un solo código — el código de Shor de 9 qubits — que puede corregir tanto errores de inversión de bit como de inversión de fase, y de hecho cualquier error en un solo qubit.