L'algorithme de Shor
Pour ce module Qiskit en classe, les étudiants doivent disposer d'un environnement Python fonctionnel avec les packages suivants installés :
qiskitv2.1.0 ou plus récentqiskit-ibm-runtimev0.40.1 ou plus récentqiskit-aerv0.17.0 ou plus récentqiskit.visualizationnumpypylatexenc
Pour configurer et installer les packages ci-dessus, consulte le guide Installer Qiskit. Pour exécuter des jobs sur de vrais ordinateurs quantiques, les étudiants devront créer un compte IBM Quantum® en suivant les étapes du guide Configurer ton compte IBM Cloud.
Ce module a été testé et a utilisé trois secondes de temps QPU. Il s'agit d'une estimation uniquement. Ton utilisation réelle peut varier.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'
Introduction
Au début des années 1990, un enthousiasme croissant entourait le potentiel des ordinateurs quantiques à résoudre des problèmes difficiles pour les ordinateurs classiques. Quelques informaticiens talentueux avaient mis au point des algorithmes illustrant la puissance du calcul quantique pour des problèmes de niche artificiels, mais personne n'avait trouvé une seule "application phare" du calcul quantique qui révolutionnerait à coup sûr le domaine. Ce fut le cas jusqu'en 1994, lorsque Peter Shor mit au point ce qu'on appelle aujourd'hui l'algorithme de Shor pour factoriser de grands nombres.
Il était bien connu à l'époque que trouver les facteurs premiers d'un grand nombre était extrêmement difficile pour un ordinateur classique. En fait, les protocoles de sécurité sur internet reposaient sur cette difficulté. Shor a trouvé un moyen de trouver ces facteurs de manière exponentiellement plus efficace en confiant certaines des étapes les plus délicates à un futur ordinateur quantique théorique.
Dans ce module, nous allons explorer l'algorithme de Shor. D'abord, nous donnerons un peu plus de contexte à l'algorithme, en formalisant le problème qu'il résout et en expliquant la pertinence pour la cybersécurité. Ensuite, nous donnerons un aperçu des mathématiques modulaires et de leur application au problème de factorisation, en montrant comment la factorisation se réduit à un autre problème appelé « recherche d'ordre ». Nous verrons comment la Transformée de Fourier Quantique et l'Estimation de Phase Quantique, étudiées dans un module précédent, entrent en jeu, et comment les utiliser pour résoudre le problème de recherche d'ordre.
Enfin, nous exécuterons l'algorithme de Shor sur un vrai ordinateur quantique ! Garde à l'esprit, cependant, que cet algorithme ne sera vraiment utile que lorsque nous disposerons d'un grand ordinateur quantique tolérant aux pannes, ce qui est encore à quelques années de nous. Nous allons donc simplement factoriser un petit nombre pour illustrer le fonctionnement de l'algorithme.
Le problème de factorisation
L'objectif du problème de factorisation est de trouver les facteurs premiers d'un nombre . Pour certains nombres , c'est assez simple. Par exemple, si est pair, l'un de ses facteurs premiers sera 2. Si est une puissance d'un premier, c'est-à-dire pour un certain nombre premier , il est également assez facile de trouver : on approxime la racine de et on cherche des nombres premiers proches qui pourraient être .
Là où les ordinateurs classiques peinent, c'est lorsque est impair et n'est pas une puissance d'un premier. C'est le cas que traite l'algorithme de Shor. L'algorithme trouve deux facteurs et tels que . Il peut être appliqué récursivement jusqu'à ce que tous les facteurs soient premiers. Dans les sections suivantes, nous verrons comment ce problème est abordé.
Pertinence pour la cybersécurité
De nombreux schémas cryptographiques ont été construits sur le fait que la factorisation de grands nombres est difficile, notamment un schéma couramment utilisé aujourd'hui, appelé RSA. Dans RSA, une clé publique est créée en multipliant deux grands nombres premiers pour obtenir . Ensuite, n'importe qui peut utiliser cette clé publique pour chiffrer des données. Mais seule une personne disposant de la clé privée, et , peut déchiffrer ces données.
Si était facile à factoriser, alors n'importe qui pourrait déterminer et et casser le chiffrement. Mais ce n'est pas le cas. C'est un problème notoirement difficile. En fait, les facteurs premiers d'un nombre appelé RSA1024, qui fait 1024 chiffres binaires et 309 chiffres décimaux, n'ont toujours pas été trouvés, malgré un prix de $100 000 offert pour sa factorisation dès 1991.
La solution de Shor
En 1994, Peter Shor a réalisé qu'un ordinateur quantique pouvait factoriser un grand nombre de manière exponentiellement plus efficace qu'un ordinateur classique. Son intuition reposait sur la relation entre ce problème de factorisation et l'arithmétique modulaire. Nous allons faire un bref rappel sur l'arithmétique modulaire, puis nous verrons comment l'utiliser pour factoriser .
Arithmétique modulaire
L'arithmétique modulaire est un système de comptage cyclique, c'est-à-dire que si le comptage commence de la manière habituelle, avec les entiers 0, 1, 2, etc., à un certain moment, après une période , le comptage recommence depuis le début. Voyons comment cela fonctionne avec un exemple. Supposons que notre période soit 5. Alors, en comptant, là où on atteindrait normalement 5, on repart à 0 :
C'est parce que dans le monde « modulo-5 », 5 est équivalent à 0. On dit que . En fait, tous les multiples de 5 seront équivalents à .
Vérifie ta compréhension
Lis la ou les questions ci-dessous, réfléchis à ta réponse, puis clique sur le triangle pour révéler la solution.
Utilise l'arithmétique modulaire pour résoudre le problème suivant :
Tu pars pour un long voyage en train transcontinental à 8h. Le trajet dure 60 heures. À quelle heure arrives-tu ?
Réponse :
La période est 24, puisqu'il y a 24 heures dans une journée. Donc, ce problème peut s'écrire en arithmétique modulaire comme :
Donc, tu arriverais à destination à 20h00.
et
Il est souvent utile d'introduire deux ensembles, et . est simplement l'ensemble des nombres qui existent dans un monde « modulo- ». Par exemple, quand on comptait modulo-5, l'ensemble serait . Autre exemple : . On peut effectuer des additions et des multiplications (modulo ) sur les éléments de , et le résultat de chacune de ces opérations est également un élément de , ce qui fait de un objet mathématique appelé anneau.
Il existe un sous-ensemble particulier de qui nous intéresse tout particulièrement pour l'algorithme de Shor. C'est le sous-ensemble des nombres de tels que le plus grand diviseur commun entre chaque élément et est 1, donc chaque élément est « co-premier » avec . Si on prend l'ensemble de ces nombres avec l'opération de multiplication modulaire, on obtient un autre objet mathématique appelé groupe. On appelle ce groupe . Il s'avère qu'avec (et les groupes finis en général), si on choisit n'importe quel élément et qu'on multiplie par lui-même de façon répétée, on finira toujours par obtenir le nombre . Le nombre minimal de fois qu'il faut multiplier par lui-même pour obtenir est appelé l'ordre de . Ce fait sera très important pour notre discussion sur la façon de factoriser des nombres ci-dessous.
Vérifie ta compréhension
Lis la ou les questions ci-dessous, réfléchis à ta réponse, puis clique sur le triangle pour révéler la solution.
Quel est ?
Réponse :
Nous avons exclu les nombres suivants :
Quel est l'ordre de chacun des éléments de ?
Réponse :
L'ordre est le plus petit nombre tel que pour chaque élément .
Remarque que, bien que nous ayons pu trouver l'ordre des nombres dans , ce n'est PAS une tâche facile en général, pour des plus grands. C'est là le nœud du problème de factorisation et la raison pour laquelle nous avons besoin d'un ordinateur quantique. Nous verrons pourquoi en parcourant le reste du cahier de travail.
Appliquer l'arithmétique modulaire au problème de factorisation
La clé pour trouver les facteurs et tels que revient à trouver un autre entier tel que
et
Comment trouver nous aide-t-il à trouver les facteurs et ? Déroulons l'argument maintenant. Puisque , cela signifie que . En d'autres termes, est un multiple de . Donc, pour un certain entier ,
On peut factoriser pour obtenir :
D'après nos hypothèses initiales, nous savons que , donc ne divise pas exactement ni . Ainsi, les deux facteurs de , et , doivent chacun diviser et . Soit est un facteur de et est un facteur de , soit l'inverse. Par conséquent, si on calcule les plus grands diviseurs communs (PGCD) entre et d'une part, et d'autre part, on obtiendra les facteurs et . Calculer le PGCD entre deux nombres est une tâche classiquement facile qui peut être accomplie, par exemple, à l'aide de l'algorithme d'Euclide.
Vérifie ta compréhension
Lis la ou les questions ci-dessous, réfléchis à ta réponse, puis clique sur le triangle pour révéler la solution.
Chaque étape du raisonnement ci-dessus peut être difficile à suivre, alors essaie de la dérouler avec un exemple. Utilise et . D'abord, vérifie que et . Puis continue à vérifier chaque étape. Enfin, calcule et vérifie que ce sont bien les facteurs de .
Réponse :
, ce qui vaut , donc .
, qui n'est pas équivalent à .
, qui n'est pas équivalent à .
Maintenant, on sait que pour un certain entier . Ceci est vérifié en remplaçant et : quand .
Maintenant, il faut calculer et .
Nous avons donc trouvé les facteurs de !
L'algorithme
Maintenant que nous avons vu comment trouver un entier tel que nous aide à factoriser , nous pouvons parcourir l'algorithme de Shor. Il se résume essentiellement à trouver :
- Choisir un entier aléatoire Choisis un entier aléatoire tel que .
- Calcule de manière classique.
- Si , tu as déjà trouvé un facteur. Arrête-toi.
- Sinon, continue.
-
Trouver l'ordre de modulo Trouve le plus petit entier positif qui satisfait .
-
Vérifier si l'ordre est pair
- Si est impair, reviens à l'étape 1 et choisis un nouveau .
- Si est pair, passe à l'étape 4.
- Calculer
- Vérifie que et .
- Si , reviens à l'étape 1 et choisis un nouveau .
- Sinon, calcule les PGCD pour extraire les facteurs :
Ce seront des facteurs non triviaux de .
- Factoriser récursivement si nécessaire
- Si et/ou ne sont pas premiers, applique l'algorithme récursivement pour les factoriser complètement.
- Une fois tous les facteurs premiers, la factorisation est terminée.
Sur la base de cette procédure, il n'est peut-être pas évident de voir pourquoi un ordinateur quantique est nécessaire pour accomplir cette tâche. C'est nécessaire parce que l'étape 2, trouver l'ordre de modulo , est classiquement un problème très difficile. La complexité croît de façon exponentielle avec le nombre . Mais avec un ordinateur quantique, il suffit d'utiliser l'Estimation de Phase Quantique pour le résoudre. L'étape 4, trouver le PGCD de deux entiers, est en fait assez facile à faire classiquement. Donc, la seule étape qui a réellement besoin de la puissance d'un ordinateur quantique est l'étape de recherche d'ordre. On dit que le problème de factorisation « se réduit » au problème de recherche d'ordre.
La partie difficile : la recherche d'ordre
Maintenant, nous allons voir comment utiliser un ordinateur quantique pour la recherche d'ordre. D'abord, précisons ce qu'on entend par « ordre ». Bien sûr, je t'ai déjà dit ce que l'ordre signifie mathématiquement : c'est le premier entier non nul tel que Mais voyons si on peut développer un peu plus l'intuition pour ce concept.
Pour des suffisamment petits, on peut simplement déterminer l'ordre en calculant chaque puissance de , en prenant le modulo de ce nombre, puis en s'arrêtant lorsqu'on trouve la puissance qui satisfait . C'est ce qu'on a fait avec notre exemple, , ci-dessus. Regardons quelques graphiques de ces puissances modulaires pour quelques valeurs exemples de et :
Tu remarques quelque chose ? Ce sont des fonctions périodiques ! Et l'ordre est le même que la période ! Donc, la recherche d'ordre est équivalente à la recherche de période.
Les ordinateurs quantiques sont très bien adaptés pour trouver la période de fonctions. Pour cela, on peut utiliser une sous-routine algorithmique appelée Estimation de Phase Quantique. Nous avons abordé QPE et sa relation avec la Transformée de Fourier Quantique dans le module précédent. Pour un rappel détaillé, consulte le module QFT ou la leçon de John Watrous sur l'Estimation de Phase Quantique dans son cours sur les algorithmes quantiques. Voici l'essentiel de la procédure :
Dans l'Estimation de Phase Quantique (QPE), on commence avec un unitaire et un état propre de cet unitaire . Ensuite, on utilise QPE pour approximer la valeur propre correspondante, qui, puisque l'opérateur est unitaire, sera de la forme . Ainsi, trouver la valeur propre est équivalent à trouver la valeur de dans la fonction périodique. Le circuit ressemble à ceci :

où le nombre de qubits de contrôle (les qubits du haut dans la figure ci-dessus) détermine la précision de l'approximation.
Dans l'algorithme de Shor, on utilise QPE sur l'opérateur unitaire :
Ici, désigne un état de base computationnel du registre multi-qubit, où la valeur binaire des qubits correspond à l'entier . Par exemple, si et , alors est représenté par l'état de base à quatre qubits , puisque quatre qubits sont nécessaires pour encoder les nombres jusqu'à 15. (Si ce concept n'est pas familier, consulte le module introductif Qiskit en classe pour un rappel sur l'encodage binaire des états quantiques.)
Maintenant, il faut trouver un état propre de cet unitaire. Si on commence dans l'état , on peut voir que chaque application successive de multipliera l'état de notre registre par , et après applications, on reviendra à l'état . Par exemple avec et :
Donc les superpositions des états dans ce cycle () de la forme :
sont toutes des états propres de . (Il y a plus d'états propres que ceux-là. Mais nous ne nous intéressons qu'à ceux de la forme ci-dessus.)
Vérifie ta compréhension
Lis la ou les questions ci-dessous, réfléchis à ta réponse, puis clique sur le triangle pour révéler la solution.
Trouve un état propre de l'unitaire correspondant à et .
Réponse :
Donc, l'ordre . Les états propres qui nous intéressent seront une superposition égale de tous les états parcourus ci-dessus, avec diverses phases :