Quantum Computing 101
Quantum Computing 101
Superiores de Monterrey
3. Fenómenos cuánticos 17
3.1. Inversibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2. Superposición y paralelismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3. Entrelazamiento cuántico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4. Phase Kickback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.1. Fase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.2. Fase global y local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4.3. Phase kickback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5. Teorema de la no clonación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4. Algoritmos Cuánticos 24
4.1. Teleportación Cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2. Deutsch-Josza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3. Bernstein-Vazirani . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4. Ejemplo 2 qubits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.5. Quantum Phase Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.6. Grover Search Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2
5. Quantum Fourier Transform 29
5.1. ¿Qué es la transformada de Fourier? . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2. Interpretación fı́sica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.3. QFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3
1. Preliminares
¿A que nos referimos con lineal? Cuando nosotros tenemos un operador lineal, nos referimos
a que cumple con 2 requisitos:
1. Aditividad:
2. Homogeneidad:
En este caso se dice que el operador A transforma el vector ⃗v en el vector ⃗u. Esta transformación se
lleva a cabo utilizando la multiplicación matricial.
Decimos que una matriz tiene n filas y m columnas cómo “Una matriz tamaño (n × m)”. Dadas
las matrices A y B con tamaños (na × ma ) y (nb × mb ), la multiplicación A × B es válida si y sólo
si ma = nb y la matriz resultante es de tamaño (na × mb ).
¿Cuáles de las siguientes multiplicaciones son válidas?¿Si son válidas, de que tamaño
es la matriz resultante?
2 3 1 3 1
5 2 2 4 9
3
2 5 9 7
8
5
6 2 1 6
4
3 5
6 1 2 9 2 1
4 2 9 2
0 7
3 4 8 0
6 1 9 2
La multiplicación entre dos matrices A y B nos da una matriz C de tal modo que cada elemento cij
(i representa la fila y j la columna) está dado por:
X
cij = aij · bji (4)
j=1
Del ejercicio anterior, obtengan el resultado de las multiplicaciones que son válidas.
Cuando multiplicamos escalares (números) el orden no importa, sin embargo, en la multiplicación
matricial esto si es importante ya que no siempre sigue siendo válida la multiplicación cuando
cambiamos el orden e incluso si fuese válida la multiplicación, en general el resultado es distinto. Si
el orden de multiplicación entre dos matrices A y B no importa, es decir, el resultado es el mismo,
se dice que las matrices “conmutan”.
De las matrices utilizadas en los últimos dos ejercicios, cambia el orden de la mul-
tiplicación, verifica si es válida y de serlo compara los resultados con el orden original.
Los eigenvectores (también conocidos cómo vectores caracterı́sticos) de un matriz, son aquellos
vectores que se mantienen invariantes (por un factor de escala) ante la operación de la matriz, es
decir,
A⃗v = λ⃗v . (6)
Se pueden encontrar los eigenvalores y eigenvectores a partir de la ecuación 6.
(A − λI)⃗v = ⃗0, (7)
det(A − λI) = 0. (8)
La condición de la ecuación 8 es necesaria ya que en caso contrario existirı́a la matriz inversa tal
que,
(A − λI)−1⃗0 = ⃗v . (9)
Resolviendo la ecuación 8, podemos obtener los eigenvalores, y una vez que obtenemos los eigen-
valores podemos sustituirlos en la ecuación 7 para obtener los eigenvectores. (Todo el proceso de
eigenvalores y eigenvectores puede realizarse en calculadoras gráficas o programas cómo MATLAB.)
Para una matriz de tamaño (n × n) existen n eigenvectores, si además estos eigenvectores son
linealmente independientes y con eigenvalores distintos entre sı́ podemos diagonalizar la matriz
haciendo un cambio de base.
λ1 0
a11 a12
A= base estándar → D= base eigenvectores (10)
a21 a22 0 λ2
5
Para diagonalizar la matriz, utilizamos una matriz generada por los eigenvectores, es decir:
v v21
P = ⃗v1 ⃗v2 = 11 (11)
v12 v22 ,
donde,
v11 v21
⃗v1 = & ⃗v2 = . (12)
v12 v22
Una vez que tenemos la matriz P la diagonalización es la operación,
D = P −1 AP. (13)
Encuentren los eigenvectores y eigenvalores de las siguientes matrices y utilicen los
resultados para diagonalizar las matrices. (Pueden usar matlab u otro programa)
3 6 9
2 4 8
1 2 3
1 1 3
1 5 1
3 1 1
1 1
1 −1
Cuando tenemos dos sistemas o espacios {H1 , H2 }. Podemos describir matricialmente el espacio
completo cómo la multiplicación matricial de estos,
H1,2 = H1 ⊗ H2 . (14)
En este nuevo sistema un operador matricial  que actúa en el espacio H1 , se escribe cómo  ⊗ I. Y
si un operador B actúa en el espacio H2 entonces se escribe cómo I ⊗ B̂. La multiplicación matricial
de operadores está dado tal que,
 ⊗ I · I ⊗ B̂ =  · I ⊗ I · B̂ =  ⊗ B̂. (15)
Tomando en cuenta que los vectores se consideran matrices de tamaño (n, 1), también se puede apli-
car la multiplicación matricial sobre ellos. Si tenemos vectores {v⃗1 , v⃗2 }que viven en los espacios {H1 ,
H2 } respectivamente, entonces la acción de los operadores de la ecuación 15 sobre la multiplicación
matricial de dichos vectores es,
 ⊗ B̂ · (v⃗1 ⊗ v⃗2 ) = Âv⃗1 ⊗ B̂ v⃗2 = ⃗u1 ⊗ ⃗u2 (16)
6
Obtén la multiplicación tensorial de las siguientes matrices:
1 1 0 1
• √12 ⊗
1 −1 1 0
0 1 0 1
• ⊗
1 0 1 0
1 0 1 0
• ⊗
0 eiπ 0 eiπ/2
1 0 0 −i
• ⊗
0 1 i 1
Im
2
(2+2i)
Re
−2 −1 1 2
−1
−2
7
Im
2 π
2,828ei 4
1
θ
Re
−2 −1 1 2
−1
−2
¿En qué ángulos se obtienen los valores {1, i, -1, i} en la fórmula de Euler?
¿Si nuestro número complejo tiene norma 1, cuál es la forma más general en que
se puede representar?
Obtenga la norma de los siguiente números complejos
• 1+i
• 3eiπ/7
• 1−i
• 2 + 5i
• 2eiπ/9
Cuando aplicamos el adjunto sobre matrices o vectores que se están multiplicando se invierte el
orden de los componentes,
(A · B)† = B † · A† (25)
†
(|v⟩⟨u|) = |u⟩⟨v| (26)
8
Si nosotros generamos la multiplicación entre un bra y un ket obtenemos la operación “braket” que
resulta en un número,
u1
u2 X n
⟨v|u⟩ = v1 v2∗ . . . vn∗ · . = vi · u∗i . (28)
∗
..
i=1
un
Cuando hacemos la operación braket del vector mismo, es decir, ⟨v|v⟩, obtenemos la norma del
vector,
n
X
⟨v|v⟩ = ||v||2 = |vi |2 (29)
i=1
Si hacemos la operación en el orden contrario obtenemos un “ketbra” lo que resulta en una matriz,
Demuestra que,
3
X
|i⟩⟨i| = I3 ,
i=0
dónde,
δ0i
δ1i
|i⟩ =
δ2i
δ3i
Cuando nosotros hacemos una medición sobre el estado, el estado colapsa al ket |i⟩ con probabilidad
P (i) = |ψi |2 . Por consecuencia se tiene la condición,
9
Es importante notar que la base en la que se mide no es necesariamente la estándar2 , mientras 2 kets
sean ortogonales entre sı́ pueden formar una base de medición. Una base que se utiliza frecuentemente
es,
1 1 1 1
|+⟩ = √ , |−⟩ = √ . (33)
2 1 2 −1
Si nosotros tenemos un estado idéntico al de la ecuación 31, al hacer una medición en la base
estándar obtenemos un estado |0⟩ o |1⟩ con sus respectivas probabilidades. Supongamos que medimos
y obtenemos el estado |0⟩. Si nosotros volvemos a hacer una medición en la base estándar, obten-
dremos con un 100 % de probabilidad el estado |0⟩, sin embargo si queremos hacer una medición en
la base {|0⟩, |1⟩}, primero es necesario escribir el estado actual (|0⟩) en dicha base,
1 |+⟩ + |−⟩ 1 1
|0⟩ = = √ = √ . (34)
0 2 2 1
|{z} | {z }
Base estándar Base {+,-}
Al hacer una medición en esta base observamos que tenemos un 50 % de probabilidad de medir el
estado |+⟩ o el estado |−⟩. Supongamos que medimos el estado |+⟩, al medir de nuevo en la base
estándar, nuestro ket actual es,
1 1
|+⟩ = √ (35)
2 1
| {z }
Base estándar
Por lo que tenemos denuevo un 50 % de probabilidad de medir el estado |0⟩ o el estado |1⟩.
En conclusión, si nosotros medimos en una base ortogonal, el estado colapsa a uno de los kets
que representan la base de la medición utilizada con probabilidades dadas por el estado antes de
la medición. Con el nuevo estado, una medición en la misma base deja el estado actual invariante.
Cuando cambiamos la base de medición, se vuelve a tener una superposición de los kets en la nueva
base, donde no sabremos previamente con certeza el resultado de la medición.
Ĥ † = Ĥ. (37)
Una propiedad caracterı́stica de los operadores Hermitianos es que sus eigenvalores son forzosamente
reales y además sus eigenvectores son ortogonales entre sı́.
10
0 1
•
1 0
0
−2i
•
2i 0
1
i
•
1 −i
1 0
•
0 −1
1
−1
• √1
2 1 1
Û Û † = I. (39)
A partir de está caracterı́stica, las demás son consecuentes de la misma. Los operadores unitarios
preservan la norma de un vector,
Todos los operadores de evolución temporal en mecánica cuántica y por consecuente en computación
cuántica corresponden al grupo de los operadores unitarios.
11
Dónde se debe tener la condición,
Los componentes α y β pueden ser complejos. Debido a la condición de normalización 46, podemos
reescribir el estado de un qubit cómo,
θ θ
|ψ⟩ = eiγ cos |0⟩ + eiϕ sin |1⟩ . (47)
2 2
Más adelante notaremos que podemos ignorar el factor eiγ y reescribir la ecuación 47 cómo,
θ θ
|ψ⟩ = cos |0⟩ + e sin
iϕ
|1⟩. (48)
2 2
Este estado arbitrario puede representarse gráficamente en lo que llamamos la esfera de Bloch. Un
|ψ⟩
θ
y
ϕ
x
12
2.2. Compuertas de un qubit
Anteriormente se explicó que todo operador de evolución temporal o en el caso equivalente de
computación cuántica, “compuertas”, que actúa sobre un estado pertenece al grupo de matrices
unitarias. Estas matrices deben cumplir con la condición,
Û Û † = I. (49)
Las compuertas más utilizadas que actúan sobre1 sólo qubit son,
0 1
X = , (50)
1 0
0
−i
Y = , (51)
i 0
1 0
Z = , (52)
0 −1
1 1 1
H =√ , (53)
2 1 −1
1 0
T = , (54)
0 eiπ/4
1 0
S = . (55)
0 i
La compuerta X actúa clásicamente cómo lo que conocemos cómo una compuerta lógica “NOT”,
X|0⟩ = |1⟩, (56)
X|1⟩ = |0⟩. (57)
Las compuertas X, Y y Z son las matrices de Pauli. Los eigenestados de estas compuertas/matrices
se encuentran en los ejes x, y y z de la esfera de Bloch, esto se ve representado en la figura 4.
Además de las compuertas mostradas anteriormente, también existen las compuertas “Parametri-
zadas”. Estas compuertas requieren de un parámetro para definirlas. Las compuertas parametrizadas
más comunes son,
cos θ2 −i sin θ2
Rx(θ) = , (58)
−i sin θ2 cos θ2
cos θ2 − sin θ2
Ry(θ) = , (59)
sin θ2 cos θ2
" θ
#
e−i 2 0
Rz(θ) = θ , (60)
0 ei 2
1 0
P (θ) = . (61)
0 eiθ
13
|0⟩
|0⟩−|1⟩
√
2
|0⟩−i|1⟩ |0⟩+i|1⟩
√ √
2 2
|0⟩+|1⟩
√
2
|1⟩
Las compuertas Rx(θ), Ry(θ) y Rz(θ) equivalen a rotaciones de un ángulo θ sobre la esfera
de Bloch aplicando la mano derecha sobre el eje correspondiente. Estas rotaciones surgen de las
operaciones 4 ,
θ θ θ
Rx(θ) = e−i 2 X = cos I − i sin X. (62)
2 2
θ θ θ
Ry(θ) = e−i 2 Y = cos I − i sin Y. (63)
2 2
θ θ θ
Rz(θ) = e−i 2 Z = cos I − i sin Z. (64)
2 2
(65)
Un sistema de qubits se suele representar gráficamente con circuitos cuánticos. Los circuitos
cuánticos están compuestos de “cables” que representan los qubits del sistema. El orden de los
qubits se cuenta desde arriba hacia abajo utilizando la convención de “Python” (Empezar a contar
desde 0). En la figura 5 podemos observar un circuito cuántico con 3 qubits.
En la figura 5, el estado actual del sistema siguiendo el orden de los qubits serı́a,
|q0 ⟩
|q1 ⟩
|q2 ⟩
14
|q2 ⟩ ⊗ |q1 ⟩ ⊗ |q0 ⟩ ≡ |q2 q1 q0 ⟩. (66)
Los operadores que nosotros aplicamos a los kets se ejecutan de derecha a izquierda,
|0⟩ − |1⟩ |0⟩ + |1⟩
ZHX|0⟩ → ZH|1⟩ → Z √ → √ , (67)
2 2
sin embargo, en los circuitos cuánticos las operaciones suceden de izquierda a derecha. El circuito
cuántico que representa las operaciones de la ecuación 67 serı́a,
|0⟩ X H Z
Normalmente utilizando la base estándar escribimos los sistemas de los compuestos cómo,
15
El número obtenido es equivalente a la posición del 1 en nuestro vector de dimensión n contando
desde 0 (Convención de Python).
Un estado en el espacio H12 (4) en su forma más general se puede expresar ćomo,
|Ψ⟩ = α0 |00⟩ + α1 |01⟩ + α2 |10⟩ + α3 |11⟩ (77)
con la misma restricción,
|α0 |2 + |α1 |2 + |α2 |2 + |α3 |2 = 1 (78)
|0⟩ X
|0⟩ H
Las compuertas controladas requieren por lo menos 2 qubits, 1 qubit será el “control” y el otro
el “target”. Al qubit target se le aplicará la compuerta indicada únicamente si el valor del qubit
control es 1. Estas compuertas se escriben con un punto, para indicar el control, que va conectado
a la compuerta que se aplica al qubit target.
|q0 ⟩ •
|q1 ⟩ X
16
Esta compuerta es muy utilizada en computación cuántica y es la principal compuerta que nos
permite generar entrelazamiento cuántico. Otra forma muy común en la que se puede encontrar esta
compuerta es,
|q0 ⟩ •
|q1 ⟩
Todas las compuertas de un qubit que observamos anteriormente pueden utilizarse de manera con-
trolada. Otras compuertas de múltiples qubits comúnmente utilizadas son la toffoli,
|q0 ⟩ •
|q1 ⟩ •
|q2 ⟩
que actúa sobre 3 qubits de los cuáles dos son controles y el sobrante target, y la compuerta SWAP,
|q0 ⟩ × |q1 ⟩
|q1 ⟩ × |q0 ⟩
que únicamente intercambia los estados sobre los que se aplica la compuerta.
3. Fenómenos cuánticos
La computación cuántica permite ventajas sobre las computadoras clásicas a partir del uso de
fenómenos cuánticos. Entender estos fenómenos cuánticos es fundamental para el desarrollo de al-
goritmos cuánticos, a continuación se explicarán estos fenómenos por separado.
3.1. Inversibilidad
Las computadoras clásicas funcionan a base de compuertas que actúan sobre 1 o más bits. Las
compuertas de 1 bit que forman nuestras computadoras son, NOT, Identidad, Op. 0 y Op. 1. Y sus
acciones sobre los bits se pueden ver con la siguiente tabla de verdad: Y las compuertas que actúan
sobre 2 bits son, AND, OR, XOR, NAND y NOR. Cuya acción se ve en la tabla de verdad,
Se dice que una compuerta es invertible si al tener la salida de la compuerta puedes saber cuál
fue la entrada.
17
AND OR XOR NAND NOR
00 0 0 0 1 1
01 0 1 1 1 0
10 0 1 1 1 0
11 1 1 0 0 0
Cómo podemos observar, varias de las compuertas no son invertibles y esto se debe a la repetición de
salidas para distintas entradas, sin embargo, debido a que nosotros aplicamos operaciones unitarias
sobre nuestros qubits. Siempre existe un operador inverso con la forma,
U −1 = U † , (84)
que nos pueda invertir la compuerta que hayamos realizado. Si nuestros operadores además son
Hermitianos, es decir, autoadjuntos entonces,
U = U †, (85)
∴ U · U = I. (86)
|0⟩ H •
|0⟩ X Ry(π/3)
el inverso son las operaciones adjuntas en el orden invertido con los correspondientes adjuntos,
|0⟩ • H
|0⟩ Ry(−π/3) X
• |0⟩ H • Rx(π)
|0⟩ X Z Ry(π/3)
• |0⟩ H • •
|0⟩ H X •
|0⟩ X
|0⟩ P (π) H •
|0⟩ H • •
18
Verifica esto realizando el circuito mostrado y el inverso en qiskit. (Hint: Si está
correcto deberı́amos medir únicamente |0⟩.)
dónde aprovechamos la notación numérica (|5⟩ ≡ |101⟩) en lugar de la binaria. Sin embargo la ver-
dadera ventaja de este fenómeno viene con el paralelismo de la computación cuántica.
Si tenemos un sistema de 2 qubits, podemos tener un estado arbitrario |x, y⟩ dónde x y y pue-
den tomar valores {0, 1}, entonces podemos hacer una transformación con las compuertas correctas
dónde, |x, y⟩ → |x, y ⊕ f (x)⟩, dónde f (x) transforma un qubit {0, 1} en otro {0, 1}5 y la operación ⊕
es módulo 2. Si nosotros además establecemos y = 0, entonces |x, 0⟩ → |x, f (x)⟩.
|x⟩ |x⟩
f (x)
|0⟩ |f (x)⟩
Pongamos por ejemplo que f (0) = 0, f (1) = 1, entonces, para un estado en superposición inicial,
Esto es ampliamente utilizado para varios algoritmos que nos permiten realizar las operaciones sobre
todos los posibles valores que queramos.
|00⟩ + |11⟩
|Φ+ ⟩ = √ . (91)
2
Este estado se obtiene con el circuito,
5 La función f (x) no está definida por lo que f (0) y f (1) puede arrojar tanto 0 o 1, no necesariamente el contrario.
19
|0⟩ H •
|0⟩ X
El hecho de que estén entrelazados, implica que la medición de un qubit afecta al otro. Supongamos
que medimos el primer qubit (recordemos que el orden de los qubits va de derecha a izquierda),
tenemos 2 opciones de medición podemos medir el estado |0⟩ o el estado |1⟩ con una probabilidad
del 50 %. Digamos que obtuvimos la medición |0⟩, entonces nosotros sabemos inmediatamente que
el segundo qubit se encuentra en el estado |0⟩ ya que no existe ninguna probabilidad de medir el
estado |10⟩. Lo mismo sucediera si midiéramos el estado |1⟩ en el primer qubit.
Formalmente para saber si un estado está entrelazado se utiliza la matriz de densidad. Dado un
estado |Ψ⟩ la matriz de densidad está dada por,
ρ = |Ψ⟩⟨Ψ|. (92)
Nosotros podemos obtener las propiedades del qubit 1, utilizando la traza parcial6 de modo que,
a b c d
a+f c+h
e f g h
ρ= ρ = T r {ρ} =
(1) (2)
(93)
i+n k+p
i j k l
m n o p
Si un estado se encuentra entrelazado entonces,
1
≤ T r{(ρ(1) )2 } < 1 (94)
2
dónde la igualdad a 1/2 se le conoce cómo un estado con entrelazamiento máximo. El estado de bell
que observamos es un estado entrelazado máximo ya que,
|00⟩ + |11⟩
|Ψ⟩ = √ , (95)
2
1 0 0 1
1 0 0 0 0
ρ = |Ψ⟩⟨Ψ| = , (96)
2 0 0 0 0
1 0 0 1
1/2 0
ρ(1) = Tr(2) {ρ} = , (97)
0 1/2
1/4 0
Tr{(ρ(1) )2 } = Tr{ } = 1/4 + 1/4 = 1/2 (98)
0 1/4
En realidad, existen otros 3 estados de Bell que también son estados con entrelazamiento máximo
|00⟩ − |11⟩
|Φ− ⟩ = √ , (99)
2
|01⟩ + |10⟩
|Ψ+ ⟩ = √ , (100)
2
|01⟩ − |10⟩
|Ψ− ⟩ = √ . (101)
2
Estos estados son utilizados principalmente para un método llamado “Super dense coding”.
6 La traza es la suma de todos los elementos en la diagonal de una matriz. La traza parcial genera esta suma sobre
20
Demuestra que los 4 estados de Bell están entrelazados y que los 4 estados forman
una base.
¿Cómo podemos generar los otros 3 estados de Bell? (Hint: Puedes empezar desde
el estado |Φ+ ⟩.)
Cuando medimos uno de los qubits, inmediatamente sabemos el valor del siguiente qubit sin
importar a la distancia que se encuentre. Sin embargo, esto no permite una comunicación más
rápida que la velocidad de la luz ya que no tenemos control sobre el qubit que se está mandando.
3.4.1. Fase
Cuando nosotros tenemos una onda que se propaga en el espacio, se puede describir de manera
sencilla cómo,
cos ⃗k · ⃗x − ωt + ϕ , (102)
Si nosotros cambiamos el valor de ϕ, notamos que la función se desplaza hacia la izquierda cuando
ϕ > 0,
y
ϕ=1 ϕ=0
y a la derecha si ϕ < 0,
Además notamos que para ϕ = 2nπ, dónde n es un número entero, la función regresa al mismo lugar
de dónde empezó. La fase de una onda nos es de vital importancia cuando hay interacción entre dos
21
y
ϕ=0 ϕ=1
ondas. Si nosotros tenemos ondas idénticas (⃗k1 = ⃗k2 , etc..) con una misma fase tenemos el fenómeno
de interferencia constructiva,
cos ⃗k · ⃗x − ωt + ϕ1 + cos ⃗k · ⃗x − ωt + ϕ = 2 cos ⃗k · ⃗x − ωt + ϕ , (103)
Este resultado es más sencillo de analizar utilizando notación compleja, la ecuación 102 se puede
reescribir cómo,
h i
⃗
cos ⃗k · ⃗x − ωt + ϕ = Re ei(k·⃗x−ωt+ϕ) . (105)
Escribir la onda utilizando notación compleja nos permite factorizar nuestra fase del resto de la
expresión,
⃗ ⃗
ei(k·⃗x−ωt+ϕ) = eiϕ ei(k·⃗x−ωt) , (106)
haciendo más sencillo el análisis de fases de un sistema.
En un análisis clásico podemos realizar todo el análisis utilizando la notación compleja consi-
derando la parte real hasta el final. Sin embargo, en mecánica cuántica debe tomarse en cuenta la
parte real y compleja de las ondas por lo que no es necesario sacar la parte Real de nuestra ecuación.
decimos que esa fase es una fase global. Para nosotros observadores, el estado eiϕ |Ψ⟩ y el estado |Ψ⟩
son idénticos, es decir, no podemos diferenciar los estados ni medir la fase ϕ por ningún método. Es
por esto que podemos reescribir la ecuación 47 cómo la ecuación 48.
Demuestra que sin importar las compuertas que apliques sobre un estado de 1 o
más qubits con una fase global eiϕ , no podemos diferenciar dichos estados.
La fase local son todas aquellas fases αx que observamos cuando describimos un estado de n qubits
cómo,
n
2X −1
|Ψ⟩ = αx |x⟩, (107)
x=0
22
De tal manera que los estados,
¿Qué compuerta o compuertas utilizarı́as para diferenciar el estado |+⟩ del estado
|−⟩ al hacer una medición?
dónde λ = eiϕ debido a que nuestras compuertas son forzosamente unitarias por lo que un eigen-
valor debe tener norma 1. Cuando nosotros aplicamos la compuerta controlada con un qubit en
superposición cómo control,
|ψ⟩ U
|+⟩ •
entonces podemos observar que,
|Ψ⟩ |Ψ⟩
U
|0⟩ |Ψ⟩
Esto puede comprobarse fácilmente utilizando 1 qubits, si nosotros tenemos estados |0⟩ o |1⟩ puros,
entonces la copia debe de generar los mismos valores, es decir,
23
Cuando nosotros tenemos una superposición de estados, por linealidad,
|0⟩ + |1⟩ U |00⟩ + U |01⟩
U |0⟩ ⊗ √ = √ , (113)
2 2
utilizando los resultados anteriores,
|00⟩ + |01⟩ |00⟩ + |11⟩
U √ = √ (114)
2 2
Lo cuál es distinto de tener,
|0⟩ + |1⟩ |0⟩ + |1⟩
|Ψ⟩ ⊗ |Ψ⟩ = √ ⊗ √ . (115)
2 2
Si nosotros tuviésemos conocimiento del estado en cuestión una clonación puede llevarse a cabo, sin
embargo saber cuál es el estado actual en el punto de vista de un atacante cibernético requerirı́a
medir el qubit lo cuál cambia el estado. Esto permite muchas aplicaciones de criptografı́a para
mantener segura la información que mandamos.
4. Algoritmos Cuánticos
Este algoritmo utiliza un estado entrelazado |Φ+ ⟩ y el qubit |Ψ⟩ a teleportar. Supongamos que
Alice va a teleportar el qubit hacia Bob, para ello Alice y Bob previamente se compartieron uno de
los qubits entrelazados. Es decir, inicializamos nuestro circuito cómo,
|Ψ⟩
Φ+ A
Φ+ B
dónde los primeros dos qubits pertenecen a Alice y el último a Bob. Además utilizamos la notación
|Φ⟩A para denotar el qubit entrelazado que tiene Alice y |Φ⟩B al que le pertenece a Bob. El algoritmo
hace interactuar el qubit que queremos teleportar |Ψ⟩ con el qubit entrelazado que tiene Alice |Φ+ ⟩A
de la siguiente manera,
|Ψ⟩ • H
Φ+ A X
Φ+ B
después de la interacción Alice mide ambos qubits. Dependiendo de los resultados que ella obtiene,
comunica clásicamente a Bob (Por teléfono o msj de whatsapp si queremos) las mediciones obtenidas.
Con esta información Bob realiza las siguientes operaciones,
|Ψ⟩ • H •
Φ+ A X •
Φ+ B X Z |Ψ⟩
24
Dónde Bob aplica las compuertas X o Z (En ese orden) si las mediciones correspondientes (según
el circuito mostrado) son 1.
Analicemos porqué este algoritmo funciona parte por parte. Inicialmente tenemos un estado
arbitrario |Ψ⟩ = α|0⟩ + β|1⟩, de tal manera que nuestro sistema de 3 qubits serı́a,
|00⟩ + |11⟩
(0) = |Ψ⟩ ⊗ |Φ+ ⟩ = (α|0⟩ + β|1⟩) ⊗ √ . (116)
2
Al pasar por el CNOT, nuestro sistema se transforma cómo,
α β
(1) = CN OT (|Ψ⟩ ⊗ |Φ+ ⟩) = √ (|000⟩ + |011⟩) + √ (|110⟩ + |101⟩) (117)
2 2
Después de la compuerta Hadamard que se aplica sobre el primer qubit,
α β
(2) = (|000⟩ + |100⟩ + |011⟩ + |111⟩) + (|010⟩ − |110⟩ + |001⟩ − |101⟩) (118)
2 2
Reacomodando términos,
|00⟩
(3) = (α|0⟩ + β|1⟩)
2
|01⟩
+ (α|1⟩ + β|0⟩)
2
|10⟩
+ (α|0⟩ − β|1⟩)
2
|11⟩
+ (α|1⟩ − β|0⟩)
2
Notemos que cuando Alice realizó las 2 mediciones sobre sus qubits, ya teleportó un estado al qubit de
Bob que necesita corrección que depende de las mediciones obtenidas. Con esas correcciones hechas
Bob tiene el estado |Ψ⟩ que tenı́a Alice. Es importante entender que Alice realizó la teleportación
en el instante que midió sus qubits con posibles errores de fase o bit-flips, Bob únicamente realizó
las correcciones necesarias para tener el estado correcto.
4.2. Deutsch-Josza
El algoritmo de Deutsch-Josza resuelve el siguiente problema:
“Supongamos que tenemos una función f que es una caja negra, es decir, no sabemos que sucede
dentro de esta función. La función recibe cómo entrada n bits y arroja un valor 0 o 1 para cada
entrada. La función f puede ser balanceada o constante, una función balanceada es aquella donde la
mitad de los resultados son 0 y la otra mitad 1, y una función constante es aquella dónde todos sus
valores son 0 o todos sus valores son 1. Nuestro trabajo es saber qué tipo de función es.”
En el caso clásico, si tenemos n bits de información en el peor de los casos necesitarı́amos de
2n /2 + 1 de mediciones para verificar si una función es balanceada o constante. Supongamos que
tenemos 100 posibles entradas de las cuáles las primeras 50 entradas dan en la salida el valor 0.
Podrı́amos pensar que la función es constante, es decir, que para las 100 entradas el resultado
siempre es 0. Sin embargo, al utilizar una entrada más existe la posibilidad (aunque pequeña) de
que tengamos de resultado un valor 1, indicando una función balanceada. Entonces en el peor de
los casos tendrı́amos que hacer 2n /2 + 1 mediciones para saber con seguridad que una función es
balanceada o constante.
Sin embargo el algoritmo de Deutsch-Josza propone que podemos solucionar este problema en 1 sola
medición.
25
El algoritmo de Deutsch-Josza aprovecha el paralelismo y phase-kickback. El circuito cuántico
del algoritmo se genera de la siguiente manera,
0⊗n H ⊗n H ⊗n
U
|1⟩ H
Dónde U es nuestra función f (x) que es balanceada o constante que actúa sobre un estado cómo,
U |x⟩|0⟩ = |x⟩|f (x)⟩. (119)
Analizando paso a paso el algoritmo, notemos que el circuito se divide en 2 registros, los primeros n
qubits corresponden a nuestras entradas x y en el último qubit tendremos nuestro resultado f (x).
Entonces nuestro estado inicial serı́a,
|0⊗n ⟩ ⊗ |1⟩ (120)
Y al aplicar H sobre todos los qubits sabemos que,
n
2X −1
1
|0⟩ − |1⟩
H ⊗n ⊗ H |0⊗n ⟩ ⊗ |1⟩ = √ (121)
|x⟩ ⊗ √
2n x=0 2
dónde x está en el sistema numérico (|5⟩ ≡ |101⟩). Después surge el operador U que nos representa
la función f (x), para ello lo analizaremos en 2 partes, la primera teniendo una función constante y
luego para una función balanceada.
En el caso de una función constante, se aplica la compuerta X en el último qubit para f (x) = 1
o no se hace nada para f (x) = 0. Aplicando la compuerta U tendrı́amos,
√1 P2n −1
n
|0⟩−|1⟩
1
2X −1 x ⊗ √ , f (x) = 0
|0⟩ − |1⟩ n x=0
U √ x ⊗ √ = 2 P2n −1 |1⟩−|0⟩ 2
(122)
2 x=0
n 2 √ 1
n x=0 x ⊗
√ , f (x) = 1
2 2
Para cualquiera de los 2 casos, notemos que los estados son separables y que el primer registro se
mantuvo igual, esto quiere decir que al aplicar las últimas compuertas Hadamard tendrı́amos el
estado,
|0⟩ − |1⟩
−1f (x) |0⊗n ⟩ ⊗ √ (123)
2
Entonces al medir el primer registro (los n qubits), tendremos un 100 % de probabilidad de medir el
estado |0⊗n ⟩.
Cuando nosotros nos encontramos con una función balanceada, notemos que la compuerta U debe
de estar controlada para aplicar f (x) para cada x. Debido a que el estado |−⟩ es un eigenestado del
operador x con eigenvalor −1, entonces después de la compuerta U ,
n
n
2X −1 2X −1
1 1
|0⟩ − |1⟩ |0⟩ − |1⟩
U √ x ⊗ √ = √ (−1)f (x) x ⊗ √ (124)
2n x=0 2 2n x=0 2
26
Pero notemos que la mitad de los estados tendrán |0⊗n ⟩ positivo para f (x) = 0 y la otra mitad será
negativa para f (x) = 1, esto quiere decir que en la superposición de los estados, nuestro estado final
tendrı́a una probabilidad del 0 % de medir el estado |0⊗n ⟩.
En conclusión al realizar el algoritmo de Deutsch-Josza en una sola medición podemos determinar
si la función f (x) es balanceada o constante. Si tenemos una medición |0⊗n ⟩ de nuestro primer
registro, sabemos con seguridad que f (x) es una función constante. Si nosotros medimos cualquier
estado distinto de |0⊗n ⟩, entonces la función f (x) es balanceada.
4.3. Bernstein-Vazirani
El problema que resuelve el algoritmo de Bernstein-Vazirani es un caso más restringido,
“Dada una función f con entrada de n bits y salida de 1 bit, con la promesa de que la función f
es el producto punto entre la entrada x (n bits) con una cadena de caracteres s (string) de tamaño
de n bits f (x) = x · s = x1 s1 ⊕ x2 s2 ⊕ . . . ⊕ xn sn tenemos que encontrar s.”
Clásicamente la solución más óptima a este problema requiere de n mediciones, o en otras palabras
aplicar la función n veces. Esto se logra a partir de la propiedad del módulo 2,
f (1000 . . . 0) = s1 (127)
f (0100 . . . 0) = S2 (128)
f (0010 . . . 0) = s3 (129)
f (0001 . . . 0) = s4 (130)
..
. (131)
f (0000 . . . 1) = sn (132)
Podemos ver que este problema escala linealmente con el tamaño de s, sin embargo, el algoritmo de
Bernstein-Vazirani asegura que esto puede obtenerse con 1 sola medición. El circuito cuántico que
representa el algoritmo de Bernstein-Vazirani es,
0⊗n H ⊗n H ⊗n
U
|1⟩ H H
dónde f (x) toma los valores 0 o 1 únicamente. Analizando paso a paso el algoritmo, inicializamos
con un estado,
Una manera equivalente de representar este estado, es utilizando la base de |+⟩ y |−⟩,
27
Si aplicamos la compuerta U sobre el estado |ψ1 ⟩ (en base |0⟩ y |1⟩) podemos observar que debido
al eigenestado |−⟩ tendrı́amos un cambio de signo para los casos x · s = x1 s1 ⊕ x2 s2 ⊕ . . . ⊕ xn sn .
n
2X −1
1
|0⟩ − |1⟩
|ψ2 ⟩ = √ (−1)f (x) |x⟩ ⊗ √ (137)
2n x=0
2
De tal manera que cuando aplicamos las compuertas H ⊗n sobre el estado |ψ2 ⟩, recuperamos el
estado,
Cuando nosotros medimos los primeros n qubits, obtenemos directamente la cadena de carácteres
(string) s.
Al aplicar la compuerta U, dejando iguales los estados |00⟩, |10⟩ y cambiando el signo de los estados
|01⟩ y |11⟩,
x00 · s = 0 · 0 ⊕ 0 · 1 = 0 (141)
x01 · s = 0 · 0 ⊕ 1 · 1 = 1 (142)
x10 · s = 1 · 0 ⊕ 0 · 1 = 0 (143)
x11 · s = 1 · 0 ⊕ 1 · 1 = 1 (144)
Y al aplicar las compuertas Hadamards sabemos que el efecto directo sobre la base |+⟩ y |−⟩ nos
lleva al estado,
Y midiendo los primeros 2 qubits tenemos con seguridad que mediremos el estado |01⟩ lo que equivale
a la cadena de carácteres s.
28
4.5. Quantum Phase Estimation
dónde f (n) (0) denota la i-ésima derivada. Obviamente no podemos realizar una sumatoria hasta el
infinito pero podemos truncarla hasta una aproximación aceptable.
En 1807 Joseph Fourier descubrió que la expansión de Taylor no tiene porqué ser necesariamente
con polinomios. Mientras tengamos una base ortonormal, podemos definir una expansión sobre esta
base, en este caso el propuso una base de senos y cosenos,
∞
2πnx 2πnx
X
y(x) = A0 + An sin + Bn cos (150)
P P
n=0
Dónde en este caso podemos asumir que y(x) es una función periódica con periodo P (Si y(x) no
es periódico siempre podemos llevar P → ∞). Haciendo un par de trucos matemáticos, podemos
encontrar que los coeficientes son7 ,
1 P/2
Z
A0 = y(x)dx, (151)
P −P/2
2 P/2 2πnx
Z
An = y(x) cos dx, (152)
P −P/2 P
2 P/2 2πnx
Z
Bn = y(x) sin dx. (153)
P −P/2 P
7 Esto se conoce cómo el truco de Fourier. Debido a que las funciones son ortogonales, podemos multiplicar por
ambos lados de la función y al integrar por ambos lados (Equivalente a un producto punto) sólo sobrevive el término
que es el mismo.
29
al igual que en otros casos podemos utilizar la notación compleja para representar estas funciones
en forma compleja,
∞
X 2πnx
y(x) = cn e i P (154)
n=−∞
dónde,
c0 = A0 , (155)
cn = (An − iBn )/2 para n > 0, (156)
c−n = (A−n + iB−n )/2 para n < 0, (157)
(158)
y,
1 P/2
Z
2πnx
cn = y(x)e−i P dx (159)
P −P/2
Y utilizando P = 2π
ω0 de la ecuación 160
∞ ∞
X ω0 X 1
y(x) = C(ω)e iωx
= C(ω)eiωx dω (164)
n=−∞
2π n=−∞
2π
30
5.2. Interpretación fı́sica
5.3. QFT
Implementar la transformada de Fourier cuántica es equivalente a hacer una transformada de
Fourier discreta y para nuestra ventaja la implementación en una computadora cuántica es sencilla
de realizar.
Dada una base ortonormal estándar, entonces la transformada cuántica de Fourier nos genera
una base ortonormal en el espacio fase,
N −1
1 X i 2π j·k
|yk ⟩ = √ e N |j⟩. (169)
N j=0
√
Notemos que tenemos todos los posibles estados |j⟩ con el mismo peso 1/ N , pero con distinta
fase. Esto significa que todos los qubits se encuentran en el plano x − y de la esfera de Bloch8 .
De manera matricial podemos observar la transformada cuántica de Fourier cómo,
0·0 1·0 (N −1)·0
ωN ωN ... ωN
0·1 1·1 (N −1)·1
ωN ωN ... ωN
0·2 1·2 (N −1)·2
= (170)
FN ωN ωN ... ωN
.. .. .. ..
. . . .
0·(N −1) 1·(N −1) (N −1)·(N −1)
ωN ωN ... ωN
2π
, dónde N es el número de posibles estados y ωN = ei N . La implementación de la transformada
de Fourier Cuántica requiere únicamente de compuertas Hadamard y fases controladas. Para un
sistema de 3 qubits,
|q1 ⟩ P (π/2) H •
|q2 ⟩ H • • ×
Dónde el último SWAP es para mantener las convenciones de qiskit. Para un sistema de n qubits
seguimos el mismo patrón para generar la transformada cuántica de Fourier.
8 Para tener una mejor visualización de esto se recomienda revisar la página QFT-qiskit-textbook
31