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.