¿Cómo es la calidad de la traducción en esta página?
Análisis
Ahora analizamos el algoritmo de Grover para entender cómo funciona.
Comenzamos con lo que podría describirse como un análisis simbólico, en el que calculamos cómo la operación de Grover G actúa sobre ciertos estados, y luego conectamos este análisis simbólico con una imagen geométrica que ayuda a visualizar el funcionamiento del algoritmo.
El conjunto A1 contiene todas las soluciones de nuestro problema de búsqueda, mientras que A0 contiene las cadenas que no son soluciones (a las que nos referiremos como no soluciones cuando sea conveniente).
Estos dos conjuntos satisfacen A0∩A1=∅ y A0∪A1=Σn, es decir, esto es una bipartición de Σn.
A continuación, definimos dos vectores unitarios que representan superposiciones uniformes sobre los conjuntos de soluciones y no soluciones.
Formalmente, cada uno de estos vectores solo está definido si el conjunto correspondiente no está vacío, pero a continuación nos enfocamos en el caso en que ni A0 ni A1 están vacíos.
Los casos A0=∅ y A1=∅ pueden tratarse fácilmente por separado, lo cual haremos más adelante.
Como nota al margen: la notación utilizada aquí es común — siempre que tenemos un conjunto finito y no vacío S, podemos escribir ∣S⟩ para denotar el vector de estado cuántico distribuido uniformemente sobre los elementos de S.
Definamos además ∣u⟩ como el estado cuántico uniforme sobre todas las cadenas de n bits:
∣u⟩=N1x∈Σn∑∣x⟩.
Observa que
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩.
También tenemos que ∣u⟩=H⊗n∣0n⟩, por lo que ∣u⟩ representa el estado del registro Q después de la inicialización en el paso 1 del algoritmo de Grover.
Esto implica que el estado de Q inmediatamente antes de las iteraciones de G en el paso 2 se encuentra en el espacio vectorial bidimensional generado por ∣A0⟩ y ∣A1⟩, y que los coeficientes de estos vectores son números reales.
Como veremos, estas propiedades del estado — que es una combinación lineal real de ∣A0⟩ y ∣A1⟩ — se preservarán después de cualquier número de iteraciones de la operación G en el paso 2.
comenzando con una observación interesante al respecto.
Imaginemos brevemente que reemplazamos la función f por la composición de f con la función NOT — o dicho de otra manera, por la función que obtenemos al invertir el bit de salida de f.
Llamamos a esta nueva función g y podemos expresarla simbólicamente de varias formas alternativas.
g(x)=¬f(x)=1⊕f(x)=1−f(x)={10f(x)=0f(x)=1
Observa que
(−1)g(x)=(−1)1⊕f(x)=−(−1)f(x)
para cada cadena x∈Σn y, por lo tanto,
Zg=−Zf.
Esto significa que si reemplazáramos la función f por la función g, el algoritmo de Grover no funcionaría de manera diferente — porque los estados que obtenemos del algoritmo en ambos casos son necesariamente equivalentes salvo una fase global.
¡Esto no es un problema!
Intuitivamente hablando, al algoritmo no le importa qué cadenas son soluciones y cuáles no — solo necesita poder distinguir las soluciones de las no soluciones para funcionar correctamente.
Como ya hemos señalado, el estado de Q justo antes del paso 2 se encuentra en el espacio bidimensional abarcado por ∣A0⟩ y ∣A1⟩, y acabamos de establecer que G mapea cualquier vector en este espacio a otro vector en el mismo espacio.
Esto significa que, para propósitos del análisis, podemos enfocar nuestra atención exclusivamente en este subespacio.
Para entender mejor qué está sucediendo dentro de este espacio bidimensional, expresemos la acción de G en este espacio como una matriz,
cuya primera y segunda filas/columnas corresponden a ∣A0⟩ y ∣A1⟩, respectivamente.
Hasta ahora en esta serie, siempre hemos conectado las filas y columnas de las matrices con los estados clásicos de un sistema, pero las matrices también pueden usarse para describir las acciones de aplicaciones lineales sobre diferentes bases, como en este caso.
Aunque no es en absoluto obvio a primera vista, la matriz M es lo que obtenemos al elevar al cuadrado una matriz de apariencia más simple.
Este ángulo θ va a desempeñar un papel muy importante en el análisis que sigue, así que vale la pena resaltar su importancia aquí al verlo por primera vez.
A la luz de esta expresión de esta matriz, observamos que
Esto ocurre porque rotar por el ángulo θ dos veces es equivalente a rotar por el ángulo 2θ.
Otra forma de ver esto es utilizar la expresión alternativa
θ=cos−1(N∣A0∣),
junto con las fórmulas del ángulo doble de la trigonometría:
cos(2θ)sin(2θ)=cos2(θ)−sin2(θ)=2sin(θ)cos(θ).
En resumen, el estado del registro Q al comienzo del paso 2 es
Conectemos ahora el análisis que acabamos de realizar con una imagen geométrica.
La idea es que la operación G es el producto de dos reflexiones:
Zf y H⊗nZORH⊗n.
Y el efecto neto de dos reflexiones es una rotación.
Comencemos con Zf.
Como ya observamos anteriormente,
Zf∣A0⟩Zf∣A1⟩=∣A0⟩=−∣A1⟩.
En el espacio vectorial bidimensional generado por ∣A0⟩ y ∣A1⟩, esto es una reflexión respecto a la recta paralela a ∣A0⟩, que llamaremos L1.
Aquí hay una figura que ilustra la acción de esta reflexión sobre un vector unitario hipotético ∣ψ⟩,
que se asume como una combinación lineal real de ∣A0⟩ y ∣A1⟩.
Segundo, tenemos la operación H⊗nZORH⊗n, que ya sabemos que puede escribirse como
H⊗nZORH⊗n=2∣u⟩⟨u∣−I.
Esto también es una reflexión, esta vez respecto a la recta L2 paralela al vector ∣u⟩.
Aquí hay una figura que muestra la acción de esta reflexión sobre un vector unitario ∣ψ⟩.
Cuando componemos estas dos reflexiones, obtenemos una rotación — por el doble del ángulo entre las rectas de reflexión — como muestra esta figura.
Esto explica en términos geométricos por qué el efecto de la operación de Grover es rotar combinaciones lineales de ∣A0⟩ y ∣A1⟩ por un ángulo de 2θ.