Computadora cuántica de Feynman
# Computadora cuántica de Feynman

El modelo de la máquina de Turing es una manera de describir una computadora abstracta. Otro es cómo construir un circuito a partir de puertas lógicas primitivas. Ambas aproximaciones son equivalentes.

El modelo de Richard Feynman es una versión cuántica de un circuito lógico-combinacional. Se describe la computación a realizar a nivel de circuito, construyéndolo con puertas cuánticas reversibles. En general, podemos entender el circuito como k puertas lógicas actuando sobre m qubits. La transformación conseguida por el circuito puede ser escrita como $A_{k},A_{k-1},...,A_{i}$, donde $A_i$ es un operador que describe la acción de la puerta i-ésima.Para realizar la composición de matrices $A_i$ hacemos lo siguiente: Seann átomos en el registro. Añadimos un conjunto nuevo de k+1 átomos que configuran lo que vamos a llamar el contador de posiciones del programa. Denotamos como $q_{i}$ al operador de aniquilación de la posición i-ésima y como $q_{i}^{\dagger }$al operador de creación de la posición i, de tal forma que ambos operan desde i = 0 hasta i = k. Necesitamos ahora un electrón cambiando continuamente de una posición a otra. Así, si en un instante dado una posición está vacía el estado de esa posición es $|0\rangle$, y si en un estado dado una posición está ocupada el estado de esa posición es $|1\rangle$. Con este planteamiento Feynman propone como Hamiltoniano:

$H=\sum _{i=0}^{k-1}q_{i+1}^{\dagger }q_{i}A_{i+1}+{\text{cc.}}$

Si todas las posiciones del programa están libres, entonces todos los átomos del programa están en el estado $|0\rangle$, por lo tanto no hay cambios ya que cada término del Hamiltoniano comienza con un operador de aniquilación. Esto significa que la expresión para H sólo es cierta cuando una y sólo una de las posiciones del programa está ocupada. Como consecuencia de lo anterior el número de posiciones del programa en estado $|1\rangle$ es siempre el mismo. Además, durante el proceso de cómputo sólo puede ocurrir que no haya posiciones ocupadas –en cuyo caso no pasa nada, o que sólo haya una posición ocupada en cuyo caso se realiza una computación elemental. Por otra parte, durante un proceso normal de cómputo, dos o más posiciones de programa no pueden estar ocupadas simultáneamente.

