Ouvrir l`emploi du temps PDF

Université de Nice – Sophia Antipolis
Outils Formels pour l’Informatique
Licence Math-Info 2
2011–2012
TD n◦ 8
Automates finis
1
Echauffement
Exercice 1) Un automate déterministe est la donnée d’un quintuplet {A, Q, I, T, δ} où A désigne un alphabet, Q l’ensemble des états, I l’état initial, T l’ensemble des états finaux (ou terminaux) et δ : Q × A 7→ A
la fonction de transition. Préciser le quintuplet qui définit l’automate ci dessous. Comment compléter cet
automate avec un état puits, quel est le quintuplet correspondant à l’automate complet ?
b
b
0
a
1
b
b
2
a
3
a
4
a
A = {a, b}, Q = {0, 1, 2, 3, 4}, I = {0}, T = {3}, δ(0, a) = 1, δ(0, b) = 2, δ(1, a) = 4, δ(1, b) = 2,
δ(2, a) = 3, δ(2, b) = 2, δ(3, a) = 4, δ(4, b) = 3. Si on veut compléter l’automate, il faut ajouter un
sixième état p et définir les transitions manquantes vers p : δ(3, b) = p et δ(4, a) = p.
Exercice 2) Même question que précèdemment avec l’automate suivant. Déterminisez cet automate et
décrivez les quintuplets correspondants.
a
b
0
a
1
b
b
2
a
3
a
4
a
Si on déterminise l’automate par sous-ensembles on obtient le tableau suivant qui définit la fonction de
transition de l’automate déterminisé :
1
état
{0}
{1}
{2}
{4}
{2, 3}
{3}
{2, 3, 4}
a
{1}
{4}
{2, 3}
−
{2, 3, 4}
{4}
{2, 3, 4}
b
{2}
{2}
−
{3}
−
−
{3}
Exercice 3) Décrire un automate qui reconnait le langage La des mots sur l’alphabet {a, b} qui commencent par a et un automate qui reconnait le langage Lb des mots sur l’alphabet {a, b} qui terminent par b, en
prenant soin de définir précisément les fonctions de transitions.
Un automate déterministe ALa qui reconnait le langage La est défini par δ(0, a) = 1, δ(1, a) =
δ(1, b) = 1, avec 0 état initial et 1 état terminal.
Un automate déterministe ALb qui reconnait le langage Lb est défini par δ(0, a) = 0, δ(0, b) = 1,
δ(1, a) = 0, δ(1, b) = 1, avec 0 état initial et 1 état terminal.
1. Décrire un automate qui reconnait la réunion des langages La et Lb .
Pour obtenir un automate (déterministe) ALa ∪Lb qui reconnait le langage La ∪ Lb (des mots qui
commencent par a et/ou terminent par b) on peut prendre le réunion de ALa et de ALb et déterminiser
par sous-ensembles (on a ainsi deux états initiaux) ou bien créer un nouvel état initial et deux εtransitions vers les deux états initiaux de ALa et ALb respectivement, et ensuite déterminiser.
2. Décrire un automate qui reconnait l’intersection des langages La et Lb .
Le langage La ∩Lb est formé de tous les mots qui commencent par a et terminent par b. Un automate
déterministe ALb ∩Lb qui reconnait le langage La ∩ Lb est défini par δ(0, a) = 1, δ(1, a) = 1,
δ(1, b) = 2, δ(2, b) = 2, avec 0 état initial et 2 état terminal.
3. Décrire un automate qui reconnait le langage L∗a .
On remarque que L∗a = La ∪ {ε}. Pour obtenir un automate pour L∗a il suffit donc de prendre ALa et
de mettre l’état 0 terminal.
Exercice 4) Décrire un automate qui reconnait le langage des mots sur l’alphabet {a, b} qui sont de
longueur strictement plus petite que 4.
Un automate qui reconnait le langage est défini par δ(0, a) = δ(0, b) = 1, δ(1, a) = δ(1, b) = 2,
δ(2, a) = δ(2, b) = 3, avec 0 état initial et tous les états terminaux. On remarque que l’automate n’a pas
de cycles car le langage est fini.
Exercice 5) Construire, si possible, un automate fini reconnaissant chacun des langages suivants :
2
1. les représentations binaires des nombres pairs (sans 0 inutile en tête) ;
C’est le langage des mots qui commencent par 1 et terminent par 0. Il suffit donc de prendre
l’automate ALb ∩Lb de l’exercice 3 et remplacer a par 1 et b par 0.
2. les mots de longueur impaire ;
Un automate qui reconnait le langage est défini par δ(0, a) = δ(0, b) = 1, δ(1, a) = δ(1, b) = 0,
avec 0 état initial et 1 état terminal.
3. les mots de longueur congrue à 1 modulo 4 ;
Un automate qui reconnait le langage est défini par δ(0, a) = δ(0, b) = 1, δ(1, a) = δ(1, b) = 2,
δ(2, a) = δ(2, b) = 3, δ(3, a) = δ(3, b) = 0 avec 0 état initial et 1 état terminal.
4. les représentations décimales des multiples de 3 ;
L’automate a trois états, correspondant aux classes de reste modulo 3. Les transitions permettent de
passer d’une classe à l’autre. L’automate est donc défini par :
δ(0, 0) = δ(0, 3) = δ(0, 6) = δ(0, 9) = 0,
δ(0, 1) = δ(0, 4) = δ(0, 7) = 1,
δ(0, 2) = δ(0, 5) = δ(0, 8) = 2,
δ(1, 0) = δ(1, 3) = δ(1, 6) = δ(1, 9) = 1,
δ(1, 1) = δ(1, 4) = δ(1, 7) = 2,
δ(1, 2) = δ(1, 5) = δ(1, 8) = 0,
δ(2, 0) = δ(2, 3) = δ(2, 6) = δ(2, 9) = 2,
δ(2, 1) = δ(2, 4) = δ(2, 7) = 0,
δ(2, 2) = δ(2, 5) = δ(2, 8) = 1,
avec 0 état initial et terminal.
5. les mots binaires qui ont un 1 de plus que de 0.
Le langage n’est pas régulier (on peut le prouver avec le lemme de l’étoile).
2
Exercices d’entrainement
Exercice 6) Pour chacun des langages réguliers suivants sur l’alphabet A = {0, 1}, donner une expression
régulière le décrivant puis construire un automate non-déterministe l’acceptant. Enfin, déterminiser les
automates obtenus, soit directement, soit en utilisant l’algorithme de déterminisation.
3
1. les mots dont l’avant-dernière lettre est 1.
Une expression régulière est (0 + 1)∗ 1(0 + 1) ; un automate non déterministe est celui défini par
δ(0, 0) = δ(0, 1) = 0, δ(0, 1) = 1, δ(1, 0) = δ(1, 1) = 2, avec 0 état initial et 2 état terminal.
2. les mots contenant le facteur 101.
Une expression régulière est (0 + 1)∗ 101(0 + 1)∗ ; un automate non déterministe est celui défini par
δ(0, 0) = δ(0, 1) = 0, δ(0, 1) = 1, δ(1, 0) = 2, δ(2, 1) = 3, δ(3, 0) = δ(3, 1) = 3, avec 0 état initial
et 3 état terminal.
3. les mots qui commencent et se terminent par la même lettre.
Une expression régulière est 0(0 + 1)∗ 0 + 1(0 + 1)∗ 1 + 0 + 1 ; un automate non déterministe est celui
défini par δ(0, 0) = 1, δ(1, 0) = δ(1, 1) = 1, δ(0, 1) = 2, δ(2, 0) = δ(2, 1) = 2, δ(1, 0) = δ(2, 1) = 0, et
δ(0, 0) = δ(0, 1) = 3 avec 0 état initial et 0 et 3 états terminaux.
Exercice 7) Soit L le langage des mots binaires se terminant par 0 ou bien ayant un nombre pair de 1.
1. Trouvez un automate non-déterministe qui accepte les mots de L, tel qu’il comporte un état terminal
pour chacune des deux variétés de mots.
Un tel automate peut être défini en prenant la réunion des deux automates reconnaissant chaque
langage : δ(0, 0) = 0, δ(0, 1) = 1, δ(1, 1) = 1, δ(1, 1) = 0, δ(2, 0) = 3, δ(2, 1) = 2, δ(3, 0) = 3,
δ(3, 1) = 2, avec 0 et 2 états initiaux et 0 et 3 états terminaux.
2. Appliquez-lui l’algorithme de déterminisation.
En appliquant la construction par sous-ensembles on trouve la fonction de transition pour l’automate
déterminisé :
état
{0, 2}
{0, 3}
{1, 2}
{1, 3}
0
{0, 3}
{0, 3}
{1, 3}
{1, 3}
1
{1, 2}
{1, 2}
{0, 2}
{0, 2}
Un automate déterministe peut être défini directement par δ(0, 0) = 0, δ(0, 1) = 1, δ(1, 0) = 2,
δ(1, 1) = 0, avec 0 état initial et 0 et 2 états terminaux. En effet, on peut remarquer que les états
{0, 2} et {0, 3} de l’automate déterminisé sont équivalents.
3. Donnez une expression régulière qui décrive ce langage.
(0 + 1)∗ 0 + (0∗ 10∗ 1)∗ 0∗ .
4
Exercice 8) Soit l’expression régulière suivante E décrivant le langage régulier L :
(0 + 1)∗ (00 + 11)(0 + 1)∗
C’est le langage des mots qui contiennent au moins deux symboles consécutifs égaux.
1. Trouver un automate fini reconnaissant le complémentaire du langage L, régulier lui aussi, en complétant un automate reconnaissant le langage L puis en inversant les états finaux et non-finaux de
l’automate.
On trouve d’abord un automate non déterministe pour L, par exemple celui défini par : δ(0, 0) =
δ(0, 1) = 0, δ(0, 0) = 1, δ(1, 0) = 3, δ(0, 1) = 2, δ(2, 1) = 3, δ(3, 0) = δ(3, 1) = 3.
An appliquant la construction par sous-ensembles on trouve l’automate déterministe A défini par la
fonction de transition suivante :
état
{0}
{0, 1}
{0, 2}
{0, 1, 3}
{0, 2, 3}
0
{0, 1}
{0, 1, 3}
{0, 1}
{0, 1, 3}
{0, 1, 3}
1
{0, 2}
{0, 2}
{0, 2, 3}
{0, 2, 3}
{0, 2, 3}
où {0} est l’état initial, et {0, 1, 3} et {0, 2, 3} terminaux. En inversant les états terminaux et non
terminaux on trouve un automate pour le complémentaire de L.
2. Trouver un automate fini reconnaissant l’ensemble Pref(L) des préfixes de L, langage régulier également, à partir de celui reconnaissant L.
Il suffit de mettre dans A tous les états terminaux.
3
Pour aller plus loin
Exercice 9) Soit A un alphabet fini. L’ensemble des automates finis sur l’alphabet A vous parait-il dénombrable ou pas, et pourquoi ?
Oui. Il suffit de dénombrer d’abord tous les automates qui ont 1 état, puis tous les automates qui ont 2
états, etc. Pour chaque n il y a un nombre fini d’automates qui ont n états.
Exercice 10) Pour chacun des exemples d’expressions régulières de la feuille de TD 7, décrire l’automate
(le cas échéant non déterministe puis déterministe) correspondant.
5