Chapitre 2

Automates dՎtats finis
et langages rguliers

2.1      Automates d'tats finis

      Dfinition informelle

      Notations

      Reconnaissance d'un mot

      Dfinition formelle des automates finis dterministes

      Automates finis non-dterministe

      Automates avec e-transition

      quivalences d'automates

2.2      Transformation d'une expression rgulire en un automate

      Proprit

      Cas de base

      Rcurrence

.     limination des e-transitions

2.3      Transformation d'un automate en une expression rgulire

      Par rduction d'automates

      Par rsolution d'quations

2.4      Dterminisation et Minimisation

      Mthode de dterminisation

      Relation d'quivalence sur les langages rguliers

2.5      Autres oprations sur les automates

      Automate complmentaire

      Automate miroir

      Intersection de deux automates

2.6      Conclusion

 

 

 

Dans ce chapitre, nous prsentons et tudions la classe de machines abstraites que sont les automates tats finis rguliers. Ces automates sont strictement quivalents en puissance aux langages rguliers. Ils constituent le niveau le plus faible des machines et langages qui nous tudierons.

Aprs avoir prsent les diffrentes variations possibles sur les automates rguliers, nous abordons, en dtail, la transformation dune expression rgulire vers un automate. Elle est prsente selon deux approches distinctes quoique strictement quivalentes : la rduction dautomates et la rsolution dՎquations. Certains problmes sur les expressions rgulires peuvent tre aisment rsolus en passant par les automates les reconnaissant. De faon similaire, nous prsentons ensuite la transformation inverse, dun automate en une expression rgulire.

La  dterminisation  permet de passer dun automate non-dterministe, souvent facile trouver, son quivalent dterministe. Cette transformation se base sur la dfinition dune relation dՎquivalence sur les tats.

Enfin, plusieurs oprations sur les automates sont introduites : intersection, complmentaire, image miroir. Ces oprations sont en gnral faciles sur les automates mais difficiles raliser sur les expressions rgulires.

1.      Automates dՎtats finis

1.1.    Dfinition informelle

Un automate effectue un ensemble dactions et fournit un rsultat. En ce sens un sagit dun algorithme. Lobjet de cette classe dalgorithmes est de reconnatre si un mot donn appartient un langage rgulier que dcrit lautomate.

 

Lautomate dՎtats finis (dterministe ou non) est compos de :

      Une bande (infinie) de lecture comportant des cases. Chaque case contient un caractre de V ;

      Une tte de lecture dsignant une case particulire ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      Un dispositif de contrle pouvant prendre un nombre finis dՎtats. Ce dispositif peut tre dans lՎtat 0, 1, 2, 3,

 

      Lautomate dispose dune table de transition (son programme). Cette table de transition prcise le changement dՎtat de lautomate :

 

 

a

b

c

s

0

1

-

2

 

 

 

1

-

1

 

 

 

 

2

1

2

 

 

 

 

 

 

 

 

 

 

q

 

 

 

 

q

 

 

 

 

 

 

 

 

Lautomate tant dans lՎtat q. Sa tte de lecture dsigne une case contenant le symbole s. Alors :

      Lautomate passe dans lՎtat q ;

      Sa tte de lecture se dplace sur la case suivante (celle situe immdiatement droite de la case de s).

 

Parmi lensemble des tats de lautomate, on distingue les tats initiaux (tats dentre) et les tats finals (tats de sortie). Un tat initial peut aussi tre final. En gnral, on s  arrange  pour navoir quun seul tat initial.

 

On note L(A) lensemble des mots reconnus par lautomate A. Pour les automates dՎtats finis , cet ensemble est un langage rgulier.

 

1.2.    Notations

Une notation graphique quivalente la notation tabulaire est propose. Dans le reste de ce cours on tendra privilgier la notation graphique plus immdiatement lisible. Toutefois, il est parfois ncessaire de passer de lune lautre.

La notation tabulaire est celle utilise par les algorithmes de construction et de transformation dautomates.

 

> Par exemple, les deux reprsentations ci-dessous sont quivalentes :

 

 

a

b

c

0

1

-

2

1

-

1

-

2

1

2

-

 

 

 

<

 

Sous la forme tabulaire, on indique par une flche entrante () les tats initiaux. On indique par une flche sortante () les tat finaux. Les transitions inexistantes laissent des cases vides (-).

Sous la forme graphique, on indique les tats initiaux laide dune flche sans origine. Les tats finaux sont barrs.

 

Une notation fonctionelle est aussi parfois utilise. Celle-ci est proche de la dfinition formelle. Elle introduit une fonction de transition : d(un tat, un lment de V) = un tat.

 

> Pour lautomate ci-dessus, on a la notation fonctionnelle suivante :

V = {a, b ,c}

tats = {0, 1, 2}           tats initiaux = {0}                 tats finals = {1}        

d(0, a) = 1,       d(0, c) = 2,      d(1, b) = 1,      d(2, a) = 1,      d(2, b) = 1

<

 

On remarquera quune transition inexistante est quivalente une transition f, et que lautomate prcdent pourrait tre (beaucoup plus lourdement) crit :

 


>

 

a

b

c

0

1

f

2

1

f

1

f

2

1

2

f

 

 

<

 

Un automate est dit  bien form  sil vrifie les conditions suivantes :

      il nexiste aucune transition portant f ;

      tous les tats sont ateignables partir dun tat initial.

Sauf indication contraire on ne considrera que des automates bien forms.

 

Un automate est dit  satur  sil vrifie les conditions suivantes :

      il nexiste aucune transition portant f ;

      de chaque tat partent au moins une transition pour chaque lment de V.

 

1.3.    Reconnaissance dun mot

Un mot est reconnu par lautomate si, partir de la position initiale (automate dans lՎtat initial, et la tte de lecture dsignant le premier caractre de ce mot), lautomate parcours le mot en entier et termine son parcours dans un tat final.

 


> Par exemple, soit lautomate suivant :

 

 

a

b

c

0

1

-

-

1

2

1

3

2

-

-

-

3

2

3

 

 

 

 

 

Sans le dmontrer formellement, nous pouvons  deviner  que cet automate reconnat le langage dcrit par lexpression rgulire :

ab*(a + cb*a)

 

Faisons fonctionner lautomate sur le mot  abba 

1)

 

 

 

a

b

b

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

 

 

a

b

b

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3)

 

 

 

a

b

b

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)

 

 

 

a

b

b

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5)

 

 

 

a

b

b

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lautomate a parcouru compltement le mot et il sarrte dans lՎtat final q2. Le mot est donc reconnu.

 

Essayons pour le mot  abab  :

1)

 

 

 

a

b

a

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

 

 

a

b

a

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3)

 

 

 

a

b

a

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)

 

 

 

a

b

a

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

La transition (q2, b) nest pas dfinie. Lautomate sarrte sans avoir parcouru le mot. Le mot nest donc pas reconnu.

 

Essayons pour le mot  abc :

1)

 

 

 

a

b

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

 

 

a

b

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3)

 

 

 

a

b

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)

 

 

 

a

b

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lautomate a parcouru compltement le mot, il sarrte donc dans lՎtat q3 qui nest pas un tat final. Le mot nest donc pas reconnu.

<

 

Nous avons deux cas o lautomate refuse un mot (cest--dire que le mot nappartient pas au langage reconnu par lautomate) :

      soit, avant davoir parcouru compltement le mot, lautomate se trouve bloqu dans un tat non final ;

      soit, aprs avoir parcouru compltement le mot, lautomate ne se trouve pas dans un tat final.

 

1.4.    Dfinition formelle des automates finis dterministes (AFD)

Un automate dՎtat fini dterministe est un quintuplet :

Adet= (VT, Q, Q0, F, m)

o

Q est un ensemble fini dՎtats ;

Q0 Q ;

F Q ;

VT est un ensemble fini de symboles le vocabulaire ;

m est une fonction de transition : Q VT Q ;

 

La fonction de transition induit une relation binaire (note a) sur lensemble Q VT* de la manire suivante :

(q, sw) a (q, w) m(q, s) = q

 

Soit a* lextension rflexive et transitive de la relation a.

" q Q, w V*        (q, w) a* (q, w)

 

" q, q, q Q, w, w, w V*

(q, w) a (q, w) (q, w) a* (q, w) Þ (q, w) a* (q, w)

 

Alors w L(A) si et seulement si :

$ q F : (q0, w) a* (q, e)

Le mot w  appartient au langage reconnu par lautomate si il existe un chemin de lՎtat initial un tat final qui dcrit ce mot.

 

e L(A) q0 F

e est un mot du langage reconnu par lautomate si lՎtat initial est final.

1.5.    Dfinition formelle des automates finis non dterministes (AFN)

Pour un automate dՎtat fini non dterministe, la fonction de transition est dfinie sur des ensembles. On a donc :

Andet= (VT, Q, Q0, F, m)

o

Q est un ensemble fini dՎtats ;

Q0 Q ;

F Q ;

VT est un ensemble fini de symboles le vocabulaire ;

m est une fonction de transition : Q VT (Q) ; (Q) reprsente les parties de Q.

 

La relation de transition devient :

(q, sw) a (q, w) q m(q, s)

 

> Par exemple, soit lautomate non-dterministe suivant :

 

 


0

1

0

0

0, 1

1

-

-

 

 

Cet automate permet la reconnaissance des mots sur VT = {0, 1} se terminant par 1.

 

 

Faisons fonctionner lautomate sur le mot  01 

1)

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3) ce stade, nous avons, le choix entre deux possibilits, choisissons la transition vers q0.

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ce fonctionnement rejte le mot.

 

Ressayons, en choisissant lautre chemin.

1)

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3) Choisissons la transition vers q1.

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ce fonctionnement accepte le mot.

Nous avons mis en vidence une faon daccepter le mot. Le mot appartient donc L(A).

<

 

On remarquera quil est souvent plus facile de trouver un automate non-dterministe que dterministe. Nous verrons dans la suite quil est possible de  dterminiser  un automate.

 

4 Construisez lautomate du langage L sur V={a, b} ne contenant que les mots qui se termine par  abb .

 

Rponses : Lautomate non-dterministe est trs simple.

 

 

 

 

 

 

Lexpression rgulire est galement simple :(a+b)*abb. Comment peut-on procder pour la  deviner  ?

Essayez de construire une version dterministe de lautomate. Que constatez-vous ?

3

 

On remarquera quun automate non-dterministe est souvent plus petit que sa version dterministe. Cependant, son excution est plus complexe. Il faut en effet se remmorer chaque point de choix et y revenir un cas dՎchec.

1.6.    Automate avec e-transition

Un automate avec e-transition (eAEF) dispose dune fonction de transition dfinie sur VT {e}. La relation de transition devient donc :

(q, w) a (q, w) q m(q, e)

(q, sw) a (q, w) q m(q, s)

 

> Par exemple, soit lautomate suivant :

 

 

 

 


e

0

1

0

-

0, 1

0

1

2

-

-

2

-

-

3

3

-

-

-

 

 

Faisons fonctionner cet automate sur  01 

1)

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3) On prend la e-transition qui ne fait pas avancer la tte de lecture sur la bande.

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ce fonctionnement accepte le mot.

<

 

1.7.    quivalences dautomates

La classe des automates dՎtats finis (AEF) est la plus gnrale. Les automates finis peuvent tre dterministes (AEF-det) ou non dterministe (AEF-ndet). De plus, ils peuvent (ou non) contenir des e-transitions (de faon gnrale, nous appellerons ce type dautomate des e-automates). Les e-automates sont non-dterministes.

On verra que tous ces types dautomates sont rigoureusement identiques et que lon peut toujours se ramener, par simplification et  dterminisation  un AEF-det.

 

Pour rsumer, un automate est considr comme non-dterministe (au sens large) si au moins une des conditions suivantes est vrifie :

      Il existe au moins plusieurs transitions t1, t2, tn portant le mme symbole x partant dun tat unique q vers plusieurs tats q1, q2, qn ;

      Il existe au moins une e-transition ;

      Il existe plus dun tat initial.

 

Autrement dit, sil existe un moment donn un point de choix lors de la reconnaissance dun mot, lautomate nest pas dterministe. De plus, chaque tape, le pointeur doit avancer sur la bande de lecture.

 

4 pour un mot de longueur l appartenant L(A), A tant dterministe, combien dՎtapes sera-t-il ncessaire pour que lautomate le reconnaisse ?

Que peut-on dire pour un mot qui nappartient pas L ?

 

Que peut-on dire si lautomate est satur ? Que peut-on dire si lautomate nest pas bien form ?

3

 

On remarquera, par ailleurs, que pour tout automate A, on peut crer un automate A, nayant quun seul tat initial et quun seul tat final, tel que L(A) = L(A).

En effet, si on a plusieurs tats finals, il suffit de crer un nouvel tat final F et de relier laide de e-transitions les tats finals dorigine cet tat F.

De faon analogue, si on a plusieurs tats initiaux, il suffit de crer un nouvel tat initial I et de relier laide de e-transitions cet tat I aux tats initiaux dorigine.

 


> Par exemple, soit lautomate A suivant :

 

 

a

b

c

0

1

-

-

1

2

1

3

2

-

-

-

3

2

3

 

 

 

 

On peut  deviner  que le langage reconnu par cet automate pourrait tre not par lexpression rgulire :

ab*a + ab*cb* + ab*cb*a + b* + b*a

=          ab*a + ab*cb*(e + a) + b*(e + a)

=          ab*a + (ab*c + e)b*(e + a)

Lautomate ayant une structure simple, il est possible de suivre (sans en oublier) les diffrents chemins. Une telle mthode nest pas toujours aise si lautomate est plus touffu.

 

1) Soit A lautomate obtenu par ajout dun tat final unique :

 

 


e

a

b

c

0

 

1

-

-

1

 

2

1

3

 2

F

-

-

-

3

F

2

3

 

F

-

-

-

 

 

 

 

 

2) Soit A, lautomate obtenu par ajout dun tat initial unique :

 

 


e

a

b

c

I

0, 3

-

-

-

0

 

1

-

-

1

 

2

1

3

2

 

-

-

-

3

 

2

3

 

 

 

 

 

3) On obtient donc lautomate A par combinaisons de A et A :

 

 

e

a

b

c

I

0, 3

-

-

-

0

 

1

-

-

1

 

2

1

3

2

F

-

-

-

3

F

2

3

 

F

 

 

 

 

 

 

 

 

 

 

 

 

 

Lautomate ainsi obtenu peut ventuellement tre simplifi.

Il ny a aucune transition entrante dans lՎtat initial et aucune transition sortante de lՎtat final. <

 

4 Exercice : vrifier quՈ chaque tape le langage reconnu par lautomate reste inchang.

3

 

 

Dans le cas dun automate disposant dun tat initial et dun tat final unique, il est parfois pratique de simplifier la notation graphique. Cette nouvelle notation permet de  masquer  les dtails lis lautomate pour ne se concentrer que sur son entre et sa sortie.

Avec L(A) = L(R), un automate A peut se noter comme suit :

 

 

 

 

 


> partir de lexemple prcdent, on pourra donc avoir :

 

 

 

 


<

 

2.      Transformation dune expression rgulire en un automate

2.1.    Proprit

Soit la proprit S(n) dfinie comme suit :

Si R est une expression rgulire n occurrences doprateurs et aucune variable comme oprandes atomique (.) alors il existe un e-automate A qui accepte les mots de L(R) et aucune autres. A na :

      Quun seul tat dacceptation (tat final) ;

      Pas darc vers son tat initial ;

      Pas darc issu de son tat final.

 

2.2.    Cas de base

Soit la case de base S(0) dfini comme suit :

Si n=0 alors R doit tre un oprande atomique qui est : soit f, soit e, soit x pour un certain symbole x (x V). Pour chacun des trois cas, on peut concevoir un automate 2 tats pour lequel S(0) est vrai :

 

 

 

 

 

 

 

 

 

 

 

 


2.2.    Rcurrence

Nous allons supposer que si on a S(n) alors nous avons S(n+1) :

Nous allons crer de nouveaux automates. Pour chaque occurrence de lexpression rgulire, on cre un tat particulier.

 

> Par exemple, si lexpression rgulire contient 3 a, alors on crera 6 tats sur le modle :

 

 

 


<

 

Supposons que S(i) soit vraie pour tout i suprieur ou gal n ("i n). Autrement dit, pour une expression rgulire R quelconque avec au plus n occurrences doprateurs, il existe un automate satisfaisant lhypothse de rcurrence et acceptant tous les mots de L(R) et seulement ceux-l.

Soit R une expression rgulire avec (n+1) occurrences doprateurs.

On sintresse loprateur le plus extrieur, cest--dire, la racine de la structure syntaxique. Alors R est de la forme R1 + R2, ou R1.R2 ou R1*

 

Dans chacun des trois cas, R1 et R2 ne peuvent comporter plus de n occurrences car loprateur situ la racine de la structure syntaxique ne fait partie ni de R1 ni de R2, et que R a exactement (n+1) occurrences doprateurs.

Lhypothse de rcurrence sapplique donc R1 et R2 dans chacun des trois cas. On peut alors dmontrer S(n+1) dans chacun des trois cas.

 

On remarquera, par ailleurs, que pour tout automate A, on peut crer un automate A, nayant quun seul tat initial et quun seul tat final, tel que L(A) = L(A).

En effet, si on a plusieurs tats finals, il suffit de crer un nouvel tat final F et de relier laide de e-transitions les tats finals dorigine cet tat F.

De faon analogue, si on a plusieurs tats initiaux, il suffit de crer un nouvel tat initial I et de relier laide de e-transitions cet tat I aux tats initiaux dorigine.

 

1)         R = R1 + R2

 

 

 

 

 

 

 

 

LՎtat initial associ R comporte des e-transitions vers les tats initiaux des automates associs R1 et R2. Les anciens tats initiaux deviennent des tats ordinaires.

Les tats finals (dacceptation) de ces deux automates deviennent des tats ordinaires et on ajoute des e-transitions vers lՎtat dacceptation du nouvel automate.

 

La seule faon datteindre lՎtat final partir de lՎtat de dpart consiste suivre un arc tiquet e dirig vers R1 (resp. vers R2) puis de reconnatre un mot de L(R1) (resp. de L(R2)) et partir de lՎtat dacceptation de R1 (resp. R2) deffectuer la e-transition vers lՎtat dacceptation de L(R1 L(R2) cest--dire L(R).

 

2)         R = R1 . R2

 

 

 

 

 


LՎtat final de R1 et lՎtat initial de R2 deviennent des tats ordinaires. LՎtat initial de R1 devient lՎtat initial de R et lՎtat final de R2 devient lՎtat final de R.

 

La seule faon de passer de lՎtat lՎtat final est de lire un mot de R1 puis de lire un mot de R2.

 

3)         R = R1* = e + R1+

 

 

 

 

 

 

La rptition non nulle (+) consiste relier lՎtat final de lautomate de R son tat initial. Pour ajouter e au langage reconnu par lautomate, il suffit de crer un nouvel tat initial et un nouvel tat final et de les relier avec une transition e.

 

Pour passer de lՎtat initial lՎtat final, on passe soit par la transition directe e (et le mot e est reconnu), soit on passe par une reconnaissance du  L(R1) puis une transition directe. Lorsque lon a reconnu un mot de L(R1), il est possible de recommencer un nombre quelconque de fois en utilisant la e-transition entre lՎtat final et lՎtat initial de R1.

 

4 Expliquer pourquoi pour rajouter e au langage reconnu par un automate A, il nest pas possible dans le cas gnral de rendre lՎtat initial de A final.

Donner un exemple. Exhiber un cas particulier o lon pourrait procder de la sorte.

3

 

Donc daprs 1), 2) et 3) nous avons vrifi S (n+1).

et donc S(n) est vraie pour tout n.

 

> Considrons par exemple lexpression rgulire :           a + bc*

La structure syntaxique est :

 

 

 

 

 

 

 

 

Soient pour chacun des atomes  a ,  b  et  c , les automates suivants :

 

 

 

 

 


Automate pour c* :

 

 

 

 

 

 


Automate pour bc* :

 

 

 

 

 

 


Automate pour a+ bc* :

 

 

 

 

 

 

 

 

 


Il est possible (et mme recommand) de simplifier cet automate.

<

 

4 Essayer de trouver lexpression rgulire lautomate ci-dessus. Comment peut-on dcomposer les chemins de lautomate ?

 

Rponses : On peut essayer de lire les chemins de lautomate. Labsence de boucle trop complique doit rendre cette lecture possible.

Nous avons les chemins suivants avec leur expression rgulire associe :

<q0, q1, q2, q3> e.a.e a

<q0, q4, q5, q9, q3> e.b.e.e.e b

<q0, q4, q5, q6, q7, q8, q9, q3> e.b.e.e.c.(e.c)*.e.e b.cc*

 

Lexpression rgulire de lautomate est lunion des expressions rgulires ci-dessus : a + b + bcc* = a + bc*

3

 

2.4.    limination des e-transitions

Dans un automate, si lon se trouve dans un tat q quelconque comportant des e-transitions, on se trouve en ralit dans le mme temps dans chaque tat accessible q partir de q en suivant les e-transitions.

En effet, soit le w le mot tiquetant le chemin de q0 (tat initial) q, alors w. e (= w) est le chemin tiquetant le chemin de q0 q.

LՎlimination des e-transitions est effectue en quatre tapes :

1.              Augmentation des transitions ;

2.              Propagation des tats finals ;

3.              Suppression des e-transitions ;

4.              limination des tats inaccessibles.

 

On construit un nouvel automate o il existe une transition entre lՎtat qi et lՎtat qj tiquet par x sil existe un tat qk tel quil existe une suite de-transitions que qi qk et quil existe une transition x de qk qj.

 

> Si on augmente les transitions partir de lautomate donn en exemple ci-dessus, on obtient le nouvel automate suivant :

 

 

 

 

 

 

 

 

 

 

 

 


Un tat est final sil existe une suite de-transitions qui mne un tat final.

 

 

 

 

 

 

 

 


On supprime les e-transitions.

 

 

 

 

 

 

 

 

 


On supprime les tats inaccessibles partir de lՎtat initial.

 

 

 

 

 

 

 

 

 


On obtient comme rsultat final lautomate dfini partir de lexpression rgulire = a + bc*. <

 

3.      Transformation dun automate en une expression rgulire

3.1.    Par rduction dautomates

Dans la mthode par rduction dautomates, la construction de lexpression rgulire dfinissant le mme langage que celui reconnu par lautomate passe par la suppression successive des tats de lautomate A.

Pour ce faire, on remplace successivement lՎtiquetage des transitions de lautomate par des expression rgulires.

On considre lՎtiquette dun chemin comme la concatnation des expressions rgulires associes ce chemin.

 

> Par exemple :

 

 

 

 

 


<

 

Soit un automate dterministe A. Considrons un tat q non-final n tats prdcesseurs (pi) et n tats successeur (si) et ventuellement une transition sur lui-mme. Cet tat q peut-tre limin condition de  mettre jour  les transitions restantes de lautomate

 

 

 

 

 

 

 

 

 

 

 

 


Chaque transition est dfinie par une expression rgulire. LՎlimination de q doit donc modifier les transitions pi sj (pour tout 1i n et 1jm).

La transition allant de pi sj sera modifie de faon porter lexpression rgulire : Rij + PiU*Sj

En effet, si on passe de pi sj directement cela seffectue en acceptant un mot de lexpression rgulire Rij.

Si on passe par q, il faut :

Reconnatre un mot dfini par Pi ;

Reconnatre 0 ou n fois un mot dfini par U ;

Reconnatre un mot dfini par Si.

Donc au total, il faut reconnatre un mot de lexpression rgulire PiU*Sj.

 

La mthode consiste donc liminer tous les tats sauf les tats finals (et bien sr lՎtat initial). Lorsque lautomate ne comprend quun tat initial et un tat final (ventuellement confondus), on peut en dduire le langage reconnu.

 

 

 

 

 

Le langage reconnu est :                    S*U(T + VS*U)*.

 

Si lautomate A ne comporte plus quun seul tat initial et n (n>1) tats finals (nots Fi), on cre n copies de lautomates. Pour chaque copie Ai, seul lՎtat Fi est final. Lexpression rgulire R(A) sera lunion des expressions R(Ai) :                R(A) = R(A1) + R(A2) + R(A3) + R(An)

 

> Soit par exemple, lautomate A suivant :

 

 

 

 

 

 

 

 

 

 

Essayons de trouver une expression rgulire R(A) du langage L(A).

 

On souhaite liminer lՎtat q1. Les prdcesseurs de q1 sont {q0}. Les successeurs de q1 sont {q0, q2}. Il ny aucune boucle sur q1, on considre donc quil y a une boucle tiquete f.

 

 

 

 

 


On supprime q1 et on ajoute les transitions q0-q0 et q0-q2.

On obtient donc lautomate A suivant :

 

 

 

 

 

 

 

 

 

 

 

 

 


Lautomate A contient deux tats finals et un tat initial. Il nest pas possible continuer liminer directement des tats, il est ncessaire de dupliquer A.

 

Soient B et C, les deux copies de A :

et

 
 

 

 

 

 

 

 

 

 

 

 

 


Pour B, on limine q:

 

 

 

 

 

Le langage reconnu par B est : (0+10)*11(1+01+00(0+10)*11)*

 

Pour C, on limine q2 :

 

 

 

 

 

Le langage reconnu par C est : (0+10)*111*0(1*10+0(0+10)*111*0)*

 

Le langage reconnu par A est donc :

(0+10)*11(1+01+00(0+10)*11)*
+ (0+10)*111*0(1*10+0(0+10)*111*0)*

<

 

4 : essayer de monter que lexpression rgulire R(A) ci-dessus dcrit le langage L sur {0, 1} de tous les mots possibles ne se finissant pas par  00 .

 

lments de rponse :

Une expression rgulire simple pour L est : (0+1)*01 + (0+1)*10 + (0+1)*11

 

On peut observer lexpression rgulire R(A).

Avons-nous R(A) = R(L) ? Il y a plusieurs manires de procder. Lesquelles ?

3

 

 

3.2.    Par rsolution dՎquations

partir dun automate A, il est possible de poser les quations dcrivant les langages reconnus par chaque tat. Cest--dire que pour chaque tat on se pose la question suivante  quel serait le langage reconnu en commenant par cet tat ? .

Pour n tats, on trouvera donc, n quation n inconnues. On note L(i), le langage reconnu partir de lՎtat i. Lobjectif est de rsoudre lՎquation pour la variable L(0). L(0) est le langage reconnu partir de lՎtat initial, cest--dire le langage reconnu par lensemble de lautomate donc L(A).

 

Comme pour la mthode par rduction dautomates, le cas gnral minimal est :

 

 

 

 

 

Les quations associes sont :

 

L(0) = S . L(0) + U . L(f)

L(f) = T . L(f) + V . L(0) + e

 

On remarquera quun tat final reconnat au moins {e}, cest--dire lexpression rgulire e.

 

La rsolution du systme dՎquation se fait comme en arithmtique par substitution et rcriture. De plus, quand on trouve une quation de la forme : L = xL + y alors sa solution est x*y.

 

L = xL + y         Þ        L = x*y

 

Rsolvons le systme dՎquations ci-dessus :

 

a)         L(0) = S . L(0) + U . L(f)

b)         L(f) = T . L(f) + V . L(0) + e

on obtient par rsolution

c)         L(f) = T*(V . L(0) + e)

on remplaant L(j) dans a)

d)         L(0) = S . L(0) + UT*(V . L(0) + e)

            L(0) = (S + UT*V) L(i) + UT*

            L(0) = (S + UT*V)*UT*

 

Nous avons     L(0) = S*(UT*VS*)*UT*

car (x + y)* = x*(yx*)* et ici x = S et y = UT*V

 

L(0) = S*U(T*VS*U)*T*

car (xy)*x = x(yx)* et ici x = U et y= T*VS*

 

L(0) = S*U(VS*U + T)*

car (x*y)*x* = (x + y)*et ici x = T et y = VS*U

 

L(0) = S*U(T + VS*U)*

 

Donc nous avons :      (S + UT*V)*UT* = S*U(T + VS*U)*. Cest--dire que dans le cas gnral minimal on obtient un rsultat quivalent celui par la mthode de rduction dautomate.

 

4 dmontrez que la mthode par rsolution dՎquation est quivalente celle de rduction dautomates.

 

lments de rponse : il est possible de procder par induction. La suppression dun tat quivaut la substitution de la variable associe dans le systme dՎquations. Quel est le cas de base ?

3

 

> Par exemple, soit lautomate A suivant :

 

 

 

 

 

 

 

 


Cet automate est lautomate dterministe reconnaissant les mots de la forme :(a+ b)*abb. Essayons de retrouver lexpression rgulire.

 

On pose les quations suivantes :

a)         L(0) = bL(0) + aL(1)

b)         L(1) = aL(1) + bL(2)

c)         L(2) = aL(1) + bL(3)

d)         L(3) = bL(0) + aL(1) + e

 

On peut dans c) remplacer L(3) par sa dfinition

e)         L(2) = aL(1) + b(bL(0) + aL(1) + e)

            L(2) = aL(1) + bbL(0) + baL(1) + b

On peut dans b) remplacer L(2) par sa dfinition

f)          L(1) = aL(1) + b(aL(1) + bbL(0) + baL(1) + b)

            L(1) = aL(1) + baL(1) + bbbL(0) + bbaL(1) + bb

            L(1) = (a + ba + bba)L(1) + bbbL(0) + bb

            L(1) = (a + ba + bba)*(bbbL(0) + bb)

On peut remplacer dans a) remplacer L(1)

g)         L(0) = bL(0) + a(a + ba + bba)*(bbbL(0) + bb)

            L(0) = bL(0) + a(a + ba + bba)*bbbL(0) + a(a + ba + bba)*bb

L(0) = (b + a(a + ba + bba)*bbb)L(0) + a(a + ba + bba)*bb

L(0)= (b + a(a + ba + bba)*bbb)*a(a + ba + bba)*bb

 

Cette expression rgulire semble difficile simplifier, toutefois essayons de dmontrer quelle est bien gale (a + b)*abb.

Supposons donc :

(a + b)*abb = (b + a(a + ba + bba)*bbb)*a(a + ba + bba)*bb

si on supprime  bb  de part et dautre, on a lՎgalit :

Þ        (a + b)*a = (b + a(a + ba + bba)*bbb)*a(a + ba + bba)*

Þ        (a + b)*a = (b + a((e + b + bb)a)*bbb)*a((e + b + bb)a)*

Þ        (a + b)*a = (b + (a(e + b + bb))*abbb)*(a(e + b + bb))*a

car       x(yx)* = (xy)*x

si on supprime  a  de part et dautre, on a lՎgalit :

Þ        (a + b)* = (b + (a(e + b + bb))*abbb)*(a(e + b + bb))*

Þ        (a + b)* = (b + (a + ab + abb)*abbb)*(a + ab + abb)*

Þ        (a + b)* = b*((a + ab + abb)*abbbb*)*(a + ab + abb)*

car (x + y)* = x*(yx*)*

Þ        (a + b)* = b*((a + ab + abb) + abbbb*)*

car (x*y)*x* = (x + y)*

Þ        (a + b)* = b*(a + ab + abb + abbbb*)*

Þ        (a + b)* = b*(a (e + b + bb + bbbb*))*

Þ        (a + b)* = b*(a b*)*

ce qui est vrai car (x + y)* = x*(yx*)*

 

Donc on a bien :

(a + b)*abb = (b + a(a + ba + bba)*bbb)*a(a + ba + bba)*bb

Donc lautomate reconnat bien le langage (a + b)*abb

<

 

4 Dans lexemple prcdent, nous avons suppos que :

X* = (e + X + XX + XXXX*)

Pouvez-vous le dmontrer ?

Pouvez-vous dmonter le cas gnral : X* = (e + X + XX + XXX + + XnX*)

 

Rponses :

X* =         (e + X + XX + XXX(e + X + XX + ))

                  (e + X + XX + XXX + XXXX + XXXXX + )

                  X*

 

X* =         (e + X + XX + XXX + + XnX*)

                  (e + X + XX + XXX + + Xn(e + X + XX + ))

                  (e + X + XX + XXX + + Xn + XnX + XnXX + )

                  (e + X + XX + XXX + + Xn + Xn+1 + Xn+2 + )

                  X*

 

On remarquera que X* = (X*)n = (X*)*

3

 

4 Dans lexemple prcdent, plusieurs fois, on a supprim un mot de part et dautre dune galit afin de la dmontrer. Dans quel cas ne peut-on pas le faire et pourquoi ?

Vrifier que (a + b)*ab(a +b)* = b*a*ab(a+b)*

 

Avons-nous (a + b)*ab = b*a*ab ? Expliquez.

3

 

4 Soit lautomate A suivant :

 

 

 

 

 

 

 

 

 

Produisez lexpression rgulire de A laide de la mthode de rsolution dՎquations. Quel langage reconnat cet automate ?

 

Rponse (non dtaille) : il sagit de tous les mots sur {0, 1} sauf 11.

3

 

4.      Dterminisation & Minimisation

4.1.    Mthode de dterminisation

Si dans un automate A, il existe deux chemins q0qn et q0qm dcrivant le mme mot alors ces deux chemins appartiennent la mme classe dՎquivalence. Ils peuvent donc tre regroups en un seul chemin pour ce mot. Cette constatation est la base de la mthode dterminisation.

 

Proprit :

Pour tout automate dՎtats finis non-dterministe, il existe un automate dՎtat fini dterministe quivalent.

Soit A = (VT, Q, Q0, F, m) un AEF non-dterministe

Alors A = (VT, P(Q), Q0, F, m)


avec    F = {Q | Q F }

Alors L(A) = L(A)

 

4 Dmonstration de la proprit ci-dessus

3

 

La mthode consiste dfinir des transitions sur des ensembles dՎtats et non des tats. partir dun ensemble dՎtats, on dfinit lensemble successeur pour un x de V comme lensemble des tats atteignables par x depuis un tat de lensemble. Seule une partie des sous-ensembles possibles est utile. Pour calculer les sous-ensembles utiles, on itre jusquՈ ce que aucun nouveau sous-ensemble soit cr. Lensemble de dpart est lensemble des tats initiaux. Chaque ensemble dՎtats correspond un tat de lautomate dterministe. Un tat est final si un des tats dorigine le composant est final.

 

> Soit par exemple, A lautomate non-dterministe suivant :

 

 

 

 

 

 

 

 

Nous obtenons la table de transitions suivantes :

 

 

 

a

b

c

0

{0, 4}

{1}

-

{2}

1

{1}

-

{2, 4}

-

 2

{2}

{3, 5}

 

{2}

3

{2, 4}

{3, 5}

-

{2}

4

{3, 5}

-

{6}

-

5

{6}

{2, 3}

-

 

6

{2, 3}

{3, 5}

-

{2}

<

 

4 Crer la table de transitions de lautomate non-dterministe. Dessiner et commentez lautomate dterministe ci-dessus.

3

 

4.3.    Relation dՎquivalence sur les langages rguliers

partir de la notion dautomate, on peut dfinir une relation dՎquivalence sur les mots de VT*.

Si deux mots distincts conduisent dans un automate A lՎtat qi, alors ces deux mots sont quivalents.

 

Dfinition :      w1 w2 " z VT*, w1z L w2z L

 

La relation est rflexive                 w1 w1

La relation est symtrique w1 w2 Þ w2 w1

La relation est transitive    w1 w2, w2 w3 Þ w1 w3

 

Soit un automate A reconnaissant le langage L.

Relation rflexive :

w L(A) (q0, w) a* (q, e) q F

Par dfinition de a*  (q0, w1) a* (q, e) Þ (q0, w2) a* (q, e)

donc w1 w1

 

Relation symtrique :

w1 w2 :

" z VT*       (q0, w1z) a* (q,, e)      q F

                    (q0, w2z) a* (q, e)     q F

donc    " z VT*       (q0, w2z) a* (q, e)     q F

                    (q0, w1z) a* (q,, e)      q F

donc w2 w1

 

Relation transitive :

w1 w2 et w2 w3 :

w1 w2 : " z VT*    (q0, w1z) a* (q,, e)      q F

                    (q0, w2z) a* (q, e)     q F

w2 w3 : " z VT*    (q0, w2z) a* (q,, e)      q F

                    (q0, w3z) a* (q, e)     q F

 

" z VT*       (q0, w1z) a* (q, e)       q F

        (q0, w2z) a* (q e)      q F

        (q0, w3z) a* (q e)    q F

 

> Soit, par exemple, lautomate suivant :

 

 

 

 

 

 

 


Les tats q2 et q4 sont

Soient les mots ab et b, ils sont

En effet,           pour q2 : (q0, ab) a (q2, e)

Ensuite un mot appartient L si et seulement si, il est de la forme ab*

pour q4 : (q0, b) a (q4, e)

Ensuite un mot appartient L si et seulement si, il est de la forme ab*

Nous aurions pu dfinir lautomate :

 

 

 

 

 

La relation dՎquivalence nous permet de dfinir un automate ayant un nombre minimum dՎtats.

 

ici on na pas e a car           e.aba L

                                                a.aba L

Donc q0 et q1 nappartiennent pas la mme classe dՎquivalence. <

 

Une relation dՎquivalence est invariante droite si et seulement si :

" w1,w2 VT*            w1 w2                 Þ        " z VT*        w1z w2z

 

Les proprits suivantes sont quivalentes :

a) le langage L est reconnu par un automate dՎtats fini ;

b) le langage L est la runion dun ensemble de classes dՎquivalence dune relation dՎquivalence invariante droite dindex fini.

 

Dmonstration :

1) a Þ b

Soit A un automate dՎtats fini tel que L = L(A).

Alors soit R la relation :

w1 w2                  (q0, w1) a* (q, e)

                                                       (q0, w2) a* (q, e)

est un relation dՎquivalence rflexive, symtrique et transitive.

 

Soit [q] la classe dՎquivalence dfinie par :

w [q]                    (q0, w) a* (q, e)

 

Alors

 

 

est dindice fini.

 

2) b Þ a

Soit la relation dՎquivalence. On dfini donc un automate dՎtat fini tel que :

 

Q = {[w] | w VT*} lensemble des classes

Q est fini car lindice de la relation est fini.

 

A = (VT, Q, [e], F, m)

F = {[w] | w L]

m : m([w], s) = [ws]

donc    " z VT* ([e], w) a* ([w], e)

 

et w L                  [w] L

 

 

4 soit L le langage sur {a, b} dont les mots contiennent au moins un  ab . Donnez une expression rgulire simple de ce langage. Construisez les automates non-dterministe et dterministe.

Quels tats de lautomate dterministe peut-on regrouper dans de mmes classes dՎquivalence ?

 

Rponses : (peu dtaille)

R(L) = (a + b)*ab(a + b)*

On a comme automates A et Adet :

 

 

 

 

 

 

 

 

 

 

 

 

 


Pour avoir si deux tat de Adet sont quivalents, posons et rsolvons les quations dՎtats pour Adet :

 

L0 = bL0 + aL1

L1 = aL1 + bL2

L2 = bL2 + aL3 + e

L3 = bL2 + aL3 + e

 

On constate que L2 = L3. Ici, on na pas besoin de rsoudre lՎquation pour constater que les deux langages sont gaux, car les parties droites des quations sont identiques. Toutefois on gardera lesprit, que si deux quations sont diffrentes, il est possible que leurs solutions soient gales.

Si on rsout L3

L3 = a*(bL2 + e)

Donc

L2 = bL2 + aa*(bL2 + e) + e

L2 = (b + aa*b)L2 + aa* + e

L2 = (b + aa*b)*(aa* + e)

Donc

L2 = (b + aa*b)*a* = (( e + aa*)b)*a* = (a*b)*a* = (a + b)*

On obtient bien la mme chose pour L3.

 

On peut donc simplifier lautomate Adet en Adet :

 

 

 

 

 

 

 


Vrifiez si lautomate peut tre simplifi plus avant.

3

 

4 soit L le langage dcrit par lexpression rgulire b*a*ab(a+b)*.

Montrer que L est quivalent au langage L de lexercice prcdent.

Commentez.

3

 

5.      Autres oprations sur les automates

5.1.    Automate complmentaire A

Il peut tre difficile de trouver partir de lexpression rgulire le complmentaire L dun langage rgulier L. Par contre, produire le complmentaire A dun automate rgulier dterministe A est ais.

Pour produire partir de A (qui reconnat le langage L(A)) lautomate complmentaire A reconnaissant le langage complmentaire (L(A)), il suffit de :

Crer un tat trappe T ;

Soit vi les lments du vocabulaire V sur lequel est dfini L(A). Pour chaque tat q, crer une transition vi de q vers T sil nexiste pas de transition vi partant de q ;

Chaque tat final devient ordinaire et chaque tat ordinaire devient final. LՎtat initial reste initial. LՎtat trappe T devient final.

 

Si lՎtat trappe T nest pas reli, il pourra tre supprim.

 

> Soit, par exemple, L le langage sur V = {a, b, c} compos de mots compos que de a ou de b et contenant une fois une squence de 0 ou n  c . Essayons de produire lexpression rgulire de L.

 

Lexpression rgulire R(L) est (a + b)*c*(a + b)* et lautomate non-dterministe est :

c

 
 

 

 

 

 

 


Lautomate dterministe quivalent est :

 

 

 

a

b

c

0

{0}

{0, 2}

{0, 2}

{1}

1

{0, 2}

{0, 2}

{0, 2}

{1}

  2

{1}

{2}

{2}

{1}

3

{2}

{2}

{2}

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


On cr un tat trappe T et on sature les transitions de lautomate vers cet tat. Le langage est inchang.

On inverse les tats finals et non-finals. Lautomate obtenu reconnat L.

 

 

 

 

 

 

 

 

 

 

 

Lexpression rgulire peut tre trouve par la mthode des quations dՎtats. Lautomate est satur, chaque quation comportera trois termes (pour a, b et c) pour un tat ordinaire et on rajoutera e pour les tats finals.

 

a)         L0 = (a + b)L1 + cL2

b)         L1 = (a + b)L1 + cL2

c)         L2 = (a + b)L3 + cL2

d)         L3 = (a + b)L3 + cLT

e)         LT = (a + b + c)LT + e

 

LT         = (a + b + c)* = V*

L3         = (a + b)*cLT

= (a + b)*c(a + b + c)*

L2         = c*(a + b)L3

= c*(a + b)(a + b)*c(a + b + c)*

L1         = (a + b)*c L2

= (a + b)*cc*(a + b)(a + b)*c(a + b + c)*

L0         = L1

= (a + b)*cc*(a + b)(a + b)*c(a + b + c)*

 

Il sagit du langage des mots quelconques sur {a, b} qui comportent au moins 2 squences non nulles de c.

Il sagit bien du complmentaire du langage qui comporte une seule squence ventuellement nulle de c.

 

Daprs les quations ci-dessus, on saperoit que q0 et q1 sont dans la mme classe dՎquivalence. On peut donc simplifier lautomate :

 

 

 

 

 

 

 

 


<

 

4 Dcrire et caractriser la classe des automates rguliers invariants par lopration de complmentation. Commentez.

3

 

4 Lopration de complmentation fonctionne-t-elle sur des automates non-dterministe ? Commentez.

3

5.2.    Automate miroir A~

Pour produire partir de A (qui reconnat le langage L(A)) lautomate miroir A~ reconnaissant le langage miroir (L(A))~, il suffit de :

Inverser le sens des transitions ;

changer les tats initiaux et les tats finals ;

Dterminiser lautomate produit (si ncessaire).

 

On notera que L(A~) = L(A)~. Il sagit juste dun jeu dՎcritures.

Lopration consistant inverser le sens des transitions, peut partir dun automate dterministe produire un automate non-dterministe.

 

> Par exemple, soit lautomate A suivant :

 

 

 

 

 

 

 

Cet automate est lautomate dterministe reconnaissant les mots de la forme :(a + b)*abb

Aprs inversion des transitions et des tats, nous avons lautomate miroir non-dterministe (A~)ndet suivant :

 

 

 

 

 

 

 

 


Lautomate dterministe A~ quivalent est :

 

 

 

a

b

0

{0}

-

{1}

1

{1}

-

{2}

3

{2}

{0, 1, 2, 3}

-

3

{0, 1, 2, 3}

{0, 1, 2, 3}

{0, 1, 2, 3}

 

 

 

 

Cet automate est dterministe et reconnat les mots de la forme bba(a + b)* = ((a + b)*abb)~

On remarquera que si on cherche produire limage miroir de lautomate ci-dessus, cest--dire (A~)~, on obtiendra avant dterminisation lautomate non-dterministe du langage (a + b)*abb. <

 

4 soit lautomate A ci-contre :

 

Trouver lexpression rgulire du langage reconnu par A.

 

Construire lautomate A~ et trouver lexpression du langage reconnu.

 

Commentez.

 

 

Rponses  Lexpression rgulire correspondante est R(A) = ab*a + ab*cb*a = ab*(a + cb*a). Si on inverse le sens des flches et que les tats initiaux deviennent finals et que les tats finals deviennent initiaux alors on obtient :

 

 

 

 

 

 

 

 

 

 

 


Lautomate non-dterministe miroir A~ est (aprs avoir renomm les tats) :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Lexpression rgulire R(A~) est : ab*a + ab*cb*a

On remarque ici que R(A~) = R(A), donc L(A~) = L(A), donc L(A) = L(A)~. Le langage L(A) est donc un langage dont lexpression rgulire est une union de palindromes. Ceci ne veut pas dire que les mots de L(A) sont ncessairement des palindromes.

La version dterministe de cet automate est :

 

 

 

a

b

c

0

{0}

{1, 2}

-

-

1

{1, 2}

{3}

{1, 2}

{1}

2

{1}

{3}

{1}

-

3

{3}

-

-

-

 

 

 

 

 

 

Il sagit du mme automate que A.

3

 

4 Est-il possible dobtenir un automate dterministe partir dun automate non-dterministe aprs inversion des transitions ? Et partir dun automate dterministe ?

3

 

4 Dcrire et caractriser la classe des automates rguliers invariants par lopration miroir.

3

 

5.3.    Intersection de deux automates

La production de lexpression rgulire du langage L = L1 L2 partir des expressions rgulire de L1 et L2 nest pas aise. Par contre, il existe une mthode simple pour construire lintersection de deux automates dterministes A1 et A2.

Un mot appartient deux automates dterministes A1 et A2 si on est capable de suivre dans les deux automates un chemin dcrivant ce mot de lՎtat initial un tat final.

 

A1= (VT1, Q1, Q01, F1, m1) et A2= (VT2, Q2, Q02, F2, m2)

 

w L(A) = L(A1 A2) si et seulement si :

$ (q,q) F1 F2 : ((q01,q02), w) a* ((q,q), e)

Le mot w appartient au langage reconnu par lautomate A sil existe un chemin de lՎtat initial un tat final qui dcrit ce mot la fois dans A1 et A2.

 

La construction de A = A1 A2 consiste parcourir en parallle les deux automates, et ne retenir comme tat que les couples dՎtats atteignables la fois dans les deux automates.

Un tat q du nouvel automate A sera final si les deux tats (q, q) issus de A1 et A2 sont finals.

 

> Exemple : Soit La2, le langage sur {a,b} compos de n  a , ou n est un multiple de 2. Soit La3, le langage compos dune succession de n  a , ou n est un multiple de 3.

Quelle est lintersection de La2 et La3 ?

 

R(La2) = b*(ab*ab*)* et R(La3) = b*(ab*ab*ab*)*

 

 

 

 

 

 

 

 

 

 

 

 


On obtient la table de transitions suivante :

 

 

 

a

b

0

(0,0)

(1, 1)

(0, 0)

1

(1, 1)

(2, 2)

(1, 1)

2

(2, 2)

(1, 3)

(2, 2)

3

(1, 3)

(2, 1)

(1, 3)

4

(2, 1)

(1, 2)

(2, 1)

5

(1, 2)

(2, 3)

(1, 2)

6

(2, 3)

(1, 1)

(2, 3)

 

 

 

 

 

 

 

 

 

 

 

R(A) = b*(ab*ab*ab*ab*ab*ab*)*

Il sagit du langage La6.

<

 

4 Dune faon gnrale, que peut-on dire de Lan Lam (n³1 et m³1) ?

Calculez galement La2 Lb2 et gnralisez vos rsultats.

 

Rponses : A(La2 Lb2) 9 tats et reconnat les mots ou le nombre de a et le nombre de b sont pairs.

Un automate Lan a n+1 tats. A(Lan Lbm) (m + 1)*(n + 1) tats.

 

La dfinition fonctionnelle de A(La2 Lb2) est :

V= {a, b} F = {6, 7, 8}             Q0 = {0}                     Q = {0, 1, 2, 3, 4 5, 6, 7 ,8}

d(0,a) = 1                 d(0,b) = 2                 d(1,a) = 3                 d(1,b) = 5

d(2,a) = 5                 d(2,b) = 4                 d(3,a) = 1                 d(3,b) = 7

d(4,a) = 6                 d(4,b) = 2                 d(5,a) = 7                 d(5,b) = 6

d(6,a) = 8                 d(6,b) = 5                 d(7,a) = 5                 d(7,b) = 8

d(8,a) = 6                 d(8,b) = 7

3

 

4 On appelle A(f), la classe dautomates nacceptant aucun mot.  Quelle est la proprit suffisante pour quun automate appartienne A(f). Quelle proprit doivent vrifier les automates pour quelle soit aussi ncessaire ?

Montrer que cette classe dautomates rguliers est infinie.

 

Montrer que quelque soit A, on a : A A A(f).

3

 

6.      Conclusion

Nous avons introduit dans ce chapitre le concept dautomate tat finis rgulier. Ce type de machine abstraite est quivalent aux langages rguliers et aux expressions rgulires. Cependant, un certain nombre doprations de manipulation se font aisment sur les automates, ce qui nest pas ncessairement le cas sur les expressions rgulires.

 

 


Exercices

1.     Construisez lautomate dterministe qui accepte les mots sur V={a, b} tels que le nombre de a soit pair.
Mme question avec un nombre de a impair.

2.     Construisez lautomate dterministe qui accepte les mots sur V={a, b} tels que le nombre de a soit pair et le nombre de b pair.
Mme question avec : a pair et b impair ; a impair et b pair ; et a et b impair.

3.     Construisez les automates non-dterministe et dterministe qui accepte L dont les mots sur V={a, b, c, d} ne se terminant que par abc.
Retrouvez partir de lautomate lexpression rgulire de ce langage.

Mme questions avec L, L~, (L)~, (L~) et L
(L)~

4.     Construisez systmatiquement lautomate partir des expressions rgulires suivantes :     a. ((ab)*b*)*               b. (abb*)*                c. ((a*b)*b)*
Essayez de rduire la taille des automates obtenus. Produisez des versions non-dterministes.

5.     Construisez les automates des deux expressions rgulires suivantes :
L1 = a*ba* et L2 = b*ab*
Construisez lautomate de L = L1
L2. Retrouver R(L).

6.     Dcrivez un algorithme qui permet de tester si le langage reconnu par un automate rgulier donn est vide, fini non vide, ou infini.

7.     (Lemme de lՎtoile) Dmontrez que pour tout langage rgulier L, il existe un entier N tel que tout mot w de L de longueur |w| ³ N admet une factorisation w = uxv avec 0 <|x|< N et vrifiant ux*v L.

8.     Utilisez le lemme de lՎtoile pour prouver que les langages suivants ne sont pas rguliers : {anbn | n ³ 0}              {anbp | n ³ p ³ 0}    {anbp | n ¹ p}

9.     Montrez prouver que les langages suivants ne sont pas rguliers :
{a2n | n
³ 1}                              {ap | p premier}                        {an! | | n ³ 1}

10.  Montrez que les deux automates suivants reconnaissent le mme langage : Construire lautomate dterministe reconnaissant le mme langage. Retrouver lexpression rgulire de ce langage partir de lautomate dterministe.







 

Plus gnralement, montrer que les langages V*wVn, avec V={a, b}, n> 0 sont reconnu par au moins |w| + 1 automates non dterministe non isomorphes ayant strictement moins dՎtats que lautomate dterministe minimal de ce langage.

11.  Soient deux automates A et A. On se propose de tester si ces deux automates sont quivalents, cest--dire quils reconnaissent le mme langage. Donnez une mthode base sur lopration dunion dautomates.

12.  Dcrivez pour lautomate ci-dessous le langage L quil reconnat. Produisez son expression rgulire. Produisez un automate non-dterministe, plus petit (si possible).
Peut-on produire un automate dterministe plus petit ?













13.  Soit lopration de diffrence (note \) dfinie sur les langages de la mme faon  quelle est dfinie sur les ensembles (A \ B = A B). L \ L est lensemble des mots de L moins les mots de L.
Expliquez pourquoi si L et L sont des langages rguliers, L \ L est bien un langage rgulier.

En passant par les automates, expliquez comment on peut trouver L \ L.

Appliquer votre mthode aux exemples suivants :
(ab)*a \ a*(ba)*                      b*(ab*ab*)* \ a*b(ba*ba*)*
Commentez.

14.  La squence  527943001  est la liste des chiffres qui apparaissent dans les colonnes quand on pose laddition :

                                                                                     95
                                                                                  + 42
                                                                                   137

Nous avons rempli les colonnes avec des 0 si ncessaire. Construisez un automate qui accepte les squences qui correspondent des additions correctes et rejtent les autres.

Une version plus simple, consiste construire lautomate pour les additions de nombres binaires uniquement.

15.  Montrez que le langage sur V={a, b} ne contenant pas trois a de suite est rgulier. Construire les automates non-dterministes, dterministes et (au moins) une expression rgulire.

16.  Montrez que si un automate dterministe A accepte un mot dont la longueur est suprieure au nombre dՎtats de A, alors A accepte un nombre infini de mots.

17.  Trouvez une expression rgulire qui reprsente les langages suivants :
(a + b*)
(a + b)*                                                      a(a + b)* (a + b)*b
(a + b)b(a + b)*
b(a + b)*                   (ab)*(a + f) (a + b)(ab)*

18.  Montrez que si L est un langage rgulier qui ne contient pas e, alors L peut tre reconnu par un automate rgulier non-dterministe avec un seul tat dacceptation.

19.  Construisez un automate A sur V = {a, b, c, d} qui reconnat un langage dont les mots ont les proprits suivantes : le sous-mot  ab  est toujours suivi de  c , et le sous-mot  ba  est toujours suivi de  d .

20.  Construisez un automate A sur V = {a, b} qui reconnat un langage dont les mots ne contiennent jamais la sous-chane  bab .

21.  Soit X, Y V*. On dfinit XY-1 = {w | wy X                  pour y Y)
Montrer que si X est rgulier alors XY-1 est rgulier.

 

n                n                n

n                n

n