Langage pour les machines `a signaux

publicité
— Sujet de stage recherche L3 ÉNS Lyon 2014 —
Langage pour les machines à signaux
Encadrant : Jérôme Durand-Lose, LIFO, Orléans
[email protected]
Résumé
Les machines à signaux considèrent l’évolution de signaux (points sans dimension) sur
une ligne (R). Ils avancent de manière uniforme et sont remplacés par d’autres quand ils
se rencontrent. Les diagrammes espace-temps engendrés sont formés de segments de droite.
Une machine à signaux est définie par l’ensemble (fini) des méta-signaux et des règles de
collision. Une configuration se définit par les positions des signaux présents et leurs métasignaux associés.
Elles forment un modèle de calcul à temps et espace continus où l’on peut simuler une
machine de Turing mais également y faire du calcul analogique exact. Ce modèle possède
également ses propres primitives et schémas pour construire des machines à signaux à partir
d’autres. Par exemple, on peut construire des versions infiniment accélérées.
Nous disposons d’une bibliothèque Java complète pour la manipulation des machines
à signaux et la plupart des algorithmes y ont été implantés. Actuellement, une machine se
définit en Java ou en xml (ou avec une interface graphique) et les algorithmes de modification
sont écrits en Java. Ces solutions sont malheureusement lourdes et peu lisibles.
Le but du stage est de définir un langage et un interpréteur (ANTLR et Java) pour
définir des machines à signaux puis des règles de modifications.
Mots-clés : ANTLR ; Algorithmique géométrique ; Java ; Machines à signaux ; Systèmes
complexes.
Machines à signaux
Dans un espace euclidien unidimensionnel (R), on place un certain nombre de signaux :
points sans dimension se déplaçant à vitesse constante. À chaque signal, est associé un métasignal, celui-ci définit entièrement la dynamique du signal. Quand des signaux se rencontrent,
ils sont enlevés et d’autres signaux apparaissent suivant des règles de collision. La Figure 1
contient un diagramme espace-temps d’une machine à signaux avec à gauche les méta-signaux
et les règles de collision qui définissent la machine à signaux.
a
1
b
-1
c
0
Règles de collision
{a, b} → {c, a}
{a, c} → {}
{b, c} → {}
{a, b, c} → {c, b}
c
temps (N)
Méta-signal Vitesse
c
c
a
a
a
b
b
a c
b
espace (Z)
Figure 1 – Méta-signaux, règles et diagramme espace-temps.
Le comportement des machines à signaux est complexe et très riche comme le montre la
Fig. 2. En effet, on peut calculer au sens des machines de Turing, mais on peut également
résoudre le problème de la halte [Durand-Lose, 2012], calculer sur des valeurs continues avec
exactitude [Durand-Lose, 2009] et engendrer des fractales et y mener des calculs [Duchier et al.,
2012].
Une courte introduction visuelle aux machines à signaux est accessible sur internet 1 .
Nous disposons d’une bibliothèque Java pour manipuler des machines à signaux. Pour définir
une machine, il faut soit utiliser un fichier xml soit la coder en dur en Java (soit passer par une
interface graphique). Tout cela est trop lourd si l’on veut juste faire quelques essais.
1. http://www.univ-orleans.fr/lifo/Members/Jerome.Durand-Lose/Recherche/AGC/intro AGC.html
1
Figure 2 – Diagrammes espace-temps de machines à signaux.
Notre bibliothèque contient de nombreuses transformations comme le fait d’enchâsser dans
une structure accélérant infiniment (Fig. 3). Cette transformation est définie en Java ce qui
impose de rentrer dans le cadre de la programmation Java — peu adaptée — alors que l’on
voudrait se concentrer sur la modification de machines que l’on implante.
Figure 3 – Diagramme initial, un pas d’accélération, et une infinité de tels pas.
Sujet
Tout d’abord, il s’agira de définir un langage pour les machines à signaux (syntaxe et
sémantique) au travers d’exemples (sans chercher à faire un langage complet de haut niveau)
puis passer la syntaxe sous ANTLR. Ce sera l’occasion de ré-écrire de vieux algorithmes comme
d’en proposer de nouveaux. Ensuite, il faudra écrire un interpréteur pour la partie déclaration
de machine, puis, si le temps le permet, pour la partie modification de machines.
Laboratoire et encadrant
Le stage aura lieu au LIFO (Laboratoire d’Informatique Fondamentale d’Orléans 2 ) sur le
site d’Orléans-la Source dans les conditions usuelles d’accueil. Le LIFO compte quatre vingtaines
de membres dont une moitié d’enseignants-chercheurs permanents. Jérôme Durand-Lose est
professeur d’Informatique à l’Université d’Orléans. Il poursuit ses recherches au sein de l’équipe
GAMoC (Graphe, Algorithmes et Modèles du Calcul) du LIFO.
Références
D. Duchier, J. Durand-Lose, and M. Senot. Computing in the fractal cloud: modular generic solvers for
SAT and Q-SAT variants. In M. Agrawal, B. S. Cooper, and A. Li, editors, Theory and Applications
of Models of Computations (TAMC ’12), number 7287 in LNCS, pages 435–447. Springer, 2012. doi:
10.1007/978-3-642-29952-0 42. URL http://arxiv.org/abs/1105.3454.
J. Durand-Lose. Abstract geometrical computation 3: Black holes for classical and analog computing.
Nat. Comput., 8(3):455–472, 2009. doi: 10.1007/s11047-009-9117-0.
J. Durand-Lose. Abstract geometrical computation 6: a reversible, conservative and rational based model
for black hole computation. Int. J. Unconventional Computing, 8(1):33–46, 2012.
Les articles de J. Durand-Lose sont accessibles sur cette page web 3 .
2. http://www.univ-orleans.fr/lifo/
3. http://www.univ-orleans.fr/lifo/Members/Jerome.Durand-Lose/Recherche/publications.html
2
Téléchargement