Estoy confundido acerca de qué ingresar a Oracle en el algoritmo de Grover.
¿No necesitamos ingresar a Oracle lo que estamos buscando y dónde encontrar lo que estamos buscando, además de los estados cuánticos superpuestos?
Por ejemplo, supongamos que tenemos una lista de nombres de personas {"Alice", "Bob", "Corey", "Dio"}, y queremos saber si "Dio" está en la lista. Entonces, Oracle debería tomar como entrada y salida . Entiendo eso.1 / 2 ( | 00 ⟩ + | 01 ⟩ + | 10 ⟩ - | 11 ⟩ )
¿Pero no necesitamos también ingresar la palabra "Dio" y la lista {"Alice", "Bob", "Corey", "Dio"} a Oracle? De lo contrario, ¿cómo puede Oracle devolver la salida? ¿No se menciona explícitamente ya que Oracle es una caja negra y no tenemos que pensar en cómo implementarlo?
Mi comprensión sobre Oracle es,
- Oracle tiene la capacidad de reconocer si la palabra "Dio" está en la lista.
- Para hacerlo, Oracle toma los estados cuánticos superpuestos como una entrada, donde cada estado cuántico representa el índice de la lista.
- Entonces, ingrese a Oracle significa, verifique si la palabra "Dio" está en el índice 0 de la lista y devuelva caso afirmativo y devuelva contrario.- | 00 ⟩ | 00 ⟩
- En nuestro caso, Oracle devuelve .
- ¿Pero qué hay de la lista y la palabra?
Respuestas:
Aunque las explicaciones populares del algoritmo de Grover hablan de buscar en una lista, en realidad lo usa para buscar posibles entradas 0..N-1 a una función. El costo del algoritmo es donde es el número de entradas que desea buscar y es el costo de evaluar la función. Si desea que esa función busque en una lista, debe codificar la lista en la función.NFO ( N--√⋅ F) norte F
La codificación dura de la función para usar una lista de elementos suele ser una muy mala idea, ya que tiende a hacer que igual a . Lo que haría que el costo total del algoritmo de Grover . ¿Qué tipo de derrotas el propósito, ya que .F O ( N ) O ( √norte F O ( N) N 1.5 >NO ( N--√⋅ F) = O ( N--√⋅ N) = O ( N1,5) norte1,5> N
fuente