You are on page 1of 8

Automates a etats finis

Le problems qui se pose est de pouvoir rseonnaitre si un mot donne appartient it un langage donne. Un reconnaisseur pour un lang age est un programme qui prend en entree une chaine x et repond oui si x est una phrase (un mot) du langage et non sinon,

Theorerne 3.1 Les automates it etats finis (A.E.F.) sont des reconnaisseurs pour les langages nig1lliers.

3.1 Automates a etats finis

Definition 3.2 Un automate a etats finis (AEF) est dejini par

• un ensemble flni E d'etats

• un etat eo EE distingue fomme etant l'etat initial

• un ensemble fini T (T indus dans E) d'etats distingues comme etats finaux (ou etats terminaux)

• un alphabet :E des symboles d;entree

• Me fonction de transitions ~ qUi d tout couple forme d'un etat ei d'un symbole de :E fait eorresporulre un ensemble (eventuellement vide) d'etats : .6..(ei, a) = {eip ... , ei,,}

Exemple : :E = {a, b},. E = {O, 1, 2, 3}, eo = 0, T = {3}

.6..(0, a) = {O, 1}, 6.(0, b) = {o},. 6.(1, b) = {2}, .6..(2, b) = {3} (et 6.(e, I) = 0 sinon) Representation graphique :

a

b

a

b

Convention: on dessinera un triangle pour l'etat initial et un carre pour les etats finaux

Representation par une table de transitions;

etat a b
° 0,1 °
1 - 2
2 - 3
3 - - eo""OetT",,{3}

Definition 3.3 Le langage reconnu par un automate est l'ensemble des chaines qui peHnettent de passer de l'€tat initial it un etat terminal,

l' automate de I' exemple precedent accepte Ie langage regulier (1' expression reguliere) (alb) * abb

Un automate peut trss facilemsnt etre simule par un algorithme (et done on peut ecrire un programme simulant un AEF). C'est encore plus facile si l'automate est deterministe,. c'est a dire lorsqu'il n'y a pas a choisir entre 2 transitions). Ce que signifie done Ie thsorem« 3.1 c'est que I'on peut ecrire un programme reconnaissant tout mot (toute phrase) de tout langage regulier. Ainsi, si l'on veut faire l'analyse lexicale d'un langage regulier, il suffit d'ecrire un programme simulant I'automate qui lui est associe,

3.2 Construction d'un AFN a partir d'une E.R.

(Construction de Thompson, basee Sur la recursivite des expressions regulieros)

Definition 3.4 On appelle e-transition, une tmnsition par le Bymbole E entre deux etats.

Pour une expression raguliere B, on note A(a) un automate reconnaissant cette expression. - automate acceptant la chaine vide

.,6;--___'''~O

- automate acceptant la lettre a

a

,6;--__.,_O

- automate acceptant (r)( B)

E

1. mettre une s-transitlcn de chaque etat terminal de A(r) vsrs l'etat initial de A(s)

2. les etats terrninaux de A(r) ne sont plus tarminaux

3. Ie nouvel etat initial est celui de A (r)

4. (I'ancien etat initial de A(s) n'est plus etat initial} - automate reconnaissant rls

E

1. creer un nouvel etat initial q

2. mettre une s-transitlcn de q vers les etats initiaux de A(r) et A( s)

3. (los stats initiaux de A(r) et A(B) ne sont plus etats initiaux) - automate reconnaissant r+

mettre des e-transition de chaque etat terminal de A(r) vers son etat initial

b

FIG .. 3.1 ~ Automate reeonnaissant (ablbc.a)+bb(ablcb)*a

Exemple : (ablbca)+bb(ablcb)*a correspond a l'automate donne figure 3.1.

3.3 Automates finia det,ermllinistes (AFD)

Detinit,io.n 3.5 On ,appelle e-eranaltlon, 'line transition par I,e symbole E' entre aeux et,ats.

Delinit,ion 3.6 Un automa.te fini est dit deterministe lOf'squ''il n,e possede pas de e-tronsitionet lorsque pour chaque et,at e et pour chaque symbole a, :ii Y' II au pills ua arc etiquet€ a qui quiUe e

L'automate donne en exemple preeedemment qui reconnait {alb)'abb n'est pas deterministe, puisque de l'etat 0, avee la lettre a, on peut aller soit dans I'etat 0 soit dans I 'etat 1.

Les AFD sont plus faciles a simuler {pas de choix dans les transitions, done jarnais de ret ours en arriere a faire). Il existe des algorithmes permettant de determinisel!" un automate non deterministe (c'est a dire de construire un AiFD qui reconnait le meme langage que l'AFNl donne).L'AFD obtenu comports en generalplltB d'etats que l'AFN, done Ie programme le simulant oecupe plus de memoire ..

3.3.1 Dete!FrninJsation d'un AFN qui ne contient pas d'€-transitiions

Principe; eonsiderer des ensembles d'etats plut6t que des etats.

L Partir de I'etat initial : E ;;;;;; {eo}

2. Construire Btl) l'ensemble des etats obtenus a partir de E par Ia transition a : E(l) = aCE, a)

3. Recommencer 2 pour toutes les transitions possibles et pour cheque nouvel ensemble d'etat E{i) 41. Tous les ensemble d'etats E(i)contenfmt all moins un etat terminal deviennent terminaux

5. Renumeroter alors les ensemble d'etats en tant que simples etats .

Exemple : appliquons I'algorithme sur l'antomate represente figure 3.2 dont 10. table de transition est:

etatlalb

01 0,2 1
1 3 0,2
2 3,4 2
3 2 1
4 - 3 80 =0 et T = {2,3}

1 AFN pour Au!:oma!e Fini Non Mterm!lIis!e

b

FIG, 3,2 - Automate non deterministe

"etat" a b
° 0,2 1
0;2 0;2;3,4 1,2
1 3 0,2
0;2;3,4 0;2;3,4 1;2;3
1;2 3A 0,2
:3 2 1
11,2,3 2,3,4 0,1,2
3,4 2 1,3
2; 3A 2 {I 1 2
1 3 4
2 5 1
3 3 ,6
4 7 iI
5 8 2
6 9 10
7 8 11
8 7 8
9 9 6
10 3 10
11 12 10
12 9 4 2,3,4 2,3,4 1,2,3

0,11,2 0;2;3,4 0;1;2

1;3 2;3 0;1;2

2;3 2,3,4 1,2

avec eo = 0 et T= {I, 3, 4, .5; 6, 7, 8, 9,10,11, 12} .. On obtient l'automate fi,gure3.3.

FI.G. 3.3 - Automate deterministe

3.3.2 Determlnlsatdon dun AFN (cas general)

Principe: considerer l'e-fermetllr€ des ensembles d'etats

Definition 3.7' On appeu,e. c-fermet1l.lre de l 'ensemble d ;etats T ';:::0 {e., ... ,en} ,I 'ensemble des &tats acceseibles depuis 'Un tHat e, de T paT des e-treneition»

e-fermeture] {eli.'" ell} = {el'., .. ,en} U [e tq 3e, avec i = 1,2, ... ,n tq ei ~~~ ... ~ e]

Caleul de l'e-fermeture de T = {el,' .. ,en} :

Mettre tous les etats de T dans une pile P Initialiser e-fermetme(T) a T

Tant que P est non vide faire

Soit p I'etat en sommet de P depiler P

Pour chaque 'etat e tel qu'il y a une s-transition entre p et e faire Sie n'estpas deJa dans EAerrn.etllre(T)

ajoutere ill e-fermeturef'I']

empiler e dans P

finsi

finpour fin tantque

etat II a I b I c I E'
0 2 01 ]
Exemple. Soit l'AIPN 1 3 4 eo = [I et T = {4}
2 ],4 [I
3 1 432

On a e-fermeture({O}) = {a, I}, e-fermeturet l l , Z}) = {i, 2, a}, e-fermeture] {3, 4}) = {3,4, 0, 1, 2},

Determinisation :

L Partir deI'e-ferrneture de l'etat initial

2:. Rajouter dans la table de transition toutes les e-fermetures des nouveaux "etats" produits, avecleurs

transitions

3. Recommencer 2 jusqu'a ce qu'il n'y ait plus de nouvel "etat"

4. TOilS Ies "etats" contenant au moins lin etat terminal deviennent terminaux

5. Renumeroter alors les etats.

SurPexemple, on obtient

etat II a

b

c

etat II a I b I c

o.r 2,3,0,1 4,2.,0,1 0,1
0,1 ,2,3 0,1,2,3 0,1,2;4 0),4,2
0,1,2,4 0,1,2,3 0,1,2;4 0,1,3,4,2.
0,1,2,3,4, 0,1;2,3 0,1,'2,4 0,1,2:,3,4 ° 1 2 0
1 1 2 2
2 1 2 3
3 1 2 3 avec eo = 0 et T= {2,3}

3.4 Minimisation d'UltIh AFD

But: obtenir un automate ayant le minimum d'etats possible. En effet, certains etats peuvent HIe equivalents. Principe: On definit des classes d'equivelence d'etats par raffinements suceessifs. Chaque classe d'equivalence obtenue forme un seul merne etat dill nouvel automate.

1 - Faire deux classes: A contenant les etaUi terminaux et B eontenant les etats non terminaux.

2 - S'il existe un symbole a et deux etats ei et e2 d'une rneme classe tels que Ll(el, a) et Ll(e2' a) n'appartiennent pas a la rneme classe, alors creer une nouvelle elasse et separer 61 et e2. On laisse dans la meme elasse tous les etats qui donnent un etat d'arrivee dans lamerne classe.

3 - Recommencer 2 jusqu'a ce qu'il n'y ait plus de classes .a separer. 4 - Chaque classe restante forme un etat du nouvel automate

Reprenons I 'exemple de la figure 3.3 :

(1) A "" {O, 2} et B ;:::0 { 1, 3,4,5,6, 't, 8,9, 10,11, 12}

(2) • Ll(O,.a) et 6.(2, a) n'appartiennent pas a la meme elasse, alors A se casse 'en A ;:::0 {OJ et C;:::o {2}. 011 a done les 3 classes A, B, C

" 8.(5, b) et .6.(1, b) n'appartiennent pas ala meme classe, alors B se casse en B;;;;;; {1,3,4,6, 7,8, g, 10, 11, 12} et D;;;;;; {5}.

Tous les etats de B donnent la meme classe par a (classe D) et par b (classe C) (3) <;a ne bouge plus.

On obtient done l'automate it 4 etats (correspondants aux 4 classes) de la figure 3.4.

FIG. 3A ~ Automate minimum

Cet automate reconnait Ie me me langage que l'AFN que nous avions au debut.

3.5 Calcul d 'une E.R. decrite par un A.E.F ..

On a dit qu'un AEF et une ER c'etait pareil, on a vu comment passer d'une ER it une AEF, maintenant il reste it passer d'un AEF a une ER.

On appelle L, Ie langage que reconnaitrait l'automate si ei etait SOn etat initial. On peut alors ecrire un systems d'equations liant tous les L, :

" chaque transition aCe" a) ;;;;;; ej permet d'ecrire l'equation L. ;;;;;; aLj

• pour chaque eiE T on a l'equation Li ;;;;;; f

• les equations L. ;;;;;; c;: et L, ;;;;;; fJ se regroupent en L. ;;;;;; 0: I~

On resoud ensuite le systeme (on eherehe a. calculer Lo) en remarquant juste que

Proprh~te 3.8

S1 L ;;;;;;c;:LI$ niors L ;;;;;; a* fJ

• Attention l si on a L ;;;;;; aL, va n'implique absolumant pas que L ;;;;;; o". Ca indique [uste qu'on est dans une impasse (on boucle) et done on a df se planter quelquepart.

• si On a L;:::o aLlbLlc, r,;a s'ecrit encore L ;;;;;; (alb)Llc ee qui implique que L ;;;;;; (aIWc. On pourrait faire aussi :

L"" aLlbLlc ;;;;;; aLI(bLlc) ~ L;;;;;; a*(bLlc) ;;;;;; (n*bL)I(a*c) ~ L;;::; (a*b)*u'c ce qui exprime le meme langage mais en moins Iisible/

Exemple cornplet : soit I'automate

c

c

REMARQUE.

A une expression reguliere pent correspondre plusieurs AEF. A un AEF peut correspondre plusieurs expressions regulieres. Mais a chaque fois c'esc en fait le{la) meme AEiF (expression) mais sous des ecritures differentes, En partieulier, c'est toUjOUTS le meme unique lan:gage qui est deerit,

3.6 Programmat ion d!'un AEF

nest tres facile d'ecrire un programme simulant un AEf' (e'est encore plus facile si c'est un AFD)~ Par exemple

void Etat 1 () {

char 0;

c= getc!Il.a.rO ; ST,;,Ticth(o) {

case "a'

Etat20 ; break; Etat50 ; break; Etat67() ; break;

case 'b'

caae ~ c '

defu!lt ERREij!RO;

} }

void Etat365240

Mais bon ce n'est pas evident du tout dans tout Ija de s'y retrouver si on veut modifier l'autornete, Ie completer,

Heureusement, il existe des outils pour eCfire des programmes simulant des automates it partir die la simple donnee des expressions regulieres, Par exemple ; flex

Exemple de programme en flex:

let1ere !illI!ot

'%~

cad ~dr pea {!iID.ot}

h~ ~ainO {

yylexO; }

[a.~zA~:Z;] {hrtt.re}+

(printf (, '!iID.ort. de rtre' ~) ;}

{printf ( , 'parents ,over shouldlers.1') ~](prin tf ( , '%;8" :I :I yyt ext) ;:}

You might also like