Chapitre 2
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.
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.
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.
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.
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.
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.
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.
<
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 |
- |
- |
- |
|
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 :
<
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.
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 :
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
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*. <
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 q3 :
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
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
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
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
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
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} |
|
{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} |
|
{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
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
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.
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