i
i
“Automates” — 2006/4/16 — 11:20 — page 1 — #1
i
i
Automates finis
Jean- Éric Pin
Mots-clés : automate, langage, expression rationnelle, reconnaissable, automate séquentiel, industrie de la langue,
vérification, spécification.
Résumé : introduits vers 1950, les automates finis constituent le modèle le plus élémentaire de machine. Ce chapitre
présente d’une part les automates usuels, qui se contentent de lire un mot en entrée pour l’accepter ou le rejeter, et
les automates séquentiels, munis d’une entrée et d’une sortie. Apres une breve présentation du théorème de Kleene,
clé de voûte de la théorie des automates, nous décrivons les applications des automates dans divers domaines,
notamment la modélisation et les industries de la langue.
1 Un bref historique
La théorie des automates est née de la conver-
gence de plusieurs courants scientifiques. Le pre-
mier est issu des tentatives de logiciens tels que
Church, Gödel ou Turing pour formaliser la notion
de calcul et de machine. Cet effort a occupé toute
la premiere moitié du vingtieme siècle et pourtant,
les automates finis, qui constituent le modèle le
plus simple de machine, ne seront définis formel-
lement que bien après les machines de Turing. Les
systèmes dynamiques discrets forment la seconde
source d’inspiration. Bien que leur étude remonte
aux travaux de Morse datant de la première moitié
du vingtieme siecle, leurs liens avec les automates
finis font encore à ce jour l’objet de recherches
tres actives. Le troisieme courant, proche cou-
sin du précédent, est la théorie de l’information
bâtie par Shannon en 1948. Les problèmes de co-
dage, étudiés notamment par Schützenberger dès
les années cinquante, ont en effet profondément
influencé la théorie des automates. La quatrième
source provient de linguistes tels que Chomsky
qui, en cherchant à formaliser les langues natu-
relles, ont introduit les concepts de mots,
lan-
gages, grammaires, que nous utilisons aujourd’hui.
Le domaine des circuits électroniques a été la cin-
quième source d’inspiration. Il a conduit notam-
ment à la notion d’automate avec sortie et au
concept de spécification du comportement d’un
circuit.
Les cinq domaines que nous venons d’évoquer
brièvement ont eu une influence considérable sur
la génèse et le développement de la théorie des au-
tomates. Mais historiquement, c’est un article sur
les réseaux neuronaux publié en 1943 par McCul-
loch et Pitts qui est à l’origine de la notion d’au-
tomate. Il semble en effet que le terme « théorie
des automates » ait été introduit en 1948 par Von
1
Neumann en référence à cet article. Par ailleurs,
à la demande de la RAND Corporation, Kleene a
longuement analysé cet article dans un mémoire
rédigé durant l’été 1951, mais publié seulement en
1956. Cet article marque la naissance de la théorie
des automates.
Kleene y démontre un théorème qui affirme
que les langages reconnus par un automate sont
exactement les langages rationnels, appelés aussi
langages réguliers, que l’on peut décrire à par-
tir des lettres de l’alphabet eu utilisant trois
opérations : l’union (qui joue le rôle de l’addi-
tion), le produit et l’étoile. On obtient ainsi un
procédé descriptif tout à fait différent des auto-
mates, et ce résultat est assez surprenant. Il a
pour conséquence que l’ensemble des langages ra-
tionnels est fermé par intersection et complément.
Les automates avec sortie ont été introduits
eux aussi à la fin des années cinquante. Un auto-
mate avec sortie lit un mot en entrée et produit
un mot en sortie. Les modèles les plus intéressants
sont les automates séquentiels, qui permettent
d’obtenir la sortie au fur et à mesure de la lecture
du mot d’entrée. Ces automates sont très proches
des circuits électroniques et leur synthèse en cir-
cuit peut d’ailleurs être entièrement automatisée.
2 Mots et langages
En informatique, mais aussi en mathémati-
ques, en linguistique ou en biologie, les informa-
tions sont souvent représentées par des chaˆınes
de caractères. Par exemple pour les données in-
formatiques, on utilise des suites de 0 et de 1,
pour l’information génétique, des suites formées
des quatre caractères A (Adénine), C (Cytosine),
G (Guanine) et T (Thymine) et pour les langues
naturelles, les mots figurant dans un dictionnaire.
La formalisation commune à ces exemples est
i
i
i
i
i
i
2
“Automates” — 2006/4/16 — 11:20 — page 2 — #2
i
i
Automates finis
la suivante. Un alphabet est un ensemble fini dont
les éléments sont appelés des lettres. Ainsi, on
parle de l’alphabet binaire {0, 1}, de l’alphabet
du génome {A, C, G, T }, de l’alphabet latin usuel
{a, . . . , z, A, . . . , Z}. Dans les exemples qui vont
suivre, on utilisera le plus souvent des alphabets
assez petits tels que {a, b} ou {a, b, c} et on notera
A l’alphabet tout entier.
Un mot sur l’alphabet A est une suite finie
de lettres de A. On note ces lettres par simple
juxtaposition : ainsi le mot abracadabra est un
mot sur l’alphabet {a, b, c, d, r}. La longueur d’un
mot u, notée |u|, est égale au nombre de lettres
figurant dans u, chaque lettre étant comptée au-
tant de fois qu’elle apparaˆıt. Ainsi, |abaabb| = 6
et |abracadabra| = 11. Il existe aussi un mot de
longueur 0, que l’on note ε.
Le produit (ou concaténation) de deux mots
est le mot obtenu en mettant ces mots bout à
bout. Par exemple, le produit des mots abra et
cadabra est le mot abracadabra. On note aussi un
le produit de n mots égaux à u. Ainsi, (ab)3 =
ababab.
On appelle langage tout ensemble de mots sur
un alphabet donné. Par exemple, les ensembles
{aba, babaa, bb} et {anbn | n > 0} sont des lan-
gages sur l’alphabet {a, b}.
La figure
3 Automates déterministes
1.1
représente un automate
déterministe. Cet automate possède trois états,
1, 2 et 3, entourés par des cercles sur la figure.
L’état 1 est l’état initial, ce qu’on indique par
une flèche entrante. Les états 2 et 3 sont des
états finaux, ce qui est indiqué par une flèche
sortante. Cet automate possède aussi des transi-
tions, représentées par des flèches étiquetées par
des lettres. De plus, de chaque état sort au plus
une flèche d’étiquette donnée.
a
2
b
1
a
a
3
Fig. 1.1 – Un automate
Pour savoir si un mot est accepté ou non par l’au-
tomate, on lit de gauche à droite les lettres de ce
mot en partant de l’état initial et en suivant les
transitions. Si on parvient dans un état final, ce
mot est accepté, sinon, il est rejeté.
Prenons par exemple le mot aab. En lisant
ce mot en partant de l’état initial 1, on utilise
d’abord la transition d’étiquette a qui va de 1 vers
2, puis celle de 2 vers 2 d’étiquette a et enfin celle
d’étiquette b de 2 vers 3. Comme 3 est un état
final, le mot aab est accepté par l’automate.
Si on lit maintenant le mot aba en partant de
l’état initial 1, on utilise successivement les tran-
sitions de 1 vers 2, de 2 vers 3 et enfin de 3 vers 1.
À l’issue de la lecture du mot aba on arrive donc
dans l’état 1, qui n’est pas un état final : le mot
est rejeté par l’automate.
Enfin, examinons le mot abb. Comme pour le
mot aba, on commence par utiliser les transitions
de 1 vers 2, puis de 2 vers 3, mais arrivé dans
l’état 3, on constate qu’il n’y a pas de transition
d’étiquette b issue de 3. La lecture du mot ne peut
donc se poursuivre et le mot est également rejeté.
4 Langages reconnaissables
L’ensemble des mots acceptés par un auto-
mate est par définition le langage reconnu par
l’automate. On dit qu’un langage est reconnais-
sable s’il existe un automate déterministe qui le
reconnaˆıt. En voici deux exemples.
L’automate de la figure 1.2 reconnaˆıt le lan-
gage des mots sur l’alphabet {a, b} qui com-
mencent par aba.
a, b
1
a
b
2
3
a
4
Fig. 1.2 – Un automate déterministe
Notre second exemple est un peu plus sophistiqué.
Rappelons que la représentation binaire d’un en-
tier s’obtient en le décomposant comme somme de
puissances de 2. Par exemple, le nombre 330 qui
vaut 28 + 26 + 23 + 21, s’écrit 101001010 en base 2.
On peut montrer que l’automate de la figure 1.3
reconnaˆıt l’ensemble des mots sur l’alphabet {0, 1}
qui sont la représentation binaire d’un multiple de
3. Par exemple, 330 est divisible par 3 et le mot
101001010 est bien accepté par l’automate.
0
0
1
1
1
0
0
2
1
Fig. 1.3 – Multiples de 3
Tous les langages ne sont pas reconnaissables. Par
exemple, on montre que le langage {0n1n | n > 0}
n’est pas reconnaissable. La signification intuitive
i
i
i
i
i
i
“Automates” — 2006/4/16 — 11:20 — page 3 — #3
Automates non déterministes
3
i
i
de ce résultat est qu’un automate fini ne peut si-
muler une pile de hauteur non bornée (voir cha-
pitre £Modèles de machines£).
5 Automates non déterministes
Les automates non déterministes
consti-
tuent une variante importante des automates
déterministes. Ils sont eux aussi représentés par
un graphe étiqueté, comme celui de la figure 1.4.
a, b
1
a
2
a
b
3
Fig. 1.4 – Un automate non déterministe
au cas des
contrairement
Mais
automates
déterministes, on peut avoir plusieurs états ini-
tiaux et plusieurs flèches de même étiquette is-
sues du même état. Ainsi sur notre exemple, il y
a deux états initiaux, 1 et 2, et deux transitions
d’étiquette a issues de l’état 1 : une de 1 vers 1 et
l’autre de 1 vers 2.
Un chemin est une suite de transitions
consécutives. Le mot formé par les étiquettes de
ces transitions consécutives est l’étiquette du che-
min. Un chemin est réussi s’il part d’un état initial
et aboutit dans un état final. Un mot est accepté
s’il est l’étiquette d’au moins un chemin réussi (ce
qui n’exclut pas qu’il puisse être simultanément
l’étiquette d’un chemin non réussi !). Le langage
reconnu par l’automate A est l’ensemble des mots
acceptés par A.
Les automates non déterministes permettent
une représentation plus concise de certains lan-
gages. Par exemple, l’automate non déterministe
de la figure 1.5 accepte l’ensemble des mots sur
l’alphabet {0, 1} contenant la chaˆıne 010.
0, 1
0, 1
1
0
1
2
Publicité
3
0
4
Fig. 1.5 – Un automate non déterministe pour
les mots contenant la chaˆıne 010
Deux automates sont dits équivalents s’ils recon-
naissent le même langage. On démontre que tout
automate non déterministe est équivalent à un au-
tomate déterministe, comme illustré sur la figure
1.6.
Toutefois, déterminiser un automate peut
avoir un coût prohibitif puisqu’on connaˆıt des
exemples d’automates non déterministes à n
états dont le plus petit équivalent déterministe
possède 2n états. Fort heureusement, cette situa-
tion extrême se rencontre rarement en pratique.
a, b
1
b
1
a
a
b
a
2
2
3
a, b
b
a
b
3
a
4
Fig. 1.6 – Un automate non déterministe et un
automate déterministe équivalent
6 Automate minimal
Si on dispose d’un automate déterministe re-
connaissant un langage L, on peut éliminer tous
les états inaccessibles à partir de l’état initial et
tous ceux à partir desquels on ne peut pas at-
teindre un état final. On obtient ainsi la version
émondée de l’automate, qui est équivalente à l’au-
tomate de départ.
On peut ensuite minimiser l’automate. Cette
opération consiste à identifier deux états p et
q lorsque ce sont exactement les mêmes mots
qui permettent d’aller de p à un état final et
de q a un état final. L’automate obtenu apres
cette opération, appelé automate minimal de L,
est encore équivalent à l’automate de départ.
On démontre que parmi tous les automates
déterministes reconnaissant L, l’automate mini-
mal est celui qui possède le plus petit nombre
d’états.
7 Expressions rationnelles
Si on connaˆıt un automate déterministe recon-
naissant un langage L, on peut facilement tester
si un mot appartient ou non à L. En revanche,
il n’est pas toujours facile de décrire les mots
de L. Les expressions rationnelles, appelées aussi
expression régulière, permettent de résoudre ce
problème.
(bab + ca)∗(b + ε)
L’expression (a + b)∗a+
∗c
est un exemple d’expression rationnelle sur l’al-
phabet {a, b, c}. Comme on le voit, c’est une forme
d’expression algébrique utilisant les lettres de l’al-
phabet, le mot vide, un opérateur +, un opérateur
produit et une sorte d’exposant, noté ∗.
`
´
Le symbole + désigne le ou logique. Autre-
ment dit, L + L′ représente l’union des deux lan-
gages L et L′, formée des mots qui sont dans L
i
i
i
i
i
i
4
“Automates” — 2006/4/16 — 11:20 — page 4 — #4
i
i
ou dans L′. Le produit de L et L′, noté LL′, est
formé des mots qui sont produits d’un mot de L
et d’un mot de L′.
L + L′ = {u ∈ A∗ | u ∈ L ou u ∈ L′}
LL′ = {uu′ | u ∈ L et u′ ∈ L′}.
Pour L = ab + abc et L′ = ab + cab, on trouve L +
L′ = ab+abc+cab et LL′ = abab+abcab+abccab.
Comme pour les mots, on peut définir les puis-
sances d’un langage en posant L0 = {ε}, L1 = L,
L2 = LL, etc.
L’étoile d’un langage L, notée L∗, est l’union
de toutes les puissances de L :
L∗ =
n
L
.
n>0
X
De façon équivalente, L∗ est formé de tous les
mots qui peuvent s’écrire comme produit d’un
nombre arbitraire de mots de L.
les
Les langages rationnels sont
langages
décrits par des expressions rationnelles. Si A =
{a, b}, les langages suivants sont rationnels : l’al-
phabet A, qui peut s’écrire a + b,
l’ensemble
A∗ = (a + b)∗ formé de tous les mots sur l’al-
phabet A, le langage A∗aA∗ des mots contenant
la lettre a, le langage (A2)∗A des mots de lon-
gueur impaire, le langage (ab)∗ formé des mots
ε, ab, abab, ababab, . . ..
Les expressions rationnelles sont d’un usage
courant en informatique. Ainsi, les éditeurs vi et
emacs d’Unix utilisent des expressions rationnelles
pour la recherche d’expressions. Une syntaxe voi-
sine est utilisée par les analyseurs lexicaux (lex)
ou les langages de script, tels que Perl ou PHP.
8 Le théorème de Kleene
Le théorème de Kleene, clef de voûte de la
théorie des automates, affirme qu’un langage est
rationnel si et seulement s’il est reconnaissable.
De plus, la démonstration de ce théorème four-
nit un algorithme pour passer d’un automate à
une expression rationnelle et vice-versa. Le lecteur
pourra par exemple vérifier que le langage accepté
par l’automate de la figure 1.1 est le langage ra-
tionnel (aa∗ba)∗aa∗(b + ε).
Le théorème de Kleene a plusieurs consé-
quences importantes, notamment le fait que l’in-
tersection de deux langages
rationnels et la
différence de deux langages rationnels sont encore
des langages rationnels.
Pour illustrer la portée de ce dernier résultat,
cherchons une expression rationnelle représentant
le langage L des mots ne contenant pas la chaˆıne
010. Pour l’obtenir, on part de l’automate de la
figure 1.5, qui reconnaˆıt le langage des mots qui
contiennent la chaˆıne 010. La figure 1.7 donne un
automate déterministe équivalent.
Automates finis
0, 1
1
3
0
4
1
1
0
0
2
1
Fig. 1.7 – Déterminisation de l’automate
En échangeant les états finaux et non finaux, puis
en supprimant l’état 4 devenu inutile, on obtient
un automate déterministe qui reconnaˆıt L (cf. fi-
gure 1.8).
1
1
0
0
2
1
3
1
Fig. 1.8 – Un automate pour L
Il reste alors à convertir cet automate en expres-
sion rationnelle pour résoudre notre problème.
Plusieurs réponses sont possibles, par exemple
(1 + 00∗11)∗(ε + 00∗ + 00∗1).
9 Automates séquentiels
Les automates séquentiels sont des automates
déterministes qui produisent un mot de sortie. Ils
permettent de réaliser plusieurs transformations
familières telles que l’addition des entiers, la mul-
tiplication par une constante, divers codages et
décodages, le « couper-coller » dans un texte, etc.
Dans un automate séquentiel, l’état initial et
les états finaux sont étiquetés par des mots et les
transitions sont étiquetées par des couples formés
d’une lettre et d’un mot séparés par une barre ver-
ticale. La lettre figurant à gauche de la barre est
lue en entrée, et le mot figurant à droite de la barre
est alors produit en sortie (voir figure 1.9). Le mot
de sortie associé à un mot d’entrée s’obtient en li-
sant l’entrée depuis l’état initial et en produisant
les sorties spécifiées par les transitions, y compris
celles données au début par l’état initial et à la
fin par l’état final. Si on ne parvient pas dans un
état final, aucune sortie n’est produite.
1|1
0
1
0|ε
0|0
2
0|01
1|ε
00
3
1|011
Fig. 1.9 – Un automate séquentiel
i
i
i
i
i
i
“Automates” — 2006/4/16 — 11:20 — page 5 — #5
Automates séquentiels
5
i
i
Considérons l’automate séquentiel de la figure 1.9
et prenons 1001101 comme mot d’entrée. En par-
tant de l’état initial 1, et en lisant le mot de gauche
à droite, on parcourt le chemin :
0
−→ 1
1|1
−→ 1
0|ε
−→ 2
0|0
−→ 2
1|ε
−→ 3
1|011
−→ 1
0|ε
−→ 2
1|ε
−→ 3
00
−→
3
La sortie est obtenue comme produit des mots de
sortie 0, 1, ε, 0, ε, 011, ε, ε, 00, soit 01001100.
Comme pour les automates déterministes, on
peut minimiser un automate séquentiel, bien que
l’algorithme soit plus délicat à mettre en place.
Une fonction est dite séquentielle si elle peut être
réalisée par un automate séquentiel. Un résultat
essentiel assure que la composition de deux fonc-
tions séquentielles est séquentielle.
Un automate séquentiel est dit lettre à lettre
si les mots de sortie de chaque transition sont des
lettres. Un automate de Mealy est un automate
lettre à lettre dont l’état initial et les états fi-
naux sont étiquetés par le mot vide, ce qui signifie
en pratique que l’on peut ignorer ces étiquettes.
Un automate de Moore est une variante d’au-
tomate séquentiel dans laquelle les sorties sont
liées aux états traversés et non aux transitions.
On peut démontrer que tout automate de Moore
peut être simulé par un automate de Mealy et
réciproquement.
La figure 1.10 représente un automate
séquentiel lettre à lettre qui permet de réaliser la
multiplication par 3 des entiers représentés sous
forme binaire inversée. Comme son nom l’indique,
la représentation binaire inversée est obtenue en
lisant de droite à gauche la représentation binaire
usuelle. Dans le jargon des informaticiens, c’est
la représentation binaire dans laquelle le bit de
Publicité
droite a le plus fort poids.
0|0
0
ε
1|1
0|1
1|0
0|0
1
1
1|1
2
01
Fig. 1.10 – Un automate séquentiel lettre à lettre
pour la multiplication par 3
Par exemple, le mot 1011 est la représentation bi-
naire inversée du nombre 20 +22 +23 = 1+4+8 =
13. Or 13 × 3 = 39 et 39 = 20 + 21 + 22 + 25 dont la
représentation binaire inversée est 111001, ce qui
est bien la sortie obtenue en lisant 1011 en entrée
dans l’automate séquentiel de la figure 1.10.
L’addition des entiers est aussi une opération
séquentielle. Pour la réaliser, on écrit les en-
tiers n et m en binaire inversé et on rajoute
éventuellement des zéros pour que les deux
représentations aient la même longueur. Par
exemple, si n = 22 et m = 13, on prend pour n la
représentation 01101 (car 2 + 4 + 16 = 22) et pour
m la représentation 10110 (car 1 + 4 + 8 = 13). On
considère le couple (01101, 10110) comme un mot
0 ) , ( 0
sur l’alphabet
obtenu en su-
perposant les deux représentations et en lisant
˘
les colonnes : ( 0
1 ) ( 0
1 ) ( 1
0 ). L’automate qui
réalise l’addition est représenté sur la figure 1.11.
Il a pour alphabet de sortie {0, 1}. Les états 0 et 1
correspondent respectivement a l’absence et a la
présence d’une retenue.
1 ) , ( 1
1 )
( 0
0 ) , ( 1
1 ) ( 1
0 ) ( 1
¯
( 0
0 ) |0
( 0
1 ) |1
( 1
0 ) |1
ε
ε
0
( 1
1 ) |0
( 0
0 ) |1
1
1
( 0
1 ) |0
( 1
0 ) |0
( 1
1 ) |1
Fig. 1.11 – Un automate séquentiel lettre à lettre
pour l’addition
Sur notre exemple, on trouve en sortie 110001, qui
code bien 35 = 1 + 2 + 32.
Un automate de Mealy suffit pour réaliser la
division d’un polynôme à coefficients dans Z/2Z
par le polynôme X 2 + X + 1. Pour cela, on asso-
cie à chaque mot a0a1 · · · an sur l’alphabet {0, 1}
le polynôme a0X n + a1X n−1 + a2X n−2 + . . . +
an−1X + an à coefficients dans Z/2Z.
0|0
1|0
0
1
0|0
1|0
1|1
X
0|1
0|1
X + 1
1|1
Fig. 1.12 – Division d’un polynôme à coefficients
dans Z/2Z par X 2 + X + 1
Le quotient de la division est donné par le mot
de sortie et le reste par l’état d’arrivée. Ainsi le
mot d’entrée 10001 donne en sortie le mot 00110
et arrive dans l’état X + 1, ce qui correspond à la
formule X 4 +1 = (X 2 +X +1)(X 2 +X)+(X +1).
Les exemples qui précèdent sont génériques.
Les automates séquentiels permettent de réaliser
la multiplication et la division entière par une
constante. Si on travaille sur des polynômes
à coefficients dans un corps fini,
la
multiplication ou la division par un polynôme
l’addition,
i
i
i
i
i
i
6
“Automates” — 2006/4/16 — 11:20 — page 6 — #6
i
i
Automates finis
constant peuvent être réalisées par des automates
séquentiels.
En revanche, ni
la multiplication, ni la di-
vision de deux entiers ne sont des opérations
séquentielles. De fait, la conception d’un circuit
électronique réalisant la multiplication de deux
entiers est beaucoup plus difficile que celle d’un
additionneur.
Voici un dernier exemple, de nature assez
différente des précédents. Un filtre à rebonds lit
une suite de bits commençant et finissant par 0 et
change chaque 0 en 1 s’il est encadré par des 1, et
chaque 1 en 0 s’il est encadré par des 0, les autres
bits étant inchangés. Ainsi, si le mot d’entrée est
01011010, la sortie sera 00111100. La figure 1.13
représente un automate séquentiel qui réalise un
filtre à rebonds.
0|0
0
0|0
1
ε
1|ε
0
4
0|ε
0|00
0|0
1|1
2
1|11
3
1|1
Fig. 1.13 – Un filtre à rebonds
Ce type de filtre est utilisé en traitement d’images.
Chaque ligne de l’image est constituée d’une suite
de bits. Les éventuelles imperfections de l’image,
dues a une mauvaise qualité du film ou a un défaut
de transmission peuvent être éventuellement cor-
rigées de cette façon.
10 Utilisation pratique des automates
Les automates interviennent souvent dans la
modélisation de problèmes concrets. C’est d’ail-
leurs un bon réflexe, face a un probleme discret
(i.e. ne faisant pas intervenir de nombres réels),
de commencer par regarder si une approche par
automate n’est pas envisageable. Le modèle s’ap-
plique même a certains problemes continus. Il est
vrai que les chaˆınes de Markov utilisées en proba-
bilité sont de proches parents des automates.
Nous présentons ci-dessous quelques applica-
tions pratiques des automates. Toutefois, nous ne
dirons que quelques mots de l’une des applica-
tions les plus importantes, la spécification et la
vérification de systèmes (électroniques ou infor-
matiques), car elle est traitée en détail au chapitre
£Automates et vérification£.
10.1 Analyse lexicale
Les automates finis sont utilisés en com-
pilation (voir chapitre £Compilateurs£) pour
constituer des analyseurs lexicaux, qui permettent
notamment de repérer les mots-clés d’un lan-
gage de programmation. L’automate de la fi-
gure 1.14, dans lequel les états finaux sont en
noir, reconnaˆıt un ensemble de mots-clés du
langage Java : do, double, final, finally,
this, throw, throws.
l
l
e
l
y
f
d
t
o
i
u
n
h
i
b
a
s
r
o
Fig. 1.14 – Mots-clés en Java
w
s
10.2 Modélisation de systèmes finis
On peut (au moins théoriquement !) utiliser
des automates pour modéliser des situations dans
lesquelles il n’y a qu’un nombre fini de confi-
gurations possibles. Par exemple, la figure 1.15
représente un modele tres rudimentaire de monte-
charge. Les états symbolisent les étages. Le monte-
charge est muni de deux boutons, D et M qui per-
mettent de descendre ou monter d’un seul étage à
la fois. Le bouton D est inactif au rez-de-chaussée,
de même que M au deuxième étage.
D
0
M
D
1
M
D
2
M
Fig. 1.15 – Un modèle de monte-charge
L’exemple qui suit repose sur une devinette
classique. Un passeur doit faire passer d’une rive
a l’autre un loup, une chevre et une salade. Tou-
tefois, son bateau ne peut transporter qu’un seul
passager en dehors de lui-même. Bien entendu, il
ne peut laisser le loup et la chèvre seuls sans sur-
veillance, sinon le loup mangera la chèvre. Même
chose pour le couple chevre-salade, car la chevre
rêve de manger la salade. Pouvez-vous aider le
passeur ?
On peut modéliser ce problème par l’automate
de la figure 1.16.
i
i
i
i
i
i
“Automates” — 2006/4/16 — 11:20 — page 7 — #7
Utilisation pratique des automates
7
i
i
∅
C
CP
P
L
C
S
CLP
C
L
CP S
C
S
CL
P S
LS
C
L
LP S
S
Publicité
P
Fig. 1.16 – Le loup, la chèvre et la salade
Chaque état représente les protagonistes sur la
rive opposée. Ainsi l’état CP signifie et que la
chèvre et le passeur sont sur la rive opposée (et
que le loup et la salade n’ont pas encore traversé).
Comme le précise l’énoncé, certains états sont in-
terdits. L’état initial est ∅ et l’état final et CLP S.
Les actions possibles (qui constituent donc l’al-
phabet de l’automate) sont les suivantes :
(1) traverser seul (P)
(2) traverser avec le loup (L)
(3) traverser avec la chèvre (C)
(4) traverser avec la salade (S)
On obtient ainsi l’automate de la figure 1.16 qui
donne immédiatement les deux solutions les plus
courtes : CP LCSP C et CP SCLP C.
10.3 Modélisation de systèmes infinis
Les automates permettent aussi de modéliser
certains systèmes de taille non bornée, ou même
infinie. Ces techniques sont particulièrement uti-
lisées pour résoudre les problèmes d’analyse et
de vérification de protocoles (nécessité de satis-
faire certaines contraintes logiques, comme l’ab-
sence de blocage, ou l’exclusion mutuelle). Le
plus souvent, on utilise des automates travaillant
sur des mots infinis (voir chapitre £Automates
et vérification£), mais l’exemple ci-dessous utilise
uniquement des automates traditionnels.
Considérons un réseau de processus alignés
qui communiquent avec chacun de leurs voisins,
conformément à la figure 1.17.
1
2
3
4
5
6
. . .
Fig. 1.17 – Un réseau de processus
la configuration du système par un mot sur l’al-
phabet {T, N }, dont la i-ème lettre vaut T ou N
selon que le processeur i possède on non le témoin.
S’il y a k processeurs, la configuration initiale est
donc représentée par le mot du langage T N k−1.
On représente ensuite la transmission du
témoin par l’automate séquentiel de la figure 1.18.
On peut donc considérer cette opération comme
une fonction séquentielle τ : {T, N }∗ → {T, N }∗.
N |N
N |N
T |N
N |T
Fig. 1.18 – La transmission du témoin
La configuration du systeme apres n transmis-
sions de témoin s’obtient en itérant n fois la fonc-
tion τ à partir de la configuration initiale.
car
Cet exemple semblera peut-être élémentaire
au lecteur,
fonction
l’itération de
séquentielle se calcule ici sans difficulté. Mais
c’est loin d’être toujours le cas ! Considérons par
exemple l’automate séquentiel de la figure 1.19.
la
0|0
1|1
2
ε
1|1
0|ε
1
ε
1|0
3
01
0|0
0|1
4
1|0
1
1|1
Fig. 1.19 – Un automate séquentiel
0|0
5
ε
Si on utilise la représentation binaire inversée des
entiers, cet automate calcule une fonction f bien
connue des programmeurs, définie par :
f (n) =
si n est pair
n/2
3n + 1 sinon
(
Une conjecture célébre affirme que, partant d’un
entier quelconque n, on arrive toujours à 1 en
itérant f . Par exemple, en partant de n = 31, on
trouve la suite 31, 94, 47, 142, 71, etc., qui abou-
tit a 1 apres 106 itérations. La conjecture a été
vérifiée pour n 6 5,764 · 1017, mais n’est toujours
pas résolue à ce jour. Elle montre en tout cas que
l’étude de l’itération des fonctions séquentielles
présente des difficultés insoupçonnées.
Ces processus réalisent un calcul en se passant un
témoin, qui est initialement détenu par le proces-
sus 1. À chaque étape du calcul, un processeur
peut passer le témoin à son voisin de droite. Com-
ment formaliser ce système ? On peut représenter
10.4 Industries de la langue
Les automates sont très utilisés dans ce qu’on
appelle les industries de la langue :
informa-
tique linguistique, traitement des langues na-
turelles, correction orthographique automatique,
i
i
i
i
i
i
8
“Automates” — 2006/4/16 — 11:20 — page 8 — #8
i
i
Automates finis
génération automatique de texte, réalisation de
dictionnaires électroniques, etc.
L’automate non déterministe de la figure 1.20,
dû au linguiste Maurice Gross, indique l’ordre de
succession des particules préverbales en français
(sans tenir compte des élisions). Par exemple les
phrases je ne le lui ai pas donné ou il n’y en a ja-
mais ! sont correctes, mais la phrase il se le lui
est fait volé ne l’est pas... Afin d’alléger la fi-
gure 1.20, seules certaines particules préverbales
sont représentées. Pour les obtenir toutes, il suffit
d’opérer les substitutions suivantes :
je → je, tu, nous, vous, on, ce
me → me, te, nous, vous, ε
il → il, ils, elle, elles
le → le, la, les, ε
lui → lui, leur, ε
y → y, ε
ne → ne, ε
se → se, ε
en → en, ε
je
il
ne
le
lui
y
ne
me
le
en
ne
se
Fig. 1.20 – Suites de particules préverbales
Les automates sont également utilisés dans
la réalisation de dictionnaires électroniques. La
représentation la plus na¨ıve d’un dictionnaire
consiste à conserver la liste de tous les mots du
dictionnaire. Une structure d’arbre permet d’obte-
nir une représentation plus concise. Ainsi, l’arbre
de la figure 1.21 représente l’ensemble des mots
{bal, bals, ban, bans, do, don, dons, doux, pal,
pals, pan, pans}. Mais l’utilisation d’un automate
(voir figure 1.22) donne une représentation beau-
coup plus compacte.
Le gain en place peut être très important.
Pour un dictionnaire de Scrabble anglais,
la
représentation par arbre nécessite 117 150 nœuds
et 780 kilo-octets de mémoire. La représentation
par automate nécessite seulement 19 853 états et
175 kilo-octets de mémoire, soit un gain de près
de 80%.
Pour le Dictionnaire électronique des formes
fléchies du français (DELAF) réalisé par les lin-
guistes de l’université de Marne-la-Vallée, qui
contient 802009 entrées
sur un alphabet de
90 lettres (minuscules et majuscules accentuées,
chiffres, et autres signes), la représentation par
arbre nécessite 2203261 nœuds, alors que l’auto-
mate minimal ne possède que 273716 états.
De plus, on dispose d’algorithmes très efficaces
pour les opérations de recherche et de mise à jour
pour ces dictionnaires électroniques. Si on dispose
d’un dictionnaire sous forme d’automate, on peut
ensuite facilement réaliser un programme informa-
tique champion du monde de Scrabble...
B
D
P
A
O
A
L
N
N
U
L
N
S
S
S
X
S
S
Fig. 1.21 – Représentation par arbre
B
P
D
A
O
L
N
N
U
S
X
Fig. 1.22 – Représentation par automate
10.5 Recherche d’information
Tout ce qui concerne l’analyse de textes et
l’extraction d’information fait grand usage des
automates. Les automates interviennent souvent
dans la conception d’algorithmes de recherche
d’information. Nous nous contenterons ici de
décrire le principe de la recherche dans un texte,
dans lequel les automates interviennent de façon
naturelle.
Supposons que l’on cherche à déterminer si la
chaˆıne ada apparaˆıt dans le texte abracadabra.
Cela revient à tester si le mot abracadabra ap-
partient au langage A∗adaA∗. Comme ce langage
est rationnel, il suffit de trouver son automate mi-
nimal, puis de vérifier que le texte est bien accepté
par cet automate.
Plus généralement, rechercher un mot u dans
un texte conduit à calculer l’automate minimal
du langage A∗uA∗. Si n est la longueur du mot
i
i
i
i
i
i
“Automates” — 2006/4/16 — 11:20 — page 9 — #9
Extensions de la notion d’automate
9
i
i
u,
il est facile de construire un automate non
déterministe à n + 1 états pour ce langage (voir la
figure 1.5, pour u = 010). Et, chose remarquable,
l’automate minimal de ce langage possède lui aussi
n+1 états. La figure 1.7 illustre cette construction
pour la chaˆıne 010.
10.6 Autres applications
Citons également la manipulation d’images
parmi les applications récentes. La compression,
et les transformations usuelles telles que rota-
tions, translations, homothéties peuvent en effet
être réalisées par des automates séquentiels appro-
priés. N’oublions pas la théorie de la commande
et du contrôle, où certains algorithmes récemment
développés sont entièrement basés sur les auto-
mates. En théorie des jeux, dont les applications
sont assez diverses, certaines st...