Saltar al contenido
El bit perdido
Newsletter

Lección 11 de 13

Qudits: del cúbit a p niveles y el código de 3 cútrits

Los operadores X y Z de un qudit, el producto simpléctico con signo y el código de 3 cútrits [[3,1,2]]_3: detecta un error, corrige un borrón y reparte un secreto.

Al terminar sabrás:

  • Definir X y Z para p niveles y usar ZX = ωXZ y el producto simpléctico con signo
  • Calcular síndromes de un código estabilizador de qudits
  • Describir el código de 3 cútrits: estados lógicos, operadores lógicos y distancia 2
  • Explicar por qué detecta un error y corrige un borrón, pero no corrige un error

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 cerramos el trayecto de los cúbits: Shor, el formalismo de estabilizadores y los códigos CSS hechos con Hamming. El relato sigue en pie (se dudaba de que fuera posible, y Shor lo cambió todo), pero ahora lo generalizamos. ¿Y si el sistema físico no tiene dos niveles sino tres, cinco o siete? Un sistema de pp niveles se llama qudit (con p=3p=3, un cútrit). Este es el puente hacia los códigos sobre cuerpos finitos del curso de códigos, y trae una sorpresa: un código diminuto de 3 cútrits que corrige un tipo de daño y no otro.

Aquí el número de niveles es un primo pp, así que las cuentas son en el cuerpo Fp\mathbb{F}_p de la lección cuerpos finitos. Con pp primo se hace casi todo el curso. Al final de la lección 12 veremos qué cambia con q=pmq=p^m niveles, que la lección 13 usa con F8\mathbb{F}_8. Para otros números de niveles hay teoría, pero no la vemos.

La idea

Casi todo lo de los cúbits se copia cambiando 22 por pp. Lo único que se rompe es una cosa pequeña y esencial: con cúbits XX y ZZ anticonmutan (ZX=−XZZX=-XZ), y con pp niveles conmutan salvo una fase ω=e2πi/p\omega=e^{2\pi i/p}. Esa fase es la que hace que el signo del producto simpléctico importe. Y de ella sale el primer ejemplo de código que no existe para cúbits y sí para cútrits.

Repaso Enteros módulo p y raíces de la unidad

Con p=3p=3, los índices jj se toman módulo 3 (2+2=4≡12+2=4\equiv1, −1≡2-1\equiv2). El número ω=e2πi/3=−1+i32\omega=e^{2\pi i/3}=\frac{-1+i\sqrt3}{2} cumple ω3=1\omega^3=1 y 1+ω+ω2=01+\omega+\omega^2=0. Para p=2p=2 es ω=−1\omega=-1.

Pauli para un qudit

Los estados de un qudit son vectores unitarios de Cp\mathbb{C}^p, con base ∣0⟩,…,∣p−1⟩\ket{0},\dots,\ket{p-1}. Los dos errores básicos son

X∣j⟩=∣j+1⟩,Z∣j⟩=ωj∣j⟩.X\ket{j}=\ket{j+1},\qquad Z\ket{j}=\omega^{j}\ket{j}.

XX desplaza el nivel (cíclicamente) y ZZ gira la fase según el nivel. Cumplen Xp=Zp=IX^p=Z^p=I y la relación clave

ZX=ω XZ.ZX=\omega\,XZ.

Razón de una línea: ZX∣j⟩=ωj+1∣j+1⟩ZX\ket{j}=\omega^{j+1}\ket{j+1} y XZ∣j⟩=ωj∣j+1⟩XZ\ket{j}=\omega^j\ket{j+1}. Para el cútrit:

X=(001100010),Z=(1000ω000ω2).X=\begin{pmatrix}0&0&1\\1&0&0\\0&1&0\end{pmatrix},\qquad Z=\begin{pmatrix}1&0&0\\0&\omega&0\\0&0&\omega^2\end{pmatrix}.

Para p≥3p\ge3, XX y ZZ no son hermíticas (por ejemplo X†=X2X^\dagger=X^2), pero sí unitarias, y es lo que hace falta.

Los errores se discretizan también aquí. Los p2p^2 operadores XaZbX^aZ^b, con a,b∈{0,…,p−1}a,b\in\{0,\dots,p-1\}, son ortogonales para tr⁡(A†B)\operatorname{tr}(A^\dagger B), así que son p2p^2 matrices independientes: una base de las matrices p×pp\times p. Todo error de un qudit es una combinación ∑cabXaZb\sum c_{ab}X^aZ^b, y por linealidad basta saber corregir los XaZbX^aZ^b. Es el análogo exacto de {I,X,Y,Z}\{I,X,Y,Z\}. Un ejemplo: la matriz JJ de unos del cútrit es J=I+X+X2J=I+X+X^2.

nn qudits y el producto simpléctico con signo

Para a,b∈Fpna,b\in\mathbb{F}_p^n se define X(a)Z(b)=Xa1Zb1⊗⋯⊗XanZbnX(a)Z(b)=X^{a_1}Z^{b_1}\otimes\cdots\otimes X^{a_n}Z^{b_n}. El grupo de Pauli son estos operadores multiplicados por una fase ωc\omega^c. Olvidando la fase, cada uno es un vector (a∣b)∈Fp2n(a\mid b)\in\mathbb{F}_p^{2n}, y multiplicar es sumar vectores. El peso es el número de posiciones con (ai,bi)≠(0,0)(a_i,b_i)\neq(0,0).

El producto simpléctico, ahora con su signo, es

⟨(a∣b),(a′∣b′)⟩s=b⋅a′−a⋅b′(modp).\langle(a\mid b),(a'\mid b')\rangle_s=b\cdot a'-a\cdot b'\pmod p.

Si E↔uE\leftrightarrow u y E′↔u′E'\leftrightarrow u', pasar ZZ por encima de XX cuesta ω\omega cada vez, y sale

EE′=ω⟨u,u′⟩s E′E.EE'=\omega^{\langle u,u'\rangle_s}\,E'E.

Conmutan si y solo si el producto simpléctico vale 0. Para cúbits el signo no se veía (porque −1≡1-1\equiv1 módulo 2). Es antisimétrico: ⟨u,v⟩s=−⟨v,u⟩s\langle u,v\rangle_s=-\langle v,u\rangle_s, y ⟨u,u⟩s=0\langle u,u\rangle_s=0.

Estabilizadores y síndrome para qudits

Todo es igual que en la lección sobre estabilizadores. Un grupo estabilizador SS es un subgrupo abeliano del grupo de Pauli que no contiene ωcI\omega^cI con ωc≠1\omega^c\ne1; sus elementos son los estabilizadores del código. El código Q(S)\mathcal{Q}(S) son los estados que fija todo SS. Con rr generadores independientes, dim⁡Q(S)=pn−r\dim\mathcal{Q}(S)=p^{n-r}: codifica k=n−rk=n-r qudits. Los parámetros se escriben [[n,k,d]]p[[n,k,d]]_p.

El síndrome de un error E↔eE\leftrightarrow e es sj=⟨gj,e⟩ss_j=\langle g_j,e\rangle_s. Al medir el generador gjg_j sobre E∣ψ⟩E\ket\psi no sale ±1\pm1 sino el valor propio ωsj\omega^{s_j} (una de las pp raíces de la unidad). ¿Qué es medir un operador que no es hermítico? Como gjg_j es unitario y gjp=Ig_j^p=I, sus valores propios son ωs\omega^s con s=0,…,p−1s=0,\dots,p-1, y el espacio se parte en pp autoespacios ortogonales, uno por valor. Medir gjg_j es la medida de la lección 2 con estos pp proyectores en lugar de dos: el resultado es una de las ωs\omega^s y el estado queda en ese autoespacio. La razón de que salga ωsj\omega^{s_j}, igual que antes: gjE∣ψ⟩=ωsjEgj∣ψ⟩=ωsjE∣ψ⟩g_jE\ket\psi=\omega^{s_j}Eg_j\ket\psi=\omega^{s_j}E\ket\psi. Y se corrige igual: se elige el error de menor peso con ese síndrome y se aplica su inverso.

El código de 3 cútrits

Tomamos n=3n=3 cútrits y dos generadores:

XXX=X⊗X⊗X ↔ (111∣000),ZZZ=Z⊗Z⊗Z ↔ (000∣111).XXX=X\otimes X\otimes X\ \leftrightarrow\ (111\mid000),\qquad ZZZ=Z\otimes Z\otimes Z\ \leftrightarrow\ (000\mid111).

¿Conmutan? ⟨(111∣000),(000∣111)⟩s=0−(1+1+1)=−3≡0(mod3)\langle(111\mid000),(000\mid111)\rangle_s=0-(1+1+1)=-3\equiv0\pmod3. Sí. Con cúbits, el mismo par da −3≡1(mod2)-3\equiv1\pmod2: XXXXXX y ZZZZZZ anticonmutan y no hay código. Con tres niveles, el 33 se hace 00 y todo encaja. Es el ejemplo estrella de por qué importa que los generadores conmuten.

Con n=3n=3 y r=2r=2 sale k=1k=1: un cútrit lógico. Los estados lógicos son

∣0L⟩=∣000⟩+∣111⟩+∣222⟩3,∣1L⟩=∣012⟩+∣120⟩+∣201⟩3,∣2L⟩=∣021⟩+∣102⟩+∣210⟩3.\ket{0_L}=\frac{\ket{000}+\ket{111}+\ket{222}}{\sqrt3},\quad \ket{1_L}=\frac{\ket{012}+\ket{120}+\ket{201}}{\sqrt3},\quad \ket{2_L}=\frac{\ket{021}+\ket{102}+\ket{210}}{\sqrt3}.

En general ∣jL⟩\ket{j_L} es la suma de los ∣x, x+j, x+2j⟩\ket{x,\,x+j,\,x+2j} con x∈F3x\in\mathbb{F}_3. Son ortonormales y XXXXXX y ZZZZZZ los dejan fijos (el primero baraja los tres sumandos, el segundo multiplica cada uno por ω3x+3j=1\omega^{3x+3j}=1).

Operadores lógicos. Son los Pauli que conmutan con XXXXXX y ZZZZZZ y no están en el grupo estabilizador (ni siquiera cambiando su fase). Por ejemplo,

Xˉ=X1X22 ↔ (1,2,0∣0,0,0),Zˉ=Z12Z2 ↔ (0,0,0∣2,1,0),\bar X=X_1X_2^{2}\ \leftrightarrow\ (1,2,0\mid0,0,0),\qquad \bar Z=Z_1^{2}Z_2\ \leftrightarrow\ (0,0,0\mid2,1,0),

con Xˉ∣jL⟩=∣j+1L⟩\bar X\ket{j_L}=\ket{j+1_L} y Zˉ∣jL⟩=ωj∣jL⟩\bar Z\ket{j_L}=\omega^j\ket{j_L}. Los dos pesan 2. Y no hay ningún operador lógico de peso 1: en la tabla de la sección siguiente, ninguno de los 8 errores no triviales de un cútrit tiene síndrome (0,0)(0,0), así que ninguno conmuta con los dos generadores. La distancia es d=2d=2. El código es un [[3,1,2]]3[[3,1,2]]_3.

Detecta un error, corrige un borrón, no corrige un error

Con d=2d=2, lo que dice la fórmula de la lección sobre distancia es: detecta d−1=1d-1=1 error y corrige ⌊(d−1)/2⌋=0\lfloor(d-1)/2\rfloor=0 errores. Veámoslo con las tablas.

Detecta. Cualquiera de los 8 errores no triviales XaZbX^aZ^b de un cútrit, en cualquiera de las 3 posiciones, tiene síndrome distinto de (0,0)(0,0) (en el orden XXXXXX, ZZZZZZ):

errorXXX2X^2ZZZ2Z^2XZXZ
síndrome(0,1)(0,1)(0,2)(0,2)(2,0)(2,0)(1,0)(1,0)(2,1)(2,1)

(los otros tres, X2ZX^2Z, XZ2XZ^2 y X2Z2X^2Z^2, se obtienen sumando). Esa fila es la misma en las tres posiciones.

No corrige. Mira lo que implica que el síndrome no dependa de la posición. Un error X1X_1 y un error X2X_2 dan el mismo síndrome (0,1)(0,1), y no se puede saber cuál ocurrió. Si el decodificador adivina X2X_2 cuando fue X1X_1, aplica X2−1X1X_2^{-1}X_1, que es un operador lógico (de hecho Xˉ\bar X): el estado queda bien codificado pero cambiado, ∣jL⟩↦∣j+1L⟩\ket{j_L}\mapsto\ket{j+1_L}. Es la situación que ya conoces: dos errores de peso 1 con el mismo síndrome cuyo cociente está en C⊥s∖CC^{\perp_s}\setminus C, es decir, es un operador lógico.

Corrige un borrón. Un borrón (o borrado) es la pérdida de un cútrit cuya posición se conoce. Así lo vimos en errores y borrones: un código de distancia dd corrige d−1d-1 borrones y solo ⌊(d−1)/2⌋\lfloor(d-1)/2\rfloor errores, con 2e+b≤d−12e+b\le d-1. Aquí d−1=1d-1=1: se corrige un borrón y ningún error. Por qué es posible: supón que se pierde el cútrit 1. El estado codificado es ∑jcj∣jL⟩=13∑jcj∑x∣x⟩⊗∣x+j, x+2j⟩\sum_j c_j\ket{j_L}=\frac{1}{\sqrt3}\sum_j c_j\sum_x\ket{x}\otimes\ket{x+j,\,x+2j}. En los cútrits 2 y 3 restantes, con y=x+jy=x+j y z=x+2jz=x+2j, se calculan 2y−z=x2y-z=x y z−y=jz-y=j. Ese reetiquetado ∣y,z⟩↦∣2y−z, z−y⟩\ket{y,z}\mapsto\ket{2y-z,\,z-y} es un unitario sobre los cútrits 2 y 3 (permuta los 9 estados de la base). Deja el estado (13∑x∣x⟩⊗∣x⟩)⊗∑jcj∣j⟩\big(\frac{1}{\sqrt3}\sum_x\ket{x}\otimes\ket{x}\big)\otimes\sum_j c_j\ket{j}: el cútrit 3 lleva el estado lógico ∑jcj∣j⟩\sum_j c_j\ket{j} intacto, y el cútrit 2 solo guarda el valor xx, entrelazado con el cútrit perdido y sin nada del secreto. La información estaba entera en los dos que quedan. La razón de fondo es la distancia: como no hay operadores lógicos de peso 1, ninguno cabe en la posición perdida, y por eso perder una posición conocida no borra información (con distancia dd, lo mismo vale para d−1d-1 posiciones).

Reparto de un secreto cuántico

Lo mismo, visto al revés, es un esquema de reparto de secreto con umbral (2,3)(2,3): el estado lógico α∣0L⟩+β∣1L⟩+γ∣2L⟩\alpha\ket{0_L}+\beta\ket{1_L}+\gamma\ket{2_L} se reparte entre tres personas, un cútrit cada una. Dos cualesquiera lo recuperan (es el borrón que acabamos de reparar, con tres posibles). Una sola no obtiene ninguna información. Lo que se puede saber mirando solo un cútrit lo resume su estado reducido: una matriz 3×33\times3 que da las probabilidades de cualquier medida hecha solo sobre ese cútrit. Aquí vale I/3I/3 para cualquier α,β,γ\alpha,\beta,\gamma: mida en la base que mida, cada resultado sale con probabilidad 1/31/3, como un cútrit totalmente aleatorio. Que no dependa del secreto es consecuencia de que no hay lógicos de peso 1: ningún operador sobre un solo cútrit distingue unos estados lógicos de otros. (Que sea justo I/3I/3 se debe además a que ningún estabilizador actúa en un solo cútrit.)

Esto es el tema de R. Cleve, D. Gottesman y H.-K. Lo, «How to share a quantum secret», Phys. Rev. Lett. 83, 648 (1999): esquemas con umbral (t,n)(t,n) en que tt partes cualesquiera de las nn reconstruyen el secreto y t−1t-1 no saben nada. Su primer ejemplo es precisamente este código de 3 cútrits como esquema (2,3)(2,3). Muestran que la única limitación viene de la no clonación, que exige n<2tn<2t (3<43<4 para (2,3)(2,3)).

Ejemplo resuelto

Se produce el error XZXZ en el cútrit 2 del estado ∣0L⟩\ket{0_L}. Calcula el síndrome, di qué sale al medir y explica por qué no se puede corregir.

Vector. E=XZE=XZ en la posición 2 es e=(0,1,0∣0,1,0)e=(0,1,0\mid0,1,0).

Síndrome. Con g1=(111∣000)g_1=(111\mid000): ⟨g1,e⟩s=b⋅a′−a⋅b′=0−(1⋅0+1⋅1+1⋅0)=−1≡2\langle g_1,e\rangle_s=b\cdot a'-a\cdot b'=0-(1\cdot0+1\cdot1+1\cdot0)=-1\equiv2. Con g2=(000∣111)g_2=(000\mid111): ⟨g2,e⟩s=1⋅0+1⋅1+1⋅0−0=1\langle g_2,e\rangle_s=1\cdot0+1\cdot1+1\cdot0-0=1. Síndrome (2,1)(2,1), que está en la tabla.

Qué se ve. Al medir XXXXXX sale ω2\omega^2 y al medir ZZZZZZ sale ω\omega. Se comprueba directamente: XZ∣x⟩=ωx∣x+1⟩XZ\ket{x}=\omega^x\ket{x+1}, así que E2∣0L⟩=13(∣010⟩+ω∣121⟩+ω2∣202⟩)E_2\ket{0_L}=\frac{1}{\sqrt3}(\ket{010}+\omega\ket{121}+\omega^2\ket{202}). Aplicando ZZZZZZ: cada término pasa a tener ω0+1+0=ω\omega^{0+1+0}=\omega, ω1+2+1=ω\omega^{1+2+1}=\omega y ω2+0+2=ω\omega^{2+0+2}=\omega, y sale ωE2∣0L⟩\omega E_2\ket{0_L}. Bien.

Por qué no se corrige. El mismo síndrome (2,1)(2,1) lo producen XZXZ en el cútrit 1, en el 2 y en el 3. Con el síndrome solo sabemos que «algo pasó en algún cútrit»: lo detectamos, pero no sabemos dónde. Si se hubiera perdido el cútrit 2 (un borrón: sabemos que es el 2), los cútrits 1 y 3 son (x, x+2j)(x,\,x+2j) y el perdido guardaba x+jx+j. El unitario ∣y,z⟩↦∣2z−y, 2z−2y⟩\ket{y,z}\mapsto\ket{2z-y,\,2z-2y} los convierte en (x+j, j)(x+j,\,j), porque 2(x+2j)−x=x+4j≡x+j2(x+2j)-x=x+4j\equiv x+j y 2(x+2j)−2x=4j≡j2(x+2j)-2x=4j\equiv j. El cútrit 1 queda con el mismo valor que el perdido, sin nada del secreto, y el cútrit 3 lleva ∑jcj∣j⟩\sum_j c_j\ket{j} intacto, como en el borrón del cútrit 1. Ojo: no basta con que salga jj en un cútrit. Con ∣y,z⟩↦∣y, 2z+y⟩\ket{y,z}\mapsto\ket{y,\,2z+y} el cútrit 3 también acaba con la etiqueta jj, pero el cútrit 1 se queda con xx, y junto con el perdido (x+jx+j) delata jj: el dato se estropea.

Ejercicios

Ejercicio 1

Calcula ⟨Xˉ,Zˉ⟩s\langle\bar X,\bar Z\rangle_s para Xˉ↔(1,2,0∣0,0,0)\bar X\leftrightarrow(1,2,0\mid0,0,0) y Zˉ↔(0,0,0∣2,1,0)\bar Z\leftrightarrow(0,0,0\mid2,1,0) en F3\mathbb{F}_3, y comprueba que concuerda con ZˉXˉ=ωXˉZˉ\bar Z\bar X=\omega\bar X\bar Z.

Ver la solución

b⋅a′=0b\cdot a'=0 y a⋅b′=1⋅2+2⋅1+0⋅0=4≡1a\cdot b'=1\cdot2+2\cdot1+0\cdot0=4\equiv1, luego ⟨Xˉ,Zˉ⟩s=0−1=−1≡2\langle\bar X,\bar Z\rangle_s=0-1=-1\equiv2. Entonces XˉZˉ=ω2ZˉXˉ\bar X\bar Z=\omega^2\bar Z\bar X, y multiplicando por ω\omega a ambos lados, ωXˉZˉ=ω3ZˉXˉ=ZˉXˉ\omega\bar X\bar Z=\omega^3\bar Z\bar X=\bar Z\bar X. Es ZˉXˉ=ωXˉZˉ\bar Z\bar X=\omega\bar X\bar Z, la misma relación que cumplen XX y ZZ de un cútrit: lo esperado de un cútrit lógico.

Ejercicio 2

Da el síndrome del error X2Z2X^2Z^2 en el cútrit 3 y di qué otros errores de peso 1 tienen el mismo síndrome.

Ver la solución

El síndrome es lineal en el error. X2X^2 da (0,2)(0,2) y Z2Z^2 da (1,0)(1,0), así que X2Z2X^2Z^2 da (1,2)(1,2). Como el síndrome no depende de la posición, también lo tienen X2Z2X^2Z^2 en el cútrit 1 y en el 2. Son 3 errores con el mismo síndrome, y el código no puede distinguirlos.

Ejercicio 3

Un código tiene distancia d=2d=2. ¿Cuántos errores detecta, cuántos corrige, cuántos borrones corrige y cabe la mezcla de 1 error y 1 borrón? Después explica con el reparto de secreto por qué perder dos cútrits del código de 3 cútrits no se puede reparar.

Ver la solución

Detecta d−1=1d-1=1 error, corrige ⌊1/2⌋=0\lfloor1/2\rfloor=0 errores y corrige d−1=1d-1=1 borrón. La mezcla necesita 2⋅1+1=3≤d−1=12\cdot1+1=3\le d-1=1: falso, no cabe. Si se pierden dos cútrits, queda uno solo, y su estado reducido es I/3I/3 para cualquier estado lógico: no conserva ninguna información del secreto, así que ningún unitario ni ninguna otra operación puede reconstruirlo.

En resumen

  • Para un qudit, X∣j⟩=∣j+1⟩X\ket j=\ket{j+1} y Z∣j⟩=ωj∣j⟩Z\ket j=\omega^j\ket j cumplen ZX=ωXZZX=\omega XZ, y los p2p^2 operadores XaZbX^aZ^b son base: los errores se discretizan.
  • Con ⟨(a∣b),(a′∣b′)⟩s=b⋅a′−a⋅b′\langle(a\mid b),(a'\mid b')\rangle_s=b\cdot a'-a\cdot b' se tiene EE′=ω⟨u,u′⟩sE′EEE'=\omega^{\langle u,u'\rangle_s}E'E. El síndrome de gjg_j es el valor propio ωsj\omega^{s_j}.
  • ⟨XXX,ZZZ⟩\langle XXX,ZZZ\rangle es un código [[3,1,2]]3[[3,1,2]]_3 para cútrits (1+1+1≡0(mod3)1+1+1\equiv0\pmod3) y no existe para cúbits.
  • Detecta un error o corrige un borrón, pero no corrige un error: d−1=1d-1=1 borrones frente a ⌊(d−1)/2⌋=0\lfloor(d-1)/2\rfloor=0 errores.
  • Es un reparto de secreto cuántico (2,3)(2,3): dos cútrits recuperan el estado y uno solo es I/3I/3.

Siguiente lección: Códigos CSS sobre cuerpos finitos

Para profundizar