L'algorithme de Simon
L'algorithme de Simon est un algorithme de requête quantique qui résout un problème connu sous le nom de problème de Simon. C'est un problème avec promesse, dont la saveur est similaire aux problèmes de Deutsch-Jozsa et de Bernstein-Vazirani, mais dont les spécificités sont différentes.
L'algorithme de Simon est remarquable car il offre un avantage exponentiel du quantique sur le classique (y compris les algorithmes probabilistes), et la technique qu'il utilise a inspiré à Peter Shor la découverte d'un algorithme quantique efficace pour la factorisation des entiers.
Le problème de Simon
La fonction d'entrée du problème de Simon prend la forme
pour des entiers positifs et On pourrait se restreindre au cas par souci de simplicité, mais cette hypothèse n'apporte pas grand-chose — l'algorithme de Simon et son analyse sont essentiellement les mêmes dans les deux cas.
Nous allons décortiquer cette promesse pour mieux comprendre ce qu'elle dit dans un instant, mais précisons d'abord clairement qu'elle exige que possède une structure très particulière — la plupart des fonctions ne satisferont donc pas cette promesse. Il convient également de reconnaître que ce problème n'est pas censé avoir d'importance pratique. C'est plutôt un problème quelque peu artificiel, conçu sur mesure pour être facile pour les ordinateurs quantiques et difficile pour les ordinateurs classiques.
Il y a deux cas principaux : le premier est que est la chaîne tout-zéro et le second est que n'est pas la chaîne tout-zéro.
-
Cas 1 : Si est la chaîne tout-zéro, on peut simplifier la déclaration "si et seulement si" dans la promesse pour qu'elle lise Cela équivaut à dire que est une fonction injective.
-
Cas 2 : Si n'est pas la chaîne tout-zéro, alors le fait que la promesse soit satisfaite pour cette chaîne implique que est deux-à-un, ce qui signifie que pour chaque chaîne de sortie possible de il existe exactement deux chaînes d'entrée qui amènent à produire cette sortie. De plus, ces deux chaînes d'entrée doivent prendre la forme et pour une certaine chaîne
Il est important de reconnaître qu'il ne peut exister qu'une seule chaîne valide si la promesse est satisfaite, il y a donc toujours une réponse correcte unique pour les fonctions qui satisfont la promesse.
Voici un exemple de fonction de la forme qui satisfait la promesse pour la chaîne
Il y a chaînes d'entrée différentes et chaînes de sortie différentes, chacune apparaissant deux fois — c'est donc bien une fonction deux-à-un. De plus, pour deux chaînes d'entrée différentes qui produisent la même chaîne de sortie, on constate que le XOR bit à bit de ces deux chaînes d'entrée est égal à ce qui revient à dire que l'une d'elles est égale à l'autre XORée avec
Remarque : la seule chose qui compte dans les chaînes de sortie, c'est si elles sont identiques ou différentes pour différents choix de chaînes d'entrée. Par exemple, dans l'exemple ci-dessus, quatre chaînes et apparaissent comme sorties de On pourrait remplacer ces quatre chaînes par d'autres chaînes, du moment qu'elles sont toutes distinctes, et la solution correcte ne changerait pas.
Description de l'algorithme
Voici un schéma de circuit quantique représentant l'algorithme de Simon.
Pour être précis, il y a qubits en haut sur lesquels agissent les portes Hadamard et qubits en bas qui entrent directement dans la porte de requête. Cela ressemble beaucoup aux algorithmes déjà vus dans cette leçon, mais cette fois il n'y a pas de retour de phase (phase kickback) ; les qubits du bas entrent tous dans la porte de requête dans l'état
Pour résoudre le problème de Simon à l'aide de ce circuit, il faudra en réalité effectuer plusieurs exécutions indépendantes, suivies d'une étape de post-traitement classique, qui sera décrite plus loin après l'analyse du comportement du circuit.
Analyse
L'analyse de l'algorithme de Simon commence de manière similaire à celle de l'algorithme de Deutsch-Jozsa. Après que la première couche de portes Hadamard est appliquée aux qubits du haut, l'état devient
Lorsque est appliqué, la sortie de la fonction est XORée sur l'état tout-zéro des qubits du bas, de sorte que l'état devient
Lorsque la deuxième couche de portes Hadamard est appliquée, on obtient l'état suivant en utilisant la même formule que précédemment pour l'action d'une couche de portes Hadamard.
À ce stade, l'analyse diverge de celles des algorithmes précédents de cette leçon.
On s'intéresse à la probabilité que les mesures donnent chaque chaîne possible En appliquant les règles d'analyse des mesures décrites dans la leçon Systèmes multiples du cours Notions de base de l'information quantique, on trouve que la probabilité d'obtenir la chaîne est égale à
Pour mieux appréhender ces probabilités, nous allons avoir besoin d'un peu plus de notation et de terminologie. Tout d'abord, l'image de la fonction est l'ensemble contenant toutes ses chaînes de sortie.
Ensuite, pour chaque chaîne on peut exprimer l'ensemble de toutes les chaînes d'entrée qui amènent la fonction à s'évaluer à cette chaîne de sortie sous la forme
L'ensemble est connu sous le nom d'image réciproque de par On peut définir l'image réciproque par de n'importe quel ensemble à la place de de manière analogue — c'est l'ensemble de tous les éléments que envoie sur cet ensemble. (Cette notation ne doit pas être confondue avec l'inverse de la fonction qui peut ne pas exister. Le fait que l'argument du membre gauche soit l'ensemble plutôt que l'élément est l'indice qui permet d'éviter cette confusion.)
En utilisant cette notation, on peut décomposer la somme dans notre expression des probabilités ci-dessus pour obtenir
Chaque chaîne est représentée exactement une fois par les deux sommations — on répartit essentiellement ces chaînes dans des groupes séparés selon la chaîne de sortie qu'elles produisent lorsqu'on évalue la fonction puis on somme séparément sur tous les groupes.
On peut maintenant calculer le carré de la norme euclidienne pour obtenir
Pour simplifier davantage ces probabilités, examinons la valeur
pour un choix arbitraire de
S'il s'avère que alors est une fonction injective et il y a toujours un seul élément pour tout La valeur de l'expression est dans ce cas.
Si, en revanche, alors il y a exactement deux chaînes dans l'ensemble Pour être précis, si on choisit comme étant l'une quelconque de ces deux chaînes, alors l'autre chaîne doit être d'après la promesse du problème de Simon. En utilisant cette observation, on peut simplifier comme suit.
Ainsi, il s'avère que la valeur est indépendante du choix particulier de dans les deux cas.
On peut maintenant terminer l'analyse en examinant séparément les deux mêmes cas qu'auparavant.
-
Cas 1 : Dans ce cas, la fonction est injective, il y a donc chaînes et on obtient
En d'autres termes, les mesures donnent une chaîne choisie uniformément au hasard.
-
Cas 2 : Dans ce cas, est deux-à-un, il y a donc éléments dans En utilisant la formule ci-dessus, on conclut que la probabilité de mesurer chaque est
En d'autres termes, on obtient une chaîne choisie uniformément au hasard dans l'ensemble qui contient chaînes. (Comme exactement la moitié des chaînes binaires de longueur ont un produit scalaire binaire de avec et l'autre moitié a un produit scalaire binaire de avec comme on l'a déjà observé dans l'analyse de l'algorithme de Deutsch-Jozsa pour le problème de Bernstein-Vazirani.)
Post-traitement classique
On sait maintenant quelles sont les probabilités des résultats de mesure possibles lorsqu'on exécute le circuit quantique de l'algorithme de Simon. Est-ce suffisant pour déterminer ?
La réponse est oui, à condition d'être prêt à répéter le processus plusieurs fois et d'accepter qu'il puisse échouer avec une certaine probabilité, que l'on peut rendre très faible en exécutant le circuit suffisamment de fois. L'idée essentielle est que chaque exécution du circuit nous fournit une preuve statistique concernant et on peut utiliser cette preuve pour trouver avec une très haute probabilité si on exécute le circuit suffisamment de fois.
Supposons que l'on exécute le circuit indépendamment fois, avec Ce nombre d'itérations n'a rien de particulier — on pourrait choisir plus grand (ou plus petit) selon la probabilité d'échec qu'on est prêt à tolérer, comme on va le voir. Choisir garantit qu'on aura plus de % de chances de retrouver
En exécutant le circuit fois, on obtient des chaînes Pour être clair, les exposants ici font partie du nom de ces chaînes et ne sont pas des puissances ou des indices sur leurs bits, donc on a
On forme maintenant une matrice ayant lignes et colonnes en prenant les bits de ces chaînes comme entrées binaires.
À ce stade, on ne connaît pas — notre objectif est de trouver cette chaîne. Mais imaginons un instant que l'on connaisse la chaîne et qu'on forme un vecteur colonne à partir des bits de la chaîne comme suit.
Si on effectue le produit matrice-vecteur modulo — c'est-à-dire qu'on effectue la multiplication normalement puis qu'on prend le reste des entrées du résultat après division par — on obtient le vecteur tout-zéro.
Autrement dit, traité comme un vecteur colonne tel que décrit ci-dessus, la chaîne sera toujours un élément du noyau de la matrice à condition de faire l'arithmétique modulo Cela est vrai dans le cas comme dans le cas Pour être plus précis, le vecteur tout-zéro est toujours dans le noyau de et il est accompagné du vecteur dont les entrées sont les bits de dans le cas où
La question qui reste est de savoir s'il y aura d'autres vecteurs dans le noyau de en dehors de ceux correspondant à et La réponse est que cela devient de moins en moins probable à mesure que augmente — et si on choisit le noyau de ne contiendra aucun autre vecteur en plus de ceux correspondant à et avec une probabilité supérieure à %. Plus généralement, si on remplace par pour un choix arbitraire d'entier positif la probabilité que les vecteurs correspondant à et soient seuls dans le noyau de est au moins
En utilisant l'algèbre linéaire, il est possible de calculer efficacement une description du noyau de modulo Plus précisément, cela peut être fait en utilisant l'élimination de Gauss, qui fonctionne de la même manière lorsque l'arithmétique est faite modulo qu'avec des nombres réels ou complexes. Tant que les vecteurs correspondant à et sont seuls dans le noyau de ce qui se produit avec une haute probabilité, on peut déduire des résultats de ce calcul.
Difficulté classique
Combien de requêtes un algorithme de requête classique doit-il effectuer pour résoudre le problème de Simon ? La réponse est : beaucoup, en général.
On peut formuler différentes déclarations précises sur la difficulté classique de ce problème, et en voici une. Si on dispose d'un algorithme de requête probabiliste qui effectue moins de requêtes — un nombre de requêtes exponentiel en — alors cet algorithme échouera à résoudre le problème de Simon avec une probabilité d'au moins
Parfois, prouver des résultats d'impossibilité comme celui-ci peut être très difficile, mais celui-ci n'est pas trop difficile à prouver par une analyse probabiliste élémentaire. Ici, cependant, on se contentera d'examiner brièvement l'intuition de base qui le sous-tend.
On cherche à trouver la chaîne cachée mais tant qu'on n'interroge pas la fonction sur deux chaînes ayant la même valeur de sortie, on obtiendra très peu d'informations sur Intuitivement parlant, tout ce qu'on apprendra est que la chaîne cachée n'est pas le XOR exclusif de deux chaînes distinctes qu'on a interrogées. Et si on interroge moins de chaînes, il restera encore de nombreuses possibilités pour qu'on n'aura pas éliminées, car il n'y a pas suffisamment de paires de chaînes pour le faire. Ce n'est pas une preuve formelle, c'est juste l'idée de base.
Ainsi, en résumé, l'algorithme de Simon nous offre un avantage frappant du quantique sur le classique dans le modèle de requête. En particulier, l'algorithme de Simon résout le problème de Simon avec un nombre de requêtes linéaire en le nombre de bits d'entrée de notre fonction, tandis que tout algorithme classique, même probabiliste, doit effectuer un nombre de requêtes exponentiel en pour résoudre le problème de Simon avec une probabilité de succès raisonnable.