Il y a une bonne explication de Craig Gidney ici (il a aussi d'autres excellents contenus, y compris un simulateur de circuit, sur son blog ).
Essentiellement, l'algorithme de Grover s'applique lorsque vous avez une fonction qui renvoie True
pour l'une de ses entrées possibles, et False
pour toutes les autres. Le travail de l'algorithme est de trouver celui qui revient True
.
Pour ce faire, nous exprimons les entrées sous forme de chaînes de bits et les codons à l'aide de la | 0⟩ et | 1⟩ états d'une chaîne de qubits. Ainsi, la chaîne de bits 0011
serait codée dans l'état à quatre qubits |0011⟩ , par exemple.
Nous devons également être en mesure d'implémenter la fonction en utilisant des portes quantiques. Plus précisément, nous devons trouver une séquence de portes qui implémentera un U unitaire tel que
U|a⟩=−|a⟩,U|b⟩=|b⟩
aTrue
bFalse
12n√nU−12n√
D
bj
D:∑jαj|bj⟩↦∑j(2μ−αj)|bj⟩
μ=∑jαjμ+δμ−δ
−12n√
12n√
Bien sûr, tout cela montre que tout le travail est effectué par l'opérateur de diffusion. La recherche n'est qu'une application à laquelle nous pouvons nous connecter.
Voir les réponses à d'autres questions pour plus de détails sur la façon dont les fonctions et l' opérateur de diffusion sont implémentés.