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 int´eressant 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 x∈V, V 0⊆Vet 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