Les Qubits en Q#

Par:
fredericmazue

mer, 19/12/2018 - 10:00

En informatique, la  représentation des données est essentielle. En informatique classique, la représentation de l'état d'un bit, 0 ou 1 est triviale. Mais qu'en est-il des bits de l'informatique quantique, des Qubits ? Faut-il les représenter dans le langage de programmation et si oui, comment ?

Un très intéressant billet de blog de Microsoft explique le choix qui a été fait pour représenter les Qubits avec le langage de programmation quantique Q#.

Le billet pose tout d'abord la représentation d'un calcul quantique :

Dans le modèle de circuit quantique, un calcul quantique est représenté sous la forme d'une séquence d'opérations, parfois appelées portes, appliquées à un ensemble de qubits. Cela conduit à des images telles que:

à partir du calcul quantique et de l'information quantique par Nielsen et Chuang

Dans cette image, chaque ligne horizontale est un qubit, chaque case est une opération et le temps s'écoule de gauche à droite.

Lorsque nous voulons concevoir un langage de programmation pour exprimer un calcul quantique, la question se pose naturellement de savoir si les qubits doivent être représentés dans le langage et, le cas échéant, comment

Après avoir décrit plusieurs solutions, Microsoft justifie son choix :

L'informatique quantique est l'informatique par effet secondaire

La représentation utilisée dans Q# implique de manière intéressante que tout l’informatique quantique réelle est effectuée par effet secondaire. Il n'y a aucun moyen d'interagir directement avec l'état quantique de l'ordinateur; il n'a aucune représentation du logiciel. Au lieu de cela, on effectue des opérations sur des entités qubit qui ont pour effet secondaire de modifier l'état quantique. En réalité, l’état quantique de l’ordinateur est une variable globale opaque qui n’est accessible que par un petit ensemble de primitives d’accessoires (mesures) - et même ces accesseurs ont des effets secondaires sur l’état quantique, et sont donc plutôt des «mutants avec résultats». que vrais accesseurs.

En programmation générale, l'utilisation des effets secondaires et de l'état global est généralement découragée. En revanche, pour l'informatique quantique, ils semblent assez bien correspondre à la réalité physique actuelle. Pour cette raison, nous avons décidé que cette abstraction était la bonne à utiliser dans Q#.