Este documento describe el proceso de simulación de un computador cuántico. Este proceso incluye 1) escoger el computo a simular, 2) representarlo como un circuito cuántico, 3) determinar el tamaño del registro de memoria, 4) calcular el hamiltoniano alcanzado, 5) calcular el operador de evolución, 6) inicializar la memoria, 7) evolucionar el sistema, y 8) verificar si el computo se completó y leer la respuesta.
2. PROCESO DE SIMULACIÓN
1. Escoger el computo que se va a simular
2. Representar el computo como un circuito construido con compuertas
lógicas cuánticas.
3. Determinar el tamaño del registro de memoria.
4. Calcular el hamiltoniano H alcanzado por el circuito.
5. Calcular el operador de evolución unitario para H.
6. Inicializar el registro de memoria.
7. Evolucionar el computador por algún tiempo.
8. Si el computo no se ha realizado volver al paso 7 con el registro de
memoria en el estado proyectado.
9. Leer la respuesta.
3. 2. REPRESENTAR EL COMPUTO COMO
UN CIRCUITO CONSTRUIDO CON
COMPUERTAS LÓGICAS CUÁNTICAS
Diseñar el circuito cuántico que alcanza el computo a simular.
• Especificar las compuertas cuánticas a usar y como se conectarán. (No
es lo mismo que en los circuitos lógicos clásicos, las compuertas
lógicas se conectan mediante el uso del mismo qubit o por
interacciones directas de campo).
• Toda compuerta cuántica es un operador unitario, es decir, la inversa
de la matriz que representa el operador debe ser igual a la traspuesta
conjugada de la misma. (Este hecho garantiza la reversibilidad del
operador).
• El operador alcanzado por el circuito completo también debe ser
unitario.
4. 3. DETERMINAR EL TAMAÑO DEL
REGISTRO DE MEMORIA.
• Determinar el número de qubits necesarios para simular la operación
del circuito diseñado.
• Las partículas (qubits) son divididas en dos grupos distintos:
– Uno almacena la posición del cursor( cuantos pasos del computo se
han hecho o como cuantas compuertas lógicas cuánticas se han
aplicado).
– El otro almacena la respuesta o superposición de respuestas, sobre las
que se esta realizando el computo.
• Si el circuito consta de de k compuertas lógicas cuánticas sobre un
conjunto de m qubits de entrada, el registro de memoria debe tener
m+k+1 qubits, m para la entrada y k+1 para el cursor.
• Si se observan los qubits del cursor y este se encuentra en la posición
final, es decir, en el k+1 sitio, se puede asegurar que al medir los
qubits de respuesta se obtiene una respuesta correcta para el computo.
5. 4. CALCULAR EL HAMILTONIANO H
ALCANZADO POR EL CIRCUITO.
• Un computador cuántico real es un sistema físico cuya evolución
sobre el tiempo puede ser interpretada como la realización de un
computo.
• La evolución de un sistema cuántico es descrita por la ecuación de
Schrödinger. Para el caso de un Hamiltoniano independiente del
tiempo, la solución de dicha ecuación tiene la forma:
|ψ(t)〉 = exp( -i H t / h ) * |ψ(0)〉 = U(t) * |ψ(0)〉
• El problema entonces es encontrar un operador H (independiente del
tiempo), tal que U(t) resulte ser una operador unitario que remede la
acción del circuito deseado.
• El Hamiltoniano que logra hacer este acoplamiento entre el sistema de
cursor y el computo esta dado por:
H = Σ((ci+1 ai Mi+1) + (ci+1 ai Mi+1)† para i=1,2,...k-1
• donde,
6. 4. CALCULAR EL HAMILTONIANO H
ALCANZADO POR EL CIRCUITO.
• Mi es la compuerta lógica cuántica i-esima,
• ci es el operador de creación del i-esimo sitio del cursor,
• ai es el operador de destrucción del i-esimo sitio del cursor.
• † denota la transpuesta conjugada.
• El operador de creación actuando sobre un spin simple tiene la forma:
c= 0 0
1 0
• El operador de destrucción actuando sobre un spin simple tiene la
forma:
a= 0 1
0 0
• ci = I ⊗...i-1 veces... ⊗ I ⊗ c ⊗ I ⊗ ....k-i veces.... ⊗ I
• ai = I ⊗...i-1 veces... ⊗ I ⊗ a ⊗ I ⊗ ....k-i veces.... ⊗ I
7. 5. CALCULAR EL OPERADOR DE
EVOLUCIÓN UNITARIO PARA H.
• Dada la forma del Hamiltoniano, se puede calcular el operador de
evolución unitaria U(t) como :
U(t) = exp( -i H t / h )
• La función matriz exponencial calcula la serie de potencias de la
función exponencial sobre la matriz dada.
6. INICIALIZAR EL REGISTRO DE
MEMORIA.
• Poner en los qubits de respuesta un estado inicial sobre el cual se
calculará el estado en un tiempo futuro t usando la solución de la
ecuación de Schrödinger.
8. 7. EVOLUCIONAR EL COMPUTADOR
POR ALGÚN TIEMPO.
• Determinar los intervalos de tiempo en los que se efectuará una
medición de los qubits de cursor. Si el intervalo es muy corto la
medición puede hacer que el computo no sea realizado.
• Usando la solución de la ecuación de Schrödinger determinar el estado
del registro de memoria después del intervalo de tiempo definido a
partir del estado actual en el que se encuentre el mismo.
• Calcular la función de probabilidades de encontrar el sistema en cada
uno de los estados posibles utilizando la función:
Pr(|ψi〉 ) = |ω i |2 con j = 1,2, ..., n-1
∑|ω j |2
• Cuando el cursor es observado, el estado de los qubits de respuesta son
proyectados en un estado consistente con la posición del cursor
observado, de esta manera los qubits de respuesta permanecen en un
estado superpuesto (pero proyectado), después de que el cursor es
observado.
9. 8. SI EL COMPUTO NO SE HA
REALIZADO VOLVER AL PASO 7 CON
EL REGISTRO DE MEMORIA EN EL
ESTADO PROYECTADO.
• En la práctica, el no predecir con certeza el tiempo en el cual el
computo estará completo hace que periódicamente el cursor sea
observado para ver si termino.
• Si el cursor se encuentra en el k+1 sitio se puede asegurar que en los
qubits de respuesta se encuentra una respuesta valida para el computo.
• Si el cursor no se encuentra en el k+1 sitio se proyecta el estado del
sistema a un estado consistente con el estado en el que se encuentra el
cursor, y se vuelve al paso 7.
• El proceso de lectura