Aller au contenu principal

Description de l'algorithme de Grover

Dans cette section, nous allons décrire l'algorithme de Grover. Nous commencerons par discuter des portes de requête de phase et de la façon de les construire, suivie de la description de l'algorithme de Grover lui-même. Enfin, nous discuterons brièvement de la façon dont cet algorithme s'applique naturellement à la recherche.

Portes de requête de phase

L'algorithme de Grover utilise des opérations connues sous le nom de portes de requête de phase. Contrairement à une porte de requête ordinaire Uf,U_f, définie pour une fonction donnée ff de la manière habituelle décrite précédemment, une porte de requête de phase pour la fonction ff est définie comme

Zfx=(1)f(x)xZ_f \vert x\rangle = (-1)^{f(x)} \vert x\rangle

pour toute chaîne xΣn.x\in\Sigma^n.

L'opération ZfZ_f peut être implémentée en utilisant une porte de requête UfU_f comme le suggère ce diagramme :

Un circuit quantique implémentant une porte Z_f en utilisant une porte de requête avec le phénomène de rétroaction de phase

Cette implémentation utilise le phénomène de rétroaction de phase, et nécessite qu'un qubit d'espace de travail, initialisé dans l'état ,\vert -\rangle, soit disponible. Ce qubit reste dans l'état \vert - \rangle après la fin de l'implémentation, et peut être réutilisé (pour implémenter des portes ZfZ_f ultérieures, par exemple) ou simplement écarté.

En plus de l'opération Zf,Z_f, nous utiliserons également une porte de requête de phase pour la fonction OU à nn bits, qui est définie comme suit pour chaque chaîne xΣn.x\in\Sigma^n.

OR(x)={0x=0n1x0n\mathrm{OR}(x) = \begin{cases} 0 & x = 0^n\\[0.5mm] 1 & x \neq 0^n \end{cases}

Explicitement, la porte de requête de phase pour la fonction OU à nn bits opère comme suit :

ZORx={xx=0nxx0n.Z_{\mathrm{OR}} \vert x\rangle = \begin{cases} \vert x\rangle & x = 0^n \\[0.5mm] - \vert x\rangle & x \neq 0^n. \end{cases}

Pour être clair, c'est ainsi que ZORZ_{\mathrm{OR}} opère sur les états de base standard ; son comportement sur des états arbitraires est déterminé à partir de cette expression par linéarité.

L'opération ZORZ_{\mathrm{OR}} peut être implémentée comme un circuit quantique en commençant par un circuit booléen pour la fonction OU, puis en construisant une opération UORU_{\mathrm{OR}} (c'est-à-dire une porte de requête standard pour la fonction OU à nn bits) en utilisant la procédure décrite dans la leçon Fondements algorithmiques quantiques, et enfin une opération ZORZ_{\mathrm{OR}} en utilisant le phénomène de rétroaction de phase comme décrit ci-dessus. Remarque que l'opération ZORZ_{\mathrm{OR}} n'a aucune dépendance sur la fonction ff et peut donc être implémentée par un circuit quantique sans portes de requête.

Description de l'algorithme

Maintenant que nous disposons des deux opérations ZfZ_f et ZOR,Z_{\mathrm{OR}}, nous pouvons décrire l'algorithme de Grover.

L'algorithme fait référence à un nombre t,t, qui est le nombre d'itérations qu'il effectue (et donc le nombre de requêtes à la fonction ff qu'il nécessite). Ce nombre tt n'est pas spécifié par l'algorithme de Grover tel que nous le décrivons, et nous discuterons plus loin dans la leçon comment il peut être choisi.

Algorithme de Grover
  1. Initialiser un registre de nn qubits Q\mathsf{Q} dans l'état tout-zéro 0n\vert 0^n \rangle puis appliquer une opération de Hadamard à chaque qubit de Q.\mathsf{Q}.
  2. Appliquer tt fois l'opération unitaire G=HnZORHnZfG = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f au registre Q\mathsf{Q}
  3. Mesurer les qubits de Q\mathsf{Q} par rapport aux mesures en base standard et retourner la chaîne résultante.

L'opération G=HnZORHnZfG = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f itérée à l'étape 2 sera appelée l'opération de Grover dans la suite de cette leçon. Voici une représentation en circuit quantique de l'opération de Grover lorsque n=7 ⁣:n=7\!:

Une représentation en circuit quantique de l'opération de Grover

Dans ce diagramme, l'opération ZfZ_f est représentée comme étant plus grande que ZORZ_{\mathrm{OR}} comme indicateur visuel informel suggérant qu'elle est probablement l'opération la plus coûteuse. En particulier, lorsque nous travaillons dans le modèle de requêtes, ZfZ_f nécessite une requête tandis que ZORZ_{\mathrm{OR}} n'en nécessite aucune. Si au lieu de cela nous disposons d'un circuit booléen pour la fonction f,f, puis le convertissons en un circuit quantique pour Zf,Z_f, on peut raisonnablement s'attendre à ce que le circuit quantique résultant soit plus grand et plus complexe que celui pour ZOR.Z_{\mathrm{OR}}.

Voici un diagramme d'un circuit quantique pour l'algorithme entier lorsque n=7n=7 et t=3.t=3. Pour des valeurs plus grandes de t,t, il suffit d'insérer des instances supplémentaires de l'opération de Grover immédiatement avant les mesures.

Un circuit quantique pour l'algorithme de Grover lorsque t=3

L'algorithme de Grover peut être appliqué au problème de Recherche comme suit :

  • Choisir le nombre tt à l'étape 2. (Cela est discuté plus loin dans la leçon.)
  • Exécuter l'algorithme de Grover sur la fonction f,f, en utilisant le choix que nous avons fait pour t,t, pour obtenir une chaîne xΣn.x\in\Sigma^n.
  • Interroger la fonction ff sur la chaîne xx pour voir si c'est une solution valide :
    • Si f(x)=1,f(x) = 1, alors nous avons trouvé une solution, nous pouvons donc nous arrêter et retourner x.x.
    • Sinon, si f(x)=0,f(x) = 0, nous pouvons soit relancer la procédure, éventuellement avec un choix différent pour t,t, soit décider d'abandonner et retourner « aucune solution ».

Une fois que nous aurons analysé le fonctionnement de l'algorithme de Grover, nous verrons qu'en prenant t=O(N),t = O(\sqrt{N}), on obtient une solution à notre problème de recherche (si elle existe) avec haute probabilité.