Lección 10 de 13
El código de Steane: siete cúbits y el truco de Hamming
El código CSS [[7,1,3]] hecho con el Hamming [7,4,3]: sus estados lógicos escritos enteros, sus seis generadores y un síndrome que lee en binario dónde está el error.
Al terminar sabrás:
- Escribir los estados lógicos del código de Steane como suma de las palabras de Hamming de peso par e impar
- Listar los seis generadores y comprobar que fijan los estados lógicos
- Leer en el síndrome la posición de un error X o Z, y la de un Y en las dos mitades
- Comparar Steane con Shor: 7 cúbits frente a 9 y sin degeneración en los errores de peso 1
Si sabes multiplicar matrices, operar con números complejos y calcular un síndrome con una matriz de paridad (lo tienes en el curso de códigos correctores), puedes seguirlo. La física imprescindible (estado, medida, producto tensorial) se explica desde cero.
En la lección anterior construimos códigos cuánticos a partir de dos códigos clásicos y con . Falta ver esa receta funcionando con un código de verdad. Hoy usamos el mejor candidato: el Hamming en los dos lugares. Sale un código de 7 cúbits que protege 1 cúbit y corrige cualquier error en uno de ellos, como el de Shor pero con dos cúbits menos. Y tiene una gracia que Shor no tiene: el síndrome dice en binario qué cúbit falla.
En el relato del curso, es el segundo código que responde a los tres obstáculos del principio, y el primero hecho con un código clásico concreto. Steane dio sus dos palabras ya en su artículo de Phys. Rev. Lett. 77, 793 (recibido en octubre de 1995, publicado en julio de 1996) y describió la codificación y la corrección en Proc. R. Soc. A 452, 2551 (1996); el artículo de Phys. Rev. A 54, 4741 (1996) lo generaliza a más códigos.
La idea
Tomamos Hamming , con la matriz de paridad «de manual» del curso de códigos (columna = en binario). Para el recuadro de repaso sobre Hamming, mira la lección 9.
Sus filas generan el dual del Hamming, el código símplex . Cumple : cada fila es palabra de Hamming (pesa 4 y cada dos filas coinciden en 2 posiciones, así que ). Por tanto la construcción CSS vale con . Los parámetros:
Un solo cúbit lógico, con generadores: dos por cada fila de , uno de tipo y otro de tipo .
Los seis generadores
Generador de tipo o de tipo de una fila : el Pauli (o ), que actúa con (o con ) en las posiciones donde tiene un 1. En orden, tipo primero, como en Shor y en la lección 9:
Conmutan todos entre sí. Dos del mismo tipo conmutan siempre. Uno de tipo con otro de tipo también conmutan, porque comparten un número par de posiciones (las filas de son ortogonales entre sí, y cada una consigo misma por pesar 4). En la matriz de la lección 7:
con de y de : seis filas y 14 columnas.
Los estados lógicos, enteros
Las palabras de Hamming son 16: 8 de peso par (el símplex, con la palabra y siete de peso 4) y 8 de peso impar (cada una de las anteriores sumada con : siete de peso 3 y la propia ). Los estados lógicos de la lección 9 son con en . Aquí hay dos clases, la de y la de :
Son ortogonales (no comparten ningún ket de la base) y de norma 1 (ocho términos, cada uno con amplitud ). Y los seis generadores los fijan:
- Tipo . , y para toda palabra de Hamming (las filas de son ortogonales al código). Cada ket queda con signo .
- Tipo . lleva a . Como es una de las 8 palabras pares (el símplex, que se cierra por sumas), sumar permuta esas 8 palabras entre sí, y las 8 impares entre sí. La suma no cambia.
Los operadores lógicos
Sumar lleva las palabras pares a las impares y las impares a las pares. Por tanto
Para , el signo de es : en las pares y en las impares. Así y . A diferencia de Shor, aquí no están «cruzados»: con y con .
Se pueden rebajar a peso 3 multiplicando por estabilizadores. sirve, porque (el producto ). Y sirve, porque . No hay ninguno de peso menor, porque la cota de la lección 9 da . Así que .
El síndrome lee la posición en binario
Un error anticonmuta con el generador exactamente cuando tiene un 1 en la posición . Es decir, los tres generadores de tipo dan justo en las filas de donde la columna tiene un 1: el síndrome es la columna de , que es en binario. Es el mismo truco de la decodificación por síndrome, pero ahora con valores propios .
Del mismo modo, anticonmuta con los generadores de tipo cuya fila tiene un 1 en : la mitad de tipo del síndrome lee también en binario. Escribimos el síndrome como , un bit por generador en el orden de arriba ( si sale , si sale ):
| error | síndrome (tipo tipo ) | lee |
|---|---|---|
| en binario, en la mitad de tipo | ||
| en binario, en la mitad de tipo | ||
| en las dos mitades |
Los 21 errores de peso 1 ( para ) tienen 21 síndromes distintos y no nulos. Es decir, el código no es degenerado para peso 1: cada error tiene su propio síndrome y no hay dos que se confundan. De los 64 síndromes posibles, 22 están ocupados (uno por «sin error» y 21 por los errores de peso 1); los otros 42 quedan para errores de peso mayor.
Compara con Shor (lección 4 y lección 5): allí 27 errores compartían 21 síndromes, porque , y dejaban la misma huella y daba igual cuál corregir. Shor es degenerado; Steane, para peso 1, no. Y gasta 7 cúbits en lugar de 9.
Como un error general es combinación de y medir el síndrome elige uno, la discusión de la lección 5 vale tal cual: Steane corrige cualquier error en un cúbit.
Ejemplo resuelto
Codificamos y se produce el error .
Qué le hace al estado. cambia el bit 6 de cada palabra. A le da
y algo análogo a .
Síndrome. Medimos , que dan el signo de cada ket (todos los kets de arriba dan lo mismo, porque difieren por palabras de Hamming). Con el primero, :
- : tiene un 1 en la posición 6, así que : sale .
- : también: .
- : tiene un 0 en la posición 6: sale .
Síndrome de tipo : , que es , el número 6 en binario. Los de tipo dan ( fijan el estado). El síndrome es .
Corregir. Aplicamos y queda . Las medidas no dependen de ni de : no hemos aprendido nada del dato.
Un en otro sitio. Si además hubiera un (en otro cúbit), el síndrome de tipo sería , el 3 en binario, y corregiríamos con . Las dos mitades no se estorban: Steane arregla un en un cúbit y un en otro a la vez. Por ejemplo, da : posición 2 por un lado y 7 por otro.
Esto no contradice . La distancia garantiza corregir cualquier error de peso 1, y pesa 2. Pero Steane es un CSS: corrige la parte y la parte por separado, y cada mitad es un Hamming que arregla un error. Un y un caen en mitades distintas y se corrigen los dos. Dos a la vez, en cambio, no se corrigen (ejercicio 2).
Ejercicios
Ejercicio 1
Al medir el código de Steane sale en y en , y en el resto. ¿Qué error ha ocurrido?
Ver la solución
El síndrome es . La mitad de tipo es , así que no hay . La de tipo es , que es 5 en binario: el error es . Se corrige aplicando .
Ejercicio 2
Se producen a la vez y (dos errores de tipo ). ¿Qué síndrome sale, qué corrige el decodificador y qué le pasa al dato?
Ver la solución
Las columnas 1 y 2 de son y y se suman: , el síndrome es . Eso es , así que el decodificador aplica . En total queda , que es el operador lógico de peso 3: pasa a y nadie se entera, porque el síndrome del resultado es nulo. Es lo esperable con : dos errores superan lo que el código corrige, igual que en el Hamming clásico (la lección de síndrome mostraba lo mismo con la posición 3).
Ejercicio 3
Comprueba que actúa como sobre : calcula su signo en cada uno de los 8 kets de .
Ver la solución
. Los primeros tres bits de las ocho palabras impares son: , , , , , , y (las de , , , , , , y ). Todos tienen un número impar de unos (1, 1, 1, 1, 1, 1, 3, 3), así que el signo es en los ocho kets y . En , los primeros tres bits tienen siempre un número par de unos (0 o 2), y el signo es : se comporta como .
En resumen
- Steane es el CSS con Hamming : es la suma (con ) de las 8 palabras de peso par y la de las 8 de peso impar.
- Tiene 6 generadores, y con las filas de , y operadores lógicos y (o sus versiones de peso 3).
- El síndrome lee en binario la posición de un (mitad de tipo ) o de un (mitad de tipo ); un se ve en las dos.
- Los 21 errores de peso 1 tienen 21 síndromes distintos y no nulos, y . Frente a Shor: 7 cúbits en vez de 9 y sin degeneración en peso 1.
Siguiente lección: Qudits: del cúbit a p niveles
Para profundizar
- A. M. Steane, Error correcting codes in quantum theory (1996).
- A. M. Steane, Multiple-particle interference and quantum error correction (1996).
- A. M. Steane, Simple quantum error-correcting codes (1996).
- M. A. Nielsen e I. L. Chuang, Quantum Computation and Quantum Information (2010).