Qu’est-ce qu’une porte quantique ?
Une porte quantique est une étape de calcul qui transforme l’état d’un qubit. Elle s’écrit comme un petit tableau de nombres, une matrice, et l’appliquer revient à une multiplication.
Trois portes suffisent pour commencer : X, Z et H. Après cette leçon, vous saurez calculer à la main ce que chacune fait à un qubit.
À la fin de cette leçon
Remarque
Je peux appliquer une porte X, Z ou H à un qubit et écrire l’état obtenu.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Porte | une étape qui change les amplitudes d’un qubit |
| Matrice | un tableau de nombres, ici de 2 lignes et 2 colonnes |
| Porte X | la porte qui échange les amplitudes de 0 et de 1 |
| Porte Z | la porte qui change le signe de l’amplitude de 1 |
| Porte H | la porte qui fait un mélange égal de 0 et de 1 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Appliquer une porte, c’est multiplier une matrice
Une porte est une matrice de deux lignes. Pour l’appliquer à l’état [a, b], calculez deux nouvelles amplitudes.
La première est la ligne 1 de la porte fois [a, b]. La seconde est la ligne 2 fois [a, b]. Chaque ligne multiplie ses deux nombres par a et b, puis additionne.
Exemple travaillé : X sur un état mêlé
| Nouvelle amplitude | Ligne de X | Calcul | Résultat |
|---|---|---|---|
| Première | [0, 1] | 0 fois 0,6 plus 1 fois 0,8 | 0,8 |
| Seconde | [1, 0] | 1 fois 0,6 plus 0 fois 0,8 | 0,6 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Appliquer X et H à la main
# Une porte est un tableau 2 sur 2. L'appliquer, c'est le multiplier par l'état.
R = 0.5 ** 0.5
X = [[0, 1], [1, 0]]
H = [[R, R], [R, -R]]
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)]
zero = [1, 0]
print("X sur |0> :", appliquer(X, zero))
print("H sur |0> :", appliquer(H, zero))
# Appliquez X à l'état [0, 1], puis relancez.
X, Z et H font trois choses différentes
La porte X échange les deux amplitudes : elle fait de |0> un |1>, comme un NON en logique. La porte H (Hadamard) fait un mélange égal : |0> devient deux amplitudes de 0,707.
La porte Z laisse l’amplitude de 0 et change le signe de celle de 1. Sur |0>, elle ne fait rien. Son effet se voit surtout sur un état mêlé.
Ce que font les trois portes
| Porte | Sur [1, 0] | Sur [0, 1] | En une phrase |
|---|---|---|---|
| X | [0, 1] | [1, 0] | échange 0 et 1 |
| Z | [1, 0] | [0, -1] | change le signe de 1 |
| H | [0,707, 0,707] | [0,707, -0,707] | mélange à parts égales |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Ce que le script va afficher
Le script gates.py applique X puis H à un qubit dans l’état |0>. Ses lignes sont en anglais : X on |0> veut dire « X sur |0> » et H on |0> « H sur |0> ».
chance of 0 and of 1 veut dire « chance de 0 et de 1 ». La notation 0.707|0> + 0.707|1> se lit : amplitude 0,707 pour 0 et 0,707 pour 1.
Appliquer X puis H à |0>
docker exec jupyter python3 steps/gates.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 porte Z change un signe
# La porte Z change le signe de l'amplitude de 1, et laisse celle de 0.
R = 0.5 ** 0.5
Z = [[1, 0], [0, -1]]
H = [[R, R], [R, -R]]
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)]
melange = appliquer(H, [1, 0])
apres_z = appliquer(Z, melange)
print("après H :", melange)
print("après H puis Z :", apres_z)
# Les chances sont les mêmes avant et après Z. Changez H en [[1, 0], [0, 1]], puis relancez.
Une erreur fréquente
Attention
Beaucoup pensent que Z ne sert à rien, puisqu’elle ne change aucune chance. Elle change un signe, et un signe se voit plus tard. Placée entre deux portes H, elle change le résultat : c’est le sujet de la leçon 5.
Pour aller plus loin
Dans un carnet du labo, essayez show(apply(H, zero(1), 0)) puis show(apply(Y, zero(1), 0)). Le labo offre aussi les portes Y, S et T.
Appliquez H deux fois de suite à zero(1). Que remarquez-vous ? Écrivez une phrase qui explique le résultat avec les amplitudes.