He estado tratando de entender cuál podría ser la ventaja de usar el algoritmo de Grover para buscar en una base de datos desordenada arbitraria D (clave, valor) con N valores en lugar de una búsqueda clásica.
Supuse que la función oracle es una función f (clave) = y, donde y es el índice del valor correspondiente en la base de datos clásica.
Mi problema está relacionado con el oráculo. El circuito del oráculo tiene que modificarse para que cada búsqueda se realice en la base de datos porque la clave se especifica en el oráculo. Asumamos que esta es una operación insignificante para simplificar.
Suponiendo que el circuito oracle tiene que calcularse clásicamente, requeriría producir un circuito que se comporte como la función f (clave) = y. Esta función se obtendría en al menos O (N) pasos (excepto en algunos casos especiales). El circuito de la función oracle debe recalcularse cada vez que se modifica / agrega / elimina una entrada de la base de datos, con un costo de O (N).
Muchos artículos como Implementaciones de algoritmos cuánticos para principiantes , Algoritmos cuánticos para emparejar y flujos de red parecen no considerar el oráculo en absoluto.
No sé si tengo que considerar una base de datos cuántica para obtener una ventaja real o no ( esto y la falta de fiabilidad de los resultados cuánticos me convencieron de que no es una muy buena idea, pero es solo una conjetura).
Entonces, ¿dónde se considera la complejidad para construir el oráculo? ¿He entendido mal algo?
¿Es "El circuito de la función oracle debe ser recalculado cada vez que se modifica / agrega / elimina una entrada de la base de datos, con un costo de O (N)"?
Respuestas:
El algoritmo de Grover no tiene una ventaja cuando se busca en una base de datos desordenada, porque codificar el oráculo en un circuito requiere operacionesΩ~( n ) . Puede probar esto con un simple argumento de conteo de circuitos. Si el circuito tuviera un tamaño O ( n0,99) , habría menos circuitos distintos que oráculos distintos. Entonces, la complejidad operativa real es Ω~( n1,5) , aunque la complejidad de la consulta es O ( n0,5) .
El algoritmo de Grover solo tiene una ventaja cuando lo que está buscando es abstracto, como posibles soluciones a un problema de SAT, en lugar de literalmente almacenado en el hardware en algún lugar, como una base de datos.
fuente
Tiene razón al reconocer la complejidad de construir el oráculo para usarlo con la búsqueda de Grover: de hecho, es la parte difícil de resolver el problema, y de hecho muchas fuentes no consideran esta complejidad.
Me gusta pensar en el oráculo como una herramienta para reconocer la respuesta, no para encontrarla. Por ejemplo, si está buscando resolver un problema SAT , el circuito oráculo codificará la fórmula booleana para una instancia específica de un problema que está tratando de resolver. El tamaño del circuito en este caso depende del tamaño de la fórmula y no del tamaño del espacio de búsqueda. Puede encontrar un ejemplo de implementación de un oráculo para una instancia de problema SAT en mi tutorial .
Si usara el algoritmo de Grover para la búsqueda en la base de datos, el oráculo tendría que codificar la condición que está buscando, pero también los criterios de si el elemento está en una base de datos. Por ejemplo, si está buscando un nombre que comience con A, el oráculo debe reconocer todas las cadenas que comienzan con A, pero también necesita reconocer cuáles de las cadenas están presentes en la base de datos; de lo contrario, el algoritmo generará una cadena aleatoria comenzando con A, que probablemente no sea lo que estabas buscando. (Esto no fue un problema con el ejemplo del problema SAT, ya que cualquier asignación de variables que satisfaga la fórmula es una asignación de variable válida).
No conozco un buen ejemplo del uso de la búsqueda de Grover para buscar a través de una base de datos no estructurada. Según tengo entendido, este algoritmo es adecuado para búsquedas que tienen alguna estructura. Vale la pena revisar otras preguntas sobre Grover en este sitio, ya que muchas de ellas considerarán implementaciones de Oracle.
fuente
El problema está en su suposición inicial: el oráculo para Grover se basa en una función f (valor) = 0/1, donde 1 indica que el valor cumple con sus criterios de búsqueda y 0 indica que no. Esto significa que debe crear un nuevo oráculo para cada búsqueda diferente, pero no para cada base de datos diferente.
Dicho esto, el algoritmo de Grover y una base de datos cuántica no son un buen reemplazo para los métodos clásicos de búsqueda de bases de datos. Eche un vistazo a este documento para una discusión de los aspectos prácticos del algoritmo de Grover en este contexto.
El algoritmo de Grover tiene una aplicación práctica cuando se generaliza a la amplificación de amplitud , que se muestra como un componente de muchos otros algoritmos cuánticos. La amplificación de amplitud es una forma de mejorar la probabilidad de éxito de un algoritmo cuántico probabilístico.
fuente
El algoritmo de Grover es un solucionador (cuántico) de circuito SAT. Supongo que también podría ser un solucionador literal de recuadros negros, pero solo funcionaría con recuadros negros que no decodifiquen su estado de entrada enredado, y estoy teniendo problemas para creer que tales cosas existen.
No sé por qué Grover o cualquier otra persona lo llamaron algoritmo de búsqueda de base de datos. Por supuesto, puede darle un circuito que implemente una prueba de membresía establecida, con algunas de las entradas conectadas a la clave que está buscando y el resto representando el valor de salida, y llamarlo búsqueda de base de datos. Pero podría hacer lo mismo con un solucionador de SAT clásico y nadie los llama algoritmos de búsqueda de base de datos, que yo sepa. Y para que Grover (o los solucionadores clásicos de SAT) sean competitivos en este tipo de problema, la "base de datos" debe ser fundamentalmente no indexable, lo que significa que es demasiado grande para ser indexable, lo que significa que en realidad no está almacenada en ningún lado, lo que hace que En mi opinión, no es una base de datos (y no datos).
Encontrar un circuito eficiente que implemente una función dada es un problema importante e interesante, pero también es increíblemente amplio; incluye gran parte de lo que se llama informática. No veo qué se puede decir al respecto en el contexto del algoritmo de Grover que no se aplicaría por igual en ningún otro contexto. El algoritmo de Grover solo toma un circuito optimizado una vez que lo ha encontrado y lo evalúa aproximadamente √N veces. El circuito necesita ser reversible, lo que lo hace algo diferente de los circuitos clásicos habituales, pero eso todavía no está directamente relacionado con Grover.
En resumen, creo que la gente no habla de encontrar el circuito oráculo porque en realidad no está relacionado con el algoritmo cuántico (a pesar del título del artículo de Grover) y porque es un tema tan complejo y de gran alcance que ningún tratamiento podría hacerle justicia de todos modos .
fuente