Aller au contenu principal

Circuits

En informatique, les circuits sont des modèles de calcul dans lesquels l'information est transportée par des fils à travers un réseau de portes, qui représentent des opérations sur l'information transportée par les fils. Les circuits quantiques sont un modèle de calcul spécifique basé sur ce concept plus général.

Bien que le mot « circuit » désigne souvent un chemin circulaire, les chemins circulaires ne sont pas autorisés dans les modèles de circuits de calcul les plus couramment étudiés. Autrement dit, on considère généralement des circuits acycliques lorsqu'on pense aux circuits comme modèles de calcul. Les circuits quantiques suivent ce schéma ; un circuit quantique représente une séquence finie d'opérations qui ne peut pas contenir de boucles de rétroaction.

Circuits booléens

Voici un exemple de circuit booléen (classique), où les fils transportent des valeurs binaires et les portes représentent des opérations de logique booléenne :

Exemple de circuit booléen

Le flux d'information le long des fils va de gauche à droite : les fils sur le côté gauche de la figure étiquetés X\mathsf{X} et Y\mathsf{Y} sont des bits d'entrée, qui peuvent chacun être définis à n'importe quelle valeur binaire de notre choix, et le fil sur le côté droit est la sortie. Les fils intermédiaires prennent les valeurs déterminées par les portes, qui sont évaluées de gauche à droite.

Les portes sont des portes ET (étiquetées \wedge), des portes OU (étiquetées \vee) et des portes NON (étiquetées ¬\neg). Les fonctions calculées par ces portes sont probablement familières à de nombreux lecteurs, mais les voici représentées par des tables de valeurs :

a¬a0110abab000010100111abab000011101111\begin{array}{c} \begin{array}{c|c} a & \neg a\\ \hline 0 & 1\\ 1 & 0\\ \end{array}\\ \\ \\ \end{array} \qquad\quad \begin{array}{c|c} ab & a \wedge b\\ \hline 00 & 0\\ 01 & 0\\ 10 & 0\\ 11 & 1 \end{array} \qquad\quad \begin{array}{c|c} ab & a \vee b\\ \hline 00 & 0\\ 01 & 1\\ 10 & 1\\ 11 & 1 \end{array}

Les deux petits cercles pleins sur les fils juste à droite des noms X\mathsf{X} et Y\mathsf{Y} représentent des opérations de fan-out (duplication), qui créent simplement une copie de la valeur transportée sur le fil sur lequel ils apparaissent, permettant à cette valeur d'être transmise en entrée à plusieurs portes. Les opérations de fan-out ne sont pas toujours considérées comme des portes dans le cadre classique ; parfois elles sont traitées comme si elles étaient « gratuites » en quelque sorte. Cependant, lorsque des circuits booléens sont convertis en circuits quantiques équivalents, nous devons classer explicitement les opérations de fan-out comme des portes pour les gérer et les prendre en compte correctement.

Voici le même circuit illustré dans un style plus courant en génie électrique, qui utilise des symboles conventionnels pour les portes ET, OU et NON :

Circuit booléen dans un style classique

Nous n'utiliserons plus ce style ni ces symboles de portes particuliers, mais nous utiliserons différents symboles pour représenter les portes dans les circuits quantiques, que nous expliquerons au fur et à mesure que nous les rencontrons.

Le circuit particulier dans cet exemple calcule le OU exclusif (ou XOR en abrégé), qui est noté par le symbole \oplus :

abab000011101110\begin{array}{c|c} ab & a \oplus b\\ \hline 00 & 0\\ 01 & 1\\ 10 & 1\\ 11 & 0 \end{array}

Dans le diagramme suivant, nous considérons un seul choix pour les entrées : X=0\mathsf{X}=0 et Y=1.\mathsf{Y}=1. Chaque fil est étiqueté par la valeur qu'il transporte pour que tu puisses suivre les opérations. La valeur de sortie est 11 dans ce cas, ce qui est la valeur correcte pour le XOR : 01=1.0 \oplus 1 = 1.

Évaluation d'un circuit booléen

Les trois autres paramètres d'entrée possibles peuvent être vérifiés de manière similaire.

Autres types de circuits

Comme suggéré ci-dessus, la notion de circuit en informatique est très générale. Par exemple, des circuits dont les fils transportent des valeurs autres que 00 et 11 sont parfois analysés, tout comme des portes représentant différents choix d'opérations.

Dans les circuits arithmétiques, par exemple, les fils peuvent transporter des valeurs entières tandis que les portes représentent des opérations arithmétiques, telles que l'addition et la multiplication. La figure suivante représente un circuit arithmétique qui prend deux valeurs d'entrée variables (xx et yy) ainsi qu'une troisième entrée définie à la valeur 1.1. Les valeurs transportées par les fils, en fonction des valeurs xx et y,y, sont indiquées dans la figure.

Exemple de circuit arithmétique

On peut également considérer des circuits qui incorporent de l'aléatoire, comme ceux où les portes représentent des opérations probabilistes.

Circuits quantiques

Dans le modèle de circuit quantique, les fils représentent des qubits et les portes représentent des opérations sur ces qubits. Nous nous concentrerons pour l'instant sur les opérations que nous avons rencontrées jusqu'à présent, à savoir les opérations unitaires et les mesures dans la base standard. À mesure que nous apprendrons d'autres types d'opérations et de mesures quantiques, nous pourrons enrichir notre modèle en conséquence.

Voici un exemple simple de circuit quantique :

Circuit quantique simple

Dans ce circuit, nous avons un seul qubit nommé X,\mathsf{X}, représenté par la ligne horizontale, et une séquence de portes représentant des opérations unitaires sur ce qubit. Tout comme dans les exemples ci-dessus, le flux d'information va de gauche à droite — donc la première opération effectuée est une opération de Hadamard, la deuxième est une opération SS, la troisième est une autre opération de Hadamard, et la dernière opération est une opération TT. Appliquer tout le circuit applique donc la composition de ces opérations, THSH,T H S H, au qubit X.\mathsf{X}.

Parfois, on peut souhaiter indiquer explicitement les états d'entrée ou de sortie des circuits. Par exemple, si nous appliquons l'opération THSHT H S H à l'état 0,\vert 0\rangle, nous obtenons l'état 1+i20+121.\frac{1+i}{2}\vert 0\rangle + \frac{1}{\sqrt{2}} \vert 1 \rangle. Cela peut être indiqué comme suit :

Circuit quantique simple évalué

Les circuits quantiques commencent souvent avec tous les qubits initialisés à 0,\vert 0\rangle, comme dans ce cas, mais il y a aussi des situations où les qubits d'entrée sont initialement définis à des états différents. Voici un autre exemple de circuit quantique, cette fois avec deux qubits :

Circuit quantique qui crée un e-bit

Comme toujours, la porte étiquetée HH désigne une opération de Hadamard, tandis que la deuxième porte est une opération NOT contrôlé : le cercle plein représente le qubit de contrôle et le cercle ressemblant au symbole \oplus désigne le qubit cible.

Avant d'examiner ce circuit plus en détail et d'expliquer ce qu'il fait, il est impératif de clarifier d'abord comment les qubits sont ordonnés dans les circuits quantiques. Cela est lié à la convention que Qiskit utilise pour nommer et ordonner les systèmes, mentionnée brièvement dans la leçon précédente.

Convention d'ordonnancement des qubits de Qiskit pour les circuits

Dans Qiskit, le qubit le plus en haut dans un diagramme de circuit a l'indice 00 et correspond à la position la plus à droite dans un tuple de qubits (ou dans une chaîne, un produit cartésien ou un produit tensoriel correspondant à ce tuple), le qubit deuxième en partant du haut a l'indice 1,1, et correspond à la position deuxième en partant de la droite dans un tuple, et ainsi de suite. Le qubit le plus en bas, qui a l'indice le plus élevé, correspond donc à la position la plus à gauche dans un tuple. En particulier, les noms par défaut de Qiskit pour les qubits dans un circuit à nn qubits sont représentés par le nn-uplet (qn1,,q0),(\mathsf{q_{n-1}},\ldots,\mathsf{q_{0}}), avec q0\mathsf{q_{0}} étant le qubit en haut et qn1\mathsf{q_{n-1}} en bas dans les diagrammes de circuits quantiques.

Remarque : il s'agit d'une inversion d'une convention plus courante pour ordonner les qubits dans les circuits, et c'est une source fréquente de confusion. Plus d'informations sur cette convention d'ordonnancement peuvent être trouvées sur la page de documentation Ordonnancement des bits dans Qiskit.

Bien que nous déviions parfois des noms par défaut spécifiques q0,,qn1\mathsf{q_{0}},\ldots,\mathsf{q_{n-1}} utilisés pour les qubits par Qiskit, nous suivrons toujours la convention d'ordonnancement décrite ci-dessus lors de l'interprétation des diagrammes de circuits tout au long de ce cours. Ainsi, notre interprétation du circuit ci-dessus est qu'il décrit une opération sur une paire de qubits (X,Y).(\mathsf{X},\mathsf{Y}). Si l'entrée du circuit est un état quantique ψϕ,\vert\psi\rangle \otimes \vert\phi\rangle, par exemple, cela signifie que le qubit inférieur X\mathsf{X} commence dans l'état ψ\vert\psi\rangle et que le qubit supérieur Y\mathsf{Y} commence dans l'état ϕ.\vert\phi\rangle.

Pour comprendre ce que fait le circuit, on peut parcourir ses opérations de gauche à droite.

  1. La première opération est une opération de Hadamard sur Y\mathsf{Y} :

    Première opération du créateur d'e-bit

    Lorsqu'on applique une porte à un seul qubit comme cela, rien ne se passe sur les autres qubits (qui ne sont qu'un seul autre qubit dans ce cas). Rien qui se passe est équivalent à l'opération identité. Le rectangle pointillé dans la figure ci-dessus représente donc cette opération :

    IH=(121200121200001212001212). \mathbb{I}\otimes H = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix}.

    Remarque : la matrice identité est à gauche du produit tensoriel et HH est à droite, ce qui est cohérent avec la convention d'ordonnancement de Qiskit.

  2. La deuxième opération est l'opération NOT contrôlé, où Y\mathsf{Y} est le contrôle et X\mathsf{X} est la cible :

    Deuxième opération du créateur d'e-bit

    L'action de la porte NOT contrôlé sur les états de la base standard est la suivante :

    Porte NOT contrôlé

    Étant donné que nous ordonnons les qubits comme (X,Y),(\mathsf{X}, \mathsf{Y}), avec X\mathsf{X} en bas et Y\mathsf{Y} en haut de notre circuit, la représentation matricielle de la porte NOT contrôlé est la suivante :

    (1000000100100100). \begin{pmatrix} 1 & 0 & 0 & 0\\[2mm] 0 & 0 & 0 & 1\\[2mm] 0 & 0 & 1 & 0\\[2mm] 0 & 1 & 0 & 0 \end{pmatrix}.

L'opération unitaire implémentée par tout le circuit, à laquelle nous donnons le nom U,U, est la composition des opérations :

U=(1000000100100100)(121200121200001212001212)=(121200001212001212121200).U = \begin{pmatrix} 1 & 0 & 0 & 0\\[2mm] 0 & 0 & 0 & 1\\[2mm] 0 & 0 & 1 & 0\\[2mm] 0 & 1 & 0 & 0 \end{pmatrix} \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix} = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} & 0 & 0\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}\\[2mm] 0 & 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\[2mm] \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & 0 \end{pmatrix}.

En particulier, rappelant notre notation pour les états de Bell,

ϕ+=1200+1211ϕ=12001211ψ+=1201+1210ψ=12011210,\begin{aligned} \vert \phi^+ \rangle & = \frac{1}{\sqrt{2}} \vert 0 0 \rangle + \frac{1}{\sqrt{2}} \vert 1 1 \rangle \\[2mm] \vert \phi^- \rangle & = \frac{1}{\sqrt{2}} \vert 0 0 \rangle - \frac{1}{\sqrt{2}} \vert 1 1 \rangle \\[2mm] \vert \psi^+ \rangle & = \frac{1}{\sqrt{2}} \vert 0 1 \rangle + \frac{1}{\sqrt{2}} \vert 1 0 \rangle \\[2mm] \vert \psi^- \rangle & = \frac{1}{\sqrt{2}} \vert 0 1 \rangle - \frac{1}{\sqrt{2}} \vert 1 0 \rangle, \end{aligned}

on trouve que

U00=ϕ+U01=ϕU10=ψ+U11=ψ.\begin{aligned} U \vert 00\rangle & = \vert \phi^+\rangle\\ U \vert 01\rangle & = \vert \phi^-\rangle\\ U \vert 10\rangle & = \vert \psi^+\rangle\\ U \vert 11\rangle & = -\vert \psi^-\rangle. \end{aligned}

Ce circuit nous offre donc un moyen de créer l'état ϕ+\vert\phi^+\rangle si nous l'exécutons sur deux qubits initialisés à 00.\vert 00\rangle. Plus généralement, il nous fournit un moyen de convertir la base standard en base de Bell. (Remarque : bien que ce ne soit pas important pour cet exemple, le facteur de phase 1-1 sur le dernier état, ψ,-\vert \psi^-\rangle, pourrait être éliminé si on le souhaitait en faisant une petite addition au circuit. Par exemple, on pourrait ajouter une porte ZZ contrôlé au début, qui est similaire à une porte NOT contrôlé sauf qu'une opération ZZ est appliquée au qubit cible plutôt qu'une opération NOT quand le contrôle est à 1.1. Alternativement, on pourrait ajouter une porte d'échange à la fin. L'un ou l'autre choix élimine le signe moins sans affecter l'action du circuit sur les trois autres états de la base standard.)

En général, les circuits quantiques peuvent contenir n'importe quel nombre de fils de qubits. On peut également inclure des fils de bits classiques, indiqués par des doubles lignes, comme dans cet exemple :

Exemple de circuit avec des mesures

Ici nous avons une porte de Hadamard et une porte NOT contrôlé sur deux qubits X\mathsf{X} et Y,\mathsf{Y}, tout comme dans l'exemple précédent. Nous avons également deux bits classiques, A\mathsf{A} et B,\mathsf{B}, ainsi que deux portes de mesure. Les portes de mesure représentent des mesures dans la base standard : les qubits sont changés en leurs états post-mesure, tandis que les résultats de mesure sont écrits sur les bits classiques vers lesquels pointent les flèches.

Il est souvent pratique de représenter une mesure comme une porte qui prend un qubit en entrée et produit un bit classique en sortie (par opposition à la sortie du qubit dans son état post-mesure et à l'écriture du résultat sur un bit classique séparé). Cela signifie que le qubit mesuré a été abandonné et peut être ignoré en toute sécurité par la suite, son état ayant changé en 0\vert 0\rangle ou 1\vert 1\rangle selon le résultat de la mesure.

Par exemple, le diagramme de circuit suivant représente le même processus que celui du diagramme précédent, mais où l'on ne tient pas compte de X\mathsf{X} et Y\mathsf{Y} après les avoir mesurés :

Exemple de circuit avec des mesures compact

Au fil du cours, nous verrons d'autres exemples de circuits quantiques, généralement plus compliqués que les exemples simples ci-dessus. Voici quelques exemples de symboles utilisés pour désigner les portes qui apparaissent couramment dans les diagrammes de circuits :

  • Les portes à un qubit sont généralement représentées par des carrés avec une lettre indiquant l'opération, comme ceci :

    Portes à un qubit

    Les portes NOT (ou de manière équivalente, les portes XX) sont aussi parfois représentées par un cercle autour d'un signe plus :

    Porte NOT

  • Les portes d'échange sont représentées comme suit :

    Porte d'échange

  • Les portes contrôlées, c'est-à-dire les portes qui décrivent des opérations unitaires contrôlées, sont représentées par un cercle plein (indiquant le contrôle) relié par une ligne verticale à l'opération contrôlée. Par exemple, les portes NOT contrôlé, NOT contrôlé-contrôlé (ou Toffoli) et échange contrôlé (Fredkin) sont représentées ainsi :

    Porte contrôlée

  • Les opérations unitaires arbitraires sur plusieurs qubits peuvent être considérées comme des portes. Elles sont représentées par des rectangles étiquetés par le nom de l'opération unitaire. Par exemple, voici une représentation d'une opération unitaire (non spécifiée) UU comme une porte, ainsi qu'une version contrôlée de cette porte :

    Porte unitaire arbitraire avec version contrôlée