Saltar al contenido
El bit perdido
Newsletter

Lección 6 de 13

Matrices de Pauli y producto simpléctico

El lenguaje de los códigos cuánticos con cúbits: operadores de Pauli como vectores binarios y una cuenta, el producto simpléctico, que dice si dos conmutan.

Al terminar sabrás:

  • Usar las propiedades de X, Y y Z y escribir un Pauli de n cúbits como vector (a|b)
  • Decidir si dos operadores de Pauli conmutan con el producto simpléctico
  • Calcular el ortogonal simpléctico de un subespacio y su dimensión
  • Releer la tabla de síndromes de Shor como una tabla de productos simplécticos

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, el código de Shor corrige cualquier error, vimos la tabla de los 27 errores de peso 1 con sus 21 síndromes. Funciona, pero la leíamos error por error y generador por generador. El relato está en este punto: los tres obstáculos tienen respuesta y ahora queremos el marco general, para que lo de Shor sea un caso entre muchos. Hoy ponemos el lenguaje: cada error es un vector binario y saber si dos operadores conmutan es una cuenta de una línea. La pregunta es qué cuenta es esa, y por qué la tabla de Shor era un montón de ellas. Este lenguaje (lecciones 6 a 8) sirve para algo concreto: en la lección 9 fabricaremos códigos cuánticos a partir de códigos clásicos.

La idea

Un error en nn cúbits es una matriz de 2n×2n2^n\times2^n. Para n=9n=9 son 512×512512\times512: no se puede razonar con ellas a mano. Pero los errores que nos importan son productos de XX, YY y ZZ en distintos cúbits, y de esos operadores solo importa dónde hay qué letra. Eso se guarda en un vector de 00 y 11. Multiplicar operadores será sumar vectores, y que dos operadores conmuten o anticonmuten será el valor de un producto, el producto simpléctico. Es el mismo salto del curso de códigos: pasar de palabras a vectores sobre F2\mathbb{F}_2 para hacer álgebra lineal.

Las tres matrices

Recuerda las matrices de Pauli de un cúbit:

X=(0110),Z=(100−1),Y=iXZ=(0−ii0).X=\begin{pmatrix}0&1\\1&0\end{pmatrix},\qquad Z=\begin{pmatrix}1&0\\0&-1\end{pmatrix},\qquad Y=iXZ=\begin{pmatrix}0&-i\\i&0\end{pmatrix}.

XX es el cambio de bit, ZZ el cambio de fase e YY los dos a la vez, salvo una fase. Sobre α∣0⟩+β∣1⟩\alpha\ket{0}+\beta\ket{1} dan β∣0⟩+α∣1⟩\beta\ket{0}+\alpha\ket{1}, α∣0⟩−β∣1⟩\alpha\ket{0}-\beta\ket{1} y −iβ∣0⟩+iα∣1⟩-i\beta\ket{0}+i\alpha\ket{1}. De la lección 5 ya sabes dos propiedades, y hay dos más; todas se comprueban multiplicando matrices:

  • X2=Y2=Z2=IX^2=Y^2=Z^2=I: aplicar un error dos veces lo deshace.
  • Dos distintas anticonmutan: XZ=−ZXXZ=-ZX, XY=−YXXY=-YX, YZ=−ZYYZ=-ZY.
  • Son hermíticas (P†=PP^\dagger=P, con la adjunta de la lección 2) y unitarias (P†P=IP^\dagger P=I, como en la lección 1).
  • Su producto es la tercera, con una fase: XY=iZXY=iZ, YZ=iXYZ=iX, ZX=iYZX=iY.

Que XX y ZZ no conmuten es el germen de todo lo que sigue. Es la gran diferencia con un bit clásico, donde «cambiar» y «mirar el valor» no se estorban.

Pauli de varios cúbits

Para a=(a1,…,an)a=(a_1,\dots,a_n) y b=(b1,…,bn)b=(b_1,\dots,b_n) en F2n\mathbb{F}_2^n definimos

X(a)Z(b)=Xa1Zb1⊗Xa2Zb2⊗⋯⊗XanZbn.X(a)Z(b)=X^{a_1}Z^{b_1}\otimes X^{a_2}Z^{b_2}\otimes\cdots\otimes X^{a_n}Z^{b_n}.

En cada cúbit hay cuatro posibilidades: II si (ai,bi)=(0,0)(a_i,b_i)=(0,0), XX si (1,0)(1,0), ZZ si (0,1)(0,1) e YY (salvo fase) si (1,1)(1,1). Abreviamos Z1Z2Z_1Z_2 por «ZZ en los cúbits 1 y 2 e identidad en el resto», y así con todos. El grupo de Pauli de nn cúbits es

Pn={ ic X(a)Z(b) : c∈{0,1,2,3}, a,b∈F2n }.\mathcal{P}_n=\{\,i^c\,X(a)Z(b)\ :\ c\in\{0,1,2,3\},\ a,b\in\mathbb{F}_2^n\,\}.

Se admiten las fases ±1,±i\pm1,\pm i para que Y=iXZY=iXZ esté dentro. Es un grupo: el producto de dos elementos vuelve a ser uno (lo vemos en seguida). Salvo la fase hay 4n4^n elementos, porque cada cúbit puede llevar II, XX, YY o ZZ. Para n=3n=3 son 6464.

El peso de un Pauli es el número de cúbits donde no es la identidad, es decir, el número de posiciones con (ai,bi)≠(0,0)(a_i,b_i)\neq(0,0). Es el peso de Hamming de siempre, pero cuenta el par (ai,bi)(a_i,b_i) como un símbolo: Y1Y_1 pesa 1 aunque tenga dos unos en su vector. Para n=3n=3 hay 11, 99, 2727 y 2727 Pauli de pesos 00, 11, 22 y 33 (se eligen las posiciones y en cada una una de las tres letras: (3w)3w\binom{3}{w}3^w), y 1+9+27+27=641+9+27+27=64.

Del operador al vector

Olvidando la fase, cada Pauli es un vector:

X(a)Z(b) ⟼ (a∣b)∈F22n.X(a)Z(b)\ \longmapsto\ (a\mid b)\in\mathbb{F}_2^{2n}.

Hay 22n=4n2^{2n}=4^n vectores, uno por cada Pauli salvo fase. Ejemplos con n=3n=3:

  • Z1Z2↔(000∣110)Z_1Z_2\leftrightarrow(000\mid110) y X2↔(010∣000)X_2\leftrightarrow(010\mid000).
  • Y1=iX1Z1↔(100∣100)Y_1=iX_1Z_1\leftrightarrow(100\mid100): la YY pone un 1 en la parte XX y otro en la parte ZZ.
  • Para Shor (n=9n=9), X1X2X3X4X5X6↔(111111000∣000000000)X_1X_2X_3X_4X_5X_6\leftrightarrow(111111000\mid000000000).

¿Por qué multiplicar es sumar? Dentro de cada cúbit, pasar los ZZ a la derecha de los XX cuesta un signo por cada cruce, así que

X(a)Z(b)⋅X(a′)Z(b′)=(−1) b⋅a′ X(a+a′) Z(b+b′).X(a)Z(b)\cdot X(a')Z(b')=(-1)^{\,b\cdot a'}\,X(a+a')\,Z(b+b').

El vector del producto es (a+a′∣b+b′)(a+a'\mid b+b'), sumado módulo 2. Por ejemplo Z1Z2⋅Z2Z3=Z1Z3Z_1Z_2\cdot Z_2Z_3=Z_1Z_3 y en vectores (000∣110)+(000∣011)=(000∣101)(000\mid110)+(000\mid011)=(000\mid101). Lo que olvidamos al traducir es solo un signo o un factor ii. Y el peso no es aditivo: dos Pauli de peso 3 pueden dar uno de peso 1 (lo verás en el ejemplo resuelto).

El producto simpléctico

Falta lo importante: el signo que olvidamos nos dice si dos operadores conmutan. En un cúbit, XaZbX^aZ^b y Xa′Zb′X^{a'}Z^{b'} solo se diferencian al cambiar el orden por un factor (−1)ba′+ab′(-1)^{ba'+ab'}. Con nn cúbits cada posición aporta el suyo y los exponentes se suman. Eso es exactamente lo que define el siguiente producto.

Producto simpléctico de u=(a∣b)u=(a\mid b) y u′=(a′∣b′)u'=(a'\mid b') en F22n\mathbb{F}_2^{2n}:

⟨u,u′⟩s=b⋅a′+a⋅b′(mod2).\langle u,u'\rangle_s=b\cdot a'+a\cdot b'\pmod 2.

Si E↔uE\leftrightarrow u y E′↔u′E'\leftrightarrow u', entonces EE′=(−1)⟨u,u′⟩sE′EEE'=(-1)^{\langle u,u'\rangle_s}E'E. Por tanto:

EE y E′E' conmutan si y solo si ⟨u,u′⟩s=0\langle u,u'\rangle_s=0, y anticonmutan si vale 11.

(Las fases ici^c del grupo son números y conmutan con todo, así que no cambian nada.)

Repaso Producto escalar y ortogonalidad en F_2

En el curso de códigos, dos vectores x,y∈F2mx,y\in\mathbb{F}_2^m son ortogonales si x⋅y=x1y1+⋯+xmym=0x\cdot y=x_1y_1+\cdots+x_my_m=0 módulo 2, y el dual C⊥C^\perp de un código CC son los vectores ortogonales a todas sus palabras (lección de matriz generatriz y matriz de paridad). Aquí hacemos lo mismo con otro producto. Módulo 2: 1+1=01+1=0.

Aviso sobre el signo. Módulo 2 da igual escribir b⋅a′+a⋅b′b\cdot a'+a\cdot b' o b⋅a′−a⋅b′b\cdot a'-a\cdot b', porque −1≡1-1\equiv1. Con cúbits usamos la suma. En la lección Qudits, con sistemas de pp niveles, el producto aparece con signo, b⋅a′−a⋅b′b\cdot a'-a\cdot b', y ahí el signo sí importa.

Truco para contar (el criterio de las lecciones 3 y 5). Una posición aporta un 1 exactamente cuando los dos operadores son, ahí, distintos y ninguno es la identidad (por ejemplo XX y ZZ, o YY y XX): en esa posición anticonmutan. Si no, aporta 0. Así que

dos Pauli de cúbits conmutan si y solo si anticonmutan en un número par de posiciones.

Propiedades del producto: es bilineal, simétrico (módulo 2) y ⟨u,u⟩s=0\langle u,u\rangle_s=0 para todo uu, pues todo Pauli conmuta consigo mismo. Esto lo separa del producto escalar del curso de códigos: X=(1∣0)X=(1\mid0) cumple (1,0)⋅(1,0)=1≠0(1,0)\cdot(1,0)=1\neq0, pero ⟨X,X⟩s=0\langle X,X\rangle_s=0. En forma matricial, ⟨u,v⟩s=uΛvT\langle u,v\rangle_s=u\Lambda v^T con Λ=(0II0)\Lambda=\begin{pmatrix}0&I\\I&0\end{pmatrix} (módulo 2).

Ortogonal simpléctico

Para un subespacio C⊆F22nC\subseteq\mathbb{F}_2^{2n}, su ortogonal simpléctico es

C⊥s={v∈F22n: ⟨c,v⟩s=0  para todo c∈C}.C^{\perp_s}=\{v\in\mathbb{F}_2^{2n}:\ \langle c,v\rangle_s=0\ \text{ para todo } c\in C\}.

Son los operadores de Pauli que conmutan con todos los de CC. Es el análogo del dual C⊥C^\perp, y su dimensión es la misma cuenta que en el curso de códigos:

dim⁡C⊥s=2n−dim⁡C.\dim C^{\perp_s}=2n-\dim C.

La razón: cada vector de una base de CC impone una ecuación lineal ⟨c,v⟩s=0\langle c,v\rangle_s=0, y esas dim⁡C\dim C ecuaciones son independientes porque Λ\Lambda es invertible. Por ejemplo, con n=3n=3 y C=⟨(000∣110)⟩C=\langle(000\mid110)\rangle (el operador Z1Z2Z_1Z_2), C⊥sC^{\perp_s} tiene dimensión 6−1=56-1=5 y 25=322^5=32 vectores.

Ojo a la diferencia con el curso clásico: allí que C⊆C⊥C\subseteq C^\perp no se pide; aquí es justo lo que queremos. Que C⊆C⊥sC\subseteq C^{\perp_s} (autoortogonal) significa que todos los operadores de CC conmutan entre sí. Será la condición de la próxima lección.

Ejemplo resuelto

XXXXXX y ZZZZZZ. Con n=3n=3 son (111∣000)(111\mid000) y (000∣111)(000\mid111):

⟨(111∣000),(000∣111)⟩s=0⋅0⏟b⋅a′+(1+1+1)⏟a⋅b′=3≡1(mod2).\langle(111\mid000),(000\mid111)\rangle_s=\underbrace{0\cdot0}_{b\cdot a'}+\underbrace{(1+1+1)}_{a\cdot b'}=3\equiv1\pmod2.

Anticonmutan. Se ve posición a posición: cada una aporta un 1 y son tres, un número impar.

Dos pares de generadores de Shor (los de la lección anterior):

  • Z2Z3Z_2Z_3 y X1X2X3X4X5X6X_1X_2X_3X_4X_5X_6 coinciden en las posiciones 2 y 3, con un ZZ frente a un XX en cada una: dos anticonmutaciones, 00 módulo 2. Conmutan.
  • Z4Z5Z_4Z_5 y X4X5X6X7X8X9X_4X_5X_6X_7X_8X_9 coinciden en las posiciones 4 y 5: otra vez dos. Conmutan.

Los ocho generadores conmutan entre sí (son 28 parejas, y la regla de contar las despacha: los ZZ entre sí y los XX entre sí conmutan, y cada ZaZbZ_aZ_b comparte con cada X⋯XX\cdots X cero o dos cúbits). En cambio Z1Z_1 con X1⋯X6X_1\cdots X_6 solo coinciden en la posición 1: anticonmutan, y Z3Z4Z_3Z_4 con X4⋯X9X_4\cdots X_9 también (solo coinciden en la 4). Por eso los ZZ de los generadores van por parejas dentro de un bloque: así cruzan un número par de veces con los XX.

Un producto y su peso. Sean E=X1Y2Z3↔(110∣011)E=X_1Y_2Z_3\leftrightarrow(110\mid011) y F=X1Y2X3↔(111∣010)F=X_1Y_2X_3\leftrightarrow(111\mid010), los dos de peso 3. La suma módulo 2 es (001∣001)(001\mid001), que es Y3Y_3, de peso 1. Con matrices, cúbit a cúbit: X⋅X=IX\cdot X=I, Y⋅Y=IY\cdot Y=I y Z⋅X=iYZ\cdot X=iY, luego EF=i Y3EF=i\,Y_3. El vector es el esperado y la fase ii es lo que olvida la traducción. Y ⟨E,F⟩s\langle E,F\rangle_s: b⋅a′=(0,1,1)⋅(1,1,1)=0b\cdot a'=(0,1,1)\cdot(1,1,1)=0 y a⋅b′=(1,1,0)⋅(0,1,0)=1a\cdot b'=(1,1,0)\cdot(0,1,0)=1, así que vale 11. Anticonmutan, y se ve en que solo en la tercera posición hay letras distintas y no triviales (ZZ frente a XX): FE=−iY3=−EFFE=-iY_3=-EF.

La tabla de síndromes es una tabla de productos simplécticos. Medir el generador gjg_j sobre el estado con el error EE da +1+1 si gjg_j y EE conmutan y −1-1 si anticonmutan. Así que el bit jj del síndrome de E↔eE\leftrightarrow e es exactamente

sj=⟨gj,e⟩s.s_j=\langle g_j,e\rangle_s.

Tomemos E=Y5E=Y_5, con e=(000010000∣000010000)e=(000010000\mid000010000), y los generadores en el orden de la lección anterior:

  • Z1Z2Z_1Z_2, Z2Z3Z_2Z_3, Z7Z8Z_7Z_8, Z8Z9Z_8Z_9 no tocan el cúbit 5: producto 00.
  • Z4Z5Z_4Z_5 y Z5Z6Z_5Z_6 tienen un ZZ en el 5 y Y5Y_5 tiene parte XX: producto 11 cada uno.
  • X1⋯X6X_1\cdots X_6 y X4⋯X9X_4\cdots X_9 tienen un XX en el 5 y Y5Y_5 tiene parte ZZ: producto 11 cada uno.

Síndrome: 0011001100110011, el de la tabla. La misma cuenta para los 27 errores de peso 1 reproduce la tabla entera, y con vectores es mucho más corta que con matrices de 512×512512\times512. Además se ve la degeneración: Z1Z_1 y Z2Z_2 tienen el mismo síndrome porque su suma es Z1Z2=g1Z_1Z_2=g_1, que conmuta con todos los generadores (el síndrome es lineal, y el de un generador es nulo). Que Y5Y_5 salga como suma de los síndromes de X5X_5 y Z5Z_5 también es linealidad.

Ejercicios

Ejercicio 1

Con tres cúbits, decide si conmutan (a) X1X2X_1X_2 y Z2Z3Z_2Z_3; (b) X1X2X_1X_2 y Z1Z2Z_1Z_2; (c) Y1Y2Y_1Y_2 y X1Z2X_1Z_2.

Ver la solución

(a) Solo coinciden en la posición 2, con XX y ZZ: una anticonmutación, así que anticonmutan. En vectores, (110∣000)(110\mid000) y (000∣011)(000\mid011) dan a⋅b′=0+1+0=1a\cdot b'=0+1+0=1.

(b) Coinciden en las posiciones 1 y 2, con XX y ZZ en ambas: dos anticonmutaciones. Conmutan.

(c) En la posición 1, YY y XX anticonmutan. En la 2, YY y ZZ también. Son dos: conmutan.

Ejercicio 2

En el código de Shor, calcula con productos simplécticos el síndrome de Y8Y_8 (generadores en el orden de la lección anterior) y comprueba que es la suma de los de X8X_8 y Z8Z_8.

Ver la solución

Y8↔(000000010∣000000010)Y_8\leftrightarrow(000000010\mid000000010). Generador a generador:

  • Z1Z2Z_1Z_2, Z2Z3Z_2Z_3, Z4Z5Z_4Z_5, Z5Z6Z_5Z_6: no tocan el cúbit 8, producto 00.
  • Z7Z8Z_7Z_8 y Z8Z9Z_8Z_9: tienen ZZ en el 8 y Y8Y_8 tiene parte XX, producto 11 cada uno.
  • X1⋯X6X_1\cdots X_6: no toca el 8, producto 00.
  • X4⋯X9X_4\cdots X_9: tiene XX en el 8 y Y8Y_8 tiene parte ZZ, producto 11.

Síndrome 0000110100001101. Los de X8X_8 y Z8Z_8 son 0000110000001100 y 0000000100000001, y su suma módulo 2 es 0000110100001101.

Ejercicio 3

Con dos cúbits, calcula C⊥sC^{\perp_s} para C=⟨(11∣00)⟩C=\langle(11\mid00)\rangle (el operador X1X2X_1X_2). ¿Qué dimensión tiene? ¿Contiene a CC? ¿Y a Z1Z2Z_1Z_2?

Ver la solución

Para v=(a1,a2∣b1,b2)v=(a_1,a_2\mid b_1,b_2), ⟨(11∣00),v⟩s=1⋅b1+1⋅b2=b1+b2\langle(11\mid00),v\rangle_s=1\cdot b_1+1\cdot b_2=b_1+b_2. La condición es b1=b2b_1=b_2. Los aa son libres (4 opciones) y b∈{00,11}b\in\{00,11\} (2 opciones): 4⋅2=84\cdot2=8 vectores, dimensión 3=4−13=4-1.

Contiene a CC (tomando a=11a=11, b=00b=00): todo Pauli conmuta consigo mismo. Contiene también (00∣11)(00\mid11), el operador Z1Z2Z_1Z_2, porque b=11b=11 cumple la condición: X1X2X_1X_2 y Z1Z2Z_1Z_2 conmutan (dos anticonmutaciones).

En resumen

  • XX, YY, ZZ cumplen P2=IP^2=I, son hermíticas y unitarias, y dos distintas anticonmutan. El grupo de Pauli de nn cúbits tiene 4n4^n elementos salvo fase.
  • Cada Pauli es un vector (a∣b)∈F22n(a\mid b)\in\mathbb{F}_2^{2n}, y multiplicar operadores de Pauli es sumar vectores (salvo fase). El peso cuenta los cúbits donde no hay identidad.
  • Conmutan si y solo si ⟨u,u′⟩s=b⋅a′+a⋅b′=0\langle u,u'\rangle_s=b\cdot a'+a\cdot b'=0. Equivale a contar posiciones donde los dos son distintos y no triviales: par significa conmutar. Con pp niveles (lección sobre qudits) el producto lleva signo.
  • C⊥sC^{\perp_s} son los operadores de Pauli que conmutan con todo CC y tiene dimensión 2n−dim⁡C2n-\dim C. Un subespacio autoortogonal es uno de operadores que conmutan entre sí.
  • La tabla de síndromes de Shor es una tabla de productos simplécticos: sj=⟨gj,e⟩ss_j=\langle g_j,e\rangle_s.

Siguiente lección: Códigos estabilizadores y síndrome

Para profundizar