La fonction est simplement une fonction booléenne arbitraire d'une chaîne de bits: . Pour les applications pour briser la cryptographie, telles que [1] , [2] ou [3] , il ne s'agit pas en fait d'une «recherche de base de données», ce qui nécessiterait de stocker la base de données entière en tant que circuit quantique, mais plutôt une fonction telle queff:{0,1}n→{0,1}
x↦{1,0,if SHA-256(x)=y;otherwise,
pour fixe , qui n'a pas de structure, nous pouvons exploiter pour une recherche classique, contrairement, disons, à la fonctiony
x↦{1,0,if 2x≡y(mod22048−1942289),otherwise,
qui a une structure qui peut être exploitée pour l'inverser plus rapidement même sur un ordinateur classique.
La question du coût particulier ne peut pas être répondu en général parce que peut être n'importe quel circuit - il s'agit juste de faire un circuit quantique à partir d'un circuit classique . Mais généralement, comme dans l'exemple ci-dessus, la fonction est très bon marché à évaluer sur un ordinateur classique, donc elle ne devrait pas représenter une charge particulièrement onéreuse pour un ordinateur quantique pour lequel tout le reste de l'algorithme de Grover est dans votre budget.ff
Le seul coût général au-dessus de est une porte NON conditionnelle supplémentaire où est xor, et un qubit auxiliaire supplémentaire pour lui. En particulier, si nous avons un circuit construit à partir de et du circuit pour , puis si nous l'appliquons à avec un qubit auxiliaire initialement dans l'état oùfC:|a⟩|b⟩→|a⟩|a⊕b⟩
⊕F:|x⟩|a⟩|junk⟩↦|x⟩|a⊕f(x)⟩|junk′⟩
Cf|x⟩|−⟩=H|1⟩=(1/2–√)(|0⟩−|1⟩)H est une porte Hadamard, nous obtenons
F|x⟩|−⟩|junk⟩=12–√(F|x⟩|0⟩|junk⟩−F|x⟩|1⟩|junk⟩)=12–√(|x⟩|f(x)⟩|junk′⟩−|x⟩|1⊕f(x)⟩|junk′⟩).
Si alors , donc en simplifiant on obtient alors que si alors , donc et donc en généralf(x)=01⊕f(x)=1F|x⟩|−⟩|junk⟩=|x⟩|−⟩|junk′⟩,
f(x)=11⊕f(x)=0F|x⟩|−⟩|junk⟩=−|x⟩|−⟩|junk′⟩,
F|x⟩|−⟩|junk⟩=(−1)f(x)|x⟩|−⟩|junk′⟩.