11 Ordenadores cuánticos

Sección en construcción.

Hemos visto como ciertas propiedades de la mecánica cuántica, tales como el colapso de la función de onda o el entrelazamiento, permiten el desarrollo de sistemas de comunicaciones sin un análogo clásico. Del mismo modo, uno se puede plantear si es posible aprovechar las propiedades de la mecánica cuántica para crear un nuevo tipo de ordenadores con capacidades muy diferentes a los sistemas de computación existentes.

La estructura de los sistemas clásicos de computación sigue todavía en gran medida en el diseño propuesto por Alan Turing en 1936, denominado como máquina de Turing. En 1981, Paul Benioff teorizó sobre un sistema de computación que utilizaría las leyes de la mecánica cuántica en algunos puntos de la ejecución del programa. Sin embargo, su propuesta implicaba realizar una medida del estado cuántico interno tras la ejecución de cada instrucción, por lo que se perdían muchas de las propiedades cuánticas del sistema y no ofrecía una gran ventaja sobre los sistemas existentes.

En 1982, el físico Richard Feynman planteó que una computadora cuántica –que se basara exclusivamente en reglas cuánticas– podría hacer ciertos cálculos imposibles para un ordenador clásico (Feynman 1982). Este concepto de ordenador sí abrió la puerta al desarrollo de nuevos algoritmos que revolucionarían varios campos de estudio. Entre los avances en esta dirección cabe resaltar el algoritmo de Deutsch-Jozsa publicado en 1992, el primer ejemplo que mostraba una ventaja exponencial de la computación cuántica sobre sistemas clásicos; el algoritmo de Shor en 1994, que permite factorizar números grandes en tiempo polinómico, y el algoritmo de búsqueda de Grover en 1996, que se podría decir que permite encontrar una aguja en un pajar (sin rebuscar demasiado). Veremos estos algoritmos en detalle en las siguientes secciones.

Todos estos avances fueron en gran medida de carácter teórico, abstrayéndose de la tecnología de los ordenadores o cómo se ejecutarían los algoritmos cuánticos en la práctica. Al mismo tiempo, muchas compañías y centros de investigación ya estaban trabajando en desarrollar la tecnología necesaria para construir un ordenador cuántico funcional. Hoy en día ya existen estos ordenadores y es un área con una rápida evolución.

Del mismo modo que existen muchos sistemas físicos con propiedades cuánticas, existen múltiples tecnologías que coducen al diseño de un ordenador cuántico de propósito general. Quizás las tecnologías más prometedoras hoy en día son las basadas en lazos superconductores, en la que se basan por ejemplo los ordenadores cuánticos de IBM o Google, y la basada en iones atrapados, empleada en los ordenadores de Honeywell o IonQ. Aún así, hay otras tecnologías en desarrollo como los procesadores cuánticos fotónicos, o las basadas en puntos cuánticos. En este curso nos abstraeremos de la implementación particular del ordenador cuántico y nos centraremos en sus capacidades desde un punto de vista teórico.

11.1 Circuitos cuánticos

Para entender el funcionamiento y capacidades de un sistema de computación cuántica es necesario definir una serie de conceptos:

  • Líneas de cúbits: Se corresponde con el estado cuántico interno del procesador.
  • Puerta cuántica: Son las operaciones que se aplican a las líneas de cúbits. Las puertas cuánticas pueden ser de 11, 22 o incluso de más cúbits.
  • Bloque de medida: Aplica una operación de medida a un cúbit determinado, transladando el resultado a una línea clásica, que sólo puede tomar los valores ‘00’ y ‘11’.
  • Circuito cuántico: Es una combinación de puertas cuánticas y operaciones de medida aplicadas sobre las líneas de cúbits.

A menudo representaremos los circuitos cuánticos como un diagrama de bloques que incluye las líneas cuánticas de cúbits, las puertas cuánticas que componen en circuito, las operaciones de medida, y las líneas clásicas donde se almacena el resultado de estas medidas.

La siguiente figura muestra un ejemplo de un diagrama de bloques de un circuito cuántico:

Circuito cuántico que genera entrelazamiento entre dos cúbits.

Se puede ver que este circuito presenta dos líneas de cúbits, q[0]q[0] y q[1]q[1]. A la línea superior se le aplica una puerta cuántica HH seguida de una puerta CNOT que afecta también a la segunda línea de cúbits (veremos en detalle estas puertas cuánticas en los siguientes apartados). Finalmente, en cada una de las líneas se aplica una operación de medida que traslada su resultado a las líneas clásicas etiquetadas como c2c2.

Aunque la representación de un circuito cuántico es muy similar a la de un circuito digital clásico, que también está formado por una serie de líneas que conectan puertas lógicas, tanto su implementación física como su interpretación conceptual son muy diferentes:

  • Circuito digital clásico: Un circuito digital clásico es una representación de su implementación física. Las líneas de este circuito realmente son pistas conductoras que transportan señales eléctricas que se corresponden con los bits ‘0’ y ‘1’. Estas pistas conductoras conectan una serie de puertas lógicas implementadas físicamente con transistores, que transforman las señales eléctricas a su salida.

  • Circuito cuántico: Un procesador cuántico solamente “almacena” el estado cuántico del sistema. Por su parte, las puertas cuánticas son operaciones que se realizan sobre ese estado. Así, los cúbits del sistema no viajan por las líneas del circuito a través de las puertas cuánticas, sino que son las puertas las que se “lanzan” al estado, modificándolo en el proceso. Un ejemplo sería la tecnología de iones atrapados, donde el procesador cuántico es una cámara de vacío donde se encuentran varios iones en suspensión (los cúbits) a los que se les aplican pulsos láser para controlarlos (las puertas cuánticas). De esta forma, en la figura anterior debemos pensar en las líneas de cúbits de un circuito cuántico como un eje temporal que muestra las operaciones que se aplican sobre los estados iniciales.

El resultado de la ejecución de un programa en un ordenador clásico, para unas ciertas condiciones iniciales, está perfectamente definido. Sin embargo, la salida de un circuito cuántico es aleatoria por naturaleza, ya que es el resultado de un proceso de medida de un estado cuántico. La siguiente figura muestra el resultado de ejecutar el circuito anterior en un ordenador cuántico 1024 veces:

Histograma resultante de la ejecución de un circuito cuántico que genera entrelazamiento.

Este gráfico muestra que el 47,2%47,2\% de las ejecuciones del circuito el resultado de la medida fue ‘0000’, el 6,4%6,4\% la salida del cirucito fue ‘0101’, el 2,8%2,8\% fue ‘1010’, y el 43,5%43,5\% fue ‘1111’. Por tanto, un circuito o un algoritmo cuántico para resolver un problema no tiene por qué ofrecer una solución determinista, sino que ésta en general resultará en un resultado aleatorio representado como un histograma.

11.2 Base computacional

La máxima ventaja de un ordenador cuántico sobre uno clásico se obtiene utilizando estados cuánticos puros. Por ello, en este tema consideraremos que el estado interno del ordenador se representa con un estado puro. Para simplificar todavía más la exposición, siempre utilizaremos la base 0=[10],1=[01]\begin{align*} \ket{0}= \begin{bmatrix}1\\0\end{bmatrix},\qquad \ket{1}= \begin{bmatrix}0\\1\end{bmatrix} \end{align*} para representar el estado interno del sistema. Denominaremos a ésta como la base computacional.

La unidad de información, o estado cuántico mínimo que puede manejar un procesador cuántico, es el cúbit. La representación de un cúbit en la base computacional se corresponde a la superposición: ψ=α0+β1,\begin{align*} \ket{\psi} = \alpha \ket{0} + \beta \ket{1}, \end{align*} donde α\alpha y β\beta son números complejos tales que α2+β2=1|\alpha|^2+|\beta|^2=1. La matriz de densidad de probabilidad para este estado puro es ρ=ψψ\rho=\ket{\psi}\bra{\psi}, pero en esta parte de la asignatura nos referiremos al estado cuántico simplemente como ψ\ket{\psi}.

Representación de estados conjuntos

Un estado conjunto se describe por el producto tensorial (o producto de Kronecker) de los cúbits que lo conforman. A menudo utilizaremos la notación abreviada: ψ1ψ2ψn  =  ψ1ψ2ψn\begin{align*} \ket{\psi_1 \psi_2 \cdots \psi_n} \;=\; \ket{\psi_1} \otimes \ket{\psi_2} \otimes\cdots \otimes \ket{\psi_n} \end{align*} Resaltar que el estado ψ1ψ2ψn\ket{\psi_1 \psi_2 \cdots \psi_n} se corresponde a un estado puro que comprende nn cúbits.

Ejemplo 11.1 Consideremos un ordenador cuántico de 33 cúbits con un estado interno inicial 010\ket{0 1 0}. Utilizando el producto tensorial, tenemos que este estado se corresponde con el vector: 010=010=[10][01][10]=[0100]T[10]=[00100000]T\begin{align*} \ket{0 1 0} &= \ket{0} \otimes \ket{1} \otimes \ket{0}\\ &= \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] \otimes \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr]\otimes \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr]\\ &= [\begin{matrix}0&1&0&0\end{matrix}]^T \otimes \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr]\\ &= [\begin{matrix}0&0&1&0&0&0&0&0\end{matrix}]^T \end{align*} Se puede ver que para representar el estado interno de un ordenador de n=3n=3 cúbits es necesario utilizar un vector de longitud 2n=82^n=8. Esta propiedad se hará más relevante a medida que aumente la dimensión del sistema.

Por ejemplo, para representar el estado interno de un ordenador de n=32n=32 cúbits ya será necesario un vector de longitud 2n41092^n \approx 4\cdot 10^9. Para el ordenador de n=53n=53 cúbits empleado por Google en el hito de la supremacía cuántica se tiene que 2n910152^n \approx 9\cdot 10^{15}.

Si consideramos un sistema de nn cúbits, la base computacional se corresponde a los 2n2^n vectores: 0000,0001,0010,0011, ,1111.\begin{align*} \ket{0 \cdots 000},\quad \ket{0 \cdots 001},\quad \ket{0 \cdots 010},\quad \ket{0 \cdots 011},\quad \ldots\ ,\quad \ket{1 \cdots 111}. \end{align*}

Utilizando las propiedades del producto tensorial es posible representar cualquier estado interno del sistema en la base computacional. Por ejemplo, consideremos el estado +0\ket{+ 0}. Utilizando que +=12[+1+1]=12(0+1)\begin{align*} \ket{+} = \tfrac{1}{\sqrt{2}}\bigl[\begin{smallmatrix}+1\\+1\end{smallmatrix}\bigr] = \tfrac{1}{\sqrt{2}}\bigl(\ket{0}+\ket{1}\bigr) \end{align*} obtenemos +0=+0=12(0+1)0=12(00+10)=1200+1210.\begin{align*} \ket{+ 0} &= \ket{+}\otimes\ket{0}\\ &= \tfrac{1}{\sqrt{2}}\bigl(\ket{0}+\ket{1}\bigr)\otimes\ket{0}\\ &= \tfrac{1}{\sqrt{2}}\bigl(\ket{0}\otimes\ket{0} +\ket{1}\otimes\ket{0}\bigr)\\ &= \tfrac{1}{\sqrt{2}}\ket{00} + \tfrac{1}{\sqrt{2}} \ket{10}. \end{align*} Vemos que +0\ket{+ 0} es una supersposición de los vectores 00\ket{00} y 10\ket{10} de la base computacional.

Ejercicio 11.1 Represente el estado 01+\ket{0 1 +} en la base computacional {000,001,,111}\{\ket{000}, \ket{001},\ldots,\ket{111}\}.

Proceso de medida

El proceso de medida en un circuito cuántico se realiza siempre con respecto a la base computacional, es decir, por medio del POVM {Π0,Π1}\{\Pi_0, \Pi_1\} donde Π0=00\Pi_0=\ket{0}\bra{0} y Π1=11\Pi_1=\ket{1}\bra{1}. Así, para el estado ψ=α0+β1,\begin{align*} \ket{\psi} = \alpha \ket{0} + \beta \ket{1}, \end{align*} la probabilidad de medir cada uno de los dos posibles observables está dada por: Pr{‘0’}=Tr[Π0ψψ]=0ψψ0=α2,Pr{‘1’}=Tr[Π1ψψ]=1ψψ1=β2.\begin{align*} \Pr\{\text{`0'}\} &= \text{Tr}\bigl[\Pi_0 \ket{\psi}\bra{\psi}\bigr] = \braket{0|\psi}\braket{\psi|0} = |\alpha|^2,\\ \Pr\{\text{`1'}\} &= \text{Tr}\bigl[\Pi_1 \ket{\psi}\bra{\psi}\bigr] = \braket{1|\psi}\braket{\psi|1} = |\beta|^2. \end{align*}

Para un sistema compuesto, la medida también se realiza con respecto al POVM correspondiente a la base computacional, que está dado por {Π000,Π001,,Π111},\begin{align*} \bigl\{\Pi_{0\cdot 00},\, \Pi_{0\cdot01},\, \ldots,\, \Pi_{1\cdot11}\bigr\}, \end{align*} donde Πi1in=i1ini1in\Pi_{i_1 \cdot i_n} = \ket{i_1 \cdots i_n} \bra{i_1 \cdots i_n}.

Ejercicio 11.2 Determine las probabilidades de los distintos resultados de una medida con respecto a la base computacional para un sistema de dimensión n=2n=2 con estado interno ϕ=a00+b01+c10+d11.\begin{align*} \ket{\phi} &= a \ket{00} + b\ket{01} + c\ket{10} + d\ket{11}. \end{align*}

11.3 Puertas cuánticas

La evolución del estado interno de un ordenador cuántico es unitaria. Para un estado puro ψ\ket{\psi} (posiblemente compuesto por nn cúbits) y una matriz unitaria UU (de dimensión 2n×2n2^n \times 2^n) se tiene que el nuevo estado del sistema tras aplicar la operación UU está dado por ϕ=UψdondeUUH=UHU=I.\begin{align*} \ket{\phi} = U \ket{\psi}\quad\text{donde}\quad UU^{H}=U^{H}U=I. \end{align*}

Estas transformaciones, que se aplican sobre un subconjunto de los cúbits del sistema, se denominan puertas cuánticas, de una forma análoga a las puertas lógicas de los circuitos electrónicos clásicos. En el caso clásico, cualquier función booleana se puede implementar mediante una combinación de puertas NAND, que para las entradas binarias aa y bb presenta una salida f(a,b)=¬(ab)f(a,b) = \neg (a \wedge b). De forma análoga, es posible demostrar que en el caso cuántico cualquier transformación unitaria UU se puede aproximar mediante la combinación de puertas cuánticas de 1 y 2 cúbits. Aunque la teoría de aproximación que permite construir una UU general está fuera del ámbito de este curso, veremos a continuación algunas de las puertas cuánticas más habituales utilizadas en los algoritmos de computación cuántica.

A menudo, las puertas cuánticas se aplican sobre un subconjunto de todos los cúbits que componen el sistema. Esto se puede modelar mediante la operación del producto tensorial (de Kronecker), utilizando el operador identidad I=[1001]\text{I} = \bigl[\begin{smallmatrix}1 &0\\0&1\end{smallmatrix}\bigr] sobre los cúbits donde no se aplica ninguna operación.

Ejemplo 11.2 Consideremos un sistema de dimensión n=2n=2 con estado inicial ψ=01\ket{\psi} = \ket{0 1}. Si aplicamos una operación binaria X=[0110]\text{X} = \bigl[\begin{smallmatrix}0 &1\\1&0\end{smallmatrix}\bigr] al primer cúbit del sistema, obtenemos un nuevo estado dado por ϕ=(XI)(01)=(X0)(I1)=11=11,\begin{align*} \ket{\phi} &= (\text{X} \otimes I) (\ket{0} \otimes \ket{1})\\ &= (\text{X}\ket{0}) \otimes (I\ket{1})\\ &= \ket{1} \otimes \ket{1} = \ket{11}, \end{align*} donde hemos utilizado que X0=[0110][10]=[01]=1.\begin{align*} \text{X}\ket{0} = \bigl[\begin{smallmatrix}0 &1\\1&0\end{smallmatrix}\bigr]\bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] = \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr] = \ket{1}. \end{align*}

Puertas de Pauli

Estas puertas de un único cúbit se corresponden a ciertas rotaciones del estado de entrada: I=[1001],X=[0110],Y=[0jj0],Z=[1001]\begin{align*} \text{I} = \left[\begin{matrix}1 &0\\0&1\end{matrix}\right],\quad \text{X} = \left[\begin{matrix}0 &1\\1&0\end{matrix}\right],\quad \text{Y} = \left[\begin{matrix}0 &-j\\j&0\end{matrix}\right],\quad \text{Z} = \left[\begin{matrix}1 &0\\0&-1\end{matrix}\right] \end{align*}

Ejemplo 11.3 Aplicamos las puertas I\text{I}, X\text{X} y Z\text{Z} sobre la base computacional 0=[10]\ket{0}= \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] y 1=[01]\ket{1}= \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr].

  • La puerta I\text{I} es la tranformación unidad, y no afecta al estado: I0=[1001][10]=[10]=0,I1=[1001][01]=[01]=1.\begin{align*} \text{I} \ket{0} &= \bigl[\begin{smallmatrix}1 &0\\0&1\end{smallmatrix}\bigr] \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] = \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] = \ket{0},\\ \text{I} \ket{1} &= \bigl[\begin{smallmatrix}1 &0\\0&1\end{smallmatrix}\bigr] \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr] = \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr] = \ket{1}. \end{align*}

  • La puerta X\text{X} se corresponde con una negación lógica e intercambia los estados 0\ket{0} y 1\ket{1}: X0=[0110][10]=[01]=1,X1=[0110][01]=[10]=0.\begin{align*} \text{X} \ket{0} &= \bigl[\begin{smallmatrix}0 &1\\1&0\end{smallmatrix}\bigr] \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] = \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr] = \ket{1},\\ \text{X} \ket{1} &= \bigl[\begin{smallmatrix}0 &1\\1&0\end{smallmatrix}\bigr] \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr] = \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] = \ket{0}. \end{align*}

  • La puerta Z\text{Z} cambia la fase del estado 1\ket{1}, pero no la del 0\ket{0}: Z0=[1001][10]=[10]=0,Z1=[1001][01]=[01]=1.\begin{align*} \text{Z} \ket{0} &= \bigl[\begin{smallmatrix}1 &0\\0&-1\end{smallmatrix}\bigr] \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] = \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] = \ket{0},\\ \text{Z} \ket{1} &= \bigl[\begin{smallmatrix}1 &0\\0&-1\end{smallmatrix}\bigr] \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr] = \bigl[\begin{smallmatrix}0\\-1\end{smallmatrix}\bigr] = -\ket{1}. \end{align*}

Puerta de Hadamard

La puerta de Hadamard es también una puerta de 11 cúbit, y está dada por: H=12[+1+1+11]\begin{align*} \text{H} = \frac{1}{\sqrt{2}}\left[\begin{matrix}+1 &+1\\+1&-1\end{matrix}\right] \end{align*}

Ejemplo 11.4 Aplicamos la puerta H\text{H} sobre la base computacional 0=[10]\ket{0}= \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] y 1=[01]\ket{1}= \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr]. H0=12[+1+1+11][10]=12[11]=12(0+1),H1=12[+1+1+11][01]=12[+11]=12(01).\begin{align*} \text{H} \ket{0} &= \frac{1}{\sqrt{2}} \bigl[\begin{smallmatrix}+1 &+1\\+1&-1\end{smallmatrix}\bigr] \bigl[\begin{smallmatrix}1\\0\end{smallmatrix}\bigr] = \frac{1}{\sqrt{2}} \bigl[\begin{smallmatrix}1\\1\end{smallmatrix}\bigr] = \tfrac{1}{\sqrt{2}} \bigl(\ket{0} + \ket{1}\bigr),\\ \text{H} \ket{1} &= \frac{1}{\sqrt{2}} \bigl[\begin{smallmatrix}+1 &+1\\+1&-1\end{smallmatrix}\bigr] \bigl[\begin{smallmatrix}0\\1\end{smallmatrix}\bigr] = \frac{1}{\sqrt{2}} \bigl[\begin{smallmatrix}+1\\-1\end{smallmatrix}\bigr] = \tfrac{1}{\sqrt{2}} \bigl(\ket{0} - \ket{1}\bigr). \end{align*} Teniendo en cuenta que los estados +=12(0+1)\ket{+} = \tfrac{1}{\sqrt{2}} \bigl(\ket{0} + \ket{1}\bigr) y =12(01)\ket{-} = \tfrac{1}{\sqrt{2}} \bigl(\ket{0} - \ket{1}\bigr), concluimos que la puerta de Hadamard realiza una transformación del estado desde la base {0,1}\bigl\{ \ket{0}, \ket{1}\bigr\} a la base {+,}\bigl\{ \ket{+}, \ket{-}\bigr\}.

Puerta SWAP

La puerta SWAP es una transformación unitaria que se aplica a 22 cúbits, y está dada por:

SWAP=[1000001001000001]\begin{align*} \text{SWAP} &= \left[\begin{smallmatrix}1&0&0&0\\0&0&1&0\\0&1&0&0\\0&0&0&1\end{smallmatrix}\right] \end{align*}

Puerta SWAP.

La puerta SWAP intercambia los 2 cúbits presentes a su entrada. Para ver esto se debe tener en cuenta que, de acuerdo a la notación tensorial, la primera fila/columna de la puerta SWAP se corresponde con el estado de la base 00\ket{00}, la segunda con 01\ket{01}, la tercera con 10\ket{10}, y la última con 11\ket{11}. Así, la puerta SWAP deja inalterados los estados 00\ket{00} y 11\ket{11}, e intercambia los estados 01\ket{01} y 10\ket{10}.

Puerta UU-controlada (controlled-UU)

Para una puerta cuántica (de 11 cúbit) dada por U=[u00u01u10u11],U = \left[\begin{matrix}u_{00}&u_{01}\\u_{10}&u_{11}\end{matrix}\right], la puerta UU-controlada (que se aplica sobre 22 cúbits) se define como CU=[I00U]=[1000010000u00u0100u10u11]\begin{align*} C_U = \left[\begin{smallmatrix}I& 0\\0&U\end{smallmatrix}\right] = \left[\begin{smallmatrix}1&0&0&0\\0&1&0&0\\0&0&u_{00}&u_{01}\\0&0&u_{10}&u_{11}\end{smallmatrix}\right] \end{align*} Esta puerta utiliza el primer cúbit como “control”. Así, si el primer cúbit es igual a 1\ket{1} (está activo) se aplica la transformación UU al segundo cúbit. Si el primer cúbit es igual a 0\ket{0} (no está activo), entonces la puerta no hace ninguna operación sobre el segundo.

Puerta CNOT (puerta NOT controlada)

La puerta CNOT es una transformación sobre 22 cúbits, y está dada por:

CNOT=[1000010000010010]\begin{align*} \text{CNOT} &= \left[\begin{smallmatrix}1&0&0&0\\0&1&0&0\\0&0&0&1\\0&0&1&0\end{smallmatrix}\right] \end{align*}

Puerta CNOT.

La puerta CNOT es un caso particular de la puerta UU-controlada, en la que la operación unitaria es U=XU=X; CNOTCX\text{CNOT} \equiv C_X. La puerta CNOT aplica una operación NOT en el segundo cúbit, si el primero está activo.

Ejemplo 11.5 Aplicamos la puerta CNOT a la base computacional 00\ket{00}, 01\ket{01}, 10\ket{10} y 11\ket{11}: CNOT00=[1000010000010010][1000]=[1000]=00,CNOT01=[1000010000010010][0100]=[0100]=01,CNOT10=[1000010000010010][0010]=[0001]=11,CNOT11=[1000010000010010][0001]=[0010]=10.\begin{align*} &\text{CNOT} \ket{00} = \left[\begin{smallmatrix}1&0&0&0\\0&1&0&0\\0&0&0&1\\0&0&1&0\end{smallmatrix}\right] \left[\begin{smallmatrix}1\\0\\0\\0\end{smallmatrix}\right] = \left[\begin{smallmatrix}1\\0\\0\\0\end{smallmatrix}\right] = \ket{00},\\ &\text{CNOT} \ket{01} = \left[\begin{smallmatrix}1&0&0&0\\0&1&0&0\\0&0&0&1\\0&0&1&0\end{smallmatrix}\right] \left[\begin{smallmatrix}0\\1\\0\\0\end{smallmatrix}\right] = \left[\begin{smallmatrix}0\\1\\0\\0\end{smallmatrix}\right] = \ket{01},\\ &\text{CNOT} \ket{10} = \left[\begin{smallmatrix}1&0&0&0\\0&1&0&0\\0&0&0&1\\0&0&1&0\end{smallmatrix}\right] \left[\begin{smallmatrix}0\\0\\1\\0\end{smallmatrix}\right] = \left[\begin{smallmatrix}0\\0\\0\\1\end{smallmatrix}\right] = \ket{11},\\ &\text{CNOT} \ket{11} = \left[\begin{smallmatrix}1&0&0&0\\0&1&0&0\\0&0&0&1\\0&0&1&0\end{smallmatrix}\right] \left[\begin{smallmatrix}0\\0\\0\\1\end{smallmatrix}\right] = \left[\begin{smallmatrix}0\\0\\1\\0\end{smallmatrix}\right] = \ket{10}. \end{align*} Se observa que si el primer cúbit es 0\ket{0}, el segundo permanece inalterado. En cambio, si el primer cúbit es 1\ket{1} se aplica una negación al segundo. Para representar esto, a menudo se utiliza la notación: CNOTa,b=a,ab,\begin{align*} &\text{CNOT} \ket{a,b} = \ket{a,a\oplus b}, \end{align*} donde a,b{0,1}a,b\in\{0,1\}, y \oplus hace referencia a la operación binaria XOR (OR exclusivo).

Referencias

Feynman, Richard Phillips. 1982. “Simulating Physics with Computers.” International Journal of Theoretical Physics 21: 467–88. https://doi.org/10.1007/BF02650179.