Exercice 1: NF11 - Théorie Des Langages de Programmation TD 4 Automates: Corrigé
Exercice 1: NF11 - Théorie Des Langages de Programmation TD 4 Automates: Corrigé
Exercice 1: NF11 - Théorie Des Langages de Programmation TD 4 Automates: Corrigé
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)∗ :
1
Figure 4 – Automate reconnaissant L(E3 )
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 )
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
3
Figure 8 – Exercice 2-1 : Solution 1
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
4
Figure 10 – Automate exercice 2-2
État a b c
→ q0 q3 q2 q2
q3 q1
∗ q2 q1
∗ q1 q1 q2
5
Figure 14 – Exercice 2-3 : Solution 2
6
Figure 17 – Exercice 4 : Automate A