ID

36746

Auteurs

Alain Sarlette

Image

machine-quantique_chapo

Domaines applicatifs

Construire une machine quantique

Contenu

Le rôle déterminant d’un support physique

La possibilité de donner et de combiner des instructions suppose qu’on a une machine capable de les exécuter. Il faut pour cela un support physique concret. Un calcul donné peut être plus ou moins difficile à effectuer selon le comportement du support physique utilisé, c’est-à-dire selon les instructions qu’il est capable de représenter et combiner efficacement.

Ainsi, notre cerveau, dont le fonctionnement physique sur base de neurones oscillants n’est pas totalement compris, est capable de reconnaître presque instantanément des multitudes d’objets à partir de données visuelles ; pour un ordinateur standard, dont le fonctionnement physique est basé sur le basculement de « bits logiques » (rappel ci-dessous), cette tâche demeure très difficile : le résultat désiré ne peut s’obtenir qu’au prix d’un enchaînement compliqué d’un énorme nombre de ses opérations élémentaires. À l’inverse, un simple ordinateur portable peut manipuler très rapidement des tableaux de nombres et simuler l’évolution de processus compliqués, avec une précision que nos cerveaux n’atteindraient pas en une vie entière. Le but de l’ordinateur quantique est de proposer un nouveau support physique, capable de faciliter des calculs qui sont extrêmement difficiles sur les ordinateurs actuels. Il se servira pour cela d’une propriété physique inexploitée jusqu’ici — la très fragile « phase quantique ». Le prix à payer est de concevoir une machine où cette nouvelle propriété physique a un comportement fiable.

Voyons donc par quels principes nous pouvons construire des machines de calcul fiables, en partant du calculateur analogique, en passant par le calculateur numérique (aussi appelé « digital », nos ordinateurs actuels) jusqu’au calculateur quantique.

Les limites de fiabilité d’un calculateur analogique

Un simple « miaou » peut contenir une infinité de nuances, mais sont-elles toutes bien maitrisées ? Il ne paraît pas réaliste d’exiger une précision infinie à la machine qui exécute nos instructions...

À défaut de dresser des chats, considérons un support physique petit et manipulable, par exemple des électrons. En particulier, imaginons une machine utilisant un seul électron, positionné précisément au début, auquel nous appliquerions des déplacements par un système d’électro-aimants et dont nous mesurerions la position finale. Cela pourrait permettre par exemple de calculer la trajectoire d’une fusée en fonction des accélérations données par ses moteurs. L’accélération serait remise à l’échelle ainsi que l’influence des étoiles et planètes pour déplacer l’électron. Cette machine, une fois construite, permettrait à bas coût de transformer n’importe quelle commande des moteurs en résultat « position à l’instant t ». Cependant, sa fiabilité est douteuse. En effet, il sera très difficile de s’assurer qu’aucun élément extérieur ne vienne perturber notre petit électron durant son trajet ; de plus, une petite erreur d’accélération de notre part, sur ces si petites intensités, peut envoyer l’électron « dans les choux » à long terme. Une impasse semble apparaître : soit on construit une machine où une petite erreur peut tout brouiller, soit on blinde le système contre les influences extérieures mais alors il nous faudra un effort considérable pour le piloter — comme la fusée elle-même finalement. Bien que beaucoup d’améliorations peuvent être apportées pour contrôler les électrons via une telle machine dite « analogique », la solution la plus usuelle pour se protéger des erreurs est actuellement d’utiliser un calculateur dit « numérique » (comme nos ordinateurs actuels).

Comment le numérique permet de rendre les ordinateurs actuels fiables

Pour éviter de se tromper, on peut se borner à contrôler quelques propriétés simples : distinguer « miaou » ou « pas miaou », en réponse à une combinaison d’instructions, permet déjà de faire beaucoup de choses.

[caption id="attachment_39775" align="alignleft" width="130"] Figure 1 : Représentation des deux valeurs 1 («V») ou 0 («F») d’un bit.[/caption]

Dans nos ordinateurs actuels, les électrons ne peuvent plus prendre qu’un petit nombre de positions, en fait seulement 2, comme un interrupteur. Une position représente le symbole « 0 » ou « F(aux) » (ou « pas miaou »), l’autre « 1 » ou « V(rai) » (ou « miaou »), on parle d’un « bit » d’information. La position de la fusée n’est plus directement visible, mais « encodée » par une suite de « V » et « F », ou de manière équivalente de « 1 » et « 0 » (voir figure 1 ci-à gauche). Par exemple, FVVFVFFV = 01101001 pourrait représenter 0*8+1*4+1*2+0*1, en unités de 10^(1*4+0*2+0*1) mètres et avec le signe 1 = –, soit la coordonnée –60 km. Les opérations physiques à effectuer pour déplacer cette « simulation numérique de la fusée » — à savoir, échanger ou non les valeurs « V » / « F » de chaque bit selon la séquence appropriée — sont une conséquence plus indirecte des accélérations dues aux moteurs, étoiles et planètes. Cependant, on y gagne sur d’autres plans. La machine numérique peut être reprogrammée plus facilement pour faire toute une classe d’autres calculs (voir l'article Comment fonctionne une machine de Turing). Mais surtout, dans ce contexte, elle permet d’éviter des erreurs lorsque des perturbations agissent sur la machine.

Premièrement, de petites imprécisions ne perturberont pas notre interprétation du résultat. En effet, pour chaque position physique de la machine, il suffit d’identifier si l’intention était de représenter « V » ou « F » ; si un électron, initialement placé en « V », se balade un peu sous l’effet de toutes les perturbations extérieures, ce n’est pas grave tant qu’on peut identifier clairement sa zone d’origine. Ceci reste vrai pour le « bit » représentant la centaine de kilomètres de distance, comme pour celui représentant le 5e chiffre après la virgule. Un tel « encodage » numérique permet donc de s’affranchir de l’impact de petites déviations. Cependant, si rien n’est mis en place pour empêcher l’électron de se balader, il ne restera pas longtemps proche de sa position d’origine.

Ainsi, pour s’assurer que les imprécisions restent petites, et n’impactent donc pas le résultat du calcul numérique, un deuxième élément est souvent essentiel : un « mécanisme de rappel » vers les deux positions particulières représentant « V » et « F ». Un exemple de tous les jours est le ressort qui maintient un interrupteur dans sa position. Pour des électrons, le ressort doit être remplacé par un champ électromagnétique particulier autour des zones « V » et « F ». On peut se représenter cela comme placer l’électron dans une boîte à œufs à 2 places (voir figure 2 ci-dessous) : si une perturbation le pousse à bouger, il retombe dans sa case d’origine. Cette « stabilisation » rend difficile à l’électron la possibilité de s’éloigner de sa valeur « V » ou « F » d’origine. Pour effectuer des calculs, sans tout mélanger, il suffit de tourner lentement d’un demi-tour les boîtes à œufs sélectionnées. En effet, tout au long de ce demi-tour, l’électron suivra sa « case » tout en restant stabilisé dans une zone bien distincte de la valeur inverse ; et lorsqu’on fixe à nouveau la boîte à œufs après un demi-tour, toute la machine se retrouve dans la même situation qu’au départ, sauf que l’électron a échangé sa position « V » ou « F ».

[caption id="attachment_39747" align="aligncenter" width="700"] Figure 2 : illustration de la protection par boîte à œufs.[/caption]

Un troisième élément permettant d’ajouter de la robustesse est l’utilisation d’un « code correcteur d’erreur ». Dans sa version la plus simple, pour dire « V F » on répète « VVVVV FFFFF ». Ainsi, si l’un des électrons bouge trop et saute sur la valeur inverse, on affichera « VVVFV FFFFF » par exemple. On peut alors estimer qu’on avait probablement « VVVVV FFFFF » au départ (dans chaque bloc répétitif la majorité l’emporte) et remettre la machine sur cet état, représentant parfaitement le message « V F », pour la suite du calcul. Cette approche peut d’ailleurs servir à améliorer des simulations « analogiques » également.

En résumé, le mode d’emploi pour obtenir un comportement fiable de votre chat classique (= non-quantique) pourrait être :

1. Se limiter à distinguer s’il est dans la pièce « V » (on entend son « miaou ») ou la pièce « F » (on n’entend pas son « miaou »), plutôt que d’attribuer une importance millimétrée à sa position ;

2. Placer un bol de nourriture dans chaque pièce, pour l’encourager à rester dans la pièce « V » ou « F » qui lui est assignée au départ ;

2’. Afin d’inverser la valeur « V » ou « F » d’un groupe de chats, sans se soucier de leur état, déplacer les bols de nourriture de la pièce « V » vers la pièce « F » et inversement, par des chemins qui ne se croisent pas (s'ils se croisaient, le chat pourrait changer de bol au moment du croisement).

3. Afin de rattraper le coche si un chat décide malgré tout d’aller explorer la maison : pour dire « V » à une personne, mettre non seulement votre chat dans votre pièce « V » mais également ceux de vos voisins dans leur pièce « V ». En discutant avec vos voisins et votant à la majorité, la personne aura plus de chances d’obtenir le bon message, même si l’une des maisons du quartier a subi de fortes perturbations.

Adapter ces mécanismes de protection au support physique « bit quantique » est le grand défi pour la construction d’un ordinateur quantique. Afin de développer un peu d’intuition pour cet enjeu, nous allons d’abord parler du « bit aléatoire ».

Un premier pas vers le calculateur quantique : apprivoiser le hasard

Si certains chats rebelles répondent « miaou » ou non de manière aléatoire, on peut se servir de ce hasard pour accélérer des calculs (voir l'encart Monte-Carlo ci-après). Les mécanismes de stabilisation expliqués ci-dessus, permettent même de piloter précisément le résultat obtenu de ces rebelles. Les « nombres aléatoires » sont ainsi devenus un élément de base de nos ordinateurs depuis plusieurs décennies.

[caption id="attachment_39763" align="alignright" width="190"] Figure 3 : Représentation d’un bit aléatoire, prenant la valeur « V » ou « F » avec une probabilité entre 0 et 1. La probabilité — utilisée pour générer chaque échantillon — se représente par une valeur le long du segment ; mais la lecture d’un échantillon fournira juste, au hasard, une des deux valeurs extrêmes « V » ou « F ».[/caption]

L’idée du « bit aléatoire » est de disposer d’un électron dont la position « V » ou « F » est aléatoire, selon des probabilités bien définies : par exemple, pour chaque électron indépendamment, 60.00 % de chances de tomber dans « V » et 40.00 % de tomber dans « F ».
On peut visualiser cela en ajoutant, entre les deux valeurs du « bit » standard, un segment vertical (voir la figure 3 ci-contre) : le point en bas correspond comme sur la figure 1 à 100 % de chances d’être en « V », le haut à 100 % d’être en « F » donc 0 % d’être en « V », et le long du segment, on gradue les probabilités intermédiaires. Notez bien que le point milieu de ce segment ne représente pas du tout un électron qui se baladerait physiquement « entre » les positions stables « V » et « F » : il représente un électron qui a 50.00 % de chances d’être en « V » et 50.00 % d’être en « F », mais bien certain de rester à sa place. Par ailleurs, au moment de lire le résultat, on verra dans quelle case se trouve l’électron, mais rien ne permettra de vérifier s’il avait bien 50 % de chances de se trouver en « V », ou 51 % ou 60 % : pour cela, donc pour connaître la valeur sur le segment gradué, il faudrait accumuler des statistiques.

Le bit aléatoire est ainsi une ressource intermédiaire entre :

  • un bit fixé — qui ne peut encoder que deux valeurs « V » ou « F » — et
  • une valeur précise entre 0 et 1 (par exemple 60 %) — qui est utilisée pour générer le bit aléatoire, mais que l’on ne peut pas « lire » à partir d’un seul échantillon.

Contenu

Le rôle déterminant d’un support physique

La possibilité de donner et de combiner des instructions suppose qu’on a une machine capable de les exécuter. Il faut pour cela un support physique concret. Un calcul donné peut être plus ou moins difficile à effectuer selon le comportement du support physique utilisé, c’est-à-dire selon les instructions qu’il est capable de représenter et combiner efficacement.

Ainsi, notre cerveau, dont le fonctionnement physique sur base de neurones oscillants n’est pas totalement compris, est capable de reconnaître presque instantanément des multitudes d’objets à partir de données visuelles ; pour un ordinateur standard, dont le fonctionnement physique est basé sur le basculement de « bits logiques » (rappel ci-dessous), cette tâche demeure très difficile : le résultat désiré ne peut s’obtenir qu’au prix d’un enchaînement compliqué d’un énorme nombre de ses opérations élémentaires. À l’inverse, un simple ordinateur portable peut manipuler très rapidement des tableaux de nombres et simuler l’évolution de processus compliqués, avec une précision que nos cerveaux n’atteindraient pas en une vie entière. Le but de l’ordinateur quantique est de proposer un nouveau support physique, capable de faciliter des calculs qui sont extrêmement difficiles sur les ordinateurs actuels. Il se servira pour cela d’une propriété physique inexploitée jusqu’ici — la très fragile « phase quantique ». Le prix à payer est de concevoir une machine où cette nouvelle propriété physique a un comportement fiable.

Voyons donc par quels principes nous pouvons construire des machines de calcul fiables, en partant du calculateur analogique, en passant par le calculateur numérique (aussi appelé « digital », nos ordinateurs actuels) jusqu’au calculateur quantique.

Les limites de fiabilité d’un calculateur analogique

Un simple « miaou » peut contenir une infinité de nuances, mais sont-elles toutes bien maitrisées ? Il ne paraît pas réaliste d’exiger une précision infinie à la machine qui exécute nos instructions...

À défaut de dresser des chats, considérons un support physique petit et manipulable, par exemple des électrons. En particulier, imaginons une machine utilisant un seul électron, positionné précisément au début, auquel nous appliquerions des déplacements par un système d’électro-aimants et dont nous mesurerions la position finale. Cela pourrait permettre par exemple de calculer la trajectoire d’une fusée en fonction des accélérations données par ses moteurs. L’accélération serait remise à l’échelle ainsi que l’influence des étoiles et planètes pour déplacer l’électron. Cette machine, une fois construite, permettrait à bas coût de transformer n’importe quelle commande des moteurs en résultat « position à l’instant t ». Cependant, sa fiabilité est douteuse. En effet, il sera très difficile de s’assurer qu’aucun élément extérieur ne vienne perturber notre petit électron durant son trajet ; de plus, une petite erreur d’accélération de notre part, sur ces si petites intensités, peut envoyer l’électron « dans les choux » à long terme. Une impasse semble apparaître : soit on construit une machine où une petite erreur peut tout brouiller, soit on blinde le système contre les influences extérieures mais alors il nous faudra un effort considérable pour le piloter — comme la fusée elle-même finalement. Bien que beaucoup d’améliorations peuvent être apportées pour contrôler les électrons via une telle machine dite « analogique », la solution la plus usuelle pour se protéger des erreurs est actuellement d’utiliser un calculateur dit « numérique » (comme nos ordinateurs actuels).

Comment le numérique permet de rendre les ordinateurs actuels fiables

Pour éviter de se tromper, on peut se borner à contrôler quelques propriétés simples : distinguer « miaou » ou « pas miaou », en réponse à une combinaison d’instructions, permet déjà de faire beaucoup de choses.

[caption id="attachment_39775" align="alignleft" width="130"] Figure 1 : Représentation des deux valeurs 1 («V») ou 0 («F») d’un bit.[/caption]

Dans nos ordinateurs actuels, les électrons ne peuvent plus prendre qu’un petit nombre de positions, en fait seulement 2, comme un interrupteur. Une position représente le symbole « 0 » ou « F(aux) » (ou « pas miaou »), l’autre « 1 » ou « V(rai) » (ou « miaou »), on parle d’un « bit » d’information. La position de la fusée n’est plus directement visible, mais « encodée » par une suite de « V » et « F », ou de manière équivalente de « 1 » et « 0 » (voir figure 1 ci-à gauche). Par exemple, FVVFVFFV = 01101001 pourrait représenter 0*8+1*4+1*2+0*1, en unités de 10^(1*4+0*2+0*1) mètres et avec le signe 1 = –, soit la coordonnée –60 km. Les opérations physiques à effectuer pour déplacer cette « simulation numérique de la fusée » — à savoir, échanger ou non les valeurs « V » / « F » de chaque bit selon la séquence appropriée — sont une conséquence plus indirecte des accélérations dues aux moteurs, étoiles et planètes. Cependant, on y gagne sur d’autres plans. La machine numérique peut être reprogrammée plus facilement pour faire toute une classe d’autres calculs (voir l'article Comment fonctionne une machine de Turing). Mais surtout, dans ce contexte, elle permet d’éviter des erreurs lorsque des perturbations agissent sur la machine.

Premièrement, de petites imprécisions ne perturberont pas notre interprétation du résultat. En effet, pour chaque position physique de la machine, il suffit d’identifier si l’intention était de représenter « V » ou « F » ; si un électron, initialement placé en « V », se balade un peu sous l’effet de toutes les perturbations extérieures, ce n’est pas grave tant qu’on peut identifier clairement sa zone d’origine. Ceci reste vrai pour le « bit » représentant la centaine de kilomètres de distance, comme pour celui représentant le 5e chiffre après la virgule. Un tel « encodage » numérique permet donc de s’affranchir de l’impact de petites déviations. Cependant, si rien n’est mis en place pour empêcher l’électron de se balader, il ne restera pas longtemps proche de sa position d’origine.

Ainsi, pour s’assurer que les imprécisions restent petites, et n’impactent donc pas le résultat du calcul numérique, un deuxième élément est souvent essentiel : un « mécanisme de rappel » vers les deux positions particulières représentant « V » et « F ». Un exemple de tous les jours est le ressort qui maintient un interrupteur dans sa position. Pour des électrons, le ressort doit être remplacé par un champ électromagnétique particulier autour des zones « V » et « F ». On peut se représenter cela comme placer l’électron dans une boîte à œufs à 2 places (voir figure 2 ci-dessous) : si une perturbation le pousse à bouger, il retombe dans sa case d’origine. Cette « stabilisation » rend difficile à l’électron la possibilité de s’éloigner de sa valeur « V » ou « F » d’origine. Pour effectuer des calculs, sans tout mélanger, il suffit de tourner lentement d’un demi-tour les boîtes à œufs sélectionnées. En effet, tout au long de ce demi-tour, l’électron suivra sa « case » tout en restant stabilisé dans une zone bien distincte de la valeur inverse ; et lorsqu’on fixe à nouveau la boîte à œufs après un demi-tour, toute la machine se retrouve dans la même situation qu’au départ, sauf que l’électron a échangé sa position « V » ou « F ».

[caption id="attachment_39747" align="aligncenter" width="700"] Figure 2 : illustration de la protection par boîte à œufs.[/caption]

Un troisième élément permettant d’ajouter de la robustesse est l’utilisation d’un « code correcteur d’erreur ». Dans sa version la plus simple, pour dire « V F » on répète « VVVVV FFFFF ». Ainsi, si l’un des électrons bouge trop et saute sur la valeur inverse, on affichera « VVVFV FFFFF » par exemple. On peut alors estimer qu’on avait probablement « VVVVV FFFFF » au départ (dans chaque bloc répétitif la majorité l’emporte) et remettre la machine sur cet état, représentant parfaitement le message « V F », pour la suite du calcul. Cette approche peut d’ailleurs servir à améliorer des simulations « analogiques » également.

En résumé, le mode d’emploi pour obtenir un comportement fiable de votre chat classique (= non-quantique) pourrait être :

1. Se limiter à distinguer s’il est dans la pièce « V » (on entend son « miaou ») ou la pièce « F » (on n’entend pas son « miaou »), plutôt que d’attribuer une importance millimétrée à sa position ;

2. Placer un bol de nourriture dans chaque pièce, pour l’encourager à rester dans la pièce « V » ou « F » qui lui est assignée au départ ;

2’. Afin d’inverser la valeur « V » ou « F » d’un groupe de chats, sans se soucier de leur état, déplacer les bols de nourriture de la pièce « V » vers la pièce « F » et inversement, par des chemins qui ne se croisent pas (s'ils se croisaient, le chat pourrait changer de bol au moment du croisement).

3. Afin de rattraper le coche si un chat décide malgré tout d’aller explorer la maison : pour dire « V » à une personne, mettre non seulement votre chat dans votre pièce « V » mais également ceux de vos voisins dans leur pièce « V ». En discutant avec vos voisins et votant à la majorité, la personne aura plus de chances d’obtenir le bon message, même si l’une des maisons du quartier a subi de fortes perturbations.

Adapter ces mécanismes de protection au support physique « bit quantique » est le grand défi pour la construction d’un ordinateur quantique. Afin de développer un peu d’intuition pour cet enjeu, nous allons d’abord parler du « bit aléatoire ».

Un premier pas vers le calculateur quantique : apprivoiser le hasard

Si certains chats rebelles répondent « miaou » ou non de manière aléatoire, on peut se servir de ce hasard pour accélérer des calculs (voir l'encart Monte-Carlo ci-après). Les mécanismes de stabilisation expliqués ci-dessus, permettent même de piloter précisément le résultat obtenu de ces rebelles. Les « nombres aléatoires » sont ainsi devenus un élément de base de nos ordinateurs depuis plusieurs décennies.

[caption id="attachment_39763" align="alignright" width="190"] Figure 3 : Représentation d’un bit aléatoire, prenant la valeur « V » ou « F » avec une probabilité entre 0 et 1. La probabilité — utilisée pour générer chaque échantillon — se représente par une valeur le long du segment ; mais la lecture d’un échantillon fournira juste, au hasard, une des deux valeurs extrêmes « V » ou « F ».[/caption]

L’idée du « bit aléatoire » est de disposer d’un électron dont la position « V » ou « F » est aléatoire, selon des probabilités bien définies : par exemple, pour chaque électron indépendamment, 60.00 % de chances de tomber dans « V » et 40.00 % de tomber dans « F ».
On peut visualiser cela en ajoutant, entre les deux valeurs du « bit » standard, un segment vertical (voir la figure 3 ci-contre) : le point en bas correspond comme sur la figure 1 à 100 % de chances d’être en « V », le haut à 100 % d’être en « F » donc 0 % d’être en « V », et le long du segment, on gradue les probabilités intermédiaires. Notez bien que le point milieu de ce segment ne représente pas du tout un électron qui se baladerait physiquement « entre » les positions stables « V » et « F » : il représente un électron qui a 50.00 % de chances d’être en « V » et 50.00 % d’être en « F », mais bien certain de rester à sa place. Par ailleurs, au moment de lire le résultat, on verra dans quelle case se trouve l’électron, mais rien ne permettra de vérifier s’il avait bien 50 % de chances de se trouver en « V », ou 51 % ou 60 % : pour cela, donc pour connaître la valeur sur le segment gradué, il faudrait accumuler des statistiques.

Le bit aléatoire est ainsi une ressource intermédiaire entre :

  • un bit fixé — qui ne peut encoder que deux valeurs « V » ou « F » — et
  • une valeur précise entre 0 et 1 (par exemple 60 %) — qui est utilisée pour générer le bit aléatoire, mais que l’on ne peut pas « lire » à partir d’un seul échantillon.

ID

36746

Auteurs

Alain Sarlette

Contenu

Le rôle déterminant d’un support physique

La possibilité de donner et de combiner des instructions suppose qu’on a une machine capable de les exécuter. Il faut pour cela un support physique concret. Un calcul donné peut être plus ou moins difficile à effectuer selon le comportement du support physique utilisé, c’est-à-dire selon les instructions qu’il est capable de représenter et combiner efficacement.

Ainsi, notre cerveau, dont le fonctionnement physique sur base de neurones oscillants n’est pas totalement compris, est capable de reconnaître presque instantanément des multitudes d’objets à partir de données visuelles ; pour un ordinateur standard, dont le fonctionnement physique est basé sur le basculement de « bits logiques » (rappel ci-dessous), cette tâche demeure très difficile : le résultat désiré ne peut s’obtenir qu’au prix d’un enchaînement compliqué d’un énorme nombre de ses opérations élémentaires. À l’inverse, un simple ordinateur portable peut manipuler très rapidement des tableaux de nombres et simuler l’évolution de processus compliqués, avec une précision que nos cerveaux n’atteindraient pas en une vie entière. Le but de l’ordinateur quantique est de proposer un nouveau support physique, capable de faciliter des calculs qui sont extrêmement difficiles sur les ordinateurs actuels. Il se servira pour cela d’une propriété physique inexploitée jusqu’ici — la très fragile « phase quantique ». Le prix à payer est de concevoir une machine où cette nouvelle propriété physique a un comportement fiable.

Voyons donc par quels principes nous pouvons construire des machines de calcul fiables, en partant du calculateur analogique, en passant par le calculateur numérique (aussi appelé « digital », nos ordinateurs actuels) jusqu’au calculateur quantique.

Les limites de fiabilité d’un calculateur analogique

Un simple « miaou » peut contenir une infinité de nuances, mais sont-elles toutes bien maitrisées ? Il ne paraît pas réaliste d’exiger une précision infinie à la machine qui exécute nos instructions...

À défaut de dresser des chats, considérons un support physique petit et manipulable, par exemple des électrons. En particulier, imaginons une machine utilisant un seul électron, positionné précisément au début, auquel nous appliquerions des déplacements par un système d’électro-aimants et dont nous mesurerions la position finale. Cela pourrait permettre par exemple de calculer la trajectoire d’une fusée en fonction des accélérations données par ses moteurs. L’accélération serait remise à l’échelle ainsi que l’influence des étoiles et planètes pour déplacer l’électron. Cette machine, une fois construite, permettrait à bas coût de transformer n’importe quelle commande des moteurs en résultat « position à l’instant t ». Cependant, sa fiabilité est douteuse. En effet, il sera très difficile de s’assurer qu’aucun élément extérieur ne vienne perturber notre petit électron durant son trajet ; de plus, une petite erreur d’accélération de notre part, sur ces si petites intensités, peut envoyer l’électron « dans les choux » à long terme. Une impasse semble apparaître : soit on construit une machine où une petite erreur peut tout brouiller, soit on blinde le système contre les influences extérieures mais alors il nous faudra un effort considérable pour le piloter — comme la fusée elle-même finalement. Bien que beaucoup d’améliorations peuvent être apportées pour contrôler les électrons via une telle machine dite « analogique », la solution la plus usuelle pour se protéger des erreurs est actuellement d’utiliser un calculateur dit « numérique » (comme nos ordinateurs actuels).

Comment le numérique permet de rendre les ordinateurs actuels fiables

Pour éviter de se tromper, on peut se borner à contrôler quelques propriétés simples : distinguer « miaou » ou « pas miaou », en réponse à une combinaison d’instructions, permet déjà de faire beaucoup de choses.

[caption id="attachment_39775" align="alignleft" width="130"] Figure 1 : Représentation des deux valeurs 1 («V») ou 0 («F») d’un bit.[/caption]

Dans nos ordinateurs actuels, les électrons ne peuvent plus prendre qu’un petit nombre de positions, en fait seulement 2, comme un interrupteur. Une position représente le symbole « 0 » ou « F(aux) » (ou « pas miaou »), l’autre « 1 » ou « V(rai) » (ou « miaou »), on parle d’un « bit » d’information. La position de la fusée n’est plus directement visible, mais « encodée » par une suite de « V » et « F », ou de manière équivalente de « 1 » et « 0 » (voir figure 1 ci-à gauche). Par exemple, FVVFVFFV = 01101001 pourrait représenter 0*8+1*4+1*2+0*1, en unités de 10^(1*4+0*2+0*1) mètres et avec le signe 1 = –, soit la coordonnée –60 km. Les opérations physiques à effectuer pour déplacer cette « simulation numérique de la fusée » — à savoir, échanger ou non les valeurs « V » / « F » de chaque bit selon la séquence appropriée — sont une conséquence plus indirecte des accélérations dues aux moteurs, étoiles et planètes. Cependant, on y gagne sur d’autres plans. La machine numérique peut être reprogrammée plus facilement pour faire toute une classe d’autres calculs (voir l'article Comment fonctionne une machine de Turing). Mais surtout, dans ce contexte, elle permet d’éviter des erreurs lorsque des perturbations agissent sur la machine.

Premièrement, de petites imprécisions ne perturberont pas notre interprétation du résultat. En effet, pour chaque position physique de la machine, il suffit d’identifier si l’intention était de représenter « V » ou « F » ; si un électron, initialement placé en « V », se balade un peu sous l’effet de toutes les perturbations extérieures, ce n’est pas grave tant qu’on peut identifier clairement sa zone d’origine. Ceci reste vrai pour le « bit » représentant la centaine de kilomètres de distance, comme pour celui représentant le 5e chiffre après la virgule. Un tel « encodage » numérique permet donc de s’affranchir de l’impact de petites déviations. Cependant, si rien n’est mis en place pour empêcher l’électron de se balader, il ne restera pas longtemps proche de sa position d’origine.

Ainsi, pour s’assurer que les imprécisions restent petites, et n’impactent donc pas le résultat du calcul numérique, un deuxième élément est souvent essentiel : un « mécanisme de rappel » vers les deux positions particulières représentant « V » et « F ». Un exemple de tous les jours est le ressort qui maintient un interrupteur dans sa position. Pour des électrons, le ressort doit être remplacé par un champ électromagnétique particulier autour des zones « V » et « F ». On peut se représenter cela comme placer l’électron dans une boîte à œufs à 2 places (voir figure 2 ci-dessous) : si une perturbation le pousse à bouger, il retombe dans sa case d’origine. Cette « stabilisation » rend difficile à l’électron la possibilité de s’éloigner de sa valeur « V » ou « F » d’origine. Pour effectuer des calculs, sans tout mélanger, il suffit de tourner lentement d’un demi-tour les boîtes à œufs sélectionnées. En effet, tout au long de ce demi-tour, l’électron suivra sa « case » tout en restant stabilisé dans une zone bien distincte de la valeur inverse ; et lorsqu’on fixe à nouveau la boîte à œufs après un demi-tour, toute la machine se retrouve dans la même situation qu’au départ, sauf que l’électron a échangé sa position « V » ou « F ».

[caption id="attachment_39747" align="aligncenter" width="700"] Figure 2 : illustration de la protection par boîte à œufs.[/caption]

Un troisième élément permettant d’ajouter de la robustesse est l’utilisation d’un « code correcteur d’erreur ». Dans sa version la plus simple, pour dire « V F » on répète « VVVVV FFFFF ». Ainsi, si l’un des électrons bouge trop et saute sur la valeur inverse, on affichera « VVVFV FFFFF » par exemple. On peut alors estimer qu’on avait probablement « VVVVV FFFFF » au départ (dans chaque bloc répétitif la majorité l’emporte) et remettre la machine sur cet état, représentant parfaitement le message « V F », pour la suite du calcul. Cette approche peut d’ailleurs servir à améliorer des simulations « analogiques » également.

En résumé, le mode d’emploi pour obtenir un comportement fiable de votre chat classique (= non-quantique) pourrait être :

1. Se limiter à distinguer s’il est dans la pièce « V » (on entend son « miaou ») ou la pièce « F » (on n’entend pas son « miaou »), plutôt que d’attribuer une importance millimétrée à sa position ;

2. Placer un bol de nourriture dans chaque pièce, pour l’encourager à rester dans la pièce « V » ou « F » qui lui est assignée au départ ;

2’. Afin d’inverser la valeur « V » ou « F » d’un groupe de chats, sans se soucier de leur état, déplacer les bols de nourriture de la pièce « V » vers la pièce « F » et inversement, par des chemins qui ne se croisent pas (s'ils se croisaient, le chat pourrait changer de bol au moment du croisement).

3. Afin de rattraper le coche si un chat décide malgré tout d’aller explorer la maison : pour dire « V » à une personne, mettre non seulement votre chat dans votre pièce « V » mais également ceux de vos voisins dans leur pièce « V ». En discutant avec vos voisins et votant à la majorité, la personne aura plus de chances d’obtenir le bon message, même si l’une des maisons du quartier a subi de fortes perturbations.

Adapter ces mécanismes de protection au support physique « bit quantique » est le grand défi pour la construction d’un ordinateur quantique. Afin de développer un peu d’intuition pour cet enjeu, nous allons d’abord parler du « bit aléatoire ».

Un premier pas vers le calculateur quantique : apprivoiser le hasard

Si certains chats rebelles répondent « miaou » ou non de manière aléatoire, on peut se servir de ce hasard pour accélérer des calculs (voir l'encart Monte-Carlo ci-après). Les mécanismes de stabilisation expliqués ci-dessus, permettent même de piloter précisément le résultat obtenu de ces rebelles. Les « nombres aléatoires » sont ainsi devenus un élément de base de nos ordinateurs depuis plusieurs décennies.

[caption id="attachment_39763" align="alignright" width="190"] Figure 3 : Représentation d’un bit aléatoire, prenant la valeur « V » ou « F » avec une probabilité entre 0 et 1. La probabilité — utilisée pour générer chaque échantillon — se représente par une valeur le long du segment ; mais la lecture d’un échantillon fournira juste, au hasard, une des deux valeurs extrêmes « V » ou « F ».[/caption]

L’idée du « bit aléatoire » est de disposer d’un électron dont la position « V » ou « F » est aléatoire, selon des probabilités bien définies : par exemple, pour chaque électron indépendamment, 60.00 % de chances de tomber dans « V » et 40.00 % de tomber dans « F ».
On peut visualiser cela en ajoutant, entre les deux valeurs du « bit » standard, un segment vertical (voir la figure 3 ci-contre) : le point en bas correspond comme sur la figure 1 à 100 % de chances d’être en « V », le haut à 100 % d’être en « F » donc 0 % d’être en « V », et le long du segment, on gradue les probabilités intermédiaires. Notez bien que le point milieu de ce segment ne représente pas du tout un électron qui se baladerait physiquement « entre » les positions stables « V » et « F » : il représente un électron qui a 50.00 % de chances d’être en « V » et 50.00 % d’être en « F », mais bien certain de rester à sa place. Par ailleurs, au moment de lire le résultat, on verra dans quelle case se trouve l’électron, mais rien ne permettra de vérifier s’il avait bien 50 % de chances de se trouver en « V », ou 51 % ou 60 % : pour cela, donc pour connaître la valeur sur le segment gradué, il faudrait accumuler des statistiques.

Le bit aléatoire est ainsi une ressource intermédiaire entre :

  • un bit fixé — qui ne peut encoder que deux valeurs « V » ou « F » — et
  • une valeur précise entre 0 et 1 (par exemple 60 %) — qui est utilisée pour générer le bit aléatoire, mais que l’on ne peut pas « lire » à partir d’un seul échantillon.

Image

machine-quantique_chapo

Domaines applicatifs