Exercice 1: NF11 - Théorie Des Langages de Programmation TD 4 Automates: Corrigé

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 7

Université de Technologie de Compiègne

NF11 - Théorie des Langages de Programmation


TD 4 Automates : Corrigé
Dans ce TD nous abordons les automates finis déterministes (AFD), les automates
non déterministes (AFN) et les automates avec epsilon-transition (eps-AFD).

Exercice 1
Construire les automates d’états finis simples et déterministes acceptant
les langages dénotés par les expressions régulières suivantes :
1. Soit l’expression régulière E1 = ab(a|b)∗ :

Figure 1 – Automate reconnaissant L(E1 )

2. Soit l’expression régulière E2 = 110∗ 1 :

Figure 2 – Automate reconnaissant L(E2 )

3. Soit l’expression régulière E3 = aa∗ |b. L’automate reconnaissant le langage


engendré par l’expression régulière E3 est donné par la Figure 3. On rappelle

Figure 3 – Automate reconnaissant L(E3 )

que l’opérateur concaténation est plus prioritaire que l’opérateur de disjonc-


tion. Il ne faut confondre l’expression régulière E3 avec l’expression régulière
suivante : E30 = a(a∗ |b) où on force la priorité de l’opérateur de disjonction
grâce aux méta symboles parenthèses.
On donne aussi, dans la Figure 4, l’automate reconnaissant le langage L(E30 )
(non demandé dans l’exercice).
Construire des AFD, AFN ou eps-AFN acceptant les langages dénotés par
les expressions régulières suivantes.
1. Soit l’expression régulière E4 = (a|b)∗ ab(a|b)∗ . On remarque que l’automate de
la Figure 5 est non déterministe.

1
Figure 4 – Automate reconnaissant L(E3 )

Figure 5 – Automate reconnaissant L(E4 )

2. Soit l’expression régulière E5 = (ab)∗ (baa)∗ aa. On remarque que l’automate,


de la Figure 6, contient des  transition.
Remarque : Il est généralement plus naturel et plus facile de construire des auto-
mates non déterministes avec -transition. On rappelle qu’il existe une équivalence
entre AFD, AFN et eps-AFN. A titre d’exemple on donne un AFD (Figure 7) qui
reconnait le langage L(E5).
D’une manière générale on peut utiliser l’algorithme vu en cours pour obtenir un
automate fini déterministe.

Exercice 2
Construire les automates d’états finis simples et déterministes acceptant les langages
suivants :
1. L’ensemble des constantes composées de cinq chiffres maximum.
Soit C = [0 − 9] et C0 = [1 − 9].
— La Figure 8 représente une solution possible où on autorise la présence d’un
ou plusieurs zéros à gauche de la constante.
— La Figure 9 représente une solution possible où on n’autorise pas la présence
d’un ou plusieurs zéros à gauche de la constante.
2. L’ensemble des chaînes composées de lettres, de chiffres et de tirets. Elles ne
peuvent ni commencer, ni finir par un tiret et ne contiennent pas deux tirets
consécutifs.
Soit c = [0 − 9] et l = [a − zA − Z]. L’automate est donné par la Figure 10,
il accepte la chaîne vide. Dans le cas où la chaîne vide ne devrait pas être
acceptée par l’automate, on peut rendre l’état q0 non final.
3. L’ensemble de toutes les chaînes de 0 et de 1 telles que chaque 0 soit immé-
diatement suivi par au moins un 1.
Les automates des Figures 11 et 12 représentent deux solutions possibles. Le
premier accepte la chaîne vide, alors que le deuxième l’interdit.
4. L’ensemble de chaînes formées de lettres telles que les consonnes sont séparées
par des voyelles (pas de consonnes consécutives).
On représente par lc et lv les lettres consonnes et les voyelles, respectivement.
Les automates des Figures 13 et 14 représentent deux solutions possibles. Le
premier accepte la chaîne vide, alors que le deuxième l’interdit.

2
Figure 6 – Automate reconnaissant L(E5 )

Figure 7 – Automate reconnaissant L(E5 )

Exercice 3
Soit l’automate A donnée par la Figure 15.
1. Trouver l’automate simple déterministe C équivalent à A tel que L(A) = L(C)
La Table 1 représente la table de transition de l’automate A : Les calculs
de l’algorithme de conversion sont résumés dans la Table 2, qui représente
également la table de transition de l’automate C avant ré-numérotation des
états.
La Table 3, représente la table de transition de l’automate obtenu après ré-
numérotation des états. Il suffit de ré-numéroter les états dans l’ordre en com-

État  a b c
→ S0 S3 S2 S2
S1 S2 S2
∗ S2 S1
S3 S1

Table 1 – Table de transition de l’automate A

3
Figure 8 – Exercice 2-1 : Solution 1

Figure 9 – Exercice 2-1 : Solution 2

mençant par l’indice 0. Ici j’ai préféré garder le plus possible les mêmes indices
que l’automate d’origine. La Figure 16 représente le diagramme de transition
de l’automate C.

Exercice 4
Soit l’automate A donné par la Figure 17.
1. Trouver un automate déterministe C équivalent à A, tel que L(A) = L(C)
2. Trouver B déterministe tel que L(B) = M iroir(L(A))

État a b c
→ epsf er({S0 }) = S0 epsf er({S3 }) = S3 epsf er({S2 }) = S2 epsf er({S2 }) = S2
S3 epsf er({S1 }) = S1 , S2
∗ S2 epsf er({S1 }) = S1 , S2
∗ S1 , S2 epsf er({S1 }) = S1 , S2 epsf er({S2 }) = S2

Table 2 – Table de transition de l’automate C

4
Figure 10 – Automate exercice 2-2

Figure 11 – Exercice 2-3 : Solution 1

État a b c
→ q0 q3 q2 q2
q3 q1
∗ q2 q1
∗ q1 q1 q2

Table 3 – Table de transition de l’automate C après ré-numérotation des états

Figure 12 – Exercice 2-3 : Solution 2

Figure 13 – Exercice 2-3 : Solution 1

5
Figure 14 – Exercice 2-3 : Solution 2

Figure 15 – Exercice 3 : Automate A

Figure 16 – Exercice 3 : Automate C

6
Figure 17 – Exercice 4 : Automate A

Vous aimerez peut-être aussi