5.2.1 Quantum Computing Language (QCL)
2.1. Quantum Computing Language (QCL) QCL est le langage
quantique le plus connu, un des premiers, et sa syntaxe ressemble au langage C.
Avec QCL [Omer, 1998] il est possible de combiner langage quantique et
classique dans le même code source. Le type de donnée de base est
: qureg (registre de qubits). Sur ces registres, les opérations
élémentaires peuvent être effectuées :
initialisation, transformations unitaires et mesures...
5.2.1.1 Syntaxe de QCL [Omer, 2000] [Omer, 2009] -
Expressions
45
chapitre5 : Langages de programmation quantiques
- Statements
- Définitions
Exemple
quregx1 [2]; // Registre quantique à 2
qubits
quregx2 [2]; // Registre quantique à 2
qubits
H (x1); // Opération d'Hadamard sur
x1
H (x2 [1]); // Opération d'Hadamard sur le
premier qubit de x2
- Avec une librairie qulib, on peut observer l'état :
qcl > dump
: STATE : 4/32 qubits allocated , 28/32 qubits
free
46
chapitre5 : Langages de programmation quantiques
0.35355|0) + 0.35355|1) +
0.35355|2)
+0.35355|3) + 0.35355|8) +
0.35355|9)
+0.35355|10) + 0.35355|11)
- Mais surtout, on peut définir des fonctions :
Operator diffuse (quregq) {
H (q) ; // Transformation d'Hadamard
Not (q) ; // L'inverse de q
CPhase (pi, q) ; //Rotation si q=111...
!Not (q) ; // Annuler l'inversion
!H (q) ; // Annuler Transformation
d'Hadamard
5.3 Langages Fonctionnels et Lambda-Calcul
Maymin (1996) définit deux extensions du A -
calcul avec appel par-valeur. Le premier, un A - calcul
probabiliste (A' - calcul), intègre des
distributions de termes, ce qui permet des fonctions pour retourner des
résultats aléatoires. Le second, un A-calcul
quantique (Aq -calcul),qui va plus loin en permettant
aux termes d'être représentés négativement dans les
distributions, donc il ya la possibilité d'une interférence
destructive lorsque les distributions sont combinés. Dans les deux cas,
il est possible d'associer des coefficients numériques avec les termes
dans une distribution, mais il est possible que les termes soient
répétés. Dans le Aq - calcul, cela
signifie qu'il est impossible d'exprimer des phases relatives d'autres que 180
degrés. Cela ressemble à une limitation significative, bien que
Maymin montre que Aq - calcul est capable de résoudre
efficacement les problèmes NP - complet, et dans un
autre document (1997) soutient que Aq - calcul permet de
simuler efficacement les automates cellulaires unidimensionnels
partitionnés quantique, qui sont équivalentes à une
machines de Turing quantique. Il semble que Aq - calcul peut
être strictement plus expressive que le calcul quantique physiquement
réalisable.
Van Tonder (2004) définit un A - calcul
quantique, Aq, avec une sémantique opérationnelle
et une théorie équationnelle. C'est un langage pour le calcul
quantique pur : la mesure n'est pas envisagée. Il analyse la
non-reproductibilité de l'état quantique en termes de logique
linéaire et donne une définition inductive des termes Aq
bien formés qui est, essentiellement, une forme simplifiée d'un
système de type linéaire.
Valiron (2004) et Selinger et Valiron (2005, 2006)
définissent un langage de programmation fonctionnelle d'ordre
supérieur basé sur l'idée de contrôle classique et
données quantiques. Le langage est basée sur l'appel par valeur
du A-calcul, et comprend à la fois des données
classiques
47
chapitre5 : Langages de programmation quantiques
et quantiques. La sémantique est opérationnel,
bien que l'extension de Selinger (2004) donne une sémantique
dénotationnelle, l'ordre supérieur est un objectif, et il ya un
système de type basé sur la logique linéaire pour le
contrôle de l'état quantique. Ils démontrent la
préservation de type et les propriétés de
sécurité de type, comme prévu pour les langages
fonctionnels typés, et présentent un algorithme
d'inférence de type.
Toujours dans l'extension du travail de Valiron (2004),
Perdrix (2005) définit un système de type qui reflète
l'intrication des parties de l'état quantique. L'idée est
d'enrichir le type de l'environnement avec une relation d'équivalence
sur les variables quantiques, ce qui représente une approximation de la
relation d'intrication.
Arrighi et Dowek (2004, 2005) définissent un
À - calcul linéaire algébrique dans
lequel toutes les fonctions sont des opérateurs linéaires sur les
espaces vectoriels. Bien que la modélisation de calcul quantique est un
objectif majeur de leur travail, ils développent leurs théorie
quelque peu indépendamment des spécificités de la
mécanique quantique afin d'obtenir une vue plus générale
de la signification de la linéarité. Une caractéristique
notable de ce travail est l'identification d'une correspondance entre la
notation pattern-matching familière de la programmation fonctionnelle et
la notation algébrique linéaire définissant les
opérateurs linéaires par leur effet sur les vecteurs de base.
Altenkirch et Grattage (2005a; 2005b) définissent un
langage du premier ordre de la programmation fonctionnelle, QML, dont le
contrôle, ainsi que les données peuvent être quantique. La
sémantique de QML est exprimée en termes de théorie des
catégories, ce qui fournit une base pour une sémantique
dénotationnelle en termes de super opérateurs et une traduction
dans les circuits quantiques. Le système de type de QML est basé
sur la logique linéaire, mais se concentre sur l'élimination de
l'affaiblissement (rejets l'état quantique) plutôt que de la
contraction (duplication de l'état quantique), en effet, la contraction
est autorisé mais elle est interprété comme le partage
plutôt que la copie. Un autre objectif du système de type est de
contrôler la décohérence, et cela est pris en charge par
l'introduction d'un jugement et règles dérivation
d'orthogonalité des états d'espaces. Dans la poursuite des
travaux avec Vizzotto et Sabry (. Altenkirch et al 2006), les auteurs
développent une théorie équationnelle complet pour le
fragment pur de QML; cela donne aussi un algorithme de normalisation pour
QML.
Danos et al. (2004) étudient le modèle
unidirectionnel de calcul quantique, et développent une notation pour
les composants clés de ce modèle : l'intrication, la mesure et
correction local. Cette notation est basée sur les modèles. La
principale contribution de cet article est de définir un calcul
d'équations avec plus de modèles, ce qui conduit à un
algorithme par lequel n'importe
48
chapitre5 : Langages de programmation quantiques
quel modèle peut être transformé en une
forme standard comprenant intrication suivie par mesure suivie par une
correction. Danos et Kashefi (2005) décrivent des conditions suffisantes
pour les modèles de mesure à 'exécuter de façon
déterministe. Danos et al. (2005) développent un calcul similaire
de mesures à deux qubits, ce qui est pertinent d'utiliser la
téléportation comme une primitive pour le calcul quantique.
(2004) Le travail de M. Selinger a été
très influent dans le développement des langages fonctionnels
pour le calcul quantique. Il définit un langage fonctionnel de premier
ordre avec un système de type statique, en prenant l'approche des
données quantiques et le contrôle classique. L'aspect le plus
important de ce travail est la sémantique dénotationnelle.
Celui-ci utilise le mécanisme standard d'ordres partiels complets et les
fonctions continues [?], mais dans le cadre des espaces vectoriels et super
opérateurs; une caractéristique essentielle est le traitement de
partialité découlant de la non-récurrence de terminaison
ou de boucles. Edalat (2004) a aussi étudié la sémantique
des états partiels en informatique quantique. Dans la suite nous allons
représenter à titre d'exemples les langages QML et Quipper.
|