Digamos que tenemos una función f que asigna n bits a m bits (donde m<n ).
f:{0,1}n→{0,1}m
Por supuesto, podríamos diseñar un circuito clásico para realizar esta operación. Llamémoslo Cf . Toma como entrada n bits. Digamos que toma como entrada X y genera f(X) .
Ahora, nos gustaría hacer lo mismo usando un circuito cuántico. Llamémoslo Uf , que toma como entrada |X⟩ y salidas |f(X)⟩ . Ahora recuerde que, dado que la mecánica cuántica es lineal, los qubits de entrada podrían, por supuesto, estar en una superposición de todas las cadenas de n bits. Por lo tanto, la entrada podría estar en algún estado . Por linealidad, la salida será .sigma X ∈ { 0 , 1 } n α X | f ( X ) ⟩∑X∈{0,1}nαX|X⟩∑X∈{0,1}nαX|f(X)⟩
La evolución en la mecánica cuántica es unitaria . Y porque es unitario, es reversible. En esencia, esto significa que si se aplica una puerta cuántica en un estado de entrada y obtener un estado ouput , siempre se puede aplicar una compuerta inversa para volver al estado .| x ⟩ T | x ⟩ U † | x ⟩U|x⟩U|x⟩U†|x⟩
Note, cuidadosamente en la imagen de arriba que el número de líneas de entrada (es decir, seis) es exactamente el mismo que el número de líneas de salida en cada paso. Esto se debe a la unitaridad de las operaciones. Compare esto con operaciones clásicas como el AND lógico donde da una salida de un solo bit . No puede reconstruir los bits iniciales y de la salida, ya que incluso y se habrían asignado a la misma salida . Pero, considere la clásica puerta NO. Si la entrada es , sale , mientras que si la entrada es , sale0 0 1 0 ∧ 0 1 ∧ 0 0 0 1 1 00 ∧ 10 00 010 ∧ 01 ∧ 00 00 0110 0. Dado que este mapeo es uno a uno, se puede implementar fácilmente como una puerta unitaria reversible, es decir, la puerta Pauli-X . Sin embargo, para implementar una compuerta clásica AND o clásica OR necesitamos pensar un poco más.
Considere la puerta CSWAP . Aquí hay un diagrama aproximado que muestra el esquema:
En la puerta SWAP dependiendo del bit de control, los otros dos pueden o no intercambiarse. Observe que hay tres líneas de entrada y tres líneas de salida. Por lo tanto, se puede modelar como una puerta cuántica unitaria. Ahora, si : Si , la salida es , mientras que si , la salida es .z= 0x = 00 0x = 1y
Si observa, si , estamos generando mientras que si estamos generando . Por lo tanto, podríamos generar con éxito la salida que queríamos, aunque terminamos con algunas salidas "basura" y . Un hecho interesante es que la inversa de la puerta CSWAP es la puerta CSWAP misma (¡verifique!).x = 0X¯∧ yx = 1x ∧ yx ∧ yX¯∧ yX
¡Eso es todo! Recuerde que todas las puertas clásicas se pueden construir con la puerta NAND , que por supuesto se puede construir una puerta AND y una puerta NOT. Efectivamente modelamos el clásico NOT y el clásico AND con puertas cuánticas reversibles. Solo para estar seguros, también podemos agregar la puerta qauntum CNOT a nuestra lista, porque usando CNOT podemos copiar bits.
Por lo tanto, el mensaje básico es que usando las puertas cuánticas CSWAP, CNOT y NOT podemos replicar cualquier puerta clásica. Por cierto, hay un truco inteligente para deshacerse de los bits "basura" que se producen cuando se utilizan puertas cuánticas, pero esa es otra historia.
PD: ¡Es muy importante deshacerse de los bits "basura" o de lo contrario pueden causar errores de cálculo!
Créditos de referencia e imagen: Mecánica cuántica y MOOC de computación cuántica ofrecidos por UC Berkeley en edX.