Le Q# (Microsoft)

Q# est le langage de programmation quantique de Microsoft, né en fin 2017 (et dans la même philosophie que ses autres langages .NET, C#, F#, J#. Sur son site dédié Microsoft Quantum Development Kit [6], Microsoft propose des tutoriels intéressants sur l’informatique quantique et le Q#. Des exemples sont mêmes proposés sur le Github de l’équipe Microsoft Quantum [13].

Installation
Je vous laisse faire. Toutes les ressources sont gratuites et le mode opératoire est expliqué sur [6]. Ce n’est pas la partie la plus complexe de l’affaire 😉 .

Mon premier programme
Mon premier programme consiste à créer deux qubits et à les mettre dans l’état de Bell : . comme utilisé dans l’algorithme de téléportation.

Créer une nouvelle application Q#. Fichier/Nouveau/Projet…/Q# Application. Nommer le projet BellState.
Le projet contient 2 fichiers : un fichier .cs en C# qui va permettre d’instancier et faire tourner le simulateur quantique. Et un fichier .qs avec le code quantique à exécuter.

Voici quelques concepts clés pour le Q# :

  • Les variables « mutables« , c’est à dire modifiables. On les déclare « mutable i =0; » puis on les modifie par « set i = i +1;« 
  • Les variables immuables, c’est à dire dont les valeurs ne peuvent pas changer. « let res = M(qubit); ». Res sera le résultat de la mesure d’un qubit. On ne pourra plus modifier sa valeur (#logique).
  • Le type Qubit existe. Avec des valeurs prédéfinis One et Zero.
  • L’allocation des qubits est dynamique. Cela se fait par « using (qubit = Qubit()) { … } ». La destruction se fera dès que l’on sort du bloc {…}. A noter qu’un qubit doit toujours être positionné à l’état Zero avant de quitter.
  • Les matrices de Pauli sont définis X(Qubit), H(Qubit), les opérateurs CNOT (Qubit de controle, Qubit target) …

Exemple: Ce programme va créer 100 fois des qubits intriqués dans l’état de Bell.
A chaque appel, il demande de positionner le 1er qubit dans un état aléatoire, le second étant toujours |0>. On mesure le nombre de fois que l’on récupère |00> et |11>
Voici le fichier Driver.cs (C#)

Le fichier Bell.qs donne le code quantique.

Voici le résultat : on vérifie bien que les 2 qubits sont intriqués. Quelque soit la valeur aléatoire du 1er qubit (0 ou 1), le second est le même. On constate aussi que sur 100 tests, nous avons bien une distribution aléatoire quasi 50/50.

Pour aller plus loin
Voir comment coder la téléportation quantique dans la page dédiée à cet algorithme, ici.

 

Page mise à jour le 9 février 2019.