¿Cómo se implementa el oráculo en el algoritmo de búsqueda de Grover?


27

El algoritmo de búsqueda de Grover proporciona una aceleración cuadrática demostrable para la búsqueda de bases de datos sin clasificar. El algoritmo generalmente se expresa mediante el siguiente circuito cuántico:

En la mayoría de las representaciones, una parte crucial del protocolo es la "puerta del oráculo" Uω , que "mágicamente" realiza la operación |x(1)f(x)|x . Sin embargo, a menudo no se dice lo difícil que sería realmente realizar tal puerta. De hecho, podría parecer que este uso de un "oráculo" es solo una forma de barrer las dificultades debajo de la alfombra.

¿Cómo sabemos si tal operación oracular es realmente realizable? Y si es así, ¿cuál es su complejidad (por ejemplo, en términos de complejidad de la descomposición de la puerta)?


55
Eso es algo de lo que también me preguntaba. En este experimento, por ejemplo, conectan la solución al oráculo, que sabe un poco a engañarme ...
M. Stern

Otra gran respuesta a esta pregunta se proporciona en esta respuesta en CS Theory SE.
glS

Respuestas:


20

ff:{0,1}n{0,1}

x{1,if SHA-256(x)=y;0,otherwise,

y

x{1,if 2xy(mod220481942289),0,otherwise,

que tiene una estructura que puede explotarse para invertirlo más rápido incluso en una computadora clásica.

La pregunta sobre el costo particular no puede responderse en general porque puede ser cualquier circuito, es solo cuestión de hacer un circuito cuántico a partir de un circuito clásico . Pero generalmente, como en el ejemplo anterior, la función es muy barata de evaluar en una computadora clásica, por lo que no debería representar una carga particularmente onerosa en una computadora cuántica para la cual todo lo demás sobre el algoritmo de Grover está dentro de su presupuesto.ff

El único costo general sobre es una puerta NOT condicional adicional donde es xor, y un qubit auxiliar adicional para ello. En particular, si tenemos un circuito construido a partir de y el circuito para , entonces si lo aplicamos a junto con un qubit auxiliar inicialmente en el estado dondef

C:|a|b|a|ab
F:|x|a|junk|x|af(x)|junk
Cf|x|=H|1=(1/2)(|0|1)H es una puerta de Hadamard, entonces obtenemos

F|x||junk=12(F|x|0|junkF|x|1|junk)=12(|x|f(x)|junk|x|1f(x)|junk).

Si entonces , entonces simplificando obtenemos mientras que si entonces , entonces y por lo tanto en generalf(x)=01f(x)=1

F|x||junk=|x||junk,
f(x)=11f(x)=0
F|x||junk=|x||junk,
F|x||junk=(1)f(x)|x||junk.


5

Bueno, el artículo original de Grover, "La mecánica cuántica ayuda a buscar una aguja en un pajar", establece claramente que se supone que C (S) se puede evaluar en un tiempo constante. La búsqueda de Grover no está preocupada por la implementabilidad, sino por la reducción polinómica en lo que se llama una complejidad de consulta (cuántas veces consulta el oráculo, como una base de datos clásica)

De hecho, el concepto de oráculo en computación fue propuesto por Alan Turing para describir construcciones para las cuales una descripción en un UTM podría no ser realizable (Wikipedia). Que es en cierto sentido mágico.

Pero, por supuesto, volviendo a su pregunta, ¿cómo hacemos realmente el circuito para el algoritmo de búsqueda de Grover (o cualquier oráculo)? ¿Necesitamos saber la respuesta de antemano para buscar el resultado? Bueno, en cierto sentido lo necesitas. Eso es exactamente en lo que las mejoras inteligentes en la búsqueda de Grover intentan trabajar, de tal manera que no necesitamos saber de antemano la respuesta exacta, sino algunas de sus propiedades. Permítanme ilustrar con un ejemplo.

Para el problema de reconocimiento de patrones usando la búsqueda de Grover, si tengo 4 patrones en 2 qubits (00, 01, 10, 11) y quiero marcar y amplificar 11, la diagonal de mi oráculo unitario debería ser como (1,1,1 , -1) para encargarse del cambio de fase pi para la solución. Entonces, para esta implementación simple, para la construcción de lo unitario, necesita saber la respuesta completa de antemano.

Una mejora inteligente de la finalización del patrón si se da en el documento "Coincidencia de patrones cuánticos" de Mateas y Omar. En esencia, construye tantos oráculos fijos como alfabetos en el conjunto. Entonces, para nuestra cadena binaria, habrá un oráculo que marca todos los 1 y otro que marca todos los 0. Los oráculos se invocan condicionalmente en función de lo que quiero buscar. Si quiero buscar 11, llamo al oráculo 1 en el LSqubit, y al oráculo 1 nuevamente en el MSqubit. En el primer oráculo, amplificaría los estados (01, 11), es decir, estados con LSQ como 1, y en la segunda llamada, amplificaría (10, 11). Como puede ver, 11 es el único estado que se amplifica dos veces, lo que termina en una mayor probabilidad de medición. Aunque el circuito cuántico compilado cambiaría en función de cuál sea mi patrón de búsqueda de entrada, Una descripción de alto nivel del algoritmo cuántico sigue siendo la misma. Puede pensar en los oráculos como llamadas de función basadas en un caso de cambio del conjunto de alfabeto invocado para cada carácter en la cadena de búsqueda.


Entonces, si debe saber para construir ¿cuál es el punto? Si no, no tengo claro cómo implementar para un desconocido . He visto algunas implementaciones en IBM, ¡pero suponen que conozco ! ωUωUωωω
user185597 hace
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.