Question
Je souhaite utiliser l'algorithme Grover pour rechercher dans une base de données non triée un élément . Maintenant, la question se pose, comment puis-je initialiser l'index et la valeur de la base de données avec les qubits?
Exemple
- Disons que j'ai qubits. Ainsi, valeurs classiques peuvent être mappées.
- Ma base de données non triée contient les éléments suivants: .
- Je veux rechercher .
- Mon approche: indexer la base de données avec . Registres et pour l'index et registres et pour la valeur. Ensuite, appliquez l'algorithme Grover uniquement aux registres et . Cela peut-il être réalisé? Y a-t-il une autre approche?
Ce que j'ai déjà implémenté ( sur GitHub )
Le "Grover-Algorithm with 2-, 3-, 4-Qubits", mais ce qu'il fait est simple: les bits sont initialisés avec , l'oracle marquera ma solution (qui est juste un nombre comme ), la partie Grover augmentera la probabilité de l'élément sélectionné et diminuera toutes les autres probabilités, puis les qubits seront lus en étant mappés sur les bits classiques. Nous laissons ce processus s'exécuter plusieurs fois de suite et obtenons ainsi une distribution de probabilité, où la probabilité la plus élevée a notre élément recherché .
La sortie est toujours la même que celle marquée dans l'oracle. Comment puis-je générer plus d'informations à partir de la sortie, que je ne connais pas au moment où j'ai construit l'oracle?