Description : | Se trata de un conjunto de funciones que facilitan la programación de algoritmos
cuánticos. Se encuentran implementados los algoritmos de Deutsch, Deutsch-Jozsa
y Grover.
Autor: Pedro A. Vilanova
------
Descripción de las funciones principales:
-----------------------------------------
alg_deutsch.sci : Determina si f es balanceada o no. Retorna un elemento de la
base B1, |0> si f es constante y |1> si es balanceada.
alg_deutsch_jozsa.sci : Determina si f es balanceada o no. Retorna un elemento
de la
base Bn.
alg_grover.sci : Algoritmo de Grover, aplicado a la funcion f, de dimension
2^n.
s es el número de soluciones que tiene f. Retorna un elemento de
la base Bn. Grafica la amplitud final.
dens.sci : Matriz de densidad de un estado cuántico.
medicion.sci : Realiza la medición del n-qubit del estado cuántico, utilizando
la base canónica. Por defecto mide todos los qubits.
normal.sci : Normaliza el estado cuántico.
t_Cont.sci : Transformación controlada, donde bits es la cantidad de bits
totales de la transformación y T es la propia transformación.
t_G.sci : Transformación inversión sobre el promedio.
t_H.sci : Transformación de Hadamard.
t_W.sci : Transformación Walsh-Hadamard de dimensión 2^n. Por defecto,
bits = 1 (t_H).
U_f.sci : Construye la transformación unitaria U_f, que implementa la
función booleana clásica f. Las entradas y salidas de f deben
estar representadas en decimal. Se puede pasar un argumento
adicional a f en arg_f. El dominio de f tiene cardinal 2^n y el
codominio 2^m.
La construcción de U_f se realiza de la siguiente manera:
|x,y> -> |x,y xor f(x)>
siendo y un elemento de la base canónica del codominio. De esa
forma, al utilizar estados puros, la U_f no es otra cosa que una
“permutación” adecuada de I.
U_grover.sci : Construye la transformación unitaria de cambio de signo de la
amplitud. n debe ser tal que N = 2^n
|