Que donne la mesure d’un qubit ?
Mesurer un qubit, c’est le lire : on obtient un seul résultat, 0 ou 1, tiré au hasard. La règle de mesure donne la chance de chaque résultat à partir des amplitudes.
Après cette leçon, vous saurez prévoir combien de 0 et de 1 sortent sur 1000 mesures. C’est le seul moyen de lire ce qu’un programme quantique a calculé.
À la fin de cette leçon
Remarque
Je peux prévoir les résultats d’une mesure et les comptes attendus sur de nombreux tirages.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Mesure | la lecture d’un qubit, qui donne un seul résultat |
| Tirage | une exécution complète, qui finit par une mesure |
| Comptes | combien de fois chaque résultat est sorti |
| Chance cumulée | la somme des chances jusqu’à un résultat |
| Graine | un nombre qui fixe le hasard du simulateur |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
La mesure choisit un résultat selon les chances
La règle de mesure est simple. Chaque résultat sort avec la chance égale au carré de son amplitude. Un seul sort à chaque mesure.
Après la mesure, le qubit est dans l’état du résultat lu. Une seconde mesure donne alors la même réponse : l’état mêlé a disparu.
Exemple travaillé : trois états et leur mesure
| État | Chance de 0 | Chance de 1 | Ce qu’on lit |
|---|---|---|---|
| [1, 0] | 1 | 0 | toujours 0 |
| [0.707, 0.707] | 0,5 | 0,5 | 0 ou 1, à pile ou face |
| [0.6, 0.8] | 0,36 | 0,64 | 1 un peu plus souvent que 0 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Ce que le script va afficher
Le script measure.py mesure 1000 fois l’état obtenu avec H. Ses lignes sont en anglais : 1000 shots, seed 1 veut dire « 1000 tirages, graine 1 ». seed 1 again veut dire « graine 1, de nouveau ».
Le résultat est un dictionnaire : {'0': 507, '1': 493} se lit « 507 fois le résultat 0, 493 fois le résultat 1 ».
Mesurer 1000 fois un qubit mélangé
docker exec jupyter python3 steps/measure.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.
Compte attendu : chance fois nombre de tirages
Sur beaucoup de tirages, chaque résultat sort à peu près autant que sa chance le prévoit. Le compte attendu est la chance multipliée par le nombre de tirages.
L’écart avec le compte réel est du hasard. Il pèse moins quand on tire plus : sur 10 tirages, un écart de 3 est courant ; sur 1000, il est rare.
Calculer les comptes attendus
# Les comptes attendus sont la chance fois le nombre de tirages.
chances = [0.36, 0.64]
tirages = 1000
for n in range(len(chances)):
attendu = chances[n] * tirages
print("résultat", n, ": environ", round(attendu), "fois sur", tirages)
# Changez tirages en 50, puis relancez.
Une erreur fréquente
Attention
Beaucoup pensent qu’une mesure donne un mélange de 0 et de 1 en même temps. Une mesure donne un seul résultat, 0 ou 1. Le mélange ne se voit que dans les comptes de nombreux tirages, jamais dans un seul.
Comment le simulateur tire un résultat
Le simulateur tire un nombre r entre 0 et 1. Il additionne les chances une à une et s’arrête au premier résultat dont la chance cumulée dépasse r.
Pour l’état [0.6, 0.8], les chances cumulées sont 0,36 puis 1. Si r vaut 0,2, le résultat est 0. Si r vaut 0,5, le résultat est 1.
Tirer un résultat avec un nombre r
# La règle du simulateur : un nombre r entre 0 et 1, et des chances cumulées.
etat = [0.6, 0.8]
chances = [0.36, 0.64]
cumul = [0.36, 1.0]
def resultat(r):
for n in range(len(cumul)):
if cumul[n] > r:
return n
return len(cumul) - 1
for r in [0.1, 0.35, 0.5, 0.9]:
print("r =", r, "donne le résultat", resultat(r))
# Ajoutez 0.36 dans la liste, puis relancez : quel résultat sort ?
Pour aller plus loin
Dans un carnet du labo, mesurez l’état de H sur |0> avec measure(etat, 10000, seed=1). Les comptes se rapprochent-ils de 5000 et 5000 ?
Essayez ensuite 10 tirages. Dites en une phrase pourquoi un petit nombre de tirages donne des comptes moins proches des chances.