Programmation quantique

Prérequis : complexes, vecteurs et matrices, probabilités et Python élémentaire. But : calculer un état, construire un circuit, prévoir une mesure et confronter un programme à cette prévision. Le socle utilise des vecteurs d’état locaux; aucun ordinateur quantique distant requis.

Premier parcours universitaire · 10–15 h estimées · français

5 visuels et 10 exercices interactifs

Ces leçons forment un premier socle, sans équivalence de crédits universitaires. Les durées sont indicatives et incluent la pratique.

Qubit, amplitude et mesure

Normaliser et calculer les probabilités de mesure

État préparé : α=√3/2 et β=i/2. La mesure est dans la base |0⟩, |1⟩.

Le rappel qui sert ici. Pour a+ib, le module au carré vaut a²+b². La probabilité porte sur le module au carré, jamais sur le signe seul.

  1. Calculer le poids de la composante zéro|α|²=(√32)²=34

    Pourquoi cette étape ? α est réel ici. Le carré porte sur le numérateur et le dénominateur.

  2. Calculer le poids de la composante un|β|²=0²+(12)²=14

    Pourquoi cette étape ? i² vaut −1, mais |i|² vaut +1. Une probabilité ne devient pas négative parce qu’une amplitude est imaginaire.

  3. Vérifier la norme totale|α|²+|β|²=34+14=1

    Pourquoi cette étape ? Un état pur doit être normalisé avant d’appliquer la règle de mesure. Le vecteur nul ne peut pas être normalisé.

  4. Prévoir les résultats de nombreuses préparationsP(0)=0,75;P(1)=0,25;E[N₁]=1000×0,25=250

    Pourquoi cette étape ? 250 est une espérance, pas une promesse de comptage. Chaque répétition statistique repart d’une nouvelle préparation identique.

  5. Distinguer mesure et nouvelle préparationrésultat1⇒état∼|1⟩

    Pourquoi cette étape ? Mesurer encore ce même qubit idéal dans la même base redonne 1. Pour retrouver la distribution 75 %/25 %, il faut repréparer l’état initial.

Règles, cas particuliers et autre exemple

Un qubit pur est |ψ⟩=α|0⟩+β|1⟩ avec α,β complexes et |α|²+|β|²=1. Une mesure dans la base de calcul donne 0 avec |α|² et 1 avec |β|²; elle ne retourne pas toutes les amplitudes. Après une mesure idéale, l’état conditionnel correspond au résultat observé. Une phase globale eⁱᵞ ne change aucune probabilité. Une phase relative peut changer les interférences ultérieures. La sphère de Bloch représente un seul qubit; elle ne représente pas à elle seule un registre intriqué.

Exemple résolu

α=√3/2, β=i/2. Norme au carré=3/4+1/4=1. P(0)=0,75 et P(1)=0,25. Sur 1000 répétitions, 250 résultats « 1 » est une espérance, pas un compte garanti. Chaque répétition doit repartir d’une préparation identique.

Amplitudes et mesures

α=√3/2 et β=i/2 : P(0)=3/4, P(1)=1/4.

Les équations et les explications au clic restent accessibles sans JavaScript. Active-le pour manipuler le visuel et choisir les réponses.

Portes, phase et interférence

Suivre les amplitudes entre trois portes

Départ |0⟩. On applique H, puis Z, puis H, sans mesure intermédiaire.

Le rappel qui sert ici. H(a;b)=((a+b)/√2;(a−b)/√2). Dans HZH|0⟩, la matrice la plus à droite agit en premier.

  1. Appliquer le premier HadamardH|0⟩=(1;1)√2=|+⟩

    Pourquoi cette étape ? Les deux issues ont maintenant une probabilité 1/2, mais le simulateur conserve des amplitudes et leur phase.

  2. Changer la phase relative avec ZZ|+⟩=(1;−1)√2=|−⟩

    Pourquoi cette étape ? Seule la composante |1⟩ change de signe. Les probabilités en base de calcul restent 1/2,1/2 à cet instant.

  3. Former la nouvelle amplitude de zéroαfinal=1√2(1√2−1√2)=0

    Pourquoi cette étape ? Le dernier H additionne les deux anciennes amplitudes pour la sortie zéro. Elles s’annulent : c’est une interférence destructive.

  4. Former la nouvelle amplitude de unβfinal=1√2(1√2+1√2)=1

    Pourquoi cette étape ? La soustraction a−b devient une addition parce que b est négatif. Les anciennes valeurs doivent être lues avant toute écriture dans un programme.

  5. Comparer au circuit sans phase relativeHZH|0⟩=|1⟩;HH|0⟩=|0⟩

    Pourquoi cette étape ? Deux distributions intermédiaires identiques ne suffisent pas à prévoir l’interférence. Multiplier toutes les amplitudes par une même phase globale n’aurait pas cet effet.

Règles, cas particuliers et autre exemple

Une porte idéale est une matrice unitaire U : U†U=I, ce qui conserve la norme. X échange |0⟩ et |1⟩; Z change le signe de la composante |1⟩; H=(1/√2)[[1,1],[1,−1]]. Les opérations agissent dans l’ordre du circuit, donc la première porte est la matrice la plus à droite dans un produit. H transforme |0⟩ en |+⟩. Deux états avec les mêmes probabilités dans la base de calcul peuvent produire des mesures différentes après H : les amplitudes, avec leurs signes et phases, interfèrent.

Exemple résolu

partir de |0⟩, appliquer H, Z, H. Après H : (1,1)/√2. Après Z : (1,−1)/√2. Après le dernier H : (0,1)=|1⟩. Sans Z, HH donne |0⟩. Les probabilités intermédiaires seules ne permettent pas de reconstituer cette différence.

La phase devient une interférence

Depuis |0⟩ : HH donne |0⟩, tandis que HZH donne |1⟩.

Les équations et les explications au clic restent accessibles sans JavaScript. Active-le pour manipuler le visuel et choisir les réponses.

Produit tensoriel et intrication

Préparer un état de Bell avec une convention explicite

Ordre des bits : |q0 q1⟩, q0 à gauche et de poids fort. Base : |00⟩, |01⟩, |10⟩, |11⟩.

Le rappel qui sert ici. Une porte sur q0 agit sur les paires d’indices (0,2) et (1,3). CNOT inverse q1 seulement lorsque q0 vaut 1.

  1. Écrire le registre initial|00⟩=(1;0;0;0)

    Pourquoi cette étape ? Quatre amplitudes sont nécessaires pour deux qubits. Ce ne sont pas quatre qubits.

  2. Appliquer H sur le bit de gaucheH₀|00⟩=|00⟩+|10⟩√2=(1;0;1;0)√2

    Pourquoi cette étape ? Le qubit q1 reste à zéro dans les deux termes. La convention est celle de ce cours et doit être vérifiée lors d’un export vers un SDK.

  3. Appliquer CNOT de q0 vers q1CX₀→₁:|00⟩+|10⟩√2→|00⟩+|11⟩√2

    Pourquoi cette étape ? Le contrôle lit le bit de gauche. Il ne change pas |00⟩ et retourne le bit de droite dans |10⟩.

  4. Passer des amplitudes aux probabilités conjointesP(00)=P(11)=12;P(01)=P(10)=0

    Pourquoi cette étape ? Les deux résultats sont corrélés. Le produit |+⟩⊗|+⟩ donnerait au contraire quatre issues de probabilité 1/4.

  5. Lire une marginale puis un conditionnementP(q0=1)=12;P(q1=1|q0=1)=1

    Pourquoi cette étape ? Chaque qubit seul paraît aléatoire. La corrélation ne permet pas de choisir le résultat local ni d’envoyer un message instantané.

Règles, cas particuliers et autre exemple

Deux qubits possèdent quatre amplitudes. Convention Craie : ordre |q0 q1⟩, base |00⟩,|01⟩,|10⟩,|11⟩, q0 bit de poids fort. Le produit tensoriel de (a,b) et (c,d) vaut (ac,ad,bc,bd). CNOT de contrôle q0 inverse q1 si q0=1. L’état de Bell ( |00⟩+|11⟩ )/√2 ne se factorise pas en deux états individuels purs. Ses mesures sont corrélées, mais chaque qubit seul donne 0 ou 1 avec probabilité 1/2; cette corrélation ne permet pas d’envoyer un message instantané.

Exemple résolu

partir de |00⟩. H sur q0 donne (1,0,1,0)/√2. CNOT(q0→q1) donne (1,0,0,1)/√2. P(00)=P(11)=1/2, les autres valent 0. Mesurer q0=1 conditionne q1 à 1 dans cette base.

Deux qubits, quatre amplitudes

H0 puis CX sur |00⟩ produit (|00⟩+|11⟩)/√2.

Les équations et les explications au clic restent accessibles sans JavaScript. Active-le pour manipuler le visuel et choisir les réponses.

Programmer et vérifier un circuit

Traduire un circuit en opérations sur un tableau

On programme H sur q0 puis CNOT, à partir de |10⟩. Base : [|00⟩,|01⟩,|10⟩,|11⟩].

Le rappel qui sert ici. Pour chaque paire, conserver a et b avant de calculer a+b et a−b. Le visuel exécute uniquement des portes prédéfinies.

  1. Initialiser l’indice correctstate=(0;0;1;0)

    Pourquoi cette étape ? q0 est le bit de poids fort : |10⟩ correspond à l’indice 2. Le programme affiché rappelle cette convention.

  2. Lire la paire modifiée par H sur q0(i;j)=(0;2);a=0;b=1

    Pourquoi cette étape ? La seconde paire est (1,3). Pour H sur q1, les paires seraient (0,1) et (2,3).

  3. Écrire les deux nouvelles amplitudes ensemblestate₀=a+b√2=1√2;state₂=a−b√2=−1√2

    Pourquoi cette étape ? Si on écrase a avant de calculer a−b, on ne réalise plus la matrice H. La copie des anciennes valeurs évite cette erreur.

  4. Permuter les indices contrôlésstatefinal=(1;0;0;−1)√2

    Pourquoi cette étape ? CNOT échange les indices 2 et 3; il laisse les indices 0 et 1 inchangés. L’amplitude négative n’est pas perdue.

  5. Vérifier norme et probabilités avant des tiragesΣ|aᵢ|²=1;P=(12;0;0;12)

    Pourquoi cette étape ? Ces probabilités sont identiques à celles du Bell positif en base de calcul, malgré une phase relative différente. Le programme Python correspondant est consultable sans exécuter du code arbitraire dans la page.

Règles, cas particuliers et autre exemple

Un simulateur à vecteur d’état stocke 2ⁿ amplitudes complexes. Appliquer une porte à un qubit revient à combiner des paires d’amplitudes dont les indices diffèrent par le bit ciblé; les deux valeurs anciennes doivent être lues avant toute écriture. Un simulateur classique consomme donc une mémoire exponentielle, même si le circuit dessiné est court. Avant de tirer des mesures, vérifier la norme et les probabilités exactes. Le programme suivant fixe l’ordre des bits, applique H puis CNOT et affiche les probabilités sans bibliothèque externe.

from math import sqrt

# Base : |00>, |01>, |10>, |11>; q0 est à gauche.
state = [1+0j, 0j, 0j, 0j]
h = 1 / sqrt(2)

def h_q0(s):
    out = s.copy()
    for i in (0, 1):
        a, b = s[i], s[i + 2]
        out[i], out[i + 2] = h * (a + b), h * (a - b)
    return out

def cx_0_1(s):
    return [s[0], s[1], s[3], s[2]]

state = cx_0_1(h_q0(state))
probabilities = [abs(a)**2 for a in state]
assert abs(sum(probabilities) - 1) < 1e-12
assert all(abs(p - expected) < 1e-12
           for p, expected in zip(probabilities, [0.5, 0, 0, 0.5]))
print(probabilities)

Exemple résolu

le premier H répartit l’amplitude sur les indices 0 et 2. CNOT permute les indices 2 et 3. La sortie numérique approche [0.5, 0, 0, 0.5] avec les arrondis flottants usuels. Un tirage aléatoire est une étape facultative ultérieure, jamais la preuve de cette distribution.

Construire un programme quantique

Sur |10⟩, H0 puis CX produit (|00⟩−|11⟩)/√2.

Les équations et les explications au clic restent accessibles sans JavaScript. Active-le pour manipuler le visuel et choisir les réponses.

Grover, mesure et bruit

Amplifier une cible en agissant sur les amplitudes

Quatre états de base, une seule cible |11⟩. L’état initial uniforme possède quatre amplitudes 1/2.

Le rappel qui sert ici. L’oracle de phase change un signe. La diffusion réfléchit chaque amplitude autour de leur moyenne.

  1. Écrire la superposition uniformea=(12;12;12;12)

    Pourquoi cette étape ? Chaque probabilité vaut 1/4, car elle est le carré de 1/2. Les amplitudes ne sont pas elles-mêmes des probabilités.

  2. Appliquer l’oracle à la cibleaoracle=(12;12;12;−12)

    Pourquoi cette étape ? La probabilité de la cible est encore 1/4. L’oracle n’a pas mesuré la cible : il a modifié sa phase.

  3. Calculer la moyenne des amplitudesā=1/2+1/2+1/2−1/24=14

    Pourquoi cette étape ? La moyenne porte sur des amplitudes signées après l’oracle, pas sur les probabilités.

  4. Réfléchir autour de la moyenneanoncible=2ā−12=0;acible=2ā−(−12)=1

    Pourquoi cette étape ? La même opération de diffusion agit sur les quatre composantes. Ici elle annule les non-cibles et renforce la cible.

  5. Vérifier la mesure et la limite de l’exempleafinal=(0;0;0;1);P(11)=1

    Pourquoi cette étape ? Une itération suffit pour N=4 avec une cible unique. En refaire une ne garantit pas une amélioration; le visuel compte les appels à l’oracle et traite le bruit comme un mélange séparé.

Règles, cas particuliers et autre exemple

Pour N=4 états équiprobables et une cible unique, l’oracle de phase change le signe de l’amplitude cible. La diffusion applique aᵢ→2ā−aᵢ, où ā est la moyenne des amplitudes après l’oracle. Une itération idéale suffit ici : ce résultat ne se généralise pas à n’importe quel N ou nombre de cibles. Le coût de construction de l’oracle doit compter dans une comparaison d’algorithmes. Un bruit de retournement de bit avec probabilité p est un mélange de transformations, pas une superposition cohérente; les probabilités s’additionnent entre branches du mélange.

Exemple résolu

état uniforme (1/2,1/2,1/2,1/2), cible |11⟩. Après oracle : (1/2,1/2,1/2,−1/2), moyenne=1/4. Diffusion : (0,0,0,1), mesure cible avec probabilité 1. Appliquer encore une itération n’améliore pas cette certitude; Grover fait une rotation, pas une accumulation monotone de succès.

Amplifier une cible et distinguer le bruit

Pour quatre états uniformes, un oracle puis une diffusion donne une probabilité 1 à la cible idéale.

Les équations et les explications au clic restent accessibles sans JavaScript. Active-le pour manipuler le visuel et choisir les réponses.

Pour aller plus loin

Deutsch–Jozsa, Simon, QFT et estimation de phase, Shor, matrices densité et canaux généraux, téléportation, non-clonage, Bell/CHSH, BB84, correction d’erreurs, circuits paramétrés et export vers un SDK. Ces thèmes figurent dans la perspective GTI650; ils ne sont pas prétendus couverts par les cinq leçons présentes.