Se utiliza el algoritmo de Grover, entre otras cosas, para buscar un elemento en una lista desordenada de elementos de longitud . A pesar de que hay muchas preguntas aquí sobre este tema, todavía extraño el punto.
Buscando en una lista, la forma clásica
Normalmente, me gustaría diseñar una función de búsqueda de esta manera
La lista de longitud es .
El elemento deseado es . Debo obtener . Cada tarjeta se puede codificar con bits, la lista tiene elementos, por lo que necesitamos bits para codificar la lista. En este caso, el oráculo implementará la función:
Sin embargo, la entrada del algoritmo de Grover no es un estado de qubits.
(Nota: la imagen del mazo barajado se toma desde aquí )
Grover y su oráculo
(Por ejemplo. Varias fuentes aquí - explica gráficamente) dicen que la entrada del algoritmo es diferente: la entrada es un estado tomado de la espacio de búsqueda donde es el número de elementos de la lista. Cada número corresponde a la posición de un elemento en la lista.
La entrada de ahora es un qubit vector , que debe ser una superposición de todos los elementos en el espacio de búsqueda .
Sabemos
- corresponde a ;
- corresponde a ;
- corresponde a ;
- corresponde a que es el elemento deseado;
- y así...
En este caso tenemos que
Construir el oráculo requiere que sepamos que está en la posición 5. ¿Cuál es el punto de ejecutar el algoritmo si ya hemos buscado el elemento para construir el oráculo?