Elección del número de iteraciones
Hemos establecido que el vector de estado del registro en el algoritmo de Grover permanece en el subespacio bidimensional generado por y una vez realizado el paso de inicialización.
El objetivo es encontrar un elemento , y este objetivo se logra cuando obtenemos el estado — porque al medir este estado, obtenemos garantizadamente un resultado de medición . Como el estado de después de iteraciones en el paso 2 es
debemos elegir de modo que
sea lo más cercano posible a en valor absoluto, para maximizar la probabilidad de obtener en la medición. Para cualquier ángulo , el valor oscila a medida que aumenta, pero no es necesariamente periódico — no hay garantía de que obtengamos el mismo valor dos veces.
Naturalmente, además de una alta probabilidad de obtener un elemento de la medición, también queremos elegir tan pequeño como sea posible, ya que aplicaciones de la operación requieren consultas a la función . Dado que buscamos que sea cercano a en valor absoluto, un enfoque natural es elegir de modo que
Resolviendo para obtenemos
Como debe ser un entero, no siempre podemos alcanzar exactamente este valor — pero podemos tomar el entero más cercano a este valor, que es
Este es el número recomendado de iteraciones para el algoritmo de Grover. A lo largo del análisis, veremos que la cercanía de este entero al valor objetivo afecta el rendimiento del algoritmo.
(Como nota al margen: cuando el valor objetivo cae exactamente a mitad de camino entre dos enteros, esta expresión para da el redondeo hacia arriba. Alternativamente, se podría redondear hacia abajo, lo cual tiene sentido ya que significa una consulta menos — pero esto es secundario y no tiene importancia para los propósitos de la lección.)
Si recordamos que el valor del ángulo viene dado por la fórmula
vemos que el número recomendado de iteraciones depende del número de cadenas en . Esto presenta un desafío cuando no sabemos cuántas soluciones tenemos, como discutiremos más adelante.
Búsqueda única
Concentrémonos primero en la situación en la que hay exactamente una cadena con . Dicho de otro modo, consideramos una instancia del problema de búsqueda única. En este caso tenemos
lo cual puede aproximarse convenientemente como
cuando se hace grande. Sustituyendo en la expresión
obtenemos
Como no es solo el número de ejecuciones de la operación , sino también el número de consultas a la función que requiere el algoritmo, estamos en camino hacia un algoritmo que requiere consultas.
Examinemos ahora qué tan bien funciona la elección recomendada de . La probabilidad de que la medición final produzca la solución única puede expresarse explícitamente como
El primer argumento, , se refiere al número de elementos sobre los que estamos buscando, y el segundo argumento, aquí , al número de soluciones. Un poco más adelante usaremos la misma notación de manera más general cuando haya múltiples soluciones.
Aquí hay una tabla de probabilidades de éxito para valores crecientes de .
Observa que estas probabilidades no aumentan estrictamente de forma monótona. En particular, hay una anomalía interesante en , donde obtenemos una solución con certeza. Sin embargo, puede demostrarse en general que
para todo , de modo que la probabilidad de éxito tiende a en el límite de grande, como los valores anteriores parecen confirmar. ¡Esto es bueno!
Pero observa que incluso una cota débil como demuestra la utilidad del algoritmo de Grover. Para cualquier resultado de medición que obtengamos al ejecutar el procedimiento, siempre podemos verificar con una sola consulta a si . Y si con una probabilidad de como máximo no obtenemos la cadena única con al ejecutar el procedimiento una vez, entonces después de ejecuciones independientes no habremos obtenido esta cadena única con una probabilidad de como máximo . Es decir, con consultas a obtenemos la solución única con una probabilidad de al menos . La mejor cota muestra que la probabilidad de encontrar con este método es en realidad al menos .
Múltiples soluciones
Con el número de elementos en también varía el ángulo , lo cual puede afectar considerablemente la probabilidad de éxito del algoritmo. Por brevedad, escribimos para el número de soluciones, y como antes asumimos que .
Como ejemplo motivador, imaginemos que tenemos soluciones en lugar de una sola, como consideramos arriba. Esto significa que
lo cual es aproximadamente el doble del ángulo en el caso , cuando es grande. Supongamos que no supiéramos nada mejor y eligiéramos el mismo valor de que en el caso de solución única:
El impacto sería catastrófico, como muestra la siguiente tabla de probabilidades.
Esta vez la probabilidad de éxito tiende a cuando tiende a infinito. Esto se debe a que estamos rotando el doble de rápido que con una solución única, por lo que pasamos de largo el objetivo y terminamos cerca de .
Si en cambio usamos la elección recomendada de , que es
para
el rendimiento mejora. Más precisamente, esta elección de conduce al éxito con alta probabilidad.
Generalizando, puede demostrarse que
donde usamos la notación sugerida arriba: denota la probabilidad de que el algoritmo de Grover, ejecutado durante iteraciones, descubra una solución cuando hay un total de soluciones entre posibilidades.
Esta cota inferior de para la probabilidad de éxito es algo peculiar, ya que más soluciones implican una peor cota inferior — pero asumiendo que es significativamente menor que , concluimos igualmente que la probabilidad de éxito es razonablemente alta. Como antes, el mero hecho de que sea razonablemente grande implica la utilidad del algoritmo.
También se cumple que
Esta cota inferior describe la probabilidad de que una cadena elegida uniformemente al azar sea una solución — por lo que el algoritmo de Grover siempre funciona al menos tan bien como la adivinación aleatoria. (De hecho, el algoritmo de Grover con es exactamente la adivinación aleatoria.)
Consideremos ahora el número de iteraciones (y por tanto el número de consultas)
para
Para todo se tiene , y por lo tanto
Esto implica que
Esto corresponde a un ahorro en el número de consultas cuando crece. En particular, el número de consultas necesarias es
Número desconocido de soluciones
Si el número de soluciones es desconocido, se requiere un enfoque diferente, ya que en esta situación no tenemos conocimiento de para informar nuestra elección de . De hecho, hay varios enfoques posibles.
Un enfoque sencillo es elegir uniformemente al azar de
Tal elección de siempre encuentra una solución (si existe) con una probabilidad de más del 40%, aunque esto no es obvio y requiere un an álisis que no se incluye aquí. Sin embargo, tiene sentido, especialmente si consideramos la imagen geométrica: rotar el estado de un número aleatorio de veces no es muy diferente de elegir un vector unitario aleatorio en el espacio generado por y , para el cual es probable que el coeficiente de sea razonablemente grande. Repitiendo este procedimiento y verificando el resultado de la misma manera descrita anteriormente, la probabilidad de encontrar una solución puede acercarse mucho a .
Existe un método más refinado que encuentra una solución, si existe alguna, con consultas, incluso cuando el número de soluciones no es conocido, y que requiere consultas para determinar que no hay soluciones cuando .
La idea básica consiste en elegir iterativamente de manera uniforme al azar del conjunto , para valores crecientes de . En particular, podemos comenzar con y aumentarlo exponencialmente, deteniendo siempre el proceso tan pronto como se encuentre una solución, y limitando para no desperdiciar consultas cuando no hay solución. El procedimiento aprovecha el hecho de que se necesitan menos consultas cuando existen más soluciones. Sin embargo, se requiere cuidado para equilibrar la tasa de crecimiento de con la probabilidad de éxito de cada iteración. ( funciona, por ejemplo, como muestra un análisis. Sin embargo, duplicar no funciona — es un aumento demasiado rápido.)
Los casos triviales
En todo el análisis anterior hemos asumido que el número de soluciones no es cero. De hecho, al referirnos a los vectores
hemos asumido implícitamente que tanto como no están vacíos. Aquí consideraremos brevemente qué sucede cuando uno de estos conjuntos está vacío.
Antes de entrar en el análisis, señalemos lo obvio: Si cada cadena es una solución, veremos una solución al medir; y si no hay soluciones, no veremos ninguna. En cierto sentido, no hace falta profundizar más que eso.
Sin embargo, podemos verificar rápidamente las matemáticas para estos casos triviales. La situación en la que uno de y está vacío ocurre cuando es constante; está vacío cuando para todo , y está vacío cuando para todo . Esto significa que
y por lo tanto
Independientemente del número de iteraciones que realicemos en estos casos, las mediciones siempre producirán una cadena elegida uniformemente al azar.