Saltearse al contenido

Algoritmo de Grover

El algoritmo de Grover es el algoritmo de búsqueda cuántico por excelencia, ya que permite encontrar un elemento dentro de un conjunto de elementos no estructurado. Es muy importante porque puede aplicarse sobre diferentes clases de problemas y acelerar los algoritmos clásicos que usan heurísticas de búsqueda.

Dada una base de datos no ordenada de NN elementos, de la cual sólo uno de ellos satisface una propiedad en particular, se quiere encontrar dicho elemento. El mejor algoritmo clásico conocido realiza esta tarea en O(N)O(N) pasos, mientras que este algoritmo puede resolverlo en O(N)O(\sqrt{N}) pasos.

Los pasos llevados a cabo en este algoritmo se corresponden con la metodología general de la amplificación de amplitudes (AA), implementada de manera específica para el problema planteado en este artículo. Se recomienda ver la explicación completa de dicha primitiva y luego volver para comprender su aplicación sobre el algoritmo de Grover. Cabe aclarar que, a diferencia de lo expuesto en AA, el circuito utilizará un cubit auxiliar adicional para implementar el oráculo de fase.

El programa comienza en el estado 0n\ket{0}^{\otimes n} (ignorando cubits auxiliares). El algoritmo de Grover recurre a la superposición A=H\mathcal{A} = H, aplicando la transformación de Hadamard para alcanzar un estado de superposición uniforme sobre todas las soluciones en el espacio de búsqueda.

Ψ=A0=H0=1N0N1x\ket{\Psi} = \mathcal{A}\ket{0} = H\ket{0} = \frac{1}{\sqrt N} \sum_{0}^{N - 1}\ket{x}

La función χ\chi, encargada de reconocer la solución al problema, se asume implementada por medio de un oráculo cuántico. Precisamente, se trata de un oráculo de fase, encargado de marcar la solución del problema de búsqueda aplicando un cambio de fase. En este artículo se llamará OO al operador asociado a dicho oráculo. En términos de AA, Sχ=OS_{\chi} = O.

Se produce a efectos de la puerta Hadamard ya que se trabaja con superposiciones uniformes.

Las iteraciones de Grover son comprendidas por las etapas de selección y reflejo. Sean Sχ=OS_{\chi} = O, A=H\mathcal{A} = H y A=H\mathcal{A}^\dag = H debido a que la transformación de Hadamard es su propia inversa. En términos de AA, las iteraciones de Grover constituyen la aplicación del siguiente operador QQ:

Q=HS0HOQ = -H S_0 H O

Dado que la probabilidad inicial de éxito aa es exactamente 1N\frac{1}{N} (existe una única solución al problema), si se mide luego de m=π4Nm = \left\lfloor \frac{\pi}{4} \sqrt{N} \right\rfloor iteraciones de QQ, la probabilidad de encontrar la solución tiene una cota inferior de 11N1 - \frac{1}{N}. Ver detalles en AA.

Algoritmo de Grover en un circuito cuántico utilizando la iteración de Grover G.

Figura (1): Algoritmo de Grover en un circuito cuántico utilizando la iteración de Grover QQ.

Iteración de Grover G en un circuito cuántico.

Figura (2): Iteración de Grover Q en un circuito cuántico. “In” representa el estado del registro de búsqueda, mientras que “aux” es el cubit auxiliar usado por el oráculo de fase.

Sea x=0011x=0011 la solución única al problema, se modifica el oráculo con una función que toma valor 1 únicamente con dicha cadena. Se sabe de antemano que el problema tiene una solución.

Se analizan los pasos del algoritmo donde:

  • Γ0\Gamma_0 es el estado inicial 0\ket{0}
  • Γ1\Gamma_1 se corresponde con la preparación del estado cuántico que resulta en Ψ\ket{\Psi}
  • σ\sigma representa el resultado de aplicar la operación de selección
  • λ\lambda es el efecto de la etapa de reflejo

En σ\sigma y λ\lambda se utilizará como subíndice el número de iteración.

La cantidad óptima de iteraciones es:

Niteraciones=π4241=π=3 N_{iteraciones}=\left\lfloor \frac{\pi}{4}\sqrt{\frac{2^4}{1}} \right\rfloor=\lfloor \pi \rfloor = 3
\(\Gamma_0\)

El estado inicial del algoritmo 04\ket{0}^{\otimes 4}

$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$
\(\Gamma_1\)

Estado cuántico luego de la preparación (aplicación del algoritmo A=H\mathcal{A} = H)

$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$
\(\sigma_1\)

Notar que 0011\ket{0011} tiene invertida la fase

$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$
\(\lambda_1\)

Notar la “deselección” de 0011\ket{0011}

$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$
\(\sigma_2\)
$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$
\(\lambda_2\)
$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$
\(\sigma_3\)
$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$
\(\lambda_3\)

Notar que no “deselecciona” ya que alcanzó la cantidad óptima de iteraciones.

$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$

Llegados a este punto, el problema se encuentra resuelto con una probabilidad de 96.1319%. Se realiza una cuarta iteración para mostrar el decremento de la probabilidad al exceder la cantidad óptima de iteraciones.

\(\sigma_4\)

Notar que la operación de “selección” no logró distinguir al estado bueno.

$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$
\(\lambda_4\)
$$\ket{0000}$$
$$\ket{0001}$$
$$\ket{0010}$$
$$\ket{0011}$$
$$\ket{0100}$$
$$\ket{0101}$$
$$\ket{0110}$$
$$\ket{0111}$$
$$\ket{1000}$$
$$\ket{1001}$$
$$\ket{1010}$$
$$\ket{1011}$$
$$\ket{1100}$$
$$\ket{1101}$$
$$\ket{1110}$$
$$\ket{1111}$$

Por lo que en una cuarta iteración se disminuyen las probabilidades de encontrar el número buscado.

Bibliografía:
Recomendada
Alternativa
Opcional