Algorithme de Shor
Nous allons maintenant nous intéresser au problème de la factorisation des nombres entiers et voir comment il peut être résolu efficacement sur un ordinateur quantique à l'aide de l'estimation de phase. L'algorithme que nous allons obtenir est l' algorithme de Shor pour la factorisation des nombres entiers. Shor n'a pas décrit son algorithme spécifiquement en termes d'estimation de phase, mais c'est une façon naturelle et intuitive d'expliquer son fonctionnement.
Nous commencerons par discuter d'un problème intermédiaire connu sous le nom de problème de recherche d'ordre et nous verrons comment l'estimation de phase apporte une solution à ce problème. Nous verrons ensuite comment une solution efficace au problème de recherche d'ordre nous permet d'obtenir une solution efficace au problème de factorisation des nombres entiers. (Lorsqu'une solution à un problème permet de résoudre un autre problème de ce type, on dit que le second problème se réduit au premier - dans ce cas, nous réduisons la factorisation des nombres entiers à la recherche d'ordre) Cette deuxième partie de l'algorithme de Shor ne fait pas du tout appel à l'informatique quantique; elle est tout à fait classique. L'informatique quantique n'est nécessaire que pour résoudre les problèmes de recherche d'ordre.
Le problème de la recherche de commandes
Quelques notions élémentaires de théorie des nombres
Pour expliquer le problème de la recherche d'ordre et la manière dont il peut être résolu à l'aide de l'estimation de phase, il sera utile de commencer par quelques concepts de base de la théorie des nombres et d'introduire quelques notations pratiques en cours de route.
Pour commencer, pour tout entier positif donné , définissez l'ensemble comme suit.
Par exemple, et ainsi de suite.
Il s'agit d'ensembles de nombres, mais nous pouvons considérer qu'il ne s'agit pas seulement d'ensembles. En particulier, nous pouvons penser à des opérations arithmétiques sur telles que l'addition et la multiplication - et si nous acceptons de toujours prendre nos réponses modulo (c'est-à-dire diviser par et prendre le reste comme résultat), nous resterons toujours dans cet ensemble lorsque nous effectuerons ces opérations. Les deux opérations spécifiques que sont l'addition et la multiplication, toutes deux effectuées modulo , font de un anneau, qui est un type d'objet fondamentalement important en algèbre.
Par exemple, et sont des éléments de et si nous les multiplions ensemble, nous obtenons qui laisse un reste de lorsqu'il est divisé par Nous exprimons parfois cela de la manière suivante.
Mais nous pouvons aussi écrire simplement à condition qu'il ait été précisé que nous travaillons en , pour que notre notation soit la plus simple possible.
A titre d'exemple, voici les tables d'addition et de multiplication de
Parmi les éléments de , les éléments qui satisfont à sont particuliers. L'ensemble contenant ces éléments est souvent désigné par une étoile.
Si nous concentrons notre attention sur l'opération de multiplication, l'ensemble forme un groupe - plus précisément un groupe abélien - qui est un autre type d'objet important en algèbre. Un fait fondamental concernant ces ensembles (et les groupes finis en général) est que si l'on choisit n'importe quel élément et que l'on multiplie de façon répétée par lui-même, on finira toujours par obtenir le nombre
Pour un premier exemple, prenons Nous avons que parce que et si nous multiplions par lui-même, nous obtenons comme le confirme le tableau ci-dessus.
Prenons un deuxième exemple Si nous parcourons les nombres de à , ceux dont le PGCD est égal à avec sont les suivants.
Pour chacun de ces éléments, il est possible d'élever ce nombre à une puissance entière positive pour obtenir Voici les plus petites puissances pour lesquelles cela fonctionne :
Naturellement, nous travaillons à l'intérieur de pour toutes ces équations, que nous n'avons pas pris la peine d'écrire - nous les considérons comme implicites pour éviter d'encombrer les choses. Nous continuerons à le faire pendant le reste de la leçon.
Problématique et lien avec l'estimation de phase
Nous pouvons maintenant énoncer le problème de la recherche d'ordre.
Entrée : les entiers positifs et satisfaisants \ Sortie : le plus petit entier positif tel que
Alternativement, en termes de notation que nous venons d'introduire ci-dessus, on nous donne et nous cherchons le plus petit entier positif tel que Ce nombre est appelé l' ordre de modulo
Pour relier le problème de recherche d'ordre à l'estimation de phase, considérons l'opération définie sur un système dont les états classiques correspondent à où l'on multiplie par un élément fixe
Pour être clair, nous effectuons la multiplication sur , il est donc implicite que nous prenons le produit modulo à l'intérieur du ket du côté droit de l'équation.
Par exemple, si nous prenons et , l'action de sur la base standard est la suivante.
Il s'agit d'une opération unitaire à condition que mélange les éléments de la base standard , de sorte qu'en tant que matrice, il s'agit d'une matrice de permutation. Il est évident, d'après sa définition, que cette opération est déterministe, et une façon simple de voir qu'elle est inversible est de penser à l'ordre de modulo et de reconnaître que l'inverse de est
Il existe une autre façon de penser à l'inverse qui ne nécessite aucune connaissance de (qui, après tout, est ce que nous essayons de calculer). Pour chaque élément , il existe toujours un élément unique qui satisfait aux conditions suivantes Nous désignons cet élément par et il peut être calculé efficacement; une extension de l'algorithme GCD d'Euclide le fait avec un coût quadratique en Et donc
L'opération est donc à la fois déterministe et inversible. Cela implique qu'elle est décrite par une matrice de permutation et qu'elle est donc unitaire.
Réfléchissons maintenant aux vecteurs propres et aux valeurs propres de l'opération en supposant que Comme nous venons de le voir, cette hypothèse nous indique que est unitaire.
Il y a valeurs propres de , y compris éventuellement la même valeur propre répétée plusieurs fois, et en général il y a une certaine liberté dans le choix des vecteurs propres correspondants - mais nous n'aurons pas besoin de nous préoccuper de toutes les possibilités. Commençons simplement et identifions un seul vecteur propre de
Le nombre est l'ordre de modulo ici et dans le reste de la leçon. La valeur propre associée à ce vecteur propre est car elle n'est pas modifiée lorsque nous la multiplions par
Cela se produit parce que donc chaque état de base standard est déplacé vers pour et est déplacé à nouveau vers D'un point de vue informel, c'est comme si nous remuions lentement le site , mais qu'il était déjà complètement remué et que rien ne changeait.
Voici un autre exemple de vecteur propre de Celui-ci est plus intéressant dans le contexte de la recherche d'ordre et de l'estimation de phase.
Nous pouvons également écrire ce vecteur en utilisant une sommation comme suit.
Ici, le nombre complexe apparaît naturellement, en raison de la façon dont la multiplication par fonctionne modulo Cette fois, la valeur propre correspondante est Pour le voir, nous pouvons d'abord calculer comme suit.
Ensuite, parce que et nous voyons que
donc
En utilisant le même raisonnement, nous pouvons identifier des paires de vecteurs propres/valeurs propres supplémentaires pour Pour tout choix de , nous avons que
est un vecteur propre de dont la valeur propre correspondante est
Il existe d'autres vecteurs propres de mais nous n'avons pas besoin de nous en préoccuper - nous nous concentrerons uniquement sur les vecteurs propres que nous venons d'identifier.
Recherche d'ordre par estimation de phase
Pour résoudre le problème de recherche d'ordre pour un choix donné de , nous pouvons appliquer la procédure d'estimation de phase à l'opération
Pour ce faire, nous devons implémenter efficacement non seulement avec un circuit quantique, mais aussi et ainsi de suite, en allant aussi loin que nécessaire pour obtenir une estimation suffisamment précise de la procédure d'estimation de la phase. Nous expliquons ici comment procéder, et nous déterminerons plus tard le degré de précision nécessaire.
Commençons par l'opération en elle-même. Naturellement, comme nous travaillons avec le modèle de circuit quantique, nous utiliserons la notation binaire pour coder les nombres entre et Le plus grand nombre que nous devons coder est et le nombre de bits dont nous avons besoin est donc
Par exemple, si nous avons Voici à quoi ressemble le codage des éléments de sous forme de chaînes binaires de longueur .
Voici maintenant une définition précise de la façon dont est défini comme une opération -qubit.
Le fait est que, même si nous ne nous intéressons qu'au fonctionnement de pour , nous devons spécifier son fonctionnement pour les états de base standard restants de - et nous devons le faire d'une manière qui nous permette toujours d'obtenir une opération unitaire. Définir de manière à ce qu'il n'affecte en rien les états de base standard restants permet d'atteindre cet objectif.
En utilisant les algorithmes de multiplication et de division des entiers présentés dans la leçon précédente, ainsi que la méthodologie pour les implémenter de manière réversible et sans déchets, nous pouvons construire un circuit quantique qui effectue pour n'importe quel choix de à un coût donné Voici une façon de procéder.
- Construire un circuit pour effectuer l'opération
où
en utilisant la méthode décrite dans la leçon précédente. On obtient ainsi un circuit de taille
-
Permuter les deux systèmes -qubit en utilisant swap gates pour permuter les qubits individuellement.
-
De la même manière que pour la première étape, construisez un circuit pour l'opération
où est l'inverse de en
En initialisant les qubits inférieurs et en composant les trois étapes, nous obtenons cette transformation :
La méthode nécessite des qubits d'espace de travail, mais ils sont ramenés à leur état initialisé à la fin, ce qui nous permet d'utiliser ces circuits pour l'estimation de la phase. Le coût total du circuit obtenu est de
Pour réaliser et ainsi de suite, nous pouvons utiliser exactement la même méthode, sauf que nous remplaçons par et ainsi de suite, en tant qu'éléments de Autrement dit, pour toute puissance que nous choisissons, nous pouvons créer un circuit pour non pas en itérant fois le circuit pour mais plutôt en calculant et en utilisant ensuite le circuit pour
Le calcul des puissances est le problème de l' exponentiation modulaire mentionné dans la leçon précédente. Ce calcul peut être effectué de manière classique, en utilisant l'algorithme d'exponentiation modulaire mentionné dans la leçon précédente (souvent appelé algorithme des puissances dans la théorie des nombres). En fait, nous n'avons besoin que de power-of-2 puissances de en particulier et nous pouvons obtenir ces puissances en élevant itérativement au carré fois. Chaque mise au carré peut être réalisée par un circuit booléen de taille
En fait, ce que nous faisons ici, c'est décharger le problème de l'itération de jusqu'à fois sur un calcul classique efficace. Et c'est une chance que cela soit possible! Pour un choix arbitraire de circuit quantique dans le problème de l'estimation de phase, il est peu probable que cela soit possible - et dans ce cas, le coût résultant de l'estimation de phase croît de manière exponentielle en fonction du nombre de qubits de contrôle
Solution donnée un vecteur propre pratique
Pour comprendre comment nous pouvons résoudre le problème de recherche d'ordre à l'aide de l'estimation de phase, commençons par supposer que nous exécutons la procédure d'estimation de phase sur l'opération en utilisant le vecteur propre Il n'est pas facile de mettre la main sur ce vecteur propre, et ce n'est donc pas la fin de l'histoire, mais il est utile de commencer par là.
La valeur propre de correspondant au vecteur propre est
C'est-à-dire pour Ainsi, si nous exécutons la procédure d'estimation de phase sur en utilisant le vecteur propre , nous obtiendrons une approximation de En calculant la réciproque, nous pourrons apprendre - à condition que notre approximation soit suffisamment bonne.
Plus précisément, lorsque nous exécutons la procédure d'estimation de phase en utilisant qubits de contrôle, ce que nous obtenons est un nombre Nous prenons alors comme hypothèse pour , qui est dans le cas présent. Pour déterminer la valeur de à partir de cette approximation, la chose naturelle à faire est de calculer la réciproque de notre approximation et d'arrondir à l'entier le plus proche.
Par exemple, supposons que et nous effectuons une estimation de phase sur avec le vecteur propre en utilisant les bits de contrôle . La meilleure approximation -bit de est et nous avons de bonnes chances (environ dans ce cas) d'obtenir le résultat à partir de l'estimation de la phase. Nous avons
et en arrondissant à l'entier le plus proche, on obtient , ce qui est la bonne réponse.
En revanche, si nous ne sommes pas assez précis, nous risquons de ne pas obtenir la bonne réponse. Par exemple, si nous prenons qubits de contrôle dans l'estimation de la phase, nous pourrions obtenir la meilleure approximation -bit de qui est En prenant la réciproque, on obtient
et en arrondissant à l'entier le plus proche, on obtient une réponse incorrecte de
Quelle est donc la précision nécessaire pour obtenir la bonne réponse? Nous savons que l'ordre est un nombre entier et, intuitivement, nous avons besoin d'une précision suffisante pour distinguer des possibilités voisines, y compris et Le nombre le plus proche de dont nous devons nous préoccuper est et la distance entre ces deux nombres est de
Ainsi, si nous voulons être sûrs de ne pas confondre avec , il suffit d'utiliser suffisamment de précision pour garantir qu'une meilleure approximation entre et est plus proche de qu'elle ne l'est de Si nous utilisons suffisamment de précision pour que
de sorte que l'erreur soit inférieure à la moitié de la distance entre et , alors sera plus proche de que de toute autre possibilité, y compris et
Nous pouvons le vérifier comme suit. Supposons que
pour satisfaisant
En prenant la réciproque, on obtient
En maximisant le numérateur et en minimisant le dénominateur, nous pouvons déterminer la distance qui nous sépare de de la manière suivante.
Nous sommes à moins de de et, comme prévu, nous obtiendrons lorsque nous arrondirons.
Malheureusement, comme nous ne savons pas encore ce qu'est , nous ne pouvons pas l'utiliser pour déterminer le degré de précision dont nous avons besoin. Nous pouvons plutôt utiliser le fait que doit être plus petit que pour nous assurer que nous utilisons suffisamment de précision. En particulier, si nous utilisons une précision suffisante pour garantir que la meilleure approximation de satisfait à
alors nous aurons suffisamment de précision pour déterminer correctement lorsque nous prenons la réciproque. En prenant , on s'assure d'avoir de grandes chances d'obtenir une estimation avec cette précision en utilisant la méthode décrite précédemment. (Prendre est suffisant si nous sommes à l'aise avec une limite inférieure de 40 % pour la probabilité de succès)
Solution générale
Comme nous venons de le voir, si nous disposons du vecteur propre de , nous pouvons apprendre par estimation de phase, à condition d'utiliser suffisamment de qubits de contrôle pour le faire avec une précision suffisante. Malheureusement, il n'est pas facile de mettre la main sur le vecteur propre et nous devons donc trouver une façon de procéder.
Supposons momentanément que nous procédions de la même manière que ci-dessus, à l'exception du vecteur propre à la place de pour tout choix de auquel nous choisissons de penser. Le résultat obtenu par la procédure d'estimation de la phase sera une approximation
En partant de l'hypothèse que nous ne connaissons ni ni , cela nous permet ou non d'identifier le nom du site Par exemple, si , nous obtiendrons une approximation de à , ce qui ne nous dit malheureusement rien. Il s'agit toutefois d'un cas inhabituel; pour d'autres valeurs de , nous serons au moins en mesure d'apprendre quelque chose à propos de
Nous pouvons utiliser un algorithme connu sous le nom d' algorithme de fraction continue pour transformer notre approximation en fractions proches - y compris si l'approximation est suffisamment bonne. Nous n'expliquerons pas ici l'algorithme de la fraction continue. Au lieu de cela, voici l'énoncé d'un fait connu à propos de cet algorithme.
Étant donné un entier et un nombre réel , il existe au plus un choix d'entiers avec et satisfaisant Étant donné et , l' algorithme des fractions continues trouve et ou signale qu'ils n'existent pas. Cet algorithme peut être implémenté sous la forme d'un circuit booléen de taille
Si nous avons une approximation très proche de à et que nous exécutons l'algorithme de la fraction continue pour et , nous obtiendrons et tels qu'ils sont décrits dans le fait. L'analyse des faits permet de conclure que
Remarquez en particulier que nous n'apprenons pas nécessairement et , mais seulement dans les termes les plus bas.
Par exemple, et comme nous l'avons déjà remarqué, nous n'apprendrons rien à partir de Mais c'est la seule valeur de où cela se produit. Lorsque est non nul, il peut avoir des facteurs communs avec mais le nombre que nous obtenons par l'algorithme des fractions continues doit au moins diviser
C'est loin d'être évident, mais il est vrai que si nous avons la capacité d'apprendre et pour pour choisis uniformément au hasard, alors il est très probable que nous puissions retrouver après seulement quelques échantillons. En particulier, si notre estimation de est le multiple le moins commun de toutes les valeurs du dénominateur que nous observons, nous aurons raison avec une forte probabilité. Intuitivement, certaines valeurs de ne sont pas bonnes parce qu'elles partagent des facteurs communs avec et que ces facteurs communs nous sont cachés lorsque nous apprenons et Mais les choix aléatoires de ne sont pas susceptibles de cacher les facteurs de pendant longtemps, et la probabilité que nous ne devinions pas correctement en prenant le plus petit multiple commun des dénominateurs que nous observons diminue de façon exponentielle dans le nombre d'échantillons.
Il reste à déterminer comment mettre la main sur un vecteur propre de sur lequel exécuter la procédure d'estimation de la phase. En fait, nous n'avons pas besoin de les créer!
Nous allons plutôt exécuter la procédure d'estimation de phase sur l'état , c'est-à-dire le codage binaire du nombre à la place d'un vecteur propre de Jusqu'à présent, nous n'avons parlé que de l'exécution de la procédure d'estimation de phase sur un vecteur propre particulier, mais rien ne nous empêche d'exécuter la procédure sur un état d'entrée qui n'est pas un vecteur propre de et c'est ce que nous faisons ici avec l'état (Il ne s'agit pas d'un vecteur propre de à moins que ne soit un choix qui ne nous intéresse pas)
Le choix de l'état au lieu d'un vecteur propre de se justifie par le fait que l'équation suivante est vraie.
Une façon de vérifier cette équation est de comparer les produits intérieurs des deux côtés avec chaque état de base standard, en utilisant les formules mentionnées précédemment dans la leçon pour aider à évaluer les résultats du côté droit. Par conséquent, nous obtiendrons exactement les mêmes résultats de mesure que si nous avions choisi uniformément au hasard et utilisé comme vecteur propre.
Plus précisément, imaginons que nous exécutions la procédure d'estimation de la phase avec l'état à la place de l'un des vecteurs propres Après l'exécution de la transformée de Fourier quantique inverse, nous obtenons l'état suivant
où
Le vecteur représente l'état des qubits supérieurs après que l'inverse de la transformée de Fourier quantique a été effectué sur eux.
Ainsi, en vertu du fait que est un ensemble orthonormé, nous constatons qu'une mesure des qubits supérieurs donne une approximation de la valeur où est choisi uniformément au hasard. Comme nous l'avons déjà mentionné, cela nous permet d'apprendre avec un degré élevé de confiance après plusieurs exécutions indépendantes, ce qui était notre objectif.
Coût total
Le coût de mise en œuvre de chaque opération unitaire contrôlée est le suivant Il y a opérations unitaires contrôlées, et nous avons donc le coût total pour les opérations unitaires contrôlées est de En outre, nous avons portes de Hadamard (qui contribuent au coût), et la transformée de Fourier quantique inverse contribue au coût. Ainsi, le coût des opérations unitaires contrôlées domine le coût de l'ensemble de la procédure - qui est donc de
Outre le circuit quantique lui-même, quelques calculs classiques doivent être effectués en cours de route. Il s'agit notamment de calculer les puissances dans pour , qui sont nécessaires pour créer les portes unitaires contrôlées, ainsi que l'algorithme de fraction continue qui convertit les approximations de en fractions. Ces calculs peuvent être effectués par des circuits booléens avec un coût total de
Comme d'habitude, toutes ces limites peuvent être améliorées à l'aide d'algorithmes asymptotiquement rapides; ces limites supposent l'utilisation d'algorithmes standard pour les opérations arithmétiques de base.
Affacturage par recherche de commandes
La toute dernière chose que nous devons discuter est la façon dont la résolution du problème de recherche d'ordre nous aide à factoriser. Cette partie est tout à fait classique - elle n'a rien à voir avec l'informatique quantique.
Voici l'idée de base. Nous voulons factoriser le nombre et nous pouvons le faire de manière récursive. Plus précisément, nous pouvons nous concentrer sur la tâche consistant à diviser , ce qui signifie trouver deux entiers pour lesquels Cela n'est pas possible si est un nombre premier, mais nous pouvons tester efficacement si est premier en utilisant d'abord un algorithme de test de primalité, et si n'est pas premier, nous essaierons de le diviser. Une fois que nous avons divisé , il nous suffit de récidiver sur et jusqu'à ce que tous nos facteurs soient premiers et que nous obtenions la factorisation première de
Il est facile de diviser les entiers pairs : il suffit de sortir et
Il est également facile de diviser les puissances parfaites, c'est-à-dire les nombres de la forme pour les entiers , en approximant les racines et ainsi de suite approximant les racines et ainsi de suite, et en vérifiant les entiers proches en tant que suspects pour les puissances parfaites Nous n'avons pas besoin d'aller plus loin que pas dans cette séquence, parce qu'à ce stade, la racine tombe en dessous de et ne révèlera pas de candidats supplémentaires.
C'est une bonne chose que nous puissions faire ces deux choses, car la recherche d'ordre ne nous aidera pas à factoriser les nombres pairs ou les puissances premières, lorsque le nombre est un nombre premier. Si est impair et n'est pas une puissance première, la recherche d'ordre nous permet de diviser
-
Choisir au hasard
-
Calculer
-
Si , alors il faut éditer et et s'arrêter. Sinon, passez à l'étape suivante en sachant que
-
Soit l'ordre de modulo (C'est ici que nous avons besoin d'une recherche d'ordre)
-
Si est égal :
5.1 Calculer modulo \ 5.2 Calculer \ 5.3 Si , alors on obtient et et on s'arrête.
-
Si ce point est atteint, l'algorithme n'a pas réussi à trouver un facteur de
L'exécution de cet algorithme peut échouer à trouver un facteur de Plus précisément, cela se produit dans deux situations :
- L'ordre de modulo est impair.
- L'ordre de modulo est pair et
En utilisant la théorie des nombres de base, on peut prouver que, pour un choix aléatoire de avec une probabilité d'au moins , aucun de ces événements ne se produit. En fait, la probabilité que l'un ou l'autre événement se produise est au plus de pour étant le nombre de facteurs premiers distincts de c'est pourquoi l'hypothèse selon laquelle n'est pas une puissance première est nécessaire. (L'hypothèse selon laquelle est impair est également nécessaire pour que ce fait soit vrai)
Cela signifie que chaque exécution a au moins 50 % de chances d'aboutir à une scission Par conséquent, si nous exécutons l'algorithme fois, en choisissant au hasard à chaque fois, nous réussirons à diviser avec une probabilité d'au moins
L'idée de base de l'algorithme est la suivante. Si nous avons un choix de pour lequel l'ordre de modulo est pair, alors est un entier et nous pouvons considérer les nombres
En utilisant la formule , nous concluons que
Maintenant, nous savons que par la définition de l'ordre - ce qui est une autre façon de dire que divise également le produit Cela signifie que divise également le produit
Pour que cela soit vrai, tous les facteurs premiers de doivent également être des facteurs premiers de ou (ou des deux) - et pour une sélection aléatoire de , il s'avère improbable que tous les facteurs premiers de divisent l'un des termes et qu'aucun ne divise l'autre. Sinon, tant que certains des facteurs premiers de divisent le premier terme et que certains divisent le second terme, nous pourrons trouver un facteur non trivial de en calculant le PGCD avec le premier terme.