Dans "Quantum Computation and Quantum Information" de Mike et Ike, l'algorithme de Grover est expliqué en détail. Cependant, dans le livre, et dans toutes les explications que j'ai trouvées en ligne pour l'algorithme de Grover, il ne semble pas y avoir de mention de la façon dont l'Oracle de Grover est construit, à moins que nous ne sachions déjà quel état nous recherchons, ce qui va à l'encontre du but de la algorithme. Plus précisément, ma question est la suivante: étant donné certains f (x) tels que pour une valeur x, f (x) = 1, mais pour tous les autres, f (x) = 0, comment construit-on un oracle qui nous tirera de notre état initial arbitraire | x> | y> à | x> | y + f (x)>? Un maximum de détails explicites (peut-être un exemple?) Serait grandement apprécié. Si une telle construction pour toute fonction arbitraire est possible avec Hadamard, Pauli ou d'autres portes quantiques standard,
16
Réponses:
L'oracle n'est fondamentalement qu'une implémentation du prédicat auquel vous souhaitez rechercher une solution satisfaisante.
Par exemple, supposons que vous ayez un problème à 3 sat:
Ou, sous forme de tableau, chaque ligne étant une clause à 3, x signifiant "cette variable false", o signifiant "cette variable true" et espace signifiant "pas dans la clause":
Faites maintenant un circuit qui calcule si l'entrée est une solution, comme ceci:
Maintenant, pour transformer votre circuit en un oracle, frappez le bit de sortie avec une porte Z et calculez les ordures que vous avez faites (c'est-à-dire exécutez le circuit de calcul dans l'ordre inverse):
C'est tout ce qu'on peut en dire. Calculez le prédicat, frappez le résultat avec un Z, calculez le prédicat. Voilà un oracle.
Répétez les étapes de diffusion avec les étapes oracle, et vous avez une recherche de grover :
... bien que vous devriez probablement choisir un exemple avec moins de solutions, la progression est donc progressive (au lieu de tourner le long du plan état de départ-solution-état de plus de 90 degrés par étape comme mon exemple).
la source