1. Bit
  2. Qubit
  3. Superposición
  4. Medida
  5. Entrelazamiento
  6. Circuitos
  7. Fourier
  8. Shor
  9. Grover
  10. Corrección

Capítulo 08 · Algoritmo de Grover

Buscar con rotaciones

Para encontrar un elemento marcado entre N sin ninguna estructura que ayude, cualquier algoritmo clásico necesita unos N intentos. Lov Grover encontró un algoritmo cuántico que necesita solo unos N, girando un vector poco a poco en un plano de dos dimensiones. Y está demostrado que no se puede hacer mejor.

Imagina una guía telefónica con N entradas desordenadas y un único nombre que buscas. Sin ninguna estructura que ayude, la única estrategia clásica es mirar entrada a entrada: N/2 consultas de media, N en el peor caso. En 1996 Lov Grover, en los Laboratorios Bell, demostró que un ordenador cuántico puede encontrarlo con unas π4N consultas. Para un millón de entradas, unas 800 en lugar de medio millón.

El problema

Tenemos N=2n elementos y un oráculo que reconoce el marcado, w: una función f(x)=1 si x=w y 0 si no. Cuánticamente, el oráculo actúa como un cambio de signo:

O|x⟩=(−1)f(x)|x⟩,O=I−2|w⟩⟨w|.

El oráculo cambia el signo de la amplitud del elemento marcado pero, por sí solo, no cambia ninguna probabilidad. Algo tiene que convertir ese signo en probabilidad. Ese es el trabajo de la interferencia.

El algoritmo

Se parte de la superposición uniforme |s⟩=H⊗n|0⟩=1N∑x|x⟩ y se repite k veces la iteración de Grover:

G=DO,D=2|s⟩⟨s|−I.

El operador D, llamado difusión, es una inversión respecto a la media: lleva cada amplitud ax a 2a¯−ax, donde a¯ es la media. Tras el oráculo, la amplitud marcada es negativa y queda muy por debajo de la media; al invertirla, sube muy por encima. Cada iteración bombea un poco más de amplitud hacia |w⟩.

El algoritmo de Grover paso a paso. Las barras son las amplitudes (reales, con signo) y la línea discontinua es su media. «Oráculo» cambia el signo del elemento marcado; «Difusión» refleja cada amplitud respecto a la media. La gráfica de la derecha muestra la probabilidad de éxito tras cada iteración: oscila como sin2⁡((2k+1)θ), así que iterar de más es tan malo como iterar de menos.

La geometría: dos reflexiones forman una rotación

Todo el algoritmo ocurre en un plano de dos dimensiones. Sean |w⟩ el estado marcado y |w⟂⟩ la superposición uniforme de los no marcados. El estado inicial está en el plano que generan:

|s⟩=sin⁡θ|w⟩+cos⁡θ|w⟂⟩,sin⁡θ=1N.
Teorema (la iteración de Grover es una rotación)

En el plano generado por |w⟩ y |w⟂⟩, el oráculo O es la reflexión respecto a |w⟂⟩ y D es la reflexión respecto a |s⟩. Su producto G=DO es una rotación de ángulo 2θ hacia |w⟩. Tras k iteraciones,

Gk|s⟩=sin⁡((2k+1)θ)|w⟩+cos⁡((2k+1)θ)|w⟂⟩,

y la probabilidad de medir w es sin2⁡((2k+1)θ).

Demostración

O deja fijo |w⟂⟩ y cambia de signo |w⟩, así que es la reflexión respecto a la recta de |w⟂⟩. D=2|s⟩⟨s|−I deja fijo |s⟩ y cambia de signo todo vector ortogonal a él: la reflexión respecto a la recta de |s⟩. La composición de dos reflexiones respecto a rectas que forman un ángulo θ es una rotación de ángulo 2θ (un resultado clásico de geometría plana). El estado inicial forma un ángulo θ con |w⟂⟩; tras k rotaciones, forma (2k+1)θ.

Para llegar a |w⟩ queremos (2k+1)θ≈π/2, es decir,

k≈π4θ−12≈π4N,

ya que θ≈1/N para N grande. Con M elementos marcados, sin⁡θ=M/N y hacen falta unas π4N/M iteraciones. La aceleración cuadrática viene de que la probabilidad es el cuadrado de la amplitud: la amplitud crece linealmente con k, así que solo tiene que llegar a 1 partiendo de 1/N.

No se puede hacer mejor

Antes de que se conociera siquiera el algoritmo de Grover, Bennett, Bernstein, Brassard y Vazirani ya habían demostrado que sería óptimo.

Teorema (BBBV, 1997)

Todo algoritmo cuántico que encuentra el elemento marcado entre N con probabilidad al menos 2/3, consultando el oráculo como una caja negra, debe hacer Ω(N) consultas.

Idea de la demostración (argumento híbrido)

Ejecutamos el algoritmo con un oráculo que no marca nada. Tras T consultas, el «peso de consulta» total que ha puesto sobre todos los elementos es T, así que algún elemento w ha recibido un peso de como mucho T/N. Cambiar el oráculo para que marque w perturba cada paso en una cantidad proporcional a la raíz cuadrada de ese peso, y las perturbaciones suman como mucho O(T/N) en norma. Para distinguir las dos situaciones, los estados finales deben diferir en una constante, así que T=Ω(N).

Christof Zalka (1999) demostró que el algoritmo de Grover es óptimo incluso en la constante. La consecuencia es importante: para problemas sin estructura, los ordenadores cuánticos ofrecen una aceleración cuadrática, no exponencial. En particular, no se espera que resuelvan problemas NP-completos en tiempo polinómico simplemente «probando todas las respuestas a la vez».

Amplificación de amplitud

Brassard, Høyer, Mosca y Tapp (2002) generalizaron la idea. Si un algoritmo cuántico 𝒜 acierta con probabilidad p, se puede convertir en uno que acierta con alta probabilidad usando solo O(1/p) repeticiones de 𝒜 y 𝒜−1, frente a las O(1/p) que necesita la repetición clásica. Es un acelerador cuadrático para casi cualquier subrutina cuántica.

Referencias

  1. L. K. Grover (1996). «A fast quantum mechanical algorithm for database search». STOC.
  2. C. H. Bennett, E. Bernstein, G. Brassard y U. Vazirani (1997). «Strengths and Weaknesses of Quantum Computing». SIAM J. Computing, 26(5).
  3. M. Boyer, G. Brassard, P. Høyer y A. Tapp (1998). «Tight bounds on quantum searching». Fortschritte der Physik, 46.
  4. C. Zalka (1999). «Grover's quantum searching algorithm is optimal». Physical Review A, 60(4).
  5. G. Brassard, P. Høyer, M. Mosca y A. Tapp (2002). «Quantum amplitude amplification and estimation». Contemporary Mathematics, 305.