Devoir maison : Automates pond´er´es
`
A rendre le mercredi 10 mai
Les automates pond´er´es sont, en quelque sort, une g´en´eralisation des fonctions s´e-
quentielles : ils permettent d’associer des valeurs tir´ees d’un demi-anneau aux calculs
d’un automate. Contrairement aux fonctions s´equentielles, les automates sous-jacents
peuvent ˆetre non-d´eterministes.
Demi-anneaux. Un demi-anneau est une structure alg´ebrique S=hA, +,×,¯
0,¯
1itel
que (i) hA, +,¯
0iest un mono¨ıde commutatif ; (ii) hA, ×,¯
1iest un mono¨ıde ; (iii) pour
tout a, b, c A, on a a×(b+c) = (a×b)+(a×c) et (a+b)×c= (a×c)+(b×c)
(loi de distributivit´e), et (iv) pour tout aA, on a aׯ
0 = ¯
0×a=¯
0 (¯
0 est absorbant).
Parfois on omet ×, c’est `a dire ab denote a×b.
Un demi-anneau Sest commutatif si ab =ba pour tout a, b A. Il est dit born´e
idempotent si (i) + est idempotent ; (ii) l’ordre partiel vd´efini par avbssi a+b=a
ne contient aucune chaˆıne infinie descendante.
Automates finis pond´er´es . Un automate fini pond´er´e (AFP) est d´efini par A=
hQ, Σ,S, λ, µ, γio`u Qest un ensemble d’´etats fini, Σ un alphabet fini, S=hA, +,×,¯
0,¯
1i
un demi-anneau, λ, γ :QAsont des fonctions d’entr´ee et sortie, respectivement, et
µ: (Q×Σ×Q)Aune fonction de transition.
Le poids d’un chemin C:= q0
a1
q1· · · an
qn(pour n0) ´etiquett´e avec le mot
a1· · · an, est le produit kCk:= λ(q0)×Qn
i=1 µ(qi1, ai, qi)×γ(qn). Le poids d’un ´etat q
est la somme (par rapport `a +) de tous les chemins partant de q. Le poids d’un mot w,
not´e [[A]](w), est la somme de tous les chemins ´etiquett´es par w. La s´emantique de Aest
donc la fonction [[A]]: Σ→ S.
0
0
0
0
a/0
b/0
a/0
b/0
a/1b/0
a/1
Figure 1 – Un chemin dans A1calcule la longueur d’un bloc de acons´ecutifs.
1
Exemple. La notation graphique, `a l’image de l’automate A1dans la Figure 1, est
similaire `a celle des fonctions s´equentielles, avec λ, γ indiqu´es par des fl`eches entrants et
sortants sur les ´etats. On omet les ´el´ements de λ, µ, γ avec poids ¯
0. Interpr`etons A1dans
le demi-anneau hIN ∪ {−∞},max,+,−∞,0i. Dans cette interpr´etation, [[A1]](w) donne
le nombre maximal de acons´ecutifs dans w.
Remarques. Une transition avec poids ¯
0 est comme une transition ‘non-existante’
(tout chemin passant par une telle transition aura poids ¯
0). Du mˆeme, seuls les chemins
partant d’un ´etat qavec λ(q)6=¯
0 et terminant `a un ´etat q0avec γ(q0)6=¯
0 contribuent
un poids ‘int´eressant’ `a [[A]].
Par ailleurs, notons IB = h{0,1},,,,>i le demi-anneau bool´een. Il est ´evident
que, ´etant donn´e un automate fini A, on peut construire un AFP A0sur IB tel que
[[A0]](w) = 1 ssi w∈ L(A).
Il est parfois ineressant d’interpr´eter les transitions comme une function µ: Σ
SQ×Qqui associe `a une lettre aune matrice µ(a) tel que µ(a)p,q indique le poids de la
transition hp, a, qi. Dans ce cas, µs’´etend naturellement sur des mots de Σ, et on peut
noter [[A]](w) = λ·µ(w)·γ(avec λvecteur de ligne et γvecteur de colonne). Cette
interpr´etation est admis quand son usage est non-ambigu.
Quelques exemples
1. Soit Σ = {a, b},wΣ, et |w|ale nombre de adans w. Construisez un AFP A
sur Σ et IN tel que [[A]](w) = 2|w|a.
2. Soit Aune fonction s´equentielle. Construire un AFP A0avec [[A0]](w) = [[A]](w) si
ce dernier est d´efini et [[A0]](w) = sinon.
3. Soit Aun automate fini non-d´eterministe sur Σ. Pour un mot wΣ, soit pA(w)
le nombre de chemins acceptant pour w. Par exemple, si on interpr`ete la Figure 1
comme un automate non-d´eterministe (en ignorant les poids), alors p(baab)=3
car on peut choisir de basculer vers le deuxi`eme ´etat avec le premier a, le deuxi`eme,
ou pas de tout.
Construisez, pour un Adonn´e, un AFP A0(avec un demi-anneau appropri´e) tel
que [[A0]] = pA.
Une petite application
On consid`ere une application `a l’analyse statique de programmes. Soit Vun ensemble
fini de variables. Un instructions sur Vest soit une affectation x:= e(V0), soit un
branchement if e(V0) avec xV, V 0Vet eune expression quelconque dans laquelle
les seuls variables sont celles de V0. L’ensemble des instructions est not´e I(V).
Un graph de flot de contrˆole Gest un automate fini d´eterministe sur I(V), avec
un seul ´etat initial q0(sans transitions entrantes) et un seul ´etat acceptant qf(sans
transitions sortantes). Grepr´esente donc le comportement d’un programme simple qui
manipule les variables de Vet qui peut brancher en fonction de leurs valeurs.
2
x:= x+y
if w < 2
z:= 2 ·x
Figure 2 – Exemple d’un chemin dans un graphe de flot de contrˆole.
Soit Cun chemin de Gterminant dans qf. Une variable xest dite vivante dans Csi
Ccontient une instruction qui utilise xdans une expression avant que xne soit red´efinie
par une affectation x:= e(V0). Par exemple, dans le chemin illustr´e dans la Figure 2, les
variables x, y, w sont vivantes, mais zne l’est pas (zest morte). Une variable xest dite
vivante dans un ´etat qs’il existe un chemin de qvers qfo`u xest vivante. Cette notion
a des applications ´evidentes pour l’optimisation des compilateurs.
Notons que pour cette question, la forme exacte des expressions n’importe pas, du
coup dans ce qui suit on peut bien abstraire toutes les expressions vers une forme e(V0).
4. Trouvez un demi-anneau Sappropri´e pour calculer les variables vivantes et construi-
sez un AFP G0sur I(V) et Stel que :
(i) G0garde les ´etats de G;
(ii) Sest born´e idempotent ;
(iii) pour tout chemin Cde G0terminant dans qf,kCkindique les variables vi-
vantes dans C;
(iv) pour tout ´etat q,kqkindique les variables vivantes dans q.
Pour (iii) et (iv), il suffit que les variables vivantes pourront ˆetre recup´er´ees depuis
les poids par une projection simple.
5. Proposez un algorithme pour calculer le vecteur des valeurs kqk. Prouvez en par-
ticulier que votre algorithme termine bien. Donnez une estimation de complexit´e
pour votre algorithme.
Propri´et´es de clˆoture
Soit S=hA, +,×,¯
0,¯
1iet S0=hA0,,,¯
00,¯
10ideux demi-anneaux. On appelle
h:AA0morphisme de Svers S0si h(¯
0) = ¯
00,h(¯
1) = ¯
10,h(a+b) = h(a)h(b) et
h(a×b) = h(a)h(b).
Une fonction f: ΣAest dite reconnaissable s’il existe un AFP Asur Σ et Stel
que [[A]] = f. Soient f, g : ΣA. On d´efinit h(f), f+g,f×gpar (h(f))(w) = h(f(w)),
(f+g)(w) = f(w) + g(w) et (f×g)(w) = f(w)×g(w).
5. Montrer ou r´efuter : si fest reconnaissable et hun morphisme, alors h(f) est
reconnaissable.
6. Montrer ou r´efuter : si fet gsont reconnaissables, f+gl’est aussi.
3
7. Montrer que si fet gsont reconnaissables et Scommutatif, alors f×gest recon-
naissable.
8. Montrer que le pr´ec´edent n’est pas vrai en g´en´eral sans commutativit´e.
4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !