Saltar al contenido
El bit perdido
Newsletter

Lección 7 de 13

Códigos estabilizadores y síndrome: vigilar sin mirar

Un código cuántico como el subespacio que fijan unos Pauli que conmutan, y el síndrome como producto simpléctico: el análogo exacto del síndrome Hr^T clásico.

Al terminar sabrás:

  • Definir un código estabilizador y explicar por qué sus generadores deben conmutar
  • Calcular la dimensión 2^(n-r) del código y su matriz de estabilizadores (A|B)
  • Obtener el síndrome de un error como producto simpléctico con cada generador
  • Releer la repetición y el código de Shor en este formalismo

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 convertiste cada error de Pauli en un vector y aprendiste a decidir con un producto simpléctico si dos de ellos conmutan. Hasta ahora hemos fabricado dos códigos a mano, la repetición de 3 cúbits y el de Shor, y en cada uno medíamos unas paridades que nos habíamos sacado de la manga. El relato avanza: el código de Shor respondía a los tres obstáculos, y ahora ponemos orden con un idioma general que nos permitirá fabricar códigos en serie (lección 9). La pregunta de hoy: ¿qué listas de observables definen un código, y cómo se lee el error en el resultado de medirlos?

La idea

Toma unos cuantos Pauli que conmuten dos a dos, como Z1Z2Z_1Z_2 y Z2Z3Z_2Z_3. Los estados que todos ellos dejan exactamente igual (valor propio +1+1) forman un subespacio. Ese subespacio es el código. Si un error saca al estado del código, alguno de los Pauli dejará de verlo con valor propio +1+1, y al medirlos nos dirán qué pasó. No hace falta mirar el dato: solo vigilamos las paridades.

Definición

Un grupo estabilizador es un conjunto SS de operadores de Pauli de nn cúbits (con fases ±1,±i\pm1,\pm i) que cumple dos cosas:

  1. es un grupo abeliano: cualquier par de elementos conmuta, y el producto de dos elementos de SS está en SS;
  2. no contiene −I-I.

A cada elemento de SS se le llama un estabilizador del código: deja fijo todo estado del código.

El código estabilizador asociado es

Q(S)={∣ψ⟩:g∣ψ⟩=∣ψ⟩ para todo g∈S}.\mathcal{Q}(S)=\{\ket{\psi} : g\ket{\psi}=\ket{\psi}\ \text{para todo } g\in S\}.

Por qué tienen que conmutar. Si gg y hh anticonmutan y ambos fijan ∣ψ⟩\ket\psi, entonces

∣ψ⟩=gh∣ψ⟩=−hg∣ψ⟩=−∣ψ⟩,\ket\psi = gh\ket\psi = -hg\ket\psi = -\ket\psi,

y el único vector que cumple ∣ψ⟩=−∣ψ⟩\ket\psi=-\ket\psi es el 00. Con generadores que anticonmutan no queda ningún estado: no hay código. Por ejemplo, XXXXXX y ZZZZZZ tocan los tres cúbits a la vez y anticonmutan (ejercicio 3).

Por qué se excluye −I-I. Si −I∈S-I\in S, un estado fijado cumpliría −∣ψ⟩=∣ψ⟩-\ket\psi=\ket\psi, otra vez cero. Además, todo Pauli cumple g2=Ig^2=I o g2=−Ig^2=-I, y como g2∈Sg^2\in S, queda g2=Ig^2=I para todo g∈Sg\in S (por ejemplo, iXiX no puede estar en SS, porque (iX)2=−I(iX)^2=-I). Así que todo elemento de SS es hermítico, con valores propios +1+1 y −1-1.

Generadores y dimensión

Un grupo se describe con pocos generadores g1,…,grg_1,\dots,g_r: todo elemento de SS es un producto de algunos de ellos. Los pedimos independientes: ninguno es producto de los demás. En vectores (a∣b)∈F22n(a\mid b)\in\mathbb{F}_2^{2n} eso significa que las rr filas tienen rango rr sobre F2\mathbb{F}_2. Entonces SS tiene ∣S∣=2r|S|=2^r elementos (cada generador entra o no entra en el producto).

¿Cuánto espacio queda? Cada gjg_j reparte C2n\mathbb{C}^{2^n} en dos mitades iguales, la del valor propio +1+1 y la del −1-1, y quedarse con la primera se hace con el proyector (I+gj)/2(I+g_j)/2. Como conmutan y son independientes, cada generador nuevo parte por la mitad lo que quedaba:

dim⁡Q(S)=2n−r.\dim\mathcal{Q}(S)=2^{n-r}.

Un espacio de dimensión 2k2^k guarda kk cúbits, así que k=n−rk=n-r. Se escribe [[n,k]][[n,k]] (con la distancia, [[n,k,d]][[n,k,d]], en la lección 8).

Una comprobación exacta: el proyector sobre el código es ∏j=1rI+gj2\prod_{j=1}^{r}\frac{I+g_j}{2}. Al desarrollar el producto salen los 2r2^r elementos de SS, cada uno con coeficiente 1/2r1/2^r: es 12r∑g∈Sg\frac1{2^r}\sum_{g\in S}g. Todo Pauli que no sea múltiplo de la identidad tiene traza 00, y el único múltiplo de II en SS es la propia II, así que la traza del proyector vale 2n/2r2^n/2^r. La traza de un proyector es la dimensión de su subespacio: sale 2n−r2^{n-r}.

El código como subespacio de F22n\mathbb{F}_2^{2n}

Los vectores de los elementos de SS forman un subespacio C⊆F22nC\subseteq\mathbb{F}_2^{2n} de dimensión r=n−kr=n-k. La condición de que todos conmuten es, por la lección anterior, que el producto simpléctico de cualquier par sea cero, es decir,

C⊆C⊥s.C\subseteq C^{\perp_s}.

Es un código autoortogonal. Los generadores van en las filas de la matriz de estabilizadores (A∣B)(A\mid B), de tamaño r×2nr\times 2n: AA guarda las posiciones con XX y BB las posiciones con ZZ (un YY cuenta en las dos). Conmutar equivale a BAT+ABT=0BA^T+AB^T=0 módulo 2.

El síndrome

Un error de Pauli E↔eE\leftrightarrow e estropea el estado ∣ψ⟩∈Q(S)\ket\psi\in\mathcal{Q}(S). Para cada generador gjg_j definimos

sj=⟨gj,e⟩s∈{0,1},s_j=\langle g_j,e\rangle_s \in\{0,1\},

que vale 00 si gjg_j y EE conmutan y 11 si anticonmutan. El vector s=(s1,…,sr)s=(s_1,\dots,s_r) es el síndrome de EE.

Qué valor propio sale. Como gj∣ψ⟩=∣ψ⟩g_j\ket\psi=\ket\psi,

gjE∣ψ⟩=(−1)sjEgj∣ψ⟩=(−1)sjE∣ψ⟩.g_jE\ket\psi=(-1)^{s_j}Eg_j\ket\psi=(-1)^{s_j}E\ket\psi.

El estado E∣ψ⟩E\ket\psi es un vector propio de gjg_j de valor propio (−1)sj(-1)^{s_j}. Al medir gjg_j (la medida proyectiva de la lección 2, con proyectores (I±gj)/2(I\pm g_j)/2) sale ese valor con certeza: +1+1 si conmutan, −1-1 si anticonmutan.

Es el HeTHe^T de siempre. En el curso de códigos, el síndrome de lo recibido y=c+ey=c+e (allí lo llamábamos rr) es s=HyT=HeTs=Hy^T=He^T: solo depende del error, porque HcT=0Hc^T=0. Aquí pasa lo mismo. Si escribimos e=(a′∣b′)e=(a'\mid b') y gj=(a∣b)g_j=(a\mid b), el producto simpléctico es b⋅a′+a⋅b′b\cdot a'+a\cdot b', así que

sT=(B∣A) eT.s^T=(B\mid A)\,e^T.

La matriz H=(B∣A)H=(B\mid A) (la de estabilizadores con las dos mitades intercambiadas) hace de matriz de paridad. Y todo lo demás se traduce: s=0s=0 significa que el error conmuta con todo SS, y la lista de síndromes de peso 1 se lee en las columnas de HH. Lo nuevo es que no hay una palabra enviada cc que restar: el dato cuántico ∣ψ⟩\ket\psi nunca se ve.

Por qué no destruye el dato. El resultado de la medida depende solo de ee, no de ∣ψ⟩\ket\psi. Como E∣ψ⟩E\ket\psi ya es un vector propio, la medida no lo cambia, y no revela nada sobre las amplitudes α,β\alpha,\beta. Es la respuesta al obstáculo (c): medimos paridades, nunca datos. Si el error es una suma de Pauli (obstáculo (b)), la medida se queda solo con los sumandos que tienen el síndrome obtenido, como vimos con cos⁡θ I−isin⁡θ X1\cos\theta\,I-i\sin\theta\,X_1 en la lección 3.

Decodificar

El procedimiento copia el de la lección clásica:

  1. mide los rr generadores y obtén el síndrome ss;
  2. entre los errores con ese síndrome, elige uno de menor peso (el líder de la clase); si hay varios, se fija de antemano cuál (en la repetición, para el síndrome (1,1)(1,1) fijamos X2X_2 y no Y2Y_2, porque es un código contra cambios de bit), y en la lección 8 veremos cuándo esa elección importa;
  3. aplícalo, porque un Pauli es su propio inverso salvo fase.

Hay 2r2^r síndromes posibles. Un error con síndrome 00 no se ve: o no hubo error o fue uno que conmuta con todo el grupo estabilizador. Cuándo eso es inofensivo y cuándo estropea el dato lo decide la distancia del código, y lo veremos en la lección 8.

Ejemplo resuelto

A. La repetición de 3 cúbits. Generadores g1=Z1Z2g_1=Z_1Z_2 y g2=Z2Z3g_2=Z_2Z_3, con vectores (000∣110)(000\mid110) y (000∣011)(000\mid011).

  • Conmutan: ambos son de tipo ZZ, y dos operadores que solo tienen ZZ o identidad siempre conmutan. En vectores, A=0A=0 y BAT+ABT=0BA^T+AB^T=0.
  • Independientes: ninguno es el otro, rango 2.
  • Dimensión: n=3n=3, r=2r=2, así que 23−2=22^{3-2}=2 y k=1k=1. Es el espacio generado por ∣000⟩\ket{000} y ∣111⟩\ket{111}.
  • Matriz: A=0A=0 y B=(110011)B=\begin{pmatrix}1&1&0\\0&1&1\end{pmatrix}, luego H=(B∣A)H=(B\mid A).

Síndrome de XiX_i = columna ii de BB, y ZiZ_i da 00 porque A=0A=0. Un YiY_i suma los dos:

errorX1X_1, Y1Y_1X2X_2, Y2Y_2X3X_3, Y3Y_3Z1,Z2,Z3Z_1,Z_2,Z_3
síndrome (s1,s2)(s_1,s_2)(1,0)(1,0)(1,1)(1,1)(0,1)(0,1)(0,0)(0,0)

Comprobación con un estado concreto, ∣ψ⟩=α∣000⟩+β∣111⟩\ket\psi=\alpha\ket{000}+\beta\ket{111} y el error X2X_2: queda α∣010⟩+β∣101⟩\alpha\ket{010}+\beta\ket{101}. En ∣010⟩\ket{010}, Z1Z2Z_1Z_2 y Z2Z3Z_2Z_3 valen −1-1, y en ∣101⟩\ket{101} también. Salen los dos valores −1-1 con certeza, sea cual sea α,β\alpha,\beta: síndrome (1,1)(1,1), el de la tabla. El decodificador aplica X2X_2 y recupera ∣ψ⟩\ket\psi.

Los ZiZ_i pasan sin que nadie los vea: la repetición no los corrige, y la lección 8 dirá por qué.

B. El código de Shor, releído. Son 8 generadores en n=9n=9: Z1Z2Z_1Z_2, Z2Z3Z_2Z_3, Z4Z5Z_4Z_5, Z5Z6Z_5Z_6, Z7Z8Z_7Z_8, Z8Z9Z_8Z_9, X1⋯X6X_1\cdots X_6 y X4⋯X9X_4\cdots X_9. Conmutan por parejas: dos de tipo ZZ siempre; dos de tipo XX también; y un ZZZZ con un X⋯XX\cdots X solapan en 0 o en 2 posiciones. Por ejemplo, Z1Z2Z_1Z_2 con X1⋯X6X_1\cdots X_6 solapan en las posiciones 1 y 2, dos anticonmutaciones que se cancelan; y Z2Z3Z_2Z_3 con X4⋯X9X_4\cdots X_9 no solapan en ninguna. Rango 8 sobre F2\mathbb{F}_2, y la dimensión es 29−8=22^{9-8}=2: un cúbit lógico.

La matriz (A∣B)(A\mid B) tiene dos bloques: las seis primeras filas son (0∣unos de Z)(0\mid\text{unos de }Z) y las dos últimas (unos de X∣0)(\text{unos de }X\mid0). El síndrome de XiX_i es la columna ii de BB, y el de ZiZ_i, la columna ii de AA. Con eso, la tabla de la lección 5 es una tabla de productos simplécticos:

  • X5X_5 anticonmuta solo con los generadores que tienen una ZZ en la posición 5, que son Z4Z5Z_4Z_5 y Z5Z6Z_5Z_6: síndrome 0011000000110000.
  • Z2Z_2 anticonmuta solo con X1⋯X6X_1\cdots X_6: síndrome 0000001000000010 (y el mismo para Z1Z_1 y Z3Z_3: errores distintos, mismo efecto, la degeneración).
  • Y5Y_5 es X5X_5 más Z5Z_5 en los vectores, y el síndrome se suma: 00110000+00000011=0011001100110000+00000011=00110011.

C. Un caso límite: Bell con k=0k=0. Con g1=X1X2g_1=X_1X_2 y g2=Z1Z2g_2=Z_1Z_2: conmutan (dos solapamientos), son independientes, n=2n=2, r=2r=2, así que la dimensión es 20=12^0=1 y k=0k=0. Hay un único estado, (∣00⟩+∣11⟩)/2(\ket{00}+\ket{11})/\sqrt2, y no guarda ningún cúbit. Pero el síndrome sigue funcionando: X1X_1 da (0,1)(0,1), Z1Z_1 da (1,0)(1,0) e Y1Y_1 da (1,1)(1,1), y los cuatro posibles resultados corresponden a los cuatro estados de Bell: (∣00⟩±∣11⟩)/2(\ket{00}\pm\ket{11})/\sqrt2 y (∣01⟩±∣10⟩)/2(\ket{01}\pm\ket{10})/\sqrt2. Este es el caso extremo: tantos generadores como cúbits y todo el espacio queda determinado.

Ejercicios

Ejercicio 1

En la repetición de 3 cúbits, calcula el síndrome de Y2Y_2 y di qué corrección aplica el decodificador y qué queda.

Ver la solución

Y2Y_2 anticonmuta con Z1Z2Z_1Z_2 y con Z2Z3Z_2Z_3 (en el cúbit 2, YY y ZZ anticonmutan): síndrome (1,1)(1,1), el mismo que X2X_2. Con ese síndrome hay dos errores de peso 1, X2X_2 e Y2Y_2, y el decodificador tiene que elegir uno de antemano. Si elige X2X_2 (lo natural: es el código de bit), como Y=iXZY=iXZ, queda X2Y2∣ψ⟩=iZ2∣ψ⟩X_2Y_2\ket\psi=iZ_2\ket\psi: se ha corregido la parte XX, pero la parte ZZ sigue ahí. Si hubiera elegido Y2Y_2, este error se corregiría, pero entonces un X2X_2 quedaría convertido en Z2Z_2 (salvo fase). Se diferencian en Z2Z_2, que cambia el dato: con distancia 1 ninguna elección corrige los dos. La repetición no protege contra los cambios de fase.

Ejercicio 2

En la repetición se produce el error doble X1X3X_1X_3. Calcula su síndrome, el error que elige el decodificador y el estado final con ∣ψ⟩=α∣000⟩+β∣111⟩\ket\psi=\alpha\ket{000}+\beta\ket{111}.

Ver la solución

Los síndromes se suman: (1,0)+(0,1)=(1,1)(1,0)+(0,1)=(1,1), el de X2X_2. El decodificador de peso mínimo aplica X2X_2, y la corrección total es X2X1X3=X1X2X3X_2X_1X_3=X_1X_2X_3. Queda β∣000⟩+α∣111⟩\beta\ket{000}+\alpha\ket{111}: un estado del código, sin ningún síndrome que avise, pero con α\alpha y β\beta intercambiados. Dos errores superan lo que corrige la repetición, igual que dos errores superaban al Hamming en el curso clásico.

Ejercicio 3

(a) Comprueba que ⟨XXX,ZZZ⟩\langle XXX,ZZZ\rangle no define un código para cúbits. (b) ¿Y ⟨XXXX,ZZZZ⟩\langle XXXX,ZZZZ\rangle con cuatro cúbits? Calcula rr, kk y el síndrome de X1X_1, Z1Z_1 e Y1Y_1.

Ver la solución

(a) Los vectores son (111∣000)(111\mid000) y (000∣111)(000\mid111), con producto simpléctico 1+1+1=3≡1(mod2)1+1+1=3\equiv1\pmod2: anticonmutan. Ningún estado queda fijado por los dos, y no hay código. Es el caso en el que la conmutación es crucial. En la lección 11 veremos que con sistemas de 3 niveles el mismo par sí conmuta, porque 3≡03\equiv0 módulo 3.

(b) Ahora el solapamiento es 4≡04\equiv0: conmutan. Son independientes, r=2r=2, y k=4−2=2k=4-2=2: la dimensión es 22=42^2=4, dos cúbits lógicos. Síndromes (orden XXXXXXXX, ZZZZZZZZ): X1→(0,1)X_1\to(0,1), Z1→(1,0)Z_1\to(1,0), Y1→(1,1)Y_1\to(1,1). El síndrome no depende de la posición: X1X_1 y X2X_2 dan lo mismo. Así que detecta un error en un cúbit, pero no sabe dónde fue.

En resumen

  • Un código estabilizador es el subespacio que fija un grupo de Pauli que conmutan y que no contiene −I-I. Si anticonmutaran, no habría ningún estado fijado.
  • Con rr generadores independientes, ∣S∣=2r|S|=2^r, la dimensión es 2n−r2^{n-r} y k=n−rk=n-r. Sus vectores forman un código autoortogonal C⊆C⊥sC\subseteq C^{\perp_s}.
  • El síndrome de un error es sj=⟨gj,e⟩ss_j=\langle g_j,e\rangle_s, y medir gjg_j da (−1)sj(-1)^{s_j} con certeza. Es sT=(B∣A) eTs^T=(B\mid A)\,e^T: el HeTHe^T clásico.
  • Medir el síndrome no depende de los datos, así que no los destruye.
  • Se decodifica con el error de menor peso de cada síndrome; los errores con síndrome 00 no se ven, y la distancia decidirá cuáles importan.

Siguiente lección: Operadores lógicos, distancia y estados lógicos

Para profundizar