No, no lo hace.
El " oráculo " en el algoritmo de Grover es una función que, dado cualquier elemento , verifica si es el elemento que estamos buscando, digamos . Para hacer esto, el oráculo no necesita ningún conocimiento de todos los otros elementos que están en la base de datos .xkxkxtargetxj
Puede ser útil considerar un ejemplo más concreto. Supongamos que tiene una base de datos de números de teléfono de cuatro dígitos, con indica el elemento -ésimo en esta base de datos. Le interesa saber qué posición en la base de datos corresponde al elemento . Supongamos que el elemento 10000 de la base de datos es el único elemento, es decir, y para todos los .20000xkk1234x10000=1234xk≠1234k≠10000
En el caso clásico, al estar la base de datos sin clasificar, no hay mejor manera que revisar cada uno de los elementos de la base de datos y comparar cada uno con el objetivo . Para hacer esto, solo necesita tener un algoritmo que, dado , devuelva if y contrario. Una forma equivalente de plantear este problema es decir que queremos un algoritmo que, dada una lista de pares , devuelva el par de tal manera que es lo que queremos. Por lo tanto, en nuestro caso, queremos un algoritmo que proporcione devuelve1234xkyesxk=1234no{(k,xk)}20000k=1xk{(k,xk)}20000k=1(10000,x10000=1234). Tenga en cuenta que esto significa que la función que verifica cada par solo verifica las características de una parte del estado , a saber, la parte . De hecho, si este no fuera el caso, todo sería inútil porque no estaríamos recuperando ninguna información.xk
Este último encuadre del problema es el que uno debe tener en cuenta al pensar en el algoritmo de Grover.
En el caso cuántico, los pares convierten en los estados cuánticos (o simplemente como generalmente se denotan), y la función oracular solo verifica esa parte de la información almacenada en coincide con el objetivo . La salida del procedimiento es el estado . Ahora, ya sabemos parte de este estado , porque estaba codificado en el oráculo: sabemos que la segunda parte de la información codificada en es(k,xk)|ψk⟩|k⟩|ψk⟩|ψ10000⟩|ψ10000⟩1234, porque eso es lo que estábamos buscando en primer lugar, y es la información que se codificó en el oráculo mismo.
Sin embargo , el estado también contiene información adicional , a saber, la posición en la base de datos: .
Esta información no se usó para construir el oráculo , y es la información que obtenemos al ejecutar el algoritmo.|ψ10000⟩ 10000
Finalmente, tenga en cuenta que el oráculo no sabe nada sobre el contenido de la base de datos completa. Solo implementa coherentemente una función que verifica un solo estado contra su objetivo. Sin embargo, el hecho de que esta puerta funcione de manera coherente significa que se puede ingresar a esta función de verificación una superposición de muchos (posiblemente todos) los elementos de la base de datos y obtener una salida que contiene información global sobre todos los elementos de la base de datos.|ψk⟩