Lección 12 de 13
Códigos CSS sobre cuerpos finitos: códigos cuánticos para qudits
La construcción CSS con dos códigos clásicos sobre un cuerpo de p elementos: estabilizadores, estados lógicos, síndromes y un código de 13 cútrits que corrige un error.
Al terminar sabrás:
- Construir un código CSS de qudits a partir de dos códigos sobre F_p con C2⊥ ⊆ C1
- Escribir sus estados lógicos como clases laterales y contar k = dim C1 − dim C2⊥
- Calcular el síndrome de un error X^a Z^b y leer en él la posición y el valor
- Saber cómo se adapta todo a F_q con q = p^m usando la traza
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 cambiamos el cúbit por un qudit de niveles y vimos que el código de 3 cútrits funciona justo porque . Y en la lección 9 aprendimos a fabricar un código cuántico con dos códigos binarios. Hoy juntamos las dos ideas. El relato iba así: se dudaba de que fuera posible, Shor lo hizo con 9 cúbits y Calderbank, Shor y Steane enseñaron a construir códigos cuánticos con códigos clásicos. Ahora damos el paso que lleva al final del curso: ¿funciona la receta CSS con códigos sobre ? Funciona casi palabra por palabra, y abre la puerta a usar cualquier código lineal del curso de códigos para proteger qudits.
La idea
En la versión binaria había dos códigos. Uno vigilaba los errores (los cambios de bit) y el otro los errores (los cambios de fase). La única condición era que las comprobaciones de los dos tipos conmutaran, y eso se traducía en una inclusión entre códigos: .
Con qudits pasa lo mismo. Un error en un qudit suma al símbolo, como un error de valor en un código clásico sobre . Un error multiplica por una fase que depende del símbolo. Las comprobaciones de tipo leen los errores con la matriz de paridad de ; las de tipo leen los errores con la de . Lo único nuevo son los coeficientes: ahora un error tiene posición y valor, y aparecen algunos signos menos.
Repaso Producto escalar y dual sobre F_p
Para , el producto escalar es calculado módulo . El dual de un código es y tiene dimensión . Las filas de una matriz de paridad de generan (lección del curso de códigos). Sobre un vector puede ser ortogonal a sí mismo: en .
Los ingredientes
Trabajamos con qudits de niveles, primo, y . Para vectores :
Es decir, suma el vector y pone la fase . La regla de conmutación es:
Así que y conmutan si y solo si . Es el producto simpléctico de la lección anterior aplicado a y .
La construcción CSS sobre
Toma dos códigos lineales con
Sea una matriz de paridad de (sus filas generan ) y una de (sus filas generan ). Los estabilizadores son:
- para cada fila de : detectan los errores ;
- para cada fila de : detectan los errores .
Dos de tipo conmutan siempre, y dos de tipo también. Un y un conmutan porque y , así que . Esa es toda la razón de la condición .
Hay generadores, así que el código guarda
qudits lógicos. Si y tienen parámetros y , sale .
Estados lógicos: uno por clase lateral
Para cada definimos
Es la suma de todas las palabras de la clase lateral , la misma idea de la decodificación por síndrome. Las comprobaciones de la lección 9 valen igual: solo reordena la suma; da la fase , porque y ; y el estado depende solo de la clase. Dos clases distintas no comparten ningún ket, así que sus estados son ortogonales.
Hay clases: justo la dimensión del código. Si , se elige fuera de y se llama . Entonces cumple . Para basta un con : como para todo , se tiene .
Síndromes y distancia
Un error tiene vector . Con el producto simpléctico del curso, :
- el estabilizador , de vector , da : es el síndrome clásico de la parte del error;
- el estabilizador , de vector , da : es menos el síndrome clásico de la parte .
Al medir el generador sale el valor propio . En binario el signo menos no se nota; sobre sí.
La distancia es el menor peso de un error indetectable que no sea un estabilizador. Para un código CSS,
y en particular . Es el lema de la construcción CSS de Ketkar, Klappenecker, Kumar y Sarvepalli (2006), que lo enuncian para cualquier . Un artículo de referencia sobre códigos estabilizadores no binarios, sobre cualquier , es el de Ashikhmin y Knill (2001).
El código de 3 cútrits, releído
Toma , y . Como , se cumple . Aquí , y la única fila de y de es : los estabilizadores son y . Y .
tiene 9 palabras, repartidas en 3 clases de . Con :
Son exactamente los de la lección 11. La receta da , pero en la lección 11 usamos . Las dos sirven: está en la misma clase, así que los dos operadores solo difieren en el estabilizador y hacen lo mismo sobre el código, . Nos quedamos con los de la lección 11: y , que vale porque y . La distancia es 2: está en , no en y pesa 2.
Ejemplo resuelto: el Hamming ternario
El código de Steane nacía del Hamming binario. Su primo ternario es el código de Hamming : su matriz de paridad tiene como columnas un representante de cada recta de (el primer símbolo no nulo es 1). Hay :
Ninguna columna es nula ni múltiplo de otra, así que , y la columna 3 es la suma de la 1 y la 2, así que .
Paso 1: ¿contiene a su dual? Las filas de generan , el código símplex . Basta comprobar que las filas son ortogonales entre sí y consigo mismas. Con enteros, los productos son , y (cada fila consigo misma) y , y (las parejas): todos múltiplos de 3. Así que . (De hecho, las 26 palabras no nulas de pesan 9.)
Paso 2: el código cuántico. Tomamos y . Los seis generadores son y , con las filas de . Por ejemplo, y . Queda
Las palabras de pesan al menos 3 y hay alguna de peso 3. Por tanto es un : 7 cútrits lógicos en 13 físicos, y corrige cualquier error en un cútrit. Ketkar et al. obtienen así toda una familia a partir de los Hamming que contienen a su dual.
Paso 3: estados lógicos. Hay clases, cada una con 27 kets. El de todo ceros es
con términos como o (la fila ). Para el primer cútrit lógico tomamos , que está en porque la columna 1 más la 2 más dos veces la 3 da . Y , que también está en y cumple . Así, y son lógicos de peso 3, y (con los otros seis cútrits lógicos a 0).
Paso 4: un error y su síndrome. Sobre el cútrit 6 actúa , es decir, y . La columna 6 es .
- Generadores de tipo : .
- Generadores de tipo : .
Se miden los valores propios y otra vez .
Paso 5: leer el síndrome. Como en el Hamming binario, el síndrome señala la columna, pero ahora además da el valor. En el primer símbolo no nulo es 2: el error tiene valor y está en la columna , la 6. En la otra mitad, da y otra vez la columna 6. Se aplica al cútrit 6 y el estado vuelve a ser el original.
Los 104 errores de peso 1 ( posiciones por errores no triviales) dan 104 síndromes no nulos y distintos.
Más allá de los primos:
La lección 13 necesita , así que conviene saber qué cambia cuando . Cada símbolo de es ahora un qudit de niveles, con base para , y suma en . Pero ya no tiene sentido, porque es un elemento de y no un número entre y . La solución es la traza del cuerpo (no la de una matriz) , que lleva a y respeta la suma. Se define , con (en , ). Es el convenio de Ketkar et al. La condición CSS sigue siendo con el producto escalar usual de : si , entonces y , conmutan. Un detalle: los estabilizadores son ahora y para todos los y , no solo para las filas de las matrices de paridad, porque un múltiplo con fuera de no es una potencia de . El código sigue teniendo , ahora contando qudits de niveles.
Ejercicios
Ejercicio 1
¿Sirve , sobre ? ¿Y , sobre ? En el caso que funcione, da y .
Ver la solución
Sobre , , así que y no se cumple : y no conmutan.
Sobre , : sí funciona. tiene dimensión 4, así que . Ninguna palabra de peso 1 suma cero, pero sí, y no está en . Como , : es un , el hermano del código de 3 cútrits.
Ejercicio 2
El tetracódigo , de matriz generatriz con filas y , cumple . ¿Qué código cuántico da con ? Escribe su estado.
Ver la solución
Como , se cumple , pero . No guarda ningún cútrit: es un , un único estado fijado por los cuatro generadores , , y . Hay una sola clase lateral, la del 0:
Por ejemplo, . Para guardar información hace falta que sea estrictamente menor que , como en el Hamming .
Ejercicio 3
En el del ejemplo: (a) halla el síndrome de y comprueba que se lee bien; (b) ocurre . ¿Qué hace el decodificador de peso mínimo?
Ver la solución
(a) La parte del error es nula, así que los generadores de tipo dan . Con y la columna 9, , los de tipo dan . Entonces , es decir, : valor en la columna 9. Se corrige con .
(b) Los generadores de tipo dan la suma de las columnas 2 y 5: , que es la columna 8. El decodificador cree que hubo un y aplica . En total queda , de vector . Está en (columna 2 + columna 5 + 2·columna 8 ) y no en , porque pesa 3 y no 9. Es un operador lógico: el dato queda estropeado sin que salte ninguna alarma. Dos errores superan lo que corrige un código de distancia 3, igual que en el Hamming clásico.
En resumen
- Con y , los estabilizadores (filas de ) y (filas de ) conmutan porque .
- Los estados lógicos son , uno por clase lateral de , y hay con .
- Un error da el síndrome clásico y menos el síndrome ; ambos señalan posición y valor.
- El código de 3 cútrits es CSS con , y el Hamming ternario da un que corrige un error.
- Para se usa y la condición sigue siendo .
Siguiente lección: Reed-Solomon cuánticos
Para profundizar
- A. Ashikhmin y E. Knill, Nonbinary quantum stabilizer codes (2001).
- A. Ketkar, A. Klappenecker, S. Kumar y P. K. Sarvepalli, Nonbinary stabilizer codes over finite fields (2006).