Vous êtes sur la page 1sur 13

École Supérieure d’Informatique- Sidi Bel Abbés

1ère année Second Cycle


Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 1
Quelle est la classe la plus stricte de la grammaire suivante? S → inst; S S → inst;

Exercice 1 : correction
Grammaire régulière (Type3)

Exercice 2
Soit :

• L1 = w ∈ {a, b}∗ / w = an bm a ou w = ban , n, m ≥ 1




• L2 = w ∈ {0, 1}∗ / w = 1(101)n 00 ou w = 0(010)n 11, n ≥ 0




• L3 = w ∈ {0, 1}∗ / w ne contient pas la sous chaine 010




Construire les automates d’états finis qui acceptent les langages L1 , L2 , L3

Exercice 2 : correction

2020/2021 1
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 3
Soit A et B deux automates d’états finis non déterministes

• A=(Q, Σ, ∆, S, F) où
Σ = {0, 1},
Q = {q0 , q1 , q2 },
F = {q1 , q2 }, S = {q0 },
∆ = {(q0 , 0, q0 ), (q0 , 0, q1 ), (q1 , 0, q1 ), (q1 , 1, q2 ), (q0 , 1, q2 ), (q2 , 1, q2 ), (q2 , 1, q0 )}

• B=(Q, Σ, ∆, S, F) où
Σ = {a, b},
Q = {q0 , q1 , q2 , q3 },
F = {q1 }, S = {q0 },
∆ = {(q0 , a, q0 ), (q0 , a, q1 ), (q0 , b, q2 ), (q1 , b, q2 ), (q1 , a, q3 ), (q2 , a, q2 ), (q2 , b, q1 )}
{(q2 , b, q3 ), (q3 , a, q1 ), (q3 , b, q2 )}

1. Donner la représentation graphique représentant chacun des automates A et B.

2. Déterminer une grammaire régulière à droite équivalente à chacun des automates A et B.

3. Trouver un automate d’états finis déterministe équivalent à A et à B.

2020/2021 2
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 3 : correction
1. la représentation graphique

2. Grammaire régulière à droite équivalente


• àA:
GA = (T, N, S, R)
- T = {0, 1} - N = {S, A, B}
- S est l’axiome
- R = {S → 0S | 0A | 1B ; A → 0A | 1B | ε ; B → 1S | 1B | ε}
• àB:
GB = (T, N, S, R)
- T = {a, b} - N = {S, A, B,C}
- S est l’axiome
- R = {S → aS | aA | bB ; A → bB | aC | ε ; B → bA | aB | bC ; C → aA | bB}
3. Déterminisation
• L’automate déterministe équivalent à A :
Table de transition de l’automate déterministe équivalent à A : (les états soulignés
sont des états finaux)

2020/2021 3
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

L’automate déterministe

• L’automate déterministe équivalent à B :


Table de transition de l’automate déterministe équivalent à B : (les états soulignés
sont des états finaux)

L’automate déterministe

Exercice 4
Considérons l’automate d’états finis suivant :
A=(Q, Σ, ∆, S, F) où
Σ = {a, b},
Q = {S0 , S1 , S2 , S3 , S4 , S5 },
F = {S5 }, S = {S0 },
∆ = {(S0 , ε, S1 ), (S0 , ε, S3 ), (S1 , a, S2 ), (S2 , ab, S2 ), (S2 , a, S5 ), (S3 , b, S3 ), (S3 , a, S4 ), (S4 , a, S5 ), }

Construisez l’automate simple (sans ε-transition) équivalent à A.

2020/2021 4
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 4 : correction
D’abord on transforme l’automate généralisé A en automate partiellement généralisé Ap en
décomposant les transitions qui se font sur des mots. C’est le cas, pour A, de la transition
(S2 , ab, S2 ) ;
pour la décomposer on ajoute un nouvel état S6 et on la remplace par les transitions (S2, a, S6)
et (S6, b, S2).
Ensuite, à partir de l’automate partiellement généralisé Ap, on construit l’automate simple As
en éliminant les transitions par le mot vid suivant les règles :

• si (Si , ε, S j ) ∈ ∆ et S j est un état final alors Si deviendra lui aussi état final ;

• si (Si , ε, S j ) et (S j , a, Sk ) ∈ ∆, alors ajouter la transition (Si , a, Sk ), éliminer la transition


(Si , ε, S j ).

Ainsi, on obtient l’automate As suivant :

Remarque : On n’a pas représenté l’état S1 car il est devenu inaccessible (c’est-à-dire qu’on ne
peut pas l’atteindre à partir de l’état initial S0) ; on l’a donc supprimé de l’automate.

Exercice 4-1
Soit l’automate suivant :

2020/2021 5
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

1- donner l’automate équivalant sans ε-transition


2- donner l’automate déterministe correspondant

Exercice 4-1 : correction

2020/2021 6
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 5
Soit G1 , G2 deux grammaires :
- G1 = (T, N, S, R)
- T = {a, b, c}
- N = {S, A, B}
- S est l’axiome
- R = {S → abS | bA | ε ; A → bB | B ; B → aB | b | cA}

G2 = (T, N, S, R)
- T = {a, b, c} - N = {S, A}
- S est l’axiome
- R = {S → aS | bS | cS | abcA ; A → aA | bA | cA | ε}

1. construire l’automate simple déterministe qui accepte L(Gi ), i = 1, 2

Exercice 5: correction
- l’automate A1 équivalent à G1 :
A=(Q, Σ, ∆, S, F) où
Σ = {a, b, c},
Q = {S0 , S1 , S2 , S3 },
F = {S0 , S3 }, S = {S0 },
∆ = {(S0 , ab, S0 ), (S0 , b, S1 ), (S1 , b, S2 ), (S1 , ε, S2 ), (S2 , a, S2 ), (S2 , b, S3 ), (S2 , c, S1 )}

2020/2021 7
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

- l’automate A01 équivalent à A1 sans transition de longueur > 1

∆0 = {(S0 , a, S4 ), (S4 , b, S0 ), (S0 , b, S1 ), (S1 , b, S2 ), (S1 , ε, S2 ), (S2 , a, S2 ), (S2 , b, S3 ), (S2 , c, S1 )}


- l’automate A001 équivalent à A01 sans les transition par le mot ε

∆00 = {(S0 , a, S4 ), (S4 , b, S0 ), (S0 , b, S1 ), (S1 , b, S2 ), (S2 , a, S2 ), (S2 , b, S3 )}


{(S2 , c, S1 ), (S1 , a, S2 ), (S1 , b, S3 ), (S1 , c, S1 )}
- table de transition de l’automate simple déterministe

- automate déterministe A000


1:

Exercice 6
Soit L1 le langage des mots de {a, b}∗ contenant un nombre impaire de lettres a; et L2 =
{aa, ab}.

1. Construire un automate d’états finis simple qui accepte L1 .

2. Construire un automate d’états finis simple qui accepte L2 .

3. Construire un automate d’états finis simple qui accepte L1 ∪ L2 .

4. Rendre l’automate de 3) déterministe.

2020/2021 8
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 6 : correction
1. Automate pour L1

2. Automate pour L2

3. Automate pour L1 ∪ L2
Pour construire l’automate simple de l’union, il suffit d’ajouter un nouvel état initial S6 ,
qui sera relié aux états initiaux des automates de L1 et L2 par des transitions par le mot ε
et de le déterminisé ensuite.
Mais remarquons d’abord que ab ∈ L1 , ce qui fait que L1 ∪ L2 = L1 ∪ {aa}.

4. déterminisation
- élimination des trasition par le mot ε

2020/2021 9
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Remarque : l’état S2 est devenu inaccessible, on le supprimer.

- Construisons la table de transition de l’automate déterministe

- Automate déterministe de l’union :

Exercice 7
Soit L1 et L2 deux langages définis sur Σ = {a, b} par :
L1 = {w ∈ Σ∗ / lemotw, ne contient pas de sous mot 00 ab00 }; L2 = {a(ba)n b, n ≥ 0}

1. Trouver une grammaire régulière à droite pour chacun des langages L1 et L2 .

2. A partir des grammaires trouvées en 1), construire un automate d’états finis pour chacun
des langages L1 et L2 .

3. Trouver un automate d’états finis qui accepte le langage L1 .L2∗ .

2020/2021 10
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 7 : correction
1. Grammaire régulière à droite

• G1 pour L1 : R1 = {S → bS | aA | ε ; A → aA | ε}
• G2 pour L2 : R2 = {S → aA ; A → baA | b}

2. Automate A1 pour L(G1 ) : ∆ = {(S0 , b, S0 ), (S0 , a, S1 ), (S1 , a, S1 )}, F = {S0 , S1 } S = S0

3. Automate A2 pour L(G2 ) : ∆ = {(S2 , a, S3 ), (S3 , ba, S3 ), (S3 , b, S4 )}, F = {S4 } S = S2

4. Pour construire l’automate de L1 .L2∗ , on va d’abord construire l’automate A02 de L2∗ . Celui-
ci s’obtient à partir de A2 :
- en faisant de l’état initial S2 un état final (car il n’ y a pas de transitions entrantes sur S2 )
;
- en ajoutant des transitions vide des états finaux de A2 vers l’état initial de A2 .

Pour construire l’automate Ac de la concaténation, on procède comme suit :


- on prend les deux automates A1 et A02 ;
- l’état initial de Ac sera l’état initial de A1 (c’est-à-dire S0 ) ;
- les états finaux de Ac seront ceux de A02 (c’est-à-dire S4 et S2 ) ;
- on ajoute des transitions par le mot vide des états finaux de A1 (S0 , S1 ) vers l’état initial
de A02 (S2 ).

Exercice 8
Ecrire les expressions régulières décrivant les langages suivants :

• {ab}

• {an bam , n ≥ 0, m ≥ 0}

• {an , n ≥ 2}

Exercice 8 : correction
• ab

• a∗ ba∗

• aa+ = aaa∗

2020/2021 11
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 9
Décrire les langages définis par les expressions régulières suivantes
• E1 = regarder(ai|as|a|ons|ez|ont)
• E2 = ((a + b + c)(a + b + c)(a + b + c))∗
• E3 = (a + b + c)∗ a(a + b + c)∗ a(a + b + c)
• E4 = (b + c)∗ a(b + c)∗ a(b + c)∗

Exercice 9 : correction
• E1 = regarder(ai|as|a|ons|ez|ont) : L(E1 ) c’est la conjugaison du verbe regarder au futur.
• E2 = ((a + b + c)(a + b + c)(a + b + c))∗ : L(E2 ) c’est tous les mots m dont la longueur
est un multiple de 3, i.e. |m| mod 3 = 0.
• E3 = (a + b + c)∗ a(a + b + c)∗ a(a + b + c) : L(E3 ) c’est tous les mots m contenant au
moins deux a pas forcément consécutifs.
• E4 = (b + c)∗ a(b + c)∗ a(b + c)∗ : L(E4 ) c’est tous les mots m contenant exactement deux
a pas forcément consécutifs.

Exercice 10
Déterminer le langage reconnu par l’automate A = (Q, Σ, δ , S, F) Q = {S0 , S1 , S2 }
Σ = {a, b}
S = {S0 }
F = {S0 }
δ = {(S0 , a, S0 ), (S0 , b, S1 ), (S1 , a, S2 ), (S1 , b, S0 ), (S2 , b, S2 ), (S2 , a, S1 )}
par la méthode de résolution de systèmes d’équations.

Exercice 10 : correction
L1 = aL1 + bL2 + ε
L2 = aL3 + bL1
L3 = aL2 + bL3

L3 = b∗ aL2
L2 = ab∗ aL2 + bL1 = (ab∗ a)∗ bL1
L1 = aL1 + b(ab∗ a)∗ bL1 + ε= (a + b(ab∗ a)∗ b)L1 + ε

L1 = (a + b(ab∗ a)∗ b)∗

L(A) = (a + b(ab∗ a)∗ b)∗ = (a|b(ab∗ a)∗ b)∗

2020/2021 12
École Supérieure d’Informatique- Sidi Bel Abbés
1ère année Second Cycle
Théorie des Langages
TD 3-4: Grammaires Régulières, Automates finis, et Expressions Régulières

Exercice 11
Montrer que le langage suivant n’est pas régilier
L = {a p / p premier}

Exercice 11 : correction
• p premier donc p = nq si et seulement si n = 1 et q = p.

• Démonstration par le lemme de l’étoile : Prenons un entier N suffisamment grand, pour


tout mot w ∈ L, |w| ≥ N, ∃x, y, u ∈ A∗ , tels que w = xuy, |xu| ≤ N, |u| > 0 et ∀i ≥ 0 le mot
xui y ∈ L (???)

• soit w = ar as at ∈ L, donc |w| = r + s + t , avec |w| est premier

• w = ar as at : w = |{z} at
as |{z}
ar |{z}
x u y

• xui y = ar ais at ,

• pour i tel que |ais | = k|w| + 1, (k ≥ 1), alors |xui y| = (k + 1)|w|, qui n’est pas premier.
Donc ce xui y n’est pas dans L.

• Donc il ne vérifie pas le lemme de l’étoile. le langage {a p /p premier} n’est par régulier

2020/2021 13

Vous aimerez peut-être aussi