Les ordinateurs quantiques
L'informatique quantique

Un ordinateur à un seul qubit est trop simple : autant dire tout de suite qu'on n'en fera pas grand-chose. Mais il est important de bien saisir certains concepts de base.

Ainsi nous avons un (et un seul) qubit à notre disposition. Mathématiquement, il ressemble à ça : |Ψ⟩ = α |0⟩ + β |1

sphère de Bloch Poincaré

Ou encore, avec nos espaces vectoriels :

Espace de Hilbert 1 qubit

L'idée principale est de faire évoluer notre qubit dans le temps : les coefficients α et β soit 4 nombres (dont deux imaginaires), vont être successivement modifiés dans le temps par des opérations, en fait une multiplication par la matrice opérateur.

Tu veux dire qu'on fait juste une simple multiplication de matrice ?
Oui.
😕 Il sait quand même faire autre chose, ton ordinateur quantique ?
🙄 Non, il ne sait faire que ça. Multiplier.

Comme tout ordinateur qui se respecte, il va falloir initialiser le qubit, exécuter des opérations, puis lire la valeur du qubit.

Nous aurons des limitations : en pratique, on ne peut initialiser qu'avec des valeurs binaires, les opérations possibles sont limitées car on ne sait pas rentrer n'importe quelles valeurs pour les 4 nombres complexes de la matrice opérateur, et au final on ne peut lire qu'une valeur binaire pour le qubit.

😒 Mais dis-donc, ça ne sait pas faire grand-chose ton machin !
C'est vrai.
Mais quand on aura beaucoup de qubit, la multiplication, énorme, se fera en une seule étape, d'un coup.
😑 J'attends impatiemment de voir ça !

Traditionnellement, on représente les opérations sur un diagramme qui ressemble de loin à ce qu'on fait avec des portes logiques. C'est ce qu'on trouve sur les ordinateurs quantiques qu'IBM met à disposition. En voici un exemple très basique :

Mon premier code quantique
  1. Initialisation
    Au tout début, à gauche (ça se lit de gauche à droite, comme d'habitude), on voit |0⟩. Cela veut dire que l'on initialise notre qubit dans un état connu, ici |0⟩ (et d'ailleurs c'est toujours zéro en pratique). Autrement dit, α = 1 et β = 0, soit
    |Ψ⟩ = α |0⟩ + β |1⟩ = 1|0⟩ + 0|1⟩ = |0
    Notre vecteur est parfaitement vertical sur notre sphère de Poincaré (ou de Bloch, c'est pareil).
  2. Opération
    On voit un carré rouge avec un "H" dedans. Cela désigne un opérateur, ici c'est Hadamard –un opérateur très basique fort commode.
    Un opérateur est une matrice carrée [2,2] qui va être multipliée avec notre vecteur d'entrée, ici la matrice verticale (1,0). En sortie, on aura le résultat de l'opération, de nouvelles valeurs pour α et β prêtes pour une autre opération (ici, il n'y a qu'une opération).
    En l'occurrence, la sortie ici sera |Ψ⟩ = 1/√2 |0⟩ + 1/√2 |1 (on verra plus tard pourquoi).
  3. Lecture
    Une opération spéciale, finale, est la lecture du qubit. Depuis le temps, vous avez compris qu'exécuter une mesure sur un objet quantique avait une nette tendance à détruire son état : c'est la réduction ou l'effondrement de la fonction d'onde sur la base orthonormée de lecture, ici { |0⟩, |1⟩ }.
    Notre qubit est dans l'état |Ψ⟩ = 1/√2|0⟩ + 1/√2|1.
    Il a une probabilité d'être lu qui vaut ½ (le carré de 1/√2) dans l'état |0⟩ et pareil dans l'état |1⟩.
Attends, attends !
On ne sait pas lire ni α ni β ?
Mais ça vaut que dalle, ton ordinateur ! 😧
Si tu fais le calcul une seule fois, effectivement.
L'astuce consiste à exécuter le calcul un millier de fois par exemple.
Non ? 🤭 Tu rigoles ?
On va voir ça

Comparaison avec un ordinateur classique

À part l'initialisation, le fonctionnement d'un ordinateur quantique n'a rien à voir avec un ordinateur classique, enfin très vaguement, vous trouverez plein d'articles souvent vaseux qui feront le parallèle entre les deux. C'est généralement sans intérêt de faire la comparaison.

La lecture du qubit est destructive : on perd l'état du qubit qui se retrouve forcément à |0⟩ ou |1⟩. Pas question d'obtenir une valeur de "debug" intermédiaire de nos coefficients α ni β dans notre suite d'opérations, aucun point d'arrêt n'est possible pour consulter les registres, il faudra débugger à l'ancienne.