Un ordinateur quantique est-il plus rapide ?
Un algorithme quantique n’essaie pas toutes les réponses à la fois. Il arrange les amplitudes pour que la bonne réponse devienne probable, et il n’accélère que certains problèmes.
Après cette leçon, vous saurez dire ce que le quantique accélère, ce qu’il n’accélère pas, et pourquoi un simulateur ne peut pas le montrer.
À la fin de cette leçon
Remarque
Je peux dire ce que les algorithmes quantiques accélèrent et ce qu’ils n’accélèrent pas.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Amplification | une étape qui augmente l’amplitude de la bonne réponse |
| Oracle | une boîte qui reconnaît la bonne réponse sans la donner |
| Accélération | le gain de temps par rapport au meilleur programme ordinaire |
| Bruit | les petites erreurs d’une machine réelle |
| Factorisation | trouver les deux nombres premiers dont un nombre est le produit |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
L’amplification pousse l’amplitude de la bonne réponse
Imaginez quatre éléments, dont un seul est le bon. L’oracle reconnaît le bon : il change le signe de son amplitude, sans changer aucune chance.
Puis une seconde étape reflète chaque amplitude par rapport à la moyenne. La bonne amplitude, devenue négative, bondit vers le haut. Les autres tombent vers 0.
Exemple travaillé : quatre éléments, le 3 est marqué
| Étape | Éléments 0, 1, 2 | Élément 3 | Chance du 3 |
|---|---|---|---|
| Départ | 0,5 chacun | 0,5 | 0,25 |
| Signe retourné | 0,5 chacun | -0,5 | 0,25 |
| Moyenne | 0,25 | ||
| Reflet : 2 × 0,25 moins l’amplitude | 0 | 1 | 1 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une étape d’amplification
# Quatre éléments, numérotés de 0 à 3. L'élément 3 est le marqué.
etat = [0.5, 0.5, 0.5, 0.5]
marque = 3
# Étape 1 : retourner le signe de l'amplitude du marqué.
etat[marque] = -etat[marque]
# Étape 2 : refléter chaque amplitude par rapport à la moyenne.
moyenne = sum(etat) / len(etat)
nouvel_etat = []
for a in etat:
nouvel_etat.append(2 * moyenne - a)
print("amplitudes :", nouvel_etat)
# Changez marque = 3 en marque = 1, puis relancez.
Ce que le script va afficher
Le script amplify.py refait cette étape avec des portes. Ses lignes sont en anglais : start, every item equal veut dire « départ, tous les éléments égaux ». sign of the marked item flipped veut dire « signe de l’élément marqué retourné ».
after one amplification step veut dire « après une étape d’amplification ». chance of each veut dire « chance de chacun ».
Amplifier un élément parmi quatre
docker exec jupyter python3 steps/amplify.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
La recherche gagne en racine carrée, pas plus
Avec N éléments, une recherche ordinaire en essaie environ N, au pire. L’amplification demande de l’ordre de la racine carrée de N étapes.
C’est une vraie accélération, mais modeste : la racine de un million vaut mille. Elle ne rend pas un problème difficile facile.
Combien d’étapes pour N éléments ?
| Éléments N | Essais ordinaires, au pire | Étapes quantiques, de l’ordre de |
|---|---|---|
| 100 | 100 | 10 |
| 10 000 | 10 000 | 100 |
| 1 000 000 | 1 000 000 | 1 000 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent qu’un ordinateur quantique est plus rapide pour tout. Ce n’est pas le cas. Un tableur, une page web ou un tri n’y gagnent rien. L’accélération existe pour quelques problèmes précis, et elle est souvent modeste.
La factorisation est l’autre cas célèbre
Factoriser un grand nombre, c’est retrouver les deux nombres premiers dont il est le produit. Un ordinateur ordinaire met un temps énorme. Un algorithme quantique, celui de Shor, ferait la tâche bien plus vite.
Mais il demande une machine très grande, avec des erreurs corrigées. Aucune machine actuelle n’en est là. Les chercheurs préparent déjà de nouveaux codes secrets pour le jour où ce serait possible.
Le bruit limite les machines réelles
Un qubit réel est fragile : la chaleur, les vibrations et les erreurs de portes abîment son état. Ces petites erreurs forment le bruit.
Plus un programme a de portes, plus le bruit s’accumule. Pour le corriger, il faut beaucoup de qubits physiques pour un seul qubit fiable.
Pourquoi un simulateur s’arrête vers 30 qubits
| Qubits | Amplitudes (2 puissance n) | Mémoire, 16 octets chacune |
|---|---|---|
| 10 | 1 024 | environ 16 Ko |
| 20 | 1 048 576 | environ 17 Mo |
| 30 | 1 073 741 824 | environ 17 Go |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Compter la mémoire d’un simulateur
# Chaque qubit en plus double le nombre d'amplitudes à garder en mémoire.
for n in [10, 20, 30]:
amplitudes = 2 ** n
mega_octets = amplitudes * 16 / 1000000
print(n, "qubits :", amplitudes, "amplitudes, environ", round(mega_octets, 2), "Mo")
# Chaque amplitude complexe prend 16 octets. Ajoutez 40 dans la liste, puis relancez.
Pour aller plus loin
Faites tourner l’étape sur huit éléments, puis une deuxième fois, puis une troisième. La chance du marqué monte-t-elle toujours ?
Écrivez en une phrase ce qui arrive quand on fait trop d’étapes. Que dit cela du nombre d’étapes qu’un programme doit prévoir ?