Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

L’interférence quantique

Après cette leçon: Je peux montrer avec les portes H, Z, H comment une mauvaise réponse s’annule.

Leçon de 55 min1 commandeLab simulateur quantique : qubits, portes et mesure dans JupyterLab

Qu’est-ce que l’interférence quantique ?

L’interférence quantique est le moment où des amplitudes s’ajoutent ou s’annulent. C’est elle, et non le hasard seul, qui permet à un programme quantique de rendre une bonne réponse probable.

Après cette leçon, vous saurez montrer, nombres en main, comment la suite de portes H, Z, H fait disparaître un résultat.

À la fin de cette leçon

Remarque

Je peux montrer avec les portes H, Z, H comment une mauvaise réponse s’annule.

Mots clés

MotCe que ça veut dire
Interférencedes amplitudes qui s’ajoutent ou s’annulent
Phasele signe, ou l’angle, d’une amplitude
Annulationdeux amplitudes opposées dont la somme vaut 0
Cheminune suite d’étapes qui mène à un résultat
Porte Hla porte qui mélange 0 et 1 à parts égales

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une amplitude peut être négative

Une amplitude est un nombre, et un nombre peut être négatif. Le signe n’influe pas sur la chance, car le carré l’efface. Mais il compte quand on additionne des amplitudes.

Deux amplitudes de même signe se renforcent. Deux amplitudes de signes opposés se retranchent : c’est l’annulation.

Exemple travaillé : H puis H sur |0>

RésultatContribution de 0Contribution de 1Somme
00,707 fois 0,707 = 0,50,707 fois 0,707 = 0,51
10,707 fois 0,707 = 0,50,707 fois -0,707 = -0,50

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

H puis H, étape par étape

Code: python
# H, puis H : les amplitudes de 1 s'annulent.
R = 0.5 ** 0.5
H = [[R, R], [R, -R]]
Z = [[1, 0], [0, -1]]

def appliquer(porte, etat):
    a = porte[0][0] * etat[0] + porte[0][1] * etat[1]
    b = porte[1][0] * etat[0] + porte[1][1] * etat[1]
    return [round(a, 3), round(b, 3)]

etat = [1, 0]
une_fois = appliquer(H, etat)
print("H :", une_fois)
print("H puis H :", appliquer(H, une_fois))
# Ajoutez la porte Z entre les deux H, puis relancez.
# Le résultat certain passe de 0 à 1.

Chaque résultat s’atteint par deux chemins

Après le premier H, l’état a deux amplitudes non nulles. Le second H envoie chacune vers le résultat 0 et vers le résultat 1. Chaque résultat reçoit donc deux contributions : deux chemins.

Pour le résultat 0, les deux contributions ont le même signe : elles s’ajoutent. Pour le résultat 1, elles ont des signes opposés : elles s’annulent.

Z entre les deux H inverse le résultat

Insérez la porte Z entre les deux H. Elle change le signe de l’amplitude de 1, donc l’état devient [0.707, -0.707].

Le second H additionne alors les contributions dans l’autre sens. Le résultat 0 s’annule et le résultat 1 devient certain. La porte Z n’a changé aucune chance, mais elle a changé la phase.

Exemple travaillé : H, Z, H sur |0>

RésultatContribution de 0Contribution de 1Somme
00,707 fois 0,707 = 0,50,707 fois -0,707 = -0,50
10,707 fois 0,707 = 0,50,707 fois 0,707 = 0,51

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Ce que le script va afficher

Le script interfere.py applique H puis H, puis H, Z et H. Ses lignes sont en anglais : H then H veut dire « H puis H ». H then Z then H veut dire « H puis Z puis H ».

La notation 1.000|0> se lit : amplitude 1 pour le résultat 0, donc 0 est certain.

Voir deux annulations différentes

Commande
docker exec jupyter python3 steps/interfere.py

Affiché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.

Une erreur fréquente

Attention

Beaucoup pensent que la porte Z ne sert à rien, puisqu’elle ne change aucune chance. Seule, c’est vrai. Entre deux portes H, elle change la façon dont les amplitudes s’additionnent, donc le résultat. Une phase est invisible tant qu’une interférence ne la révèle pas.

Une phase à moitié : une annulation partielle

Code: python
# Une porte S change la phase à moitié : l'annulation n'est que partielle.
R = 0.5 ** 0.5
H = [[R, R], [R, -R]]
S = [[1, 0], [0, 1j]]

def appliquer(porte, etat):
    a = porte[0][0] * etat[0] + porte[0][1] * etat[1]
    b = porte[1][0] * etat[0] + porte[1][1] * etat[1]
    return [a, b]

etat = appliquer(H, appliquer(S, appliquer(H, [1, 0])))
print("chance de 0 :", round(abs(etat[0]) ** 2, 3))
print("chance de 1 :", round(abs(etat[1]) ** 2, 3))
# Remplacez S par [[1, 0], [0, -1]], puis relancez.

Pour aller plus loin

Dans un carnet du labo, écrivez one = apply(H, apply(Z, apply(H, zero(1), 0), 0), 0) puis show(one). Remplacez Z par X. Que donne le résultat ?

Essayez aussi H, S, H. Les deux chances valent-elles encore 0,5 ? Dites en une phrase pourquoi.

À propos de ce labo et de sa source: Lab simulateur quantique : qubits, portes et mesure dans JupyterLab

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.