Categorías
FinTech

MANGA

Otro pequeño interludio: si os interesan estas cosas, echad un vistazo a la ayuda online de MANGA. Es un lenguaje de expresiones desarrollado para un proyecto de Comunytek, orientado al manejo de series financieras y modelos econométricos. Está todavía en desarrollo, pero ya va tomando forma. Entre otras cosas interesantes, permite usar funciones lambda, y la librería, Manga.Library, antes conocida como ComVektor, utiliza AVX2 para optimizar las operaciones sobre matrices, vectores y series temporales.

Categorías
Quantum

CNOT

Como no he encontrado una imagen interesante para ilustrar una compuerta CNOT, he puesto el yelmo de Knut, que suena parecido. Sí, a veces las neuronas me patinan.

Compuertas condicionales

El siguiente circuito, extremadamente simple, muestra una compuerta CNOT aplicada al primer y segundo qubit del circuito:

CNOT significa «conditional NOT», una negación condicional, y el parentesco con la negación a secas se evidencia en la simbología asociada: la parte inferior del símbolo es la cruz dentro del círculo que se suele usar para la negación. Se trata de una compuerta que trabaja siempre con dos qubits. Todas las transformaciones que hemos visto hasta ahora sobre dos qubits se creaban componiendo transformaciones sobre un qubit. Con esta compuerta, ya saltamos a transformaciones más complejas.

El papel de una compuerta CNOT consiste en invertir el estado de un qubit de acuerdo con el estado de otro qubit de control. Si el qubit de control vale $0$, el otro bit no se modifica. Si el bit de control es $1$, el otro bit se invierte. En el circuito que acabamos de mostrar, el qubit de control es el menos significativo, y esta es la acción de la compuerta sobre la base del estado:
$$\eqalign{
\operatorname{CNOT}\vert00\rangle&\rightarrow\vert00\rangle\cr
\operatorname{CNOT}\vert01\rangle&\rightarrow\vert11\rangle\cr
\operatorname{CNOT}\vert10\rangle&\rightarrow\vert10\rangle\cr
\operatorname{CNOT}\vert11\rangle&\rightarrow\vert01\rangle
}$$¿Recuerda nuestro truco ninja en la entrada anterior, para calcular rápidamente la acción de una matriz sobre vectores de la base? Cuando una matriz actúa sobre un vector de la base, el resultado se obtiene seleccionando una columna. Eso significa que la primera columna de la matriz tiene que ser el resultado de aplicarla al primer vector de la base, y la última, es el resultado sobre el último vector de la base. Pero yo acabo de enumerar lo que ocurre cuando se aplica CNOT a cada uno de los vectores de la base. Podemos entonces dar ya la representación de CNOT como matriz:

$$\operatorname{CNOT_{LS}} = \pmatrix{1&0&0&0\cr 0&0&0&1\cr 0&0&1&0\cr 0&1&0&0
}$$Para evitar confusiones, he usado el sufijo $ls$ para indicar que esta es la matriz cuando el qubit de control es el menos significativo. Si hacemos que el control lo ejerza el bit más significativo, el de la izquierda, la matriz correspondiente sería:
$$\operatorname{CNOT_{MS}} = \pmatrix{1&0&0&0\cr 0&1&0&0\cr 0&0&0&1\cr 0&0&1&0
}$$¡Compruébelo!

En general, si tenemos una compuerta de un qubit y queremos aplicarla condicionalmente sobre el qubit menos significativo, usando el más significativo como control, la matriz que necesitamos sigue este patrón:

$$\operatorname{CondA} = \pmatrix{I & 0 \cr 0 & A
}$$No hay nada mágico en la fórmula anterior. Si se aplica $\operatorname{CondA}$ a los vectores $\vert00\rangle$ o $\vert01\rangle$, obtenemos el vector original, sin cambios, porque el qubit más significativo de estos dos vectores es $0$. Las dos columnas en las que la matriz original $A$ pinta algo son la tercera y la cuarta, que son los estados de la base con el qubit más significativo a $1$.

The twilight zone

Confieso que me preocupa un poco que en la mayoría de los ejemplos estemos usando matrices con ceros y unos en sus celdas. Puede dar la impresión de que estamos usando valores lógicos, y no es así ni remotamente. Donde estamos viendo un cero, podríamos tener un número complejo arbitrario.

Para compensar esta tendencia, vamos a movernos ahora a la zona «crepuscular». Todos comprendemos sin problemas lo que ocurre cuando el qubit de control es cero o uno: nuestra mente está habituada a trabajar en blanco y negro, ¿no? Pero, ¿qué ocurre si el qubit de control es un gato de Schrödinger? Vamos a diseñar un circuito en el que aplicaremos una transformación de Hadamard precisamente a ese qubit:

En notación algebraica, este circuito se puede escribir así:

$$\operatorname{CNOT_{LS}} \times (I \otimes H)$$¡Mucha atención al orden, que es muy importante! En primer lugar, he puesto la matriz de la condicional a la izquierda de la expresión, aunque es la segunda que se aplica en el circuito. ¿Por qué? Pues porque cuando yo escribo $ABx$ estoy pidiendo que primero se aplique la matriz $B$ al vector $x$, y luego al resultado se le aplique la matriz $A$. Es decir, en $ABx$, la matriz de más a la izquierda es la segunda que se aplica, no la primera.

Por otra parte, escribo $I \otimes H$ porque la matriz de la izquierda es la que corresponde al qubit más significativo, como vimos en la entrada anterior. Hadamard se le aplica sólo al qubit menos significativo, y para completar el circuito, aplicamos la matriz identidad al qubit más significativo.

Ahora calculemos la matriz por partes. Primero, la combinación tensorial de la identidad con Hadamard:

$$I\otimes H = \pmatrix{H&0\cr 0&H} = \frac{1}{\sqrt2}\pmatrix{1&1&0&0\cr1&-1&0&0\cr0&0&1&1\cr0&0&1&-1
}$$La matriz $\operatorname{CNOT}$ que utiliza el qubit menos significativo como control ya la hemos presentado antes. Sólo nos queda multiplicar dos matrices:

$$\frac{1}{\sqrt2}\pmatrix{1&0&0&0\cr 0&0&0&1\cr 0&0&1&0\cr 0&1&0&0} \times \pmatrix{1&1&0&0\cr1&-1&0&0\cr0&0&1&1\cr0&0&1&-1}
$$¿Sabe lo que haría un ninja del álgebra ahora? Sólo calcularía la primera columna del resultado, porque es la que nos importa dado el estado cuántico inicial. Pero como soy buena persona, aquí le dejo la matriz completa del circuito (pero no se fíe de mí, y haga el cálculo por su cuenta):

$$\frac{1}{\sqrt2}\pmatrix{1&1&0&0\cr 0&0&1&-1\cr 0&0&1&1\cr 1&-1&0&0}
$$Como ya hemos dicho, esta matriz tiene que transformar un estado cuántico inicial que es el $\vert00\rangle$, o $\pmatrix{1&0&0&0}^T$ en notación matricial (la $T$ significa que hay que transponer para obtener un vector de columna). El resultado es la primera columna de la matriz de transformación:

$$\frac{1}{\sqrt2}\pmatrix{1\cr0\cr0\cr1}
$$Y este, amigos míos, a pesar de su apariencia inocente, es un estado entrelazado. En concreto, es uno de los estados de Bell, el estado $\vert\Phi^{+}\rangle$. Como dicen en inglés, we’ve got a crazy cookie.

Einstein-Podolski-Rosen

¿Qué ocurre cuando se realiza una medición sobre este estado? Si aplicamos la regla de Born, vemos que podemos obtener solamente uno de dos resultados, $00$ o $11$, de los cuatro resultados posibles. Si obtenemos un $1$ en el bit menos significativo, no tenemos que mirar el más significativo para saber que obligatoriamente es otro $1$.

Si en el diseñador de circuitos de Qiskit creamos este circuito y miramos el panel «Measurement probabilities» veremos este gráfico:

Efectivamente, nos advierte que hay dos posibles lecturas, las antes mencionadas, y que cada una se obtiene en un 50% de los casos.

Categorías
Quantum

Cuatro gatos

Vamos a probar fortuna ahora con un circuito mucho más interesante, que a la larga utilizaremos con cierta frecuencia. Este es el circuito:

Las compuertas $H$, naturalmente, corresponden a transformadas de Hadamard aplicadas a qubits individuales.

SuperHadamard

A modo de recordatorio, esta es la definición de la matriz de Hadamard:

$$H = \frac{1}{\sqrt2} \pmatrix{
1&1\cr 1&-1
}$$El coeficiente $\frac{1}{\sqrt2}$ se incluye para que el determinante de la matriz sea la unidad.

Cuando la transformada de Hadamard se aplica a un qubit que está en el estado inicial $\vert0\rangle$, lo lleva al estado $\vert+\rangle$ de la base de Hadamard, que se expresa en la base computacional como $\frac{1}{\sqrt2}(\vert0\rangle + \vert1\rangle)$. Este es un estado superpuesto, un gato de Schrödinger, que cuando se mide, va a alternar entre ceros y unos con la misma probabilidad. Si nos ponemos solemnes, podríamos decir que acabamos de implementar un generador aleatorio de valores binarios.

¿Qué pasa si tengo dos qubits y le aplico Hadamard a cada uno de ellos? Ya sabemos que para tener una respuesta exacta tenemos que multiplicar tensorialmente dos matrices de Hadamard. Este es el cálculo:

$$\eqalign{
H \otimes H &= \frac{1}{2} \pmatrix{1&1\cr 1&-1} \otimes \pmatrix{1&1\cr 1&-1}\cr
&= \frac{1}{2}\pmatrix{1&1&1&1\cr 1&-1&1&-1\cr 1&1&-1&-1\cr 1&-1&-1&1 }
}$$Ahora queremos saber qué pasa si aplicamos esta matriz al estado inicial del circuito, $\vert00\rangle$:

$$(H\otimes H)\vert00\rangle = \frac{1}{2}\pmatrix{1&1&1&1\cr 1&-1&1&-1\cr 1&1&-1&-1\cr 1&-1&-1&1 } \pmatrix{1\cr0\cr0\cr0} = \frac{1}{2} \pmatrix{1\cr1\cr1\cr1}
$$Vamos a entender mejor el resultado si lo representamos en notación de Dirac:
$$\frac{1}{2}\vert0\rangle + \frac{1}{2}\vert1\rangle + \frac{1}{2}\vert2\rangle + \frac{1}{2}\vert3\rangle
$$Esta es una superposición uniforme de los cuatro vectores de la base de dos qubits. Es decir: un gato de Schrödinger simultáneamente en cuatro estados. También podemos interpretarlo como una superposición uniforme de todos los números enteros del cero al tres.

Si aplicamos una medición a este estado, el resultado puede ser cualquiera de los números del cero al tres, con la misma probabilidad para cada uno de ellos (un cuarto). De vuelta a la solemnidad: hemos programado un generador aleatorio que escupe números del $0$ al $3$.

Los goces de la linealidad

Imaginemos que hemos diseñado un circuito multiqubits, que recibe un número entero de entrada y que hace algún cálculo mágico y genera un valor entero muy interesante por el otro extremo. No voy a complicar la fiesta ahora recordando que ese circuito debe implementar una transformación unitaria. Si lo tuviésemos en cuenta, tendríamos que introducir qubits adicionales para mantener la reversibilidad del circuito. Pero vamos a olvidarnos ahora de ese problema, y aceptemos que tenemos un algoritmo mágico que transforma un número en otro número más interesante.

Supongamos ahora que, en vez de pasarle un número al algoritmo, le pasamos de golpe una superposición uniforme de todos los números representables en el número de qubits de los que disponemos. ¿Qué calculará el algoritmo? Como el «algoritmo» es una matriz, es decir, una transformación lineal, lo que obtendremos es una superposición uniforme de todos los resultados. Es como si hubiésemos aplicado el algoritmo en paralelo a todos los números enteros que podemos representar en nuestro ordenador:

$$A\times \sum_i { \alpha_i \hat{e}_i } = \sum_i { \alpha_i (A\times \hat{e}_i) }
$$Esta propiedad se conoce como paralelismo cuántico, y no es tan útil como parece a primera vista. No lo es porque, cuando midamos, colapsaremos el estado en un único vector propio, y perderemos toda esa información. De todos modos, pronto veremos cómo sacar partido de esta situación.

Algebra lineal, nivel Dios

Termino esta entrada con una nota técnica sobre álgebra lineal, que nos va a ser muy útil para obtener el grado de ninja. A todos nos han contado, en un momento u otro de nuestras vidas, que el mundo está lleno de vectores que pastan por los prados y de matrices cuya obsesión en la vida es transformar cada vector que se le ponga a tiro:

$$Ax$$Vamos a plantearnos esta relación desde otro punto de vista. ¿Y si realmente es el vector quien está actuando sobre la matriz para generar otro vector? Podemos hacerlo, siempre que consideremos que una matriz es una colección de columnas, en vez de una colección de filas, que es la forma más habitual de verlas. Observe cómo un vector parasita a una matriz y genera un vector combinando linealmente las columnas de la misma:

$$\pmatrix{a_1&b_1&c_1\cr a_2&b_2&c_2\cr a_3&b_3&c_3} \pmatrix{x_1\cr x_2\cr x_3} = x_1\pmatrix{a_1\cr a_2\cr a_3} + x_2\pmatrix{b_1\cr b_2\cr b_3} + x_3\pmatrix{c_1\cr c_2\cr c_3}
$$Esta intuición nos sirve, si estamos implementando una librería de matrices con aceleración por hardware, para representar las matrices como vectores de columnas. Lo he probado en C++, usando funciones intrínsecas y, efectivamente, es más eficiente implementar la multiplicación de matrices por vectores usando SIMD como una combinación lineal de las columnas de la matriz. De hecho, el convenio de FORTRAN siempre ha sido almacenar las matrices por columnas, no por filas.

Pero no es esto lo que quiero mostrarle exactamente. Imaginemos que el vector $x$ pertenece a la base. En ese caso, uno de sus componentes será un $1$, y el resto, $0$. Veamos cómo transformaría nuestra matriz de Hadamard de $4\times4$ el estado $\vert10\rangle$:

$$(H\otimes H)\vert10\rangle = \frac{1}{2}\pmatrix{1&1&1&1\cr 1&-1&1&-1\cr 1&1&-1&-1\cr 1&-1&-1&1 } \pmatrix{0\cr0\cr1\cr0} = \frac{1}{2} \pmatrix{1\cr1\cr-1\cr-1}
$$Si observamos bien, vemos que lo que ha hecho el vector es seleccionar directamente la tercera columna de la matriz. ¿Por qué? Pues porque $\vert10\rangle$ es el tercer vector de la base: dos ceros, un uno y otro cero. Una combinación lineal de las columnas, en este caso, va directamente a por la tercera columna.

Esto tiene una segunda consecuencia: ya hemos visto que en un ordenador cuántico, el vector de estado siempre se inicializa con ceros: $\vert000\cdots0\rangle$. Este es el primer vector de la base computacional: un $1$ en el primer componente, seguido de un montón de ceros. ¿Qué le va a hacer este astuto vector a una inocente matriz? ¡Pues seleccionar la primera columna!

Esto es un truco muy útil. Si tenemos una matriz de $2^N\times2^N$ que representa a todo un circuito, en realidad sólo necesitamos las $2^N$ celdas de la primera columna, porque sabemos a ciencia cierta cómo funciona la inicialización del ordenador cuántico.

Categorías
Quantum

Compuertas y circuitos

Tras presentar el estado cuántico de un qubit, vimos las transformaciones unitarias que actuaban sobre dicho estado. Ahora, que ya hemos presentado el estado de un grupo de qubits, tenemos que ver las transformaciones unitarias que nos permitirán manejar su estado.

Compuertas

Cuando se trata de operaciones sobre qubits individuales, no es mayor problema utilizar directamente las matrices en notación de componentes. El vector de estado de un qubit se representa con dos componentes complejos, por lo que las matriz son «simples» matrices complejas de $2\times2$. En cambio, es más pesado tener que listar los componentes de matrices con más dimensiones.

La alternativa, que todo el mundo sigue, es representar las transformaciones mediante compuertas cuánticas y combinar estas compuertas en circuitos. Por supuesto, detrás de todo circuito hay, simple y llanamente, una matriz probablemente enorme que es la que realiza la transformación necesaria antes de la medición. A mí, personalmente, me resulta muchísimo más fácil entender el funcionamiento de un algoritmo calculando las matrices asociadas pero, eso espero, con el tiempo uno llega a familiarizarse con la notación de circuitos y desarrollar la intuición necesaria para ahorrarse unos cuantos pasos. En cualquier caso, intentaré dar las herramientas para pasar de compuertas a matrices y, en el caso de circuitos correspondientes a algoritmos sencillos, del circuito completo a la matriz resultante.

Para el diseño de circuitos y algoritmos, mi recomendación es utilizar Qiskit, de IBM. Qiskit te permite crear una cuenta gratuita, y te da acceso a dos herramientas muy útiles para crear y evaluar circuitos: mediante software gráfico y a través de Python. No soy un entusiasta de Python, pero para este tipo de tareas no duele mucho usarlo. La siguiente imagen muestra parte de la barra de herramientas del editor gráfico, y un circuito muy sencillo con dos qubits, a los cuales se le está aplicando una inversión (la compuerta que parece una cruz) y una medición (la línea inferior representa la salida de bits clásicos del algoritmo):

El objetivo de esta entrada no es ponernos ya a diseñar circuitos: cuando llegue el momento, es preferible mostrar el código en Python. Ahora nos interesa la parte matemática, sobre cómo definir transformaciones que afecten a más de un qubit. Utilizo Qiskit para no tener que dibujar los circuitos a mano.

Hay alternativas a Qiskit. Las principales que conozco son Q#, una iniciativa de Microsoft, e incluso librerías de Matlab. Q# es interesante, pero en estos momentos es una pequeña tragedia hacer que funcione a la primera en Visual Studio. Y Matlab es de pago.

Cómo combinar matrices

Volvamos al circuito que he mostrado antes:
Este circuito muestra dos qubits, $q_0$ y $q_1$. A cada uno de ellos se le aplica una negación: la matriz $X$ que ya hemos visto, que convierte ceros en unos y viceversa, y que Qiskit representa como un círculo con una cruz dentro. Luego se realizan las mediciones. El resultado es muy tonto: obtenemos un $11$ clásico:

  1. Asumimos que cada qubit se inicializa en el estado $\vert0\rangle$. Es decir, el sistema de dos qubits se inicializa en el estado conjunto $\vert00\rangle$.
  2. Cada inversión convierte su qubit al estado $\vert1\rangle$. El sistema queda en un estado puro $\vert11\rangle$.
  3. Por supuesto, al medir obtendremos ese estado, sin ningún tipo de incertidumbre.

Sabemos que la matriz o compuerta $X$ tiene la siguiente representación en notación de componentes:
$$\pmatrix{0&1\cr1&0}
$$La pregunta nuestra es: ¿cómo representamos la matriz que aplica una negación por separado a cada uno de los qubits? En este caso, la intuición podría ayudarnos a determinar el contenido de la matriz, pero vamos a aprovechar que es un ejercicio sencillo para poner a punto la herramienta matemática que necesitaremos para casos más complicados. Esa herramienta es la multiplicación tensorial de matrices (previsible, ¿no?).

Supongamos que tenemos dos matrices $A$ y $B$, y que queremos calcular el producto tensorial de las dos:
$$\pmatrix{a_{11}&a_{12}\cr a_{21}&a_{22}}\otimes\pmatrix{b_{11}&b_{12}\cr b_{21}&b_{22}}
$$La definición de producto tensorial de matrices es un poco engorrosa, pero no es complicada:
$$\pmatrix{
a_{11}\times\pmatrix{b_{11}&b_{12}\cr b_{21}&b_{22}}&
a_{12}\times\pmatrix{b_{11}&b_{12}\cr b_{21}&b_{22}}\cr
a_{21}\times\pmatrix{b_{11}&b_{12}\cr b_{21}&b_{22}}&
a_{22}\times\pmatrix{b_{11}&b_{12}\cr b_{21}&b_{22}}
}$$Simplificando, nos queda esto:
$$\pmatrix{
a_{11}b_{11}&a_{11}b_{12}&a_{12}b_{11}&a_{12}b_{12}\cr
a_{11}b_{21}&a_{11}b_{22}&a_{12}b_{21}&a_{12}b_{22}\cr
a_{21}b_{11}&a_{21}b_{12}&a_{22}b_{11}&a_{22}b_{12}\cr
a_{21}b_{21}&a_{21}b_{22}&a_{22}b_{21}&a_{22}b_{22}
}$$Es muy importante dominar esta técnica. Asegúrese de que comprende de dónde sale cada celda del resultado antes de seguir adelante.

En nuestro ejemplo, queríamos combinar dos matrices $X$:
$$\pmatrix{0&1\cr1&0}\otimes\pmatrix{0&1\cr1&0}
$$En el paso intermedio, obtenemos esto:
$$\pmatrix{
0\times\pmatrix{0&1\cr1&0}&
1\times\pmatrix{0&1\cr1&0}\cr
1\times\pmatrix{0&1\cr1&0}&
0\times\pmatrix{0&1\cr1&0}
}$$Simplificando:
$$\pmatrix{
0&0&0&1\cr
0&0&1&0\cr
0&1&0&0\cr
1&0&0&0
}$$Intuitivamente, el resultado tiene buen aspecto: la matriz $X$ de dos dimensiones parece una matriz con la diagonal invertida, y esta matriz resultado tiene la misma forma. ¿Cómo comprobamos que es correcta? Muy sencillo. La base para dos qubits tiene cuatro vectores, que son $\vert00\rangle,\vert01\rangle,\vert10\rangle,\vert11\rangle$. Estos cuatro vectores, sin embargo, tienen una representación en componentes que puede resultar confusa si no la domina todavía. Vamos a hacer los cálculos y las representaciones explícitos. Para el primer vector de la base:
$$(X\otimes X)\vert00\rangle = \pmatrix{
0&0&0&1\cr
0&0&1&0\cr
0&1&0&0\cr
1&0&0&0
} \times \pmatrix {1\cr0\cr0\cr0} = \pmatrix {0\cr0\cr0\cr1} = \vert11\rangle
$$Para el segundo vector:
$$(X\otimes X)\vert01\rangle = \pmatrix{
0&0&0&1\cr
0&0&1&0\cr
0&1&0&0\cr
1&0&0&0
} \times \pmatrix {0\cr1\cr0\cr0} = \pmatrix {0\cr0\cr1\cr0} = \vert10\rangle
$$Tercer vector:
$$(X\otimes X)\vert10\rangle = \pmatrix{
0&0&0&1\cr
0&0&1&0\cr
0&1&0&0\cr
1&0&0&0
} \times \pmatrix {0\cr0\cr1\cr0} = \pmatrix {0\cr1\cr0\cr0} = \vert01\rangle
$$Y el cuarto vector:
$$(X\otimes X)\vert11\rangle = \pmatrix{
0&1&0&0\cr
1&0&0&0\cr
0&1&0&0\cr
1&0&0&0
} \times \pmatrix {0\cr0\cr0\cr1} = \pmatrix {1\cr0\cr0\cr0} = \vert00\rangle
$$Perdone que haya sido tan pedante y haya escrito explícitamente todos los detalles. La programación, en general, es el reino de los detalles. En este caso, hemos podido comprobar que la matriz combinada invierte los ceros y unos en el estado cuántico combinado.

El orden de los factores

Sin embargo, me he dejado un detalle importante en el tintero: el orden de los qubits. En un estado como $\vert01\rangle$, ¿cuál es el qubit más significativo? ¿Es el $0$ o el $1$? Todo depende del convenio, pero una vez elegido uno, hay que atenerse estrictamente a él. Nuestro convenio será que en $\vert01\rangle$ el bit más significativo es el de la izquierda, es decir, el $0$, y el menos significativo es el de la derecha, el $1$.

Recuerde, además, que $\vert01\rangle$ es realmente $\vert0\rangle\otimes\vert1\rangle$, esto es, un producto tensorial. Esto es muy importante también para combinar correctamente matrices. Nuestro primer ejemplo de producto tensorial fue muy sencillo porque las dos matrices eran idénticas, y no tuvimos que preocuparnos por su orden relativo. Vamos a suponer que nuestro circuito tiene esta otra forma:

Esta vez queremos invertir solamente el qubit menos significativo. Aparentemente, además, sólo tenemos una matriz, pero eso no es del todo cierto. Lo que queremos calcular ahora es la matriz combinada $I\otimes X$, donde $I$ es la matriz identidad.

Observe el orden: primero va la matriz identidad $I$… ¡porque cuando representamos el sistema de dos qubits, hemos elegido que el más significativo sea el de la izquierda! Y la matriz $X$ es entonces el segundo operando. Queremos entonces calcular esto:

$$\pmatrix{1&0\cr0&1}\otimes\pmatrix{0&1\cr1&0}
$$Expandiendo, según la definición de producto tensorial:
$$\pmatrix{
1\times\pmatrix{0&1\cr1&0}&
0\times\pmatrix{0&1\cr1&0}\cr
0\times\pmatrix{0&1\cr1&0}&
1\times\pmatrix{0&1\cr1&0}
}$$Y si simplificamos:
$$\pmatrix{
0&1&0&0\cr
1&0&0&0\cr
0&0&0&1\cr
0&0&1&0
}$$Esto, así de repente, es chino mandarín, y la única manera sensata de comprobar que no nos hemos equivocado es comprobar directamente las transformaciones.
$$(I\otimes X)\vert00\rangle = \pmatrix{
0&1&0&0\cr
1&0&0&0\cr
0&0&0&1\cr
0&0&1&0
} \times \pmatrix {1\cr0\cr0\cr0} = \pmatrix {0\cr1\cr0\cr0} = \vert01\rangle
$$
$$(I\otimes X)\vert01\rangle = \pmatrix{
0&1&0&0\cr
1&0&0&0\cr
0&0&0&1\cr
0&0&1&0
} \times \pmatrix {0\cr1\cr0\cr0} = \pmatrix {1\cr0\cr0\cr0} = \vert00\rangle
$$
$$(I\otimes X)\vert10\rangle = \pmatrix{
0&1&0&0\cr
1&0&0&0\cr
0&0&0&1\cr
0&0&1&0
} \times \pmatrix {0\cr0\cr1\cr0} = \pmatrix {0\cr0\cr0\cr1} = \vert11\rangle
$$
$$(I\otimes X)\vert11\rangle = \pmatrix{
0&1&0&0\cr
1&0&0&0\cr
0&0&0&1\cr
0&0&1&0
} \times \pmatrix {0\cr0\cr0\cr1} = \pmatrix {0\cr0\cr1\cr0} = \vert10\rangle
$$Nuestra matriz, por lo tanto, transforma $00\rightarrow01$, $01\rightarrow00$, $10\rightarrow11$ y $11\rightarrow11$. Esto es, lo que hace es cambiar el estado del bit menos significativo… que era lo que estábamos buscando. Como ejercicio, puede calcular cuál sería la representación en componentes de la matriz $X\otimes I$, que debe invertir el estado del qubit más significativo. Y si quiere adelantarse a la siguiente entrada, pruebe fortuna con $H\otimes H$, donde $H$ es la transformación de Hadamard que ya hemos visto.

Advertencia

Todas las matrices y estados que hemos visto tienen componentes que son o $0$ o $1$. Esto puede llevar a confusión: ese cero es realmente un cero «complejo», y lo mismo se aplica al uno. No pierda de vista, aunque en estos primeros ejemplos no importe mucho, que en vez de ceros y unos, nuestras matrices y vectores pueden contener, y contendrán, números complejos.

Categorías
Quantum

Entrelazamiento

Son dos los fenómenos que hacen de la Mecánica Cuántica una teoría extraña: la superposición y el entrelazamiento. En ambos casos, la explicación más sencilla consiste en mirar las matemáticas.

Superposición

De los dos fenómenos, el más fácil de entender es la superposición, porque es una consecuencia de la linealidad de la ecuación de Schrödinger. Si un sistema puede estar en el estado $\vert\psi\rangle$ y en el estado $\vert\phi\rangle$, teóricamente puede estar también en cualquier estado intermedio $\alpha\vert\psi\rangle + \beta\vert\phi\rangle$. Traducido al mundo de los ordenadores cuánticos: un qubit no sólo puede estar en el estado que nosotros interpretaremos como $0$ y en el estado $1$, sino que puede estar, aunque no lo «veamos» directamente, en cualquier estado situado entre esos dos valores. Por ejemplo, si le aplicamos la transformación de Hadamard a un qubit que está en el estado inicial $\vert0\rangle$, obtenemos el estado mixto $\frac{1}{\sqrt{2}}(\vert0\rangle + \vert1\rangle)$.

Si estamos, por el contrario, en un sistema de $N$ qubits, podemos aplicar una transformada de Hadamard a cada uno de los qubits, y obtendremos una superposición de todos los enteros representables en esos qubits (esto lo veremos en breve). De manera que, si tengo $16$ qubits, puedo tener todos los números del $0$ al $65.535$ representados al mismo tiempo en esos registros. Lo mejor de todo: si le aplico una transformación unitaria a esos $16$ qubits, voy a estar transformando al mismo tiempo los $65.536$ valores posibles, gracias a la linealidad de estas transformaciones. Todo en su momento…

No obstante, lo que estoy diciendo es que matemáticamente es fácil comprender la superposición; no que sea fácil darle un sentido físico a la misma. La superposición es el origen de la famosa paradoja del Gato de Schrödinger, que estaba tanto vivo como muerto hasta el momento en que decidíamos realizar una medición.

Graduum libertatis

Para entender el problema del entrelazamiento, tenemos que comprender cómo funcionan los grados de libertad en un sistema cuántico. Imaginemos una partícula puntual moviéndose dentro de un mundo clásico en tres dimensiones. Un físico describiría la partícula mediante dos vectores: la posición y el impulso de la misma, es decir, la velocidad multiplicada por la masa. Seis componentes.

Ahora supongamos que nuestro universo tiene dos partículas. El físico clásico utilizaría entonces cuatro vectores: dos por cada partícula. En total, doce componentes. Lo que hemos hecho es concatenar dos espacios vectoriales de seis dimensiones. El mundo clásico es así de «sencillo».

$$\mathbb{R}^6 \oplus \mathbb{R}^6 = \mathbb{R}^{12}$$

Pero eso no es lo que hemos hecho al pasar de uno a dos qubits… o mejor, a tres qubits, para evitar confusiones. El estado cuántico de un qubit es $\mathbb{C}^2$, o un espacio proyectivo dentro de éste, si nos ponemos exquisitos. Sin embargo, hemos visto que el estado de dos qubits es $\mathbb{C}^4$, y el de tres qubits, $\mathbb{C}^8$. Aquí no estamos usando la concatenación de espacios vectoriales, sino el (¡ta-dah!) producto tensorial de estos espacios:

$$\mathbb{C}^2 \otimes \mathbb{C}^2 \otimes \mathbb{C}^2 = \mathbb{C}^8$$

Es hora de ponernos serios y explicar qué es eso del…

Producto tensorial de espacios

El producto tensorial de dos espacios vectoriales es un tontería, créame. Supongamos que tenemos un espacio vectorial arbitrario (no necesariamente cuántico) de dimensión $n_1$, con una correspondiente base formada por $n$ vectores, a los que vamos a llamar $e_1, e_2 \cdots e_{n1}$. Ahora vamos a elegir un segundo espacio vectorial… qué narices… voy a multiplicar el espacio consigo mismo, para no tener que inventarme una segunda base. El espacio original se llamaba (se me había olvidado), $V$. No es muy original, pero nos valdrá. Y queremos ver cómo se define el espacio $V \otimes V$.

La idea es definir la base del nuevo espacio como todos los pares posibles de vectores $e_i \otimes e_j$, tal que:

$$i \neq j \rightarrow e_i \otimes e_j \neq e_j \otimes e_i$$

Si el espacio original tenía $n_1$ dimensiones, el espacio producto tiene $n_1 \times n_1$ dimensiones o componentes. Es exactamente lo mismo que vimos en la entrada anterior, pero ahora le ponemos un nombre bonito y una definición más o menos formal.

Nuestro espacio de un qubit tenía dos vectores en la base: $\vert0\rangle$ y $\vert1\rangle$. Por lo tanto, la base de un espacio de dos qubits es la siguiente:

$$\eqalign{
\vert0\rangle \otimes \vert0\rangle &\equiv \vert0\rangle\vert0\rangle \equiv \vert00\rangle \cr
\vert0\rangle \otimes \vert1\rangle &\equiv \vert0\rangle\vert1\rangle \equiv \vert01\rangle \cr
\vert1\rangle \otimes \vert0\rangle &\equiv \vert1\rangle\vert0\rangle \equiv \vert10\rangle \cr
\vert1\rangle \otimes \vert1\rangle &\equiv \vert1\rangle\vert1\rangle \equiv \vert11\rangle}$$

Es decir: lo mismo que ocurría en la entrada anterior, pero ahora tenemos otras dos maneras equivalentes de escribir los vectores de la base.

Toda esta pedantería formal, aclaro, es necesaria para lo que viene a continuación.

Producto tensorial de vectores

Al definir el producto tensorial de dos «espacios» vectoriales, implícitamente definimos también un producto tensorial entre vectores de las bases. Podemos definir un producto tensorial entre «vectores», en vez de espacios, si complementamos el producto tensorial de las bases con el requisito adicional de linealidad. Es decir:

$$\displaylines{(a\vert\phi\rangle + b\vert\psi\rangle) \otimes (c\vert\phi\rangle + d\vert\psi\rangle) \equiv\cr
\quad ac\vert\phi\rangle\vert\phi\rangle + ad\vert\phi\rangle\vert\psi\rangle + bc\vert\psi\rangle\vert\phi\rangle + bd\vert\psi\rangle\vert\psi\rangle}
$$Recuerde que $\vert\phi\rangle\vert\psi\rangle$ es simplemente una abreviatura de $\vert\phi\rangle\otimes\vert\psi\rangle$. Por poner un ejemplo, si multiplicamos uno de los vectores de la base computacional por uno de la base de Hadamard, obtendríamos:

$$\vert0\rangle \otimes \frac{1}{\sqrt 2}(\vert0\rangle + \vert1\rangle) =\frac{1}{\sqrt 2}(\vert00\rangle + \vert01\rangle)
$$Esta operación, en particular, nos permite obtener un vector combinado en el espacio de dos qubits a partir de dos estados independientes en el espacio de un solo qubit.

Ahora sí: entrelazamiento

Supongamos que estamos trabajando con tres qubits:

$$\mathbb{C}^2 \otimes \mathbb{C}^2 \otimes \mathbb{C}^2 = \mathbb{C}^8$$

¿Cuántos números complejos, a bote pronto, necesitamos para representar un estado de este espacio? Si ignoramos la existencia de la equivalencia de fase y el convenio de normalización, necesitaremos ocho números complejos. Si tenemos en cuenta que el espacio de estados es realmente un estado proyectivo, en realidad necesitamos siete números complejos.

Podemos definir algunos estados en $\mathbb{C}^8$ componiendo tensorialmente estados independientes de un qubit. La gran pregunta que tenemos que hacernos es: ¿nos basta esta composición de vectores independientes para generar todos los elementos de $\mathbb{C}^8$? La respuesta es un rotundo no.

Un estado de un qubit se representa mediante dos valores reales o, alternativamente, un valor complejo. Incluso si ignoramos las equivalencias de fase y la normalización, hay sólo dos complejos en cada qubit. Tres qubits, explicados independientemente, nos dan un total bruto de seis valores complejos, que en neto son realmente tres complejos. Ni de broma alcanzamos a cubrir todas las descripciones basadas en siete números complejos que hacen falta para tres qubits. Lo podemos enmarcar en un cuadro y colgarlo en la pared de la oficina:

Hay más estados en un sistema de $N$ qubits que los que se pueden describir especificando estados independientes para cada qubit.

He empezado con el caso de los tres qubits para evitar confusión debida a que $2^2=2+2$. Pero cuando hay dos qubits ocurre lo mismo: tratados independientemente, necesitamos cuatro valores reales, o dos complejos. Tratados en conjunto, necesitamos tres complejos o seis reales.

Si este razonamiento top-down no le convence, probemos uno bottom-up. Consideremos este estado de dos qubits:

$$\frac{1}{\sqrt 2}(\vert00\rangle+\vert11\rangle)$$Le reto a encontrar dos estados de un qubit que, multiplicados tensorialmente, den lugar a este estado de dos qubits. Veamos la definición de producto tensorial de vectores:

$$\displaylines{(a\vert0\rangle + b\vert1\rangle) \otimes (c\vert0\rangle + d\vert1\rangle) \equiv\cr
\quad ac\vert00\rangle + ad\vert01\rangle + bc\vert10\rangle + bd\vert11\rangle}
$$Si queremos que se anulen los estados $01$ y $10$, necesitamos que $ad=bc=0$. Pero cualquier combinación que consiga esto, también conseguirá que se anulen los otros dos términos. La conclusión: no podemos explicar este estado descomponiéndolo en qubits independientes.

Medición entrelazada

¿Qué ocurre si realizamos una medición sobre un estado entrelazado como $\frac{1}{\sqrt 2}(\vert00\rangle+\vert11\rangle)$? Tenemos una combinación lineal de dos de los cuatro vectores propios, o eigenvectors, del espacio de estados. Por lo tanto, la medición no será determinista. Podemos obtener tanto el estado $\vert00\rangle$ como $\vert11\rangle$, y la probabilidad de obtener cualquiera de ellos es la misma.

Lo interesante es que, si obtenemos un $1$ en el primer qubit, no necesitamos mirar el contenido del segundo qubit: por fuerza, tiene que ser otro $1$. Lo mismo ocurre si recibimos un $0$ en uno de los qubits: el otro tendrá el mismo valor. Si estamos pensando en un ordenador cuántico, en el que los qubits están muy cercanos físicamente, esto puede que no nos sorprenda. Pero nadie ha dicho que los qubits tengan que estar uno al lado del otro. Uno de ellos puede estar en la Tierra y el otro en el planeta Raticulín.

Esta es una variante más o menos abstracta de la famosa paradoja de Einstein-Podolsky-Rosen, o paradoja EPR.

Dependencia de la base

¿Hay algo intrínseco en un estado cuántico dado que nos permita asegurar que es un estado superpuesto o entrelazado? Resulta que no: tanto la superposición como el entrelazamiento son fenómenos que dependen de la elección de una base. Por ejemplo, el estado $\frac{1}{\sqrt 2}(\vert00\rangle+\vert11\rangle)$ es un estado entrelazado para mediciones en la base computacional. Pero si vamos a realizar la medición en la llamada base de Bell, para sistemas de dos qubits, el estado anterior es un «estado puro». El truco está en que la base de Bell se define de esta manera:

$$\eqalign{
\vert\Phi^{+}\rangle =& \frac{1}{\sqrt 2}(\vert00\rangle+\vert11\rangle) \cr
\vert\Phi^{-}\rangle =& \frac{1}{\sqrt 2}(\vert00\rangle-\vert11\rangle) \cr
\vert\Psi^{+}\rangle =& \frac{1}{\sqrt 2}(\vert01\rangle+\vert10\rangle) \cr
\vert\Psi^{-}\rangle =& \frac{1}{\sqrt 2}(\vert01\rangle-\vert10\rangle)
}$$No obstante, en la base de Bell también habrá estados entrelazados. En realidad, volveremos a tener más estados entrelazados que estados descomponibles.

Categorías
Quantum

Shave and a haircut

Vamos a generalizar el concepto de estado cuántico y de transformación unitaria a sistemas de más de un qubit. Este es el momento en que los libros entran en un pequeño berenjenal llamado producto tensorial. Nosotros necesitaremos, por supuesto, saber cómo funciona el producto tensorial, pero vamos a introducir el tema de forma gradual y, espero, más intuitiva. Comenzaremos con el estado de un sistema con sólo dos qubits.

Two qubits

Ya sabemos que el estado de un sistema de $N$ qubits es un vector complejo en $\mathbb{C}^{2^N}$, con $2^N$ componentes. Un qubit tiene dos componentes, dos qubits, cuatro; tres qubits tienen ocho componentes y diez, mil veinticuatro. No hay nada sorprendente ni esotérico en que aparezca una exponencial en nuestras cuentas. Diez bits clásicos también dan para representar hasta 1024 valores. Pero es cierto que diez qubits tienen infinitamente más estados internos que su contrapartida clásica, como veremos en breve.

Esto también significa que la base vectorial de un sistema de $N$ qubits tiene $2^N$ vectores. En el caso de un qubit, teníamos una base con dos vectores, los ya familiares $\vert0\rangle$ y $\vert1\rangle$. Con dos qubits, vamos a tener una base de cuatro vectores, y vamos a denominarlos así:

$$\vert00\rangle, \vert01\rangle, \vert10\rangle, \vert11\rangle$$Cualquier estado del sistema de dos qubits, entonces, puede describirse como una combinación lineal de estos cuatro vectores:

$$\vert\psi\rangle = c_{00}\vert00\rangle+c_{01}\vert01\rangle+c_{10}\vert10\rangle+c_{11}\vert11\rangle$$En notación matricial, por ejemplo, el estado $\vert00\rangle$ se representaría:

$$\pmatrix{1\cr 0\cr 0\cr 0}$$Como esta notación consume mucho espacio vertical, a veces representaremos este vector mediante su transpuesta (no su transpuesta conjugada):

$$\pmatrix{1&0&0&0}^T$$Tenemos que tener cuidado en cómo interpretamos la notación matricial. Por ejemplo, el vector $\vert11\rangle$ corresponde a esta matriz:

$$\pmatrix{0\cr 0\cr 0\cr 1}\quad\text{ó}\quad\pmatrix{0&0&0&1}^T$$Para poder usar la notación matricial es necesario acordar un orden en los vectores de la base. Lo que hemos hecho es utilizar implícitamente el llamado orden lexicográfico o de diccionario. El otro detalle a cuidar es el orden de los ceros y unos en vectores como $\vert01\rangle$ y $\vert10\rangle$. Nosotros siempre consideraremos que el primer qubit es el de más a la derecha.

Una forma alternativa de escribir estos vectores de la base es dejándonos de pamplinas, y traduciendo las cadenas de bits a notación decimal:

$$\vert0\rangle, \vert1\rangle, \vert2\rangle, \vert3\rangle$$La desventaja de esta notación es que hace falta tener muy claro el número de qubits en el sistema. Por ejemplo, $\vert3\rangle$ podría significar $\vert11\rangle$ en nuestro sistema de dos qubits, pero también $\vert0011\rangle$ en un ordenador de cuatro. En ocasiones, para evitar esta incertidumbre, escribiremos cosas como $\vert3\rangle_2$ o incluso $\vert3\rangle_N$, para dejar claro el número de qubits del sistema.

Potencias de dos

El número $4$ es bastante engañoso, porque $4 = 2+2 = 2\times2 = 2^2$. ¿Qué tamaño tiene el espacio de estado de un sistema, digamos, de cuatro qubits? El espacio vectorial subyacente es $\mathbb{C}^{2^4}$, es decir, $\mathbb{C}^{16}$, y la base vectorial tendrá $16$ elementos:

$$\displaylines{\vert0\rangle, \vert1\rangle, \vert2\rangle, \vert3\rangle, \vert4\rangle, \vert5\rangle, \vert6\rangle, \vert7\rangle,\cr
\vert8\rangle, \vert9\rangle, \vert \text{A}\rangle, \vert \text{B}\rangle, \vert \text{C}\rangle, \vert \text{D}\rangle, \vert \text{E}\rangle, \vert {F}\rangle}$$Esta vez he abreviado el contenido de los kets usando la notación hexadecimal, pero podía haber usado igualmente notación binaria o decimal, siempre que estuviese claro el contexto.

Lo importante en este punto es tener claro que cualquier espacio de estados en un ordenador cuántico va a tener una base cuyo tamaño es una potencia de dos. Esto importa porque, al diseñar algunos algoritmos como la Transformada Cuántica de Fourier, utilizaremos técnicas como “divide y vencerás”, que funcionan mejor cuando se trabaja sobre potencias de dos.

La insoportable gravedad del ser

Imaginemos que hay que simular un ordenador cuántico mediante un ordenador clásico. Supongamos que queremos simular 100 qubits. ¿Cuán difícil es? $2^{10}$ es $1.024$, pero $2^{100}$ es este monstruo:

$$1.267.650.600.228.229.401.496.703.205.376$$O, en notación científica decimal, 1,267E30. Ese es el número de componentes complejos en un simple estado cuántico. Ahora bien, la programación cuántica tiene una buena parte que consiste en multiplicar matrices o aplicar matrices a un estado cuántico. Calcule por su cuenta el tamaño de una matriz de transformación para un estado cuántico como el descrito.

Los ordenadores cuánticos más grandes en estas fechas tienen unos 50 qubits. $2^{50}$ es aproximadamente un 1 seguido de 15 ceros. Un mega son seis ceros, el giga, nueve y el tera, doce. Necesitamos mil teras para representar el estado cuántico completo. Es decir, un peta.

En la siguiente entrada, intentaré justificar cómo es posible este tipo de monstruosidades, y de paso, le presentaré el formalismo de los productos tensoriales.

Categorías
Quantum

Transformaciones unitarias

Un algoritmo cuántico funciona partiendo de un estado inicial en el que todos los qubits están en el estado $\vert 0\rangle$. A partir de ese punto, el estado se transforma mediante matrices, que se implementan físicamente como circuitos lógicos. El objetivo del algoritmo es llevar el estado cuántico a determinado valor. Entonces se realiza una medición.

La «explicación» anterior no «explica» mucho en este momento, pero necesitaba incluirla para saber en qué parte nos encontramos, y hacia dónde vamos. En esta entrada comenzaremos a ver las transformaciones más sencillas que afectan al estado cuántico: aquellas que solamente afectan un qubit cada vez.

Rotaciones complejas

Sabemos que el estado cuántico es un vector complejo. En el caso de un solo qubit, el vector tiene dos componentes. Veremos más adelante que, para $N$ qubits, tendremos $2^N$ componentes. Es fácil ver que, si queremos transformar estos vectores, necesitamos matrices complejas. Lo importante es qué tipo de matrices nos valen: necesitamos matrices unitarias, que son el equivalente de las rotaciones (matrices ortogonales) en un espacio vectorial complejo.

Matemáticamente, si tenemos una matriz compleja $U$, y llamamos $U^*$ a su transpuesta conjugada (cambiamos filas y columnas e invertimos el signo de las partes imaginarias), entonces la matriz es unitaria si se cumple:
$$UU^* = I$$donde $I$ es la matriz identidad. Es decir: toda matriz unitaria tiene una inversa (que es su transpuesta conjugada, en concreto). Este es un detalle importante: un estado cuántico regido por la ecuación de Schrödinger es simétrico respecto al paso del tiempo. Toda transformación cuántica que no implique una medición tiene que ser reversible.

Una propiedad interesante que tienen las matrices unitarias es que preservan el producto escalar entre dos vectores arbitrarios:

$$\langle U\phi\vert U\psi\rangle = \langle\phi\vert\psi\rangle$$Como el producto escalar es proporcional al ángulo entre dos vectores (ángulos complejos, en este caso), tenemos entonces que las matrices unitarias respetan el ángulo entre vectores. La experiencia en tres dimensiones reales nos dice que las rotaciones, precisamente, son las transformaciones que respetan los ángulos. En particular, si se preserva el producto escalar, también se preservará la longitud de los vectores transformados:

$$\vert\vert U\psi\vert\vert = \vert\vert\psi\vert\vert$$

Matrices de Pauli

Ahora tenemos que aprendernos un pequeño repertorio de matrices que actúan sobre un qubit. Las tres primeras matrices que veremos se conocen como matrices de Pauli, y la forma más fácil de recordarlas es utilizar la esfera de Bloch como recurso mnemotécnico:

Hay tres ejes espaciales en esta representación, y a cada uno de ellos le corresponde una matriz: $X$, $Y$ y $Z$. Cada una de ellas representa una rotación de 180 grados alrededor del eje correspondiente. Ojo: estoy hablando de rotaciones en el espacio de la esfera de Bloch, no en el espacio vectorial complejo.

Por ejemplo, la matriz $X$ gira 180 grados el estado cuántico alrededor del eje $X$. Como da la casualidad de que nuestra base computacional está alineada según el eje $Z$, esta transformación transforma el polo norte, el estado $\vert 0\rangle$, en el polo sur $\vert 1\rangle$ y viceversa. En el espacio vectorial complejo, esto equivale a intercambiar los dos componentes complejos, por lo que no nos debe extrañar que la matriz $X$ se escriba de esta manera en la base computacional:

$$X=\pmatrix{0&1\cr 1&0}$$Machaquemos esta información para estar seguro de entenderla. Imaginemos que el estado cuántico en un momento dado es, en la notación de Dirac:

$$\alpha\vert 0\rangle + \beta\vert 1\rangle$$Si le aplicamos la matriz $X$ a este vector, obtenemos un estado con los componentes intercambiados:

$$\beta\vert 0\rangle + \alpha\vert 1\rangle$$Ahora repitamos el cálculo, pero usando directamente la notación matricial:

$$\pmatrix{0&1\cr 1&0} \times \pmatrix{\alpha\cr\beta} = \pmatrix{\beta\cr\alpha}$$Son dos maneras equivalentes de expresar la misma operación.

¿Qué operación clásica convierte los ceros en unos y viceversa? La negación lógica, por supuesto. Podemos entonces considerar que $X$ es la negación dentro de nuestro repertorio de operaciones cuánticas.

Hemos elegido como negación la rotación alrededor del eje $X$, pero podríamos haber elegido también la rotación alrededor de $Y$. Pero no lo hicimos, porque la representación de $Y$ en la base computacional es un poco más complicada:

$$Y=\pmatrix{0&-i\cr i&0}$$Observe que yo no le estoy explicando que la rotación alrededor del eje $Y$ en el espacio de Bloch se corresponde realmente a la matriz que estoy presentando. No es difícil de demostrar, pero para abreviar, se lo dejo de momento a su cargo. Lo que ahora nos interesa es si de verdad esta forma tan rara con números imaginarios es realmente una negación. En realidad, es equivalente solamente cuando se trata de transformar los polos. Pero cualquier otro vector dará un vector con una fase rotada. Simplemente, vamos a preferir $X$ como forma estándar de negación.

La tercera matriz de Pauli es, naturalmente, la matriz $Z$:

$$Z=\pmatrix{1&0\cr 0&-1}$$Obviamente, si aplicamos una rotación de 180 grados alrededor del eje $Z$ a uno de los polos, nos quedaremos como al principio.

La transformación de Hadamard

Las tres matrices de Pauli sólo nos permiten, de momento, movernos de un polo al otro. ¿Qué tal si quisiéramos mover el estado cuántico al ecuador de la esfera de Bloch? Para eso necesitaremos una de las transformaciones más populares en computación cuántica: la transformación de Hadamard, o de Walsh-Hadamard.

$$H=\frac{1}{\sqrt{2}}\pmatrix{1&1\cr 1&-1}$$Veamos qué efecto tiene esta transformación sobre los vectores de la base computacional:

$$\eqalign{
\frac{1}{\sqrt{2}}\pmatrix{1&1\cr 1&-1}\times\pmatrix{1\cr 0} =& \frac{1}{\sqrt{2}}\pmatrix{1\cr 1} \cr
\frac{1}{\sqrt{2}}\pmatrix{1&1\cr 1&-1}\times\pmatrix{0\cr -1} =& \frac{1}{\sqrt{2}}\pmatrix{1\cr -1}}
$$Utilizando la notación de Dirac:

$$\eqalign{
H\vert 0\rangle =& \frac{1}{\sqrt{2}}(\vert0 \rangle + \vert1 \rangle)\cr
H\vert 1\rangle =& \frac{1}{\sqrt{2}}(\vert0 \rangle – \vert1 \rangle)
}$$O, si recordamos la definición de la base de Hadamard:

$$\eqalign{
H\vert 0\rangle =& \vert+ \rangle\cr
H\vert 1\rangle =& \vert- \rangle
}$$Es decir: la transformación de Hadamard mueve los polos a puntos situados en el ecuador de la esfera de Bloch y alineados con el eje $X$.

Como ejercicio, puede comprobar qué ocurre cuando se le aplica la matriz $X$ a los vectores de la base de Hadamard. No olvide la existencia del fenómeno de la equivalencia de fase: si multiplica los dos componentes por un vector unitario, el estado cuántico que se obtiene es indistinguible del original.

¿Unitarias o hermitianas?

Las cuatro matrices que hemos visto comparten una característica que, aunque no tiene mayor importancia, puede provocar confusión. Las hemos presentado aquí porque son matrices unitarias. Por ejemplo, se cumple que:

$$X^* X = I$$Pero al mismo tiempo, ¡las cuatro matrices son hermitianas o auto-adjuntas! Esto es:

$$X^* = X$$… y, por lo tanto:

$$XX = I$$Recuerde que los operadores hermitianos, en Mecánica Cuántica, se utilizan para definir observables, al ser operadores con valores propios siempre reales. Esto tiene alguna importancia en Física. Pero en Computación Cuántica casi siempre utilizaremos la base computacional, y la coincidencia no tiene mayor consecuencia. Sólo la menciono para no confundir el concepto de operador unitario con el de operador hermitiano.

Categorías
Quantum

La esfera de Bloch

Hemos quedado en que el estado de un qubit necesita dos números complejos para representarse. Pero cada número complejo tiene una parte real y otra imaginaria, por lo que en total tenemos cuatro valores reales para cada qubit. ¿Son imprescindibles todo? Parece que no, porque ya conocemos la condición de normalización: $\alpha\alpha^* +\beta\beta^*=1$. Con esta condición, podríamos utilizar solamente tres valores reales, y deducir el cuarto a partir de la normalización.

Equivalencia de fase

En realidad, el estado de un qubit aislado puede representarse con solamente dos números reales. Insisto:

  • El estado de un qubit aislado puede representarse con dos números reales.

Pongo el énfasis en el aislamiento del qubit: cuando tengamos sistemas de más de un qubit, tendremos que volver a la representación con tres valores reales, por culpa del entrelazamiento. Pero en lo que sigue, asumiremos que estamos tratando con un solo qubit suficientemente aislado del resto del universo.

¿De dónde sale la redundancia adicional? Pues del mismo hecho de que estamos tratando en realidad con lo que los matemáticos llaman un espacio proyectivo. A la Naturaleza no le interesan los vectores complejos individuales, sino clases de equivalencia dentro de ese espacio vectorial. Una de esas clases de equivalencia viene dada por la posibilidad de multiplicar un vector complejo por una «fase global». La fase recibe ese nombre de la representación de un número complejo en coordenadas polares:
$$x + iy \equiv \rho\cos\theta + i\rho\sin\theta
$$Haciendo uso de la fórmula de Euler, podemos simplificar la identidad anterior de esta manera:
$$x + iy \equiv \rho e^{i\theta}
$$Al radio $\rho$ se le llama, entre muchos otros nombres, la magnitud, módulo o valor absoluto del número complejo. Al ángulo $\theta$ se le conoce como fase o argumento. Nos quedaremos con «fase».

La idea de la equivalencia de fase es que podemos multiplicar cualquier estado cuántico por una cantidad de la forma $e^{i\phi}$ sin que la multiplicación tenga consecuencias observables. Supongamos que tenemos un estado $\pmatrix{\alpha\cr\beta}$. Si las amplitudes están normalizadas, al realizar una medición tendremos una probabilidad $\alpha\alpha^* $ de medir el estado $\vert 0\rangle$, y $\beta\beta^* $ de medir $\vert 0\rangle$. Si sustituimos $\alpha$ por $\alpha e^{i\phi}$ la primera probabilidad será $\alpha e^{i\phi}(\alpha e^{i\phi})^* $, es decir, $\alpha\alpha^* e^{i\phi}e^{-i\phi}$.

Puede que no vea a la primera, si no ha usado números recientemente, por qué uno de los exponentes cambia su signo. Recuerde que estamos calculando la conjugada de la fase, y que la conjugada sólo cambia el signo de la parte imaginaria. Como la parte imaginaria, según la fórmula de Euler, es $i$ multiplicada por un seno, al invertir el signo del ángulo, invertimos la parte imaginaria. La parte real es un coseno, por lo que el cambio de signo no le afecta. Al final, encontraremos que $\alpha\alpha^* e^{i\phi}e^{-i\phi}$ es igual a $\alpha\alpha^* $, ¡que es exactamente la probabilidad antes de la multiplicación por una fase!

Coordenadas polares

Para aprovechar esta equivalencia, vamos a describir explícitamente un estado con sus amplitudes en coordenadas polares:
$$
\pmatrix{\alpha\cr\beta} = \pmatrix{\vert\alpha\vert e^{i\phi_\alpha}\cr\vert\beta\vert e^{i\phi_\beta}}
$$¿Qué tal si multiplicamos ambas amplitudes por la fase inversa a la fase original de $\alpha$, es decir, por $e^{-i\phi_\alpha}$?
$$
\pmatrix{\alpha\cr\beta} \cong \pmatrix{\vert\alpha\vert\cr\vert\beta\vert e^{i(\phi_\beta – \phi_\alpha)}} =
\pmatrix{\vert\alpha\vert\cr\vert\beta\vert e^{i\phi}}
$$Con esta multiplicación, hemos conseguido que la primera amplitud sea directamente un número real, aunque la segunda amplitud siga siendo un complejo. Pero sabemos, además, que las amplitudes están normalizadas. Por lo tanto, podemos permitirnos sustituir $\vert\alpha\vert$ por $\cos\frac{\theta}{2}$ y $\vert\beta\vert$ por $\sqrt{1 – \vert\alpha\vert^2}$… es decir, por $\sin\frac{\theta}{2}$. He elegido usar $\frac{\theta}{2}$ en vez de $\theta$ directamente por motivos geométricos que veremos enseguida. Con todo esto, hemos conseguido representar el estado de cualquier qubit aislado de la siguiente manera:
$$
\cos\frac{\theta}{2}\vert 0\rangle + e^{i\phi}\sin\frac{\theta}{2}\vert 1\rangle
$$Es decir, para representar un qubit sólo necesitaremos dos valores reales, $\theta$ y $\phi$, que podemos interpretar como dos ángulos dentro de los siguientes rangos:
$$
\eqalign{
\theta\in& [0, \pi]\cr
\phi\in& [0, 2\pi]
}
$$Si recuerda algo de geometría analítica, estos dos ángulos más un radio forman un sistema de coordenadas polares en el espacio tridimensional.

La esfera de Bloch

Podemos, por lo tanto, representar visualmente el estado cuántico de un qubit aislado como un punto dentro de una esfera de radio unitario, como en la siguiente imagen:

En esta representación, la coordenada $\theta$ es la latitud, relativa al polo norte (no al ecuador), y $\phi$ es la longitud, tomando como punto de partida el eje $X$. Hay un problema con las coordenadas polares, en general, que también aparece aquí: la longitud en el polo norte y en el polo sur no está definida. Eso no es un problema, en la práctica.

¿Dónde caen los dos vectores de la base computacional? Pues resulta que $\vert 0\rangle$ es el punto $\lbrace\theta=0, \phi=0\rbrace$, precisamente el polo norte, y $\vert 1\rangle$ es $\lbrace\theta=\pi, \phi=0\rbrace$, el polo sur. He puesto que $\phi$ es cero en estos dos puntos, pero da igual lo que pongamos.

¿Recordáis que en la entrada sobre mediciones, llamamos $M_Z$ al operador de medición de la base computacional? Ahora ya puedo explicar de dónde sale la $Z$: la base computacional se representa como puntos antípodas orientados a lo largo del eje $Z$. En general, cualquier par de puntos antípodas sobre la esfera corresponden a vectores de una posible base. Esto es: serían siempre vectores de longitud unitaria perpendiculares entre sí.

Cabe preguntarse entonces si los puntos antípodas orientados a lo largo del eje $X$ y del eje $Y$ tienen alguna aplicación, o al menos, algún nombre especial. Y sí, tienen ambas cosas:
$$
\eqalign{
\vert+\rangle =& \lbrace\theta=\frac{\pi}{2}, \phi=0\rbrace\quad\text{eje X} \cr
\vert-\rangle =& \lbrace\theta=\frac{\pi}{2}, \phi=\pi\rbrace \cr
\vert i\rangle =& \lbrace\theta=\frac{\pi}{2}, \phi=\frac{\pi}{2}\rbrace\quad\text{eje Y} \cr
\vert-i\rangle =& \lbrace\theta=\frac{\pi}{2}, \phi=\frac{3\pi}{2}\rbrace}
$$En especial, la base orientada a lo largo del eje $X$ en la esfera de Bloch se conoce como base de Hadamard, y es muy importante en los algoritmos cuánticos. En la base computacional, los vectores de la base de Hadamard son:
$$
\eqalign{
\vert+\rangle =& \frac{1}{\sqrt{2}}(\vert 0\rangle + \vert 1\rangle) \cr
\vert-\rangle =& \frac{1}{\sqrt{2}}(\vert 0\rangle – \vert 1\rangle)
}
$$

Categorías
Quantum

Historia de un qubit

Veamos ahora cómo representar un qubit utilizando la menor redundancia posible. Sabemos que el estado de un qubit es, por definición, un vector en $\mathbb{C}^2$. Eso significa que necesitamos dos componentes complejos para representar su estado. Por motivos histórico, se suele usar la letra $\psi$ para denotar el estado cuántico. Por lo tanto y resumiendo:
$$\displaylines{
\vert\psi\rangle = \alpha\vert 0\rangle + \beta\vert 1\rangle \cr
\alpha, \beta \in \mathbb{C}}
$$A los componentes complejos del estado cuántico se les suele llamar amplitudes, como recuerdo de que en la metodología original de Schrödinger, $\psi$ se conoce como «función de onda».

Observad que, sin decir nada, he hecho que los componentes vayan automáticamente asociados a la base formada por los vectores $\vert 0\rangle$ y $\vert 1\rangle$. Los componentes de un vector siempre tienen que referirse a una base concreta, y la base universalmente utilizada en Quantum Computing es la base anterior, conocida como «base computacional». Estos dos vectores son especiales porque son los vectores propios, o eigenvectors, del operador de medición que transforma un qubit en un bit clásico.

Ahora bien, ya he mencionado que, en realidad, el estado cuántico es un rayo dentro del espacio vectorial complejo. Es decir, todos los estados que apuntan en la misma dirección son físicamente equivalentes. Por convenio, y para simplificar la forma de calcular, nos interesa elegir el vector dentro del rayo cuya longitud es la unidad. Por lo tanto, vamos a exigir que nuestras amplitudes cumplan con esta condición adicional:
$$\alpha\alpha^* +\beta\beta^*=1$$No olvidemos, ni por un momento, que tanto $\alpha$ como $\beta$ son números complejos. Por este motivo, no elevamos simplemente al cuadrado cada amplitud, sino que tenemos que multiplicarlas por sus valores conjugados, si queremos que la suma de los cuadrados de las amplitudes sea un valor real.

Notación matricial

Hay programadores ninjas que se buscan directamente la vida con la notación de Dirac y pueden hacer todos los cálculos necesarios directamente con ella. La mayoría de los mortales, en cambio, lo vemos todo más claro si utilizamos la notación matricial de toda la vida. ¡Ojo!, de momento estamos tratando con vectores, y las matrices cuadradas propiamente dichas aparecerán en breve, pero en esta notación, un vector puede representarse como una matriz vertical, de dos filas y una columna:
$$\vert\psi\rangle = \pmatrix{\alpha \cr \beta}$$La ventaja de esta notación es que nos permite omitir la base: implícitamente, se refiere a la base computacional. Por lo tanto, es una notación mucho más compacta. Otra ventaja es que nos permite entender por otra vía de qué va todo ese rollo de los bras, los kets y eso del «espacio vectorial dual». Hemos visto, por ejemplo, que un ket es una matriz vertical. Resulta, entonces, que un bra es simplemente una matriz horizontal:
$$\langle\psi\vert = \pmatrix{\alpha^* & \beta^* }$$Por supuesto, para pasar del ket al bra hemos tenido que conjugar las amplitudes. Con esta notación, además, el producto escalar se calcula muy fácilmente:
$$\eqalign{
\langle\psi\vert\psi\rangle =& \pmatrix{\alpha \cr \beta} \times \pmatrix{\alpha^* & \beta^* } \cr
=& \pmatrix{ \alpha\alpha^* +\beta\beta^* }
}$$Aquí tenemos que recordar las reglas del álgebra lineal: si multiplicamos una matriz $m\times n$ por otra $n\times p$, el resultado es una matriz $m\times p$. Nosotros hemos multiplicado una matriz $1 \times 2$ por una $2\times 1$, por lo que el resultado es una matriz de $1\times 1$. Una sola celda, es decir, un escalar o valor numérico a secas.

El cero no es cero-cero

A esta parte le pongo un subtítulo separado porque es importante. ¿Cómo se representan, usando componentes, los dos vectores de la base computacional?
$$\vert 0\rangle \equiv \pmatrix{1 \cr 0}\quad\vert 1\rangle \equiv \pmatrix{0 \cr 1}$$Esto es extremadamente simple, pero la experiencia personal me dice que es fácil confundirse y creer que el vector del estado $\vert 0\rangle$ tiene sus componentes a cero.

De hecho, el vector $\pmatrix{0 \cr 0}$ no es un estado cuántico correcto.

Categorías
Quantum

La polarización de la luz

En mi opinión, esta es la entrada más importante para entender lo necesario antes de pasar ya a la Computación Cuántica. Por favor, cualquier duda, como ya he dicho, pasádmela en los comentarios o directamente a mi email. Aquí vamos a mostrar un experimento en el que veremos:

  • El estado cuántico de un sistema físico muy sencillo, similar en muchas cosas a cómo funciona un qubit.
  • Un «aparato de medición» que implementa un observable cuántico.
  • Cómo la elección de una base depende del aparato de medición y su configuración.
  • Qué ocurre cuando se repite una medición.
  • La regla de Born en acción.

El «experimento», en sí, está grabado en el siguiente vídeo. No he narrado el vídeo, para no alargarlo innecesariamente. Todas las explicaciones van el texto que sigue a continuación:

Nuestro estado cuántico

Para el experimento, he utilizado una lámpara de sal rosa del Himalaya. Bueno, eso es lo que cree mi mujer. Yo creo que está hecha de caca de yeti. Entre los yetis y los yaks, tienen todas las cumbres del Himalaya cubiertas de estiércol. Hay incluso un país, Bután, que se ha hecho famoso por sus exportaciones de… adivine… ¡butano!, que se produce al fermentar todo este jaleo. De hecho, los butaneros españoles visten uniforme naranja en homenaje a los monjes budistas del Bután.

En realidad, la lámpara del yeti no tiene nada de especial. Podíamos haber usado casi cualquier fuente de luz natural. Pero en Madrid hacía mal tiempo, y he querido asegurarme de tener suficiente luz para la prueba. Lo importante es que parte del estado de cada fotón es una dirección espacial a la que llamamos polarización. En la época pre-cuántica, esto se explicaba postulando que la luz era una vibración transversal, como la de una cuerda de violín, y la polarización se entendía como la dirección transversal en la que vibraba la cuerda. No era una interpretación gratuita: según las ecuaciones de Maxwell, efectivamente, la luz se propaga como oscilaciones transversales de los campos eléctricos y magnéticos, con la propiedad adicional de que estos dos campos oscilan formando un ángulo de 90º.

Los fotones que salen del Sol y de la lámpara de caca de yeti no tienen una polarización preferente. Cada fotón, individualmente, puede estar oscilando en cualquier dirección transversal a su línea de propagación. Hay que tener presente que una dirección y la dirección opuesta en 180º actúan de la misma manera si sólo tenemos en cuenta la polarización. Existe otra variable en el estado cuántico, que es la fase, que ignoraremos en este experimento.

El filtro polarizador

Un filtro polarizador es una lámina semitransparente que deja pasar solamente los fotones que oscilan en una dirección determinada (o en la dirección opuesta). Al menos, esta es la interpretación clásica, que tendremos que refinar un poco para tener en cuenta los fenómenos puramente cuánticos. Por ejemplo:

  • El filtro actúa fotón a fotón, no colectivamente.
  • Supongamos que el filtro está orientado verticalmente. Si le llega un fotón orientado a 0º (respecto a la dirección vertical), el fotón pasa. Si llega un fotón polarizado a 90º, el fotón no pasa ni sobornando al portero.
  • ¿Qué pasa, sin embargo, cuando el fotón está «polarizado a 45º»?

Tenemos que empezar a pensar cuánticamente para obtener la respuesta correcta. El filtro es un aparato de medición, y como tal, define un operador autoadjunto sobre el estado cuántico. Eso significa que el filtro induce una base vectorial en $\mathbb{C}^2$ formada por dos vectores. Vamos a llamar a esos dos vectores $\vert\uparrow\rangle$ y $\vert\rightarrow\rangle$. Entonces, podemos encontrar fotones en cada uno de estos casos, entre muchos otros:
$$
\eqalign{
\vert\uparrow\rangle&\quad 0º\cr
\vert\rightarrow\rangle&\quad 90º\cr
\frac{1}{\sqrt{2}}\vert\uparrow\rangle + \frac{1}{\sqrt{2}}\vert\rightarrow\rangle&\quad45º
}$$Cuando el filtro está orientado verticalmente, los fotones con estado $\vert\uparrow\rangle$ pasan sin problemas, y los que están en estado $\vert\rightarrow\rangle$ se bloquean. Si un fotón está polarizado en 45º, la Naturaleza, o Azatoth, o quien usted prefiera, tira una moneda y lo deja pasar con una posibilidad de $\frac{1}{2}$. Si el estado es más complicado, como en este caso:
$$
\alpha\vert\uparrow\rangle + \beta\vert\rightarrow\rangle
$$el fotón pasará con una probabilidad igual a:
$$
\frac{\alpha^2}{\alpha^2 + \beta^2}
$$Y si nos dan el estado con $\alpha$ y $\beta$ normalizados, la posibilidad de que el fotón supere la prueba es, simplemente, $\alpha^2$.

Esto se repite fotón por fotón. Si la distribución de las polarizaciones es uniforme, podemos hacer el cálculo exacto de cuál es la esperanza $\mathbb{E}$ del porcentaje de fotones que supera el filtro. No he hecho el cálculo: os lo dejo como ejercicio. En cualquier caso, el efecto será que la luz se atenúa un poco al pasar por el filtro, porque una parte de los fotones no sobreviven a la prueba. En el vídeo, hago rotar la orientación del filtro para que veáis que da igual la orientación de este primer filtro. Cada ángulo de rotación implica una base diferente para el estado cuántico, pero al final, el número de fotones que pasan es el mismo.

Colapso

El filtro polarizador colapsa el estado cuántico inicial.

A los físicos no les gusta la frase anterior, por lo general, pero es la mejor forma que conozco de explicar cómo funciona la medición en un sistema cuántico. Todos los coeficientes $\beta$ de los fotones desaparecen, porque todos los fotones que pasan el filtro se quedan en el estado $\vert\uparrow\rangle$. No solamente eso, sino que cualquier información codificada en la distribución previa de los estados de polarización desaparece tras aplicar el filtro. Todos los fotones que forman el rayo de salida del filtro están alineados verticalmente (respecto a la orientación del filtro), como buenos soldaditos.

Un segundo filtro

Para comprobar la afirmación anterior, vamos a introducir un segundo filtro en el experimento. En el vídeo, hago girar el segundo filtro respecto al primero. Cuando los dos filtros están alineados, el vector propio favorecido por el segundo filtro es idéntico al primero. ¡Y todos los fotones que salen del primero ya están alineados en esa dirección! O dicho equivalentemente: están en el estado cuántico apropiado. Por supuesto, no se nota que hay un segundo filtro.

Pero si roto el segundo filtro noventa grados, la luz se bloquea. ¿Por qué? Pues porque en la base de vectores propios inducida por el segundo filtro, todos los fotones del primer filtro están en el estado $\vert\rightarrow^\prime\rangle$. Es decir, están todos los fotones en el estado desafortunado.

Observad que he puesto un acento $\prime$ tras la flecha horizontal del estado. Esto es porque tenemos dos bases vectoriales: la del primer filtro y la del segundo. Si uso la misma notación para las dos bases, nos vamos a confundir. Con este convenio, $\vert\uparrow\rangle$ es el primer vector de la base del primer filtro, y $\vert\uparrow^\prime\rangle$ es el primer vector de la base del segundo. Y así sucesivamente.

Por supuesto, si el ángulo relativo de rotación entre los filtros es cualquier otro valor intermedio, vamos a conseguir que la luz se atenúe, sin bloquearse completamente. No hay nada paradójico ni (creo) difícil de comprender en el experimento con hasta dos filtros. De momento, dejamos los dos filtros cruzados, para que bloqueen toda la luz de la lámpara de caca de yeti.

Más filtros, más luz

La paradoja aparece cuando introducimos un tercer filtro en el montaje. Si ponemos el tercer filtro antes o después de los dos primeros, seguimos bloqueando completamente la luz. Pero si rotamos el tercer filtro en un ángulo de 45º y lo introducimos entre los dos filtros originales, ¡sorpresa!, la luz vuelve a pasar.
Veamos la secuencia de pasos por la que un fotón puede sobrevivir a los tres filtros:

  1. Un alegre e ingenuo fotón con estado $\alpha\vert\uparrow\rangle + \beta\vert\rightarrow\rangle$ se acerca al primer filtro. Voy a asumir que el estado está normalizado, por simplicidad.
  2. El primer filtro deja pasar a este fotón, con probabilidad $\alpha^2$ y colapsa su función de onda, machacando su $\beta$. El fotón ha sobrevivido, al precio de quedarse más tieso que un perchero. Su estado es ahora $\vert\uparrow\rangle$.
  3. El fotón llega al filtro del medio, que está girado 45º. ¿Cree usted que al filtro intermedio le importa que el fotón venga orientado a lo largo de un vector propio del primer filtro? ¡Ni hablar! El filtro del medio va a ver al fotón en un estado bastardo $\frac{1}{\sqrt{2}}\vert\uparrow^\prime\rangle + \frac{1}{\sqrt{2}}\vert\rightarrow^\prime\rangle$. Observad los acentos: estamos hablando de la base del filtro del medio, que es diferente a la primera base.
  4. Por lo tanto, nuestro vapuleado fotón tiene la mitad de las papeletas para sobrevivir a su segundo encontronazo. Supongamos que sobrevive. Repita conmigo ahora: el precio que va a pagar es quedarse en el estado $\vert\uparrow^\prime\rangle$.
  5. Y esto empieza a sonar repetitivo. Nos acercamos al tercer filtro, que está rotado otros 45º. Nuestro disciplinado fotón, que ya estuvo mirando hacia el Polo Norte, viene ahora mirando hacia Cuenca, pero al tercer filtro se la trae al pairo. Para el último filtro, el fotón está en el estado $\frac{1}{\sqrt{2}}\vert\uparrow^{\prime\prime}\rangle + \frac{1}{\sqrt{2}}\vert\rightarrow^{\prime\prime}\rangle$. Hay dos acentos ahora en los vectores de la base. Por supuesto, el fotón tiene una probabilidad de $0.5$ de sobrevivir. La mitad caerá en combate, pero una parte pasará la última prueba. Y se hará la luz.

Y ya se me han acabado los filtros, lo prometo.