
Simulations quantiques avec Python | Vers la science des données
Informatique quantique est le domaine technologique qui utilise les principes de la mécanique quantique (c.-à-d. Superposition et Enchevêtrement) pour traiter les informations d’une manière fondamentalement différente des ordinateurs classiques. Pour le dire simplement, au lieu de bits (0 ou 1), les ordinateurs quantiques utilisent qubits pour résoudre des problèmes complexes et de grande dimension en chimie, en science des matériaux et en optimisation, potentiellement en quelques secondes plutôt qu’en années.
En pratique, les problèmes sont résolus en construisant des modèles mathématiques appelés circuits quantiques: séquences d’opérations et d’instructions qui prennent certaines entrées et renvoient une sortie (de la même manière que la régression linéaire et les réseaux de neurones). En informatique quantique, ces opérations sont appelées portes qui modifient les données (qubits) de manière différente. Fondamentalement, un circuit est une phrase et les portes sont les mots qui composent la phrase.
Les circuits sont utilisés pour exécuter des expériences. Plus précisément, il existe 2 types de simulations quantiques:
- Utiliser un ordinateur normal pour simuler un ordinateur quantique. C’est comme utiliser Python pour écrire un circuit et un simulateur pour l’exécuter, alors qu’un véritable ordinateur quantique implémenterait physiquement le circuit.
- Utiliser un ordinateur quantique pour simuler un système quantique réel (comme les atomes ou les électrons). Dans la nature, les systèmes quantiques existent déjà et les ordinateurs classiques ont du mal à les simuler car l’espace des états croît de façon exponentielle. D’un autre côté, les machines quantiques peuvent modéliser ces systèmes plus efficacement car elles suivent naturellement les mêmes règles.
Dans ce tutoriel, je vais vous montrer comment exécuter une simulation quantique sur votre ordinateur. Cet article est la suite de «Guide du débutant sur l’informatique quantique avec Python« .
Installation
Tout d’abord, nous devons installer Kit Qiskit (pip install qiskit), une bibliothèque open source pour travailler avec des ordinateurs quantiques développée par IBM qui vous permet de simuler un périphérique quantique sur votre machine locale.
Le code le plus basique que nous puissions écrire est de créer un circuit quantique (environnement de calcul quantique) avec un seul qubit et initialisez-le à 0. Pour mesurer l’état du qubit, nous avons besoin d’un vecteur d’étatqui vous indique essentiellement la réalité quantique actuelle de votre circuit.
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
q = QuantumCircuit(1,0) #circuit with 1 quantum bit and 0 classic bit
state = Statevector.from_instruction(q) #measure state
state.probabilities() #print prob%

Cela signifie que la probabilité que le qubit soit 0 (premier élément) est de 100 % et la probabilité que le qubit soit 1 (deuxième élément) est de 0 %. Visualisons l’état :
from qiskit.visualization import plot_bloch_multivector
plot_bloch_multivector(state, figsize=(3,3))

Circuits
Une porte quantique est une opération unique qui modifie l’état quantique. Un circuit quantique est une séquence de portes appliquées aux qubits au fil du temps.
Commençons par construire un circuit simple.
q = QuantumCircuit(1,0) #circuit with 1 quantum bit and 0 classic bit
q.draw(output="mpl", scale=0.7) #show circuit with matplotlib

Nous avons un qubit, mais pour le mesurer, nous devons ajouter un bit classique à notre circuit.
q = QuantumCircuit(1,1) #add 1 classic bit
q.draw(output="mpl", scale=0.7)

Pour construire un circuit, vous devez savoir ce que vous voulez réaliser, ou, pour le dire autrement, vous devez connaître les portes et ce qu’elles font. L’approche est similaire à celle des réseaux de neurones : vous utilisez simplement une couche après l’autre pour obtenir le résultat souhaité (c’est-à-dire des convolutions sur les images et des intégrations sur le texte). L’opération la plus courante est la Porte Hadamard (H-gate), qui applique la superposition à un qubit.
q = QuantumCircuit(1,1)
q.h(0) #Hadamard gate (Superposition)
q.draw(output="mpl", scale=0.7)

Sur l’image, nous voyons que la porte H rouge est appliquée au qubit, le transformant d’un 0 défini en un mélange 50/50 de 0 et 1. Ajoutons une boîte de mesure, qui réduit cette superposition en une valeur réelle (soit 0 ou 1), en stockant ce résultat dans le bit classique.
q = QuantumCircuit(1,1)
q.h(0)
q.measure(qubit=0, cbit=0) #measure qubit with classic bit
q.draw(output="mpl", scale=0.7)

Le circuit a été conçu mathématiquement par mon ordinateur classique tel qu’il était écrit sur papier, mais il n’a pas encore été exécuté.
Simulation
Une simulation quantique consiste à utiliser un ordinateur pour modéliser le comportement d’un système quantique. Si vous écrivez un circuit (comme je l’ai fait ci-dessus), vous décrivez simplement le modèle mathématique. Pour l’exécuter, vous avez besoin d’un moteur backend qui exécute le circuit quantique en simulation.
Qiskit-Aer (pip install qiskit-aer) est le moteur qui exécute les circuits quantiques en simulation. Aer vous permet d’exécuter des circuits quantiques sur votre ordinateur, simulant différents aspects du matériel quantique réel (état quantique, mesure, système bruyant).
Je vais refaire l’expérience avec le circuit écrit plus tôt (un bit classique + un qubit en Superposition) 1000 fois.
from qiskit_aer import AerSimulator
sim = AerSimulator()
result = sim.run(q, shots=1000).result()
result.get_counts()

Le qubit a été mesuré 1 000 fois, ce qui donne 1 pour 500 fois et 0 pour les 500 autres fois. On peut le visualiser :
from qiskit.visualization import plot_histogram
plot_histogram(result.get_counts(),
figsize=(5,4), color="black", title="1-qubit in Superposition")

Le résultat est parfaitement égal car Aer peut simuler des états quantiques parfaits, ce qui serait impossible à obtenir sur du matériel réel. Dans le monde réel, l’information quantique est extrêmement fragile et fonctionne sous l’hypothèse que le système est parfait et stable, permettant aux particules d’exister dans plusieurs états (Cohérence). Mais dès que le qubit interagit avec quelque chose, comme la chaleur ou les vibrations, le système perd son harmonie et ses propriétés quantiques (Décohérence).
Par conséquent, vous ne pouvez visualiser un qubit en superposition (à la fois 0 et 1 en même temps) que dans une simulation, mais jamais dans le monde réel. Parce qu’au moment où vous observez le qubit, vous apportez du bruit et le système s’effondre en un seul nombre (0 ou 1). En pratique, les vrais ordinateurs quantiques servent uniquement à mesurer les résultats, tandis que les simulations sont utilisées pour concevoir des modèles quantiques.
Pour rendre l’expérience plus réaliste, on peut ajouter du bruit à la simulation.
from qiskit_aer import noise
n = noise.NoiseModel()
error = noise.depolarizing_error(param=0.10, num_qubits=1) #10% error probability
n.add_all_qubit_quantum_error(error=error, instructions=['h'])
sim = AerSimulator(noise_model=n)
result = sim.run(q, shots=1000).result()
plot_histogram(result.get_counts(),
figsize=(5,4), color="black", title="1-qubit in Superposition")

Conclusion
Cet article a été un tutoriel pour introduire des simulations quantiques avec Python et Kit Qiskit. Nous avons appris quelle est la différence entre un matériel réel et une expérience quantique. Nous avons également appris à concevoir des circuits quantiques et à exécuter une simulation sur une machine classique.
Code complet pour cet article : GitHub
J’espère que vous l’avez apprécié ! N’hésitez pas à me contacter pour des questions et des commentaires ou simplement pour partager vos projets intéressants.
👉 Connectons-nous 👈

(Toutes les images sont de l’auteur, sauf indication contraire)



