Choisir le nombre d'itérations
Nous avons établi que le vecteur d'état du registre dans l'algorithme de Grover reste dans le sous-espace bidimensionnel engendré par et une fois l'étape d'initialisation effectuée.
L'objectif est de trouver un élément et cet objectif sera atteint si nous parvenons à obtenir l'état — car si nous mesurons cet état, nous obtiendrons nécessairement un résultat de mesure Étant donné que l'état de après itérations à l'étape 2 est
nous devons choisir de sorte que
soit aussi proche de que possible en valeur absolue, afin de maximiser la probabilité d'obtenir lors de la mesure. Pour tout angle la valeur oscille à mesure que augmente, bien qu'elle ne soit pas nécessairement périodique — rien ne garantit que nous obtiendrons jamais deux fois la même valeur.
Naturellement, en plus de rendre grande la probabilité d'obtenir un élément lors de la mesure, nous souhaitons également choisir aussi petit que possible, car applications de l'opération nécessitent requêtes à la fonction Comme nous cherchons à rendre proche de en valeur absolue, une façon naturelle d'y parvenir est de choisir de sorte que
En résolvant pour on obtient
Bien sûr, doit être un entier, donc nous ne pourrons pas nécessairement atteindre exactement cette valeur — mais ce que nous pouvons faire, c'est prendre l'entier le plus proche de cette valeur, qui est
C'est le nombre d'itérations recommandé pour l'algorithme de Grover. En poursuivant l'analyse, nous verrons que la proximité de cet entier avec la valeur cible affecte naturellement les performances de l'algorithme.
(Incidemment, si la valeur cible se trouve exactement à mi-chemin entre deux entiers, cette expression de correspond à l'arrondi vers le haut. On pourrait alternativement arrondir vers le bas, ce qui est raisonnable car cela signifie une requête de moins — mais c'est secondaire et sans importance pour les besoins de cette leçon.)
En rappelant que la valeur de l'angle est donnée par la formule
nous constatons que le nombre d'itérations recommandé dépend du nombre de chaînes dans Cela pose un problème si nous ne savons pas combien de solutions nous avons, comme nous le verrons plus tard.
Recherche unique
Commençons par nous concentrer sur la situation où il existe une seule chaîne telle que Une autre façon de le dire est que nous considérons une instance du problème de recherche unique. Dans ce cas, nous avons
ce qui peut être approximé de façon pratique par
lorsque est grand. Si nous substituons dans l'expression
nous obtenons
En rappelant que est non seulement le nombre de fois où l'opération est effectuée, mais aussi le nombre de requêtes à la fonction requises par l'algorithme, nous voyons que nous sommes en bonne voie pour obtenir un algorithme nécessitant requêtes.
Voyons maintenant dans quelle mesure le choix recommandé de fonctionne bien. La probabilité que la mesure finale donne la solution unique peut être exprimée explicitement comme
Le premier argument, désigne le nombre d'éléments sur lesquels nous effectuons la recherche, et le second argument, qui est dans ce cas, désigne le nombre de solutions. Un peu plus tard, nous utiliserons la même notation de manière plus générale, lorsqu'il y a plusieurs solutions.
Voici un tableau des probabilités de succès pour des valeurs croissantes de
Remarquons que ces probabilités ne sont pas strictement croissantes. En particulier, nous observons une anomalie intéressante pour où nous obtenons une solution avec certitude. Il peut cependant être prouvé en général que
pour tout de sorte que la probabilité de succès tend vers à la limite quand devient grand, comme les valeurs ci-dessus semblent le suggérer. C'est une bonne nouvelle !
Mais remarque cependant que même une borne aussi faible que établit l'utilité de l'algorithme de Grover. Quel que soit le résultat de mesure que nous obtenons en exécutant la procédure, nous pouvons toujours vérifier si avec une seule requête à Et si nous échouons à obtenir la chaîne unique pour laquelle avec une probabilité d'au plus en exécutant la procédure une fois, alors après exécutions indépendantes de la procédure, nous aurons échoué à obtenir cette chaîne unique avec une probabilité d'au plus C'est-à-dire qu'en utilisant requêtes à nous obtiendrons la solution unique avec une probabilité d'au moins En utilisant la meilleure borne on constate que la probabilité de trouver par cette méthode est en réalité d'au moins
Solutions multiples
À mesure que le nombre d'éléments dans varie, l'angle varie aussi, ce qui peut avoir un effet significatif sur la probabilité de succès de l'algorithme. Par souci de concision, écrivons pour désigner le nombre de solutions, et comme précédemment nous supposerons que
Comme exemple motivant, imaginons que nous ayons solutions plutôt qu'une seule, comme nous l'avons considéré ci-dessus. Cela signifie que
ce qui est approximativement le double de l'angle que nous avions dans le cas lorsque est grand. Supposons que nous n'en sachions pas davantage et que nous sélectionnions la même valeur de que dans le cadre de la solution unique :
L'effet sera catastrophique, comme le révèle le tableau de probabilités suivant.
Cette fois, la probabilité de succès tend vers lorsque tend vers l'infini. Cela se produit parce que nous effectuons effectivement une rotation deux fois plus rapide que lorsqu'il y avait une solution unique, ce qui nous fait dépasser la cible et atterrir près de
Cependant, si nous utilisons plutôt le choix recommandé de qui est
pour
alors les performances seront meilleures. Plus précisément, l'utilisation de ce choix de conduit à un succès avec une haute probabilité.
En généralisant ce qui a été affirmé précédemment, il peut être prouvé que
où nous utilisons la notation suggérée précédemment : désigne la probabilité que l'algorithme de Grover exécuté pendant itérations révèle une solution lorsqu'il y a solutions au total parmi possibilités.
Cette borne inférieure de sur la probabilité de succès est légèrement particulière en ce sens que plus il y a de solutions, plus la borne inférieure est mauvaise — mais sous l'hypothèse que est nettement plus petit que nous concluons néanmoins que la probabilité de succès est raisonnablement élevée. Comme précédemment, le simple fait que soit raisonnablement grand implique l'utilité de l'algorithme.
Il se trouve également que
Cette borne inférieure décrit la probabilité qu'une chaîne choisie uniformément au hasard soit une solution — ainsi, l'algorithme de Grover fait toujours au moins aussi bien qu'une supposition aléatoire. (En fait, lorsque l'algorithme de Grover est une supposition aléatoire.)
Examinons maintenant le nombre d'itérations (et donc le nombre de requêtes)
pour
Pour tout il est vrai que et donc
Cela implique que
Cela se traduit par une économie du nombre de requêtes à mesure que augmente. En particulier, le nombre de requêtes nécessaires est
Nombre de solutions inconnu
Si le nombre de solutions est inconnu, alors une approche différente est nécessaire, car dans cette situation nous n'avons aucune connaissance de pour guider notre choix de Il existe en fait plusieurs approches.
Une approche simple consiste à choisir
uniformément au hasard. Sélectionner de cette façon trouve toujours une solution (en supposant qu'il en existe une) avec une probabilité supérieure à 40 %, bien que cela ne soit pas évident et nécessite une analyse qui ne sera pas présentée ici. Cela a du sens, cependant, surtout lorsque nous pensons à l'image géométrique : faire tourner l'état de un nombre aléatoire de fois de cette manière n'est pas sans rappeler le choix d'un vecteur unitaire aléatoire dans l'espace engendré par et pour lequel il est probable que le coefficient de soit raisonnablement grand. En répétant cette procédure et en vérifiant le résultat de la même façon que décrite précédemment, la probabilité de trouver une solution peut être rendue très proche de
Il existe une méthode plus raffinée qui trouve une solution lorsqu'il en existe une en utilisant requêtes, même lorsque le nombre de solutions est inconnu, et qui nécessite requêtes pour déterminer qu'il n'y a pas de solutions lorsque
L'idée de base est de choisir uniformément au hasard dans l'ensemble de manière itérative, pour des valeurs croissantes de En particulier, nous pouvons commencer avec et l'augmenter de façon exponentielle, en terminant toujours le processus dès qu'une solution est trouvée et en limitant de façon à ne pas gaspiller des requêtes lorsqu'il n'y a pas de solution. Le processus tire parti du fait que moins de requêtes sont nécessaires lorsqu'il y a plus de solutions. Une certaine attention est cependant requise pour équilibrer le taux de croissance de avec la probabilité de succès à chaque itération. (Prendre fonctionne, par exemple, comme le révèle une analyse. Doubler en revanche, ne fonctionne pas — cela s'avère être une augmentation trop rapide.)
Les cas triviaux
Tout au long de l'analyse que nous venons d'effectuer, nous avons supposé que le nombre de solutions est non nul. En effet, en faisant référence aux vecteurs
nous avons implicitement supposé que et sont tous les deux non vides. Nous allons ici brièvement examiner ce qui se passe lorsque l'un de ces ensembles est vide.
Avant de nous lancer dans une analyse, observons l'évidence : si chaque chaîne est une solution, nous verrons une solution lors de la mesure ; et lorsqu'il n'y a aucune solution, nous n'en verrons pas. En un certain sens, il n'est pas nécessaire d'aller plus loin que cela.
Nous pouvons cependant vérifier rapidement les mathématiques pour ces cas triviaux. La situation où l'un de et est vide se produit quand est constante ; est vide quand pour tout et est vide quand pour tout Cela signifie que
et par conséquent
Ainsi, quel que soit le nombre d'itérations que nous effectuons dans ces cas, les mesures révèleront toujours une chaîne aléatoire uniforme.