Vous êtes sur la page 1sur 31

Théorie des Langages – TD 1 et 2

ALPHABETS, LANGAGES ET GRAMMAIRES

Exercice 1 - On considère l'alphabet X = {a, b, c}. On rappelle que |w| représente la longueur du mot w, et 
représente le mot vide. Soit deux mots w = ababc et q = caba.
1. Calculez w0, w1 et w2
2. Calculez wq2w
4 4
3. Calculez |w|ab, |(ab) | et |(ab) |aba
4. Donnez les préfixes, les préfixes propres, les suffixes et les suffixes propres de q
5. Donnez le miroir du mot wq.

Corrigé :

Formellement, on définit par récurrence


w0= ε et ∀n ∈ ℕ, wn+1 = wwn

1. w0 = ε, w1= ababc, w2=ww= ababc ababc


2. wq2w= wqqw= ababc caba caba ababc

Pour tout mot w et toute lettre a, on note |w|a le nombre d’occurrences de a dans w.

3. |w|ab=2, |(ab)4|=|(ab)(ab) (ab) (ab) |=|abababab |= 8


4. Les préfixes de q : { ε , c, ca, cab, caba }
Les préfixes propres de q : { ε , c, ca, cab }
Les suffixes de q : { ε , a, ba, aba , caba }
Les suffixes propres de q : { ε , a, ba, aba }

Le miroir d’un mot w ∈ V*, noté wR, est le mot obtenu en inversant l’ordre des lettres de w. Autrement
dit, si w s’écrit w = w1…wn sur V, alors wR = wn …w1.
Un palindrome est un mot w tel que w = wR.

5. (wq)R=( ababc caba ) R=abac cbaba

Remarquons que (wq)R=q R w R

Exercice 2 -
1. Montrez qu'il ne peut y avoir de mot x tel que ax = xb.
2. Quels sont les deux langages dont la fermeture par l'étoile donne le langage uniquement composé du mot
vide  ?
∗ ∗
3. Les mots suivants sont-ils générés par le langage (ab )b : , a, aa, ba, abbb, ababb, baba ? Même
∗ ∗
question avec le langage (ab) b .
Corrigé :

1. On utilise le raisonnement par l’absurde


C’est évident pour x=  car a≠b
Soit x=x1x2…xn-1 xn et supposons que ax=bx
ax = xb ⟺ a x1x2…xn-1 xn= x1x2…xn-1 xn=b
⟺ a= x1 et x1= x2 et ...et xn-1=xn et xn et b (c’est-à-dire a=x1=x2=x3=…..=xn=b)
Ceci est faux car a≠b , par conséquent on ne peut pas avoir un mot x tel que ax = xb.

2. Il y a :
– L = {ε} (le langage ayant un seul élément, le mot vide) qui donne bien L* = {ε} ;
– mais également L = ∅ car, par définition, la fermeture par l’étoile contient le mot vide (formé de zéro
mot de L). (Voir la page 28 du cours sur la fermeture de Kleene)
∗ ∗
3. Les mots générés par le langage (ab ) b : , a, abbb
∗ ∗
Les mots générés par le langage (ab) b : , abbb, ababb
Exercice 3 - On considère l'alphabet X = {a, b}. Donner les langages correspondant aux propriétés suivantes :
1. les mots qui ne contiennent aucun b ;
2. les mots qui ne contiennent pas ab ;
3. les mots qui contiennent au moins un a ;
4. les mots de longueur paire ;

Corrigé :
1. a*
2. b*a*
3. (a + b)*a(a + b)*
4. ((a + b)(a + b))*

Exercice 4 - On considère l'alphabet X = {a, b, c}.


1. Calculez les ensembles X 0, X 1 et X 2
2. Pour chacun des ensembles suivants, caractérisez L1*, et calculez L1 ∩ L2, L1 ∪ L2, L1. L2, L2. L1
L1 = {ab, bb} et L2 = {a, ab, bbc, ca}
L1 = {ε} et L2 = {bbc, ca}
L1 =∅ et L2 = {bbc, ca}
L1 = {ab, bb} et L2 = X*
3. Soient L1 et L2.
L1 = {w ∈ X *| |w| = 3n, avec n ∈ N}
L2= {w ∈ X ∗| |w| = 5n, avec n ∈ N}
Caractérisez en français les langages L1 ∪ L2, L1 ∩ L2
Corrigé :
1. On a X = {a, b, c}
X0=ε, X1={a,b,c}, X2=X.X={aa, ab, ac, ba, bb, bc, ca, cb, cc}
2. L’étoile (Fermeture de Kleene) d’un langage L, notée L*, est :
L* = {ε} L L2 … Ln …
(a)
L2= {a, ab, bbc, ca}
L1= {ab, bb} , L1*= {}{ab, bb }{abab, abbb, bbab, bbbb}…

L1 peut être caractérisé comme suit :


L1 est l’ensemble de tous les mots de longueur paire (2n, n ∈ ℕ) tels que aa et ba ne sont ni des
suffixes ni des préfixes.

L1 ∪ L2= {ab, bb}{a, ab, bbc, ca}={ab, bb, a, bbc, ca }


L1 ∩ L2= {ab, bb}∩{a, ab, bbc, ca}={ab}
L1. L2={aba, abab , abbbc , abca, bba , bbab, bbbbc, bbca }
L2. L1={aab, abb, abab, abbb, bbcab, bbcbb, caab, cabb }

(b)
Même chose pour L1 = {ε} et L2 = {bbc, ca}
(c)
Même chose pour L1 = {ε} et L2 = {bbc, ca}
(d)
Même chose pour L1 = ∅ et L2 = {bbc, ca}
(e)
Même chose pour L1 = {ab, bb} et L2 = X*

Exercice 5 - On considère l’alphabet X = {a,b}, et les langages L1 et L2 suivants :

L1 = {anbn|n ∈ N}
L2 = {bnan|n ∈ N}

Calculez L1 ∪ L2, L1 ∩ L2, L1.L2, L2.L1, L12.

Corrigé :

n n n n n n n n
L1 ∪ L2={a b |n ∈ N}∪{b a |n ∈ N}= { a b ou b a |n ∈ N}

L1 ∩ L2={anbn|n ∈ N}∩{bnan|n ∈ N}={ε }

n n m m
L1.L2= { a b b a |n,m ∈ N}

L2.L1= { bnan ambm |n,m ∈ N}

2 n n m n
L1 = { a b a bm |n,m ∈ N}
Exercice 6 - On considère des langages sur un alphabet quelconque.
1. Démontrez les propriétés suivantes :
L1 ⊆ L2 ⇒ L.L1 ⊆ L.L2
L.(L1 ∪ L2 ) = L.L1 ∪L.L2
2. Montrez que L.(L1 ∩ L2 ) ⊆ L.L1 ∩ L.L2. A l'aide d'un contre-exemple, montrez que l'égalité n'est pas
forcément atteinte.
∗ ∗ ∗
3. Montrez que (L1 ∩L2) ⊆ L1 ∩L2 . A l'aide d'un contre-exemple, montrez que l'égalité n'est pas
forcément atteinte.

Corrigé :
On peut définir l'inclusion au sens large à partir de l'intersection ou de la réunion :

 A ⊆ B si et seulement si A ∩ B = A ;
 A ⊆ B si et seulement si A ∪ B = B.

On a

L.L1 ⊆ L.L2 ⟺ L. L1 ∪ L. L2

⟺ L.( L1∪ L2) (Le produit de langages est distributif par rapport à l'union,

voir page 27 du cours)

L1 ⊆ L2 ⇒ L1∪ L2= L2

⇒ L. (L1∪ L2)= L. L2 (on multiplie par L les deux parties de l’égalité)

⇒ L. L1 ∪ L. L2= L. L2 (Le produit de langages est distributif par rapport à l'union)

⇒ L.L1 ⊆ L.L2

Exercice 7 - On considère des langages sur un alphabet X quelconque. Soient les deux langages
suivants :

Lp = {w| |w| est paire}


Li = {w| |w| est impaire}

1. Montrez que L2p = Lp


+ ∗
2. Montrez que L p = Lp, puis que L p = Lp
3. Montrez que Lp.Li = Li.Lp = Li
4. Montrez que Li2 = Lp \{}, puis que Li = X
∗ ∗
Corrigé :
1. soit Lp = { w, |w| paire}, ensemble des mots de longueur paire, et Li = {w, |w| impaire}

Lp.Lp = {w.w, pour tout w Є Lp}


On a |w.w| = |w|+|w| = 2|w|, donc Lp.Lp ={w, |w| paire}= Lp
2. Lp+ : = Lp .
j
Montrons que Lp = Lp
– Elle est vrai pour j = 1, soit Lp1= Lp.
– Supposons que c’est vrai pour j, soit Lpj = Lp et montrons que c’est vrai pour j+1, soit
j+1 j
Lp = Lp .Lp = Lp.Lp (hypothèse de récurrence) = Lp (solution de la question 1).

– donc pour tout j, Lpj = Lp et par conséquent Lp+ = Lp.


Comme ||=0 et 0 est un nombre pair on a aussi Lp* = Lp.

3. Pour tout w, w ∈ Lp.Li, il existe u ∈ Lp et v ∈ Li tels que w= u.v, comme on a |w| = |u|+|v| (la somme
d’un nombre paire et d’un nombre impaire est nombre impaire, |w| est impaire et par conséquent
Lp.Li = Li ={w| |w| est impaire}
Li.Lp = Li (même chose)

Exercice 8 - Soient les langages L1, L2 et L3 construits sur l'alphabet X = {a, b}. On rappelle que (a + b) =
{a}∪{b}.

L1 = {anb(a + b)n, n ∈ N}
n n
L2 = {(a + b) ba , n ∈ N}
n n
L3 = {(a + b) b(a + b) , n ∈ N}
1. Montrez que les langages L1, L2 et L3 ne sont pas égaux
2. Soit L4 = {(a + b)mban, m, n ∈ N}. Montrez que L2 ≠ L4
3. Donnez les grammaires qui engendrent L2 et L4
Corrigé :
1.
Il faut savoir que pour n les longueurs des mots de L1 et L2 sont égaux à 2n+1
Il suffit de trouver w1 ∈ L1 et w2 ∈ L2, de même longueur tel que w1≠w2

Pour n=0, w1=a0b(a+b)0=b∈ L1, w2=(a+b)0ba0=b∈ L2


Pour n=1, w1=a1b(a+b)1=aba+abb∈ L1, w2=(a + b)1ba1=aba+bba∈ L2
aba+abb≠ aba+bba donc L1 et L2 ne sont pas égaux.
2.
On procède de la même manière, les longueurs des mots w1 ∈ L2 et w2 ∈ L4 à comparer doivent
avoir la même longueur
L2 = {(a + b)nban, n ∈ N}
L4 = {(a + b)pbaq, p, q ∈ N}.
Les longueurs des mots à comparer sont tels que 2n+1=p+q+1
Pour n=p=q=0, w1=(a + b)0ba0=b∈ L1, w2=(a + b)0ba0=b
Pour n=1, w1=(a + b)1ba1=aba+bba ∈ L2, on a trois possibilités : p=1 et q=1 ou bien p=2 et
p=0 ou bien
Pour p=1 et q=1, (a + b)1ba1=aba+bba ∈ L2, w1=w2
2 0 0
Pour p=2 et q=0, (a + b) ba =(aa+ab+ba+bb)ba =(aa+ab+ba+bb)b=aab+abb+bab+bbb∈ L2,
w1≠w2 donc L2≠L4

Exercice 9 - Soit la grammaire G = (V , Σ, P, S), avec V = {a, b, S}, Σ = {a, b} et P = {S → aSa; S → bSb;
S → ε}.

1. Soit G′ = (V, Σ, P′, S), avec P′ = P ∪{S → SS}. Montrez que aabaab ∈ L(G′). Montrez ensuite que G′ est
ambigüe.
2. Quel est le langage engendré par G ? Démontrez
3. Pourquoi G n'est pas ambigüe ?
Corrigé :
Montrons que aabaab ∈ L(G′).
S → SS→ aSaS→aaS→ aabSb→ aabaSab→ aabaab

Rappel : Une grammaire G est ambiguë s'il existe un mot de L(G) qui a au moins deux dérivations LPG à partir
de S (et donc deux arbres de dérivation).

aa possède deux arbres de dérivations :

S S

S S S S
La grammaire G′ est ambiguë

ε a S a a S a ε

ε ε

Exercice 10 - Proposez une grammaire qui permet d'engendrer les formules de la logique des propositions.

Corrigé :
Grammaire de la logique propositionnelle
Alphabet de la logique des propositions
Symboles de variables: P, Q, R, …
Connecteurs unaire : ¬.
Connecteurs binaires : ∧, ∨, ⇒, ⟺.
Axiome : P (Comme Proposition)
Règles :
P → ¬P
P → (P)
P → P∧P
P → P∨P
P → P ⇒P
P → P⟺P
P → P/Q/R/ ...

Exercice 11 - Soit la grammaire G = (V, Σ, P, S), avec V = {if, then, else, a, b, S}, Σ = {if, then, else, a, b} et
P = {S → if b then S else S ; S → if b then S ; S → a}.

1. Démontrez que cette grammaire est ambigüe


2. Proposez une solution pour lever l'ambiguïté
Rappel : Une grammaire G est ambigüe s'il existe un mot de L(G) qui a au moins deux dérivations
LPG (La Plus à Gauche) à partir de S (et donc deux arbres de dérivation).
Dans le cas contraire G est non ambigüe.

« if b then if b then a else a» a deux arbres de dérivation . La grammaire G est DONC ambigüe

S S

If b then S if b then S else S

If b then S else S if b then S a

a a a

2) L’ambiguïté vient du fait qu’il existe tout au début deux dérivations. On peut choisir l’une comme on
peut choisir l’autre.

Dans le cas général si on a A → αβ1/αβ2, on la remplace par A→αA’ et A’→β1/β2.


Cette modification s’appelle factorisation à gauche.
Théorie des Langages – TD 3 et 4
AUTOMATES FINIS

Exercice 1 - Soit Σ = {a, b}. Soit l’automate M suivant

b b b

a b b a
1 2 3 4 5

1. Combien d’états possède l’automate M ? Donner l’ensemble des états finaux, et


l’ensemble des états initiaux
2. L’automate M est-il déterministe ?
3. Dans quel état se trouve l’automate après avoir lu le mot bbabbb ? Ce mot est-il
reconnu par l’automate ? accepté par l’automate ? Mêmes questions pour le mot
babaabba.
4. L’automate M est-il complet ? Le mot baa est-il reconnu par cet automate ? accepté
par cet automate ?
5. L’automate suivant M’ est-il déterministe ?
b b

a b b a
1 2 3 4 5

6. Dans quels états peut-être l’automate M′ après avoir lu babba ? Ce mot est-il accepté
par cet automate ?
7. Même question pour le mot abbb.

Corrigé :
1. Les états de l’automate M, Q= {1, 2, 3, 4, 5}. l’automate M possède 5 états.

Rappel : Un automate est déterministe si, pour chacun de ses états, il y a au plus
une transition pour chaque étiquette possible.

2. M est-il un automate déterministe ?


Rappel : Une fonction de transition peut être définie comme suit :
δ : Qx Σ → Q

Pour l’automate M, Σ = {a, b}, Q= {1, 2, 3, 4, 5}.

On a δ(1,a)= {2}, δ(1,b)= {1}, δ(2,a)= ∅, δ(2,b)= {3}, δ(3,a)= {1}, δ(3,b)= {4}, δ(4,a)=
{5}, δ(4,b)= {2}, δ(5,a)= δ(5,b)= ∅.

Ces résultats peuvent être inscrits dans une matrice de transition.

a b
1 {2} {1}
2 ∅ {3}
3 {1} {4}
4 {5} {2}
5 ∅ ∅

Comme il n’y a pas plus d’un état dans chacune des cases de la matrices de
transition, l‘automate M est déterministe.

Rappel :
Un mot w est accepté par un automate si et seulement si
(q0, w)⇒ (q1, w1)⇒ (q2, w2)⇒…⇒ (qn, wn) avec qn ∈ F
Ou bien
(q0, w) *⇒ (q, ε) avec q ∈ F

3. Le mot à lire bbabbb

Etat Symbole lu transition


courant
1 b δ (1,b)=1
1 b δ (1,b)=1
1 a δ (1,a)=2
2 b δ (2,b)=3
3 b δ (3,b)=4
4 b δ (4,b)=2

On peut aussi écrire :

(1, bbabbb) ⇒ (1, babbb) ⇒ (1, abbb) ⇒ (2, bbb) ⇒ (3, bb) ⇒ (4, b) ⇒ (2, )

Après lecture du mot bbabbb, l’automate M est à l’état 2. Comme on est pas en un
état final, ce mot n’est pas reconnu ( n’est pas accepté).

Rappel : Un automate est complet si pour tout état q ∈ Q il existe une transition
pour chaque lettre de l'alphabet Σ.

∀q ∈ Q, ∀x ∈ Σ, δ (q, x) est défini


4. L’automate M n’est pas complet car δ (2, a), δ (5, a) et δ (5, b) ne sont pas définis.

5. Pour l’automate M’, Σ = {a, b}, Q= {1, 2, 3, 4, 5}.


La matrice de transition
a b
1 {2} {1}
2 ∅ {3}
3 ∅ {1,4}
4 {5} {2}
5 ∅ ∅

Comme δ (3, b)= {1,4}, l’automate M’ n’est pas déterministe.

6. Il y a deux possibilités :
(1, babba) ⇒ (1, abba) ⇒ (2, bba) ⇒ (3, ba) ⇒ (1, a) ⇒ (2, )
(1, babba) ⇒ (1, abba) ⇒ (2, bba) ⇒ (3, ba) ⇒ (4, a) ⇒ (5, )
Pour la deuxième, le mot babba est accepté par l’automate.

7. Même chose pour le mot abbb.


Exercice 2 - Pour chacun des automates suivants, dire s’il est déterministe et s’il est
complet.
Décrire ensuite le langage reconnu par cet automate en donnant une caractérisation de
l’ensemble des mots acceptés.

1. Automate M1

a, b a, b

a b b b
1 2 3 4 5

2. Automate M2
a b

a
1 2

3. Automate M3
a
a
1 2 3

4. Automate M4
a b
a

1 2

b
5. Automate M5
a a a a
1 2 3 4 5

a
Corrigé :
1.

a, b a, b

a b b b
1 2 3 4 5

Cet automate n’est pas déterministe car on a δ (1, a)= {1, 2}. Il n’est pas complet car δ
(2, a), δ (3, a) et δ (4, a) ne sont pas définis.

Cet automate reconnait tous les mots ayant abbb, soit (a+b)*abbb(a+b)*

2. Même chose pour l’automate M2


3. Même chose pour l’automate M3
4. Même chose pour l’automate M4
5. Même chose pour l’automate M5

Exercice 3 - Dans chacun des cas suivants, donner un automate déterministe et complet
reconnaissant le langage sur l’alphabet {0, 1} :

1. l’ensemble des mots se terminant par 00


2. l’ensemble des mots ayant au moins 3 zeros consécutifs
3. l’ensemble des mots dont l’avant-dernier symbole est un 1
4. l’ensemble des mots qui contiennent au plus deux 0 consécutifs et au plus deux 1
consécutifs

Corrigé :
1. L’automate qui reconnait l’ensemble des mots se terminant par 00

2. L’automate qui reconnait l’ensemble ayant au moins 3 zéros consécutifs


3. L’automate qui reconnait l’ensemble des mots dont l’avant-dernier symbole est un 1

4. L’automate qui reconnait l’ensemble des mots qui contiennent au plus deux 0
consécutifs et au plus deux 1 consécutifs

Exercice 4 - Soit Σ = {a, b}. Soit l’automate M suivant

b b a
b b

2 0 1
a a

1. Donner le système d’équations de l’automate M


2. Déterminiser l’automate M
3. Caractériser le langage L (M) reconnu par M
4. Donner une grammaire linéaire à droite qui engendre L (M)
5. Construire l’automate complémentaire à M

2
Corrigé:

1. Le système d’équations de l’automate M


L0=bL0+bL1 +bL2+ε
L1=aL1+aL0
L2=bL2+aL0
2. Déterminisons l’automate M
L0=bL0+bL1 + bL2+ε
L0= b(L0+L1 + L2)+ε
L0+L1 + L2= b(L0+L1 + L2)+ε+ a(L1+L0)+ bL2+aL0
L0+L1 + L2 = b(L0+L1 + L2) + a(L0+L1) + ε
L0+L1= b(L0+L1 + L2)+ a(L0+L1)+ ε
Le système d’équations de l’automate M déterminisé

L0 = b L012+ε
L012= b L012+ a L01+ ε
L01 = b L012+ a L01+ ε

b a

b a
0 012 01

b
3. ε/b+/b+a+/b+a+b+/b+a+b+a+/…
C’est une chaine composée d’alternation de séquence de b et de séquence de a
Elle peut être une chaine vide ou une séquence de b.

4. La grammaire linéaire qui engendre M


S → bA/ε
A → bA/aB/ε
B → bA/aB/ε
Rappel :
La méthode qui permet de construire un automate complémentaire à M
a) Déterminiser et compléter l'automate M
b) Transformer tous les états finaux en états non finaux, et vice-versa
5. L’automate complémentaire à M
D’abord, complétons l’automate ci-dessus

a, b
3

a b a
a
0 b 1 2

b
Ensuite, en transformant tous les états finaux en états non finaux, et vice-versa, on
obtient l’automate complémentaire à M.
a,b
3

a b a
a
b
0 1 2

Exercice 5 - Soit Σ = {a, b}. Soient L1 = { w ∈ Σ∗| |w|a = 2n, n ∈ N } et L2 = { w ∈


Σ∗| |w|b = 2n + 1, n ∈ N}
1. Caractérisez en français les langages L1 et L2
2. Construire les automates qui reconnaissent respectivement L1 et L2
3. Construire l’automate qui reconnaît L1 + L2

Corrigé :
1.
L1 est le Langage reconnaissant les mots contenant un nombre pair de lettres
a.
L2 est le Langage reconnaissant les mots contenant un nombre impair de
lettres b.
2. Automate reconnaissant les mots contenant un nombre pair de lettres a.
M1
b b
a

0 1
a

Automate reconnaissant les mots contenant un nombre impair de lettres b.


M2
a a
b

2 3

b
3. Il s’agit de calculer l’union L(M1) U L(M2). Pour calculer l'union de deux automates, il
faut calculer l'équation qui correspond à chacun des langages. (voir page 39 du
cours).
L(M1) L(M2)

L0=bL0+aL1+ε L2=aL2+bL3
L1=bL1+aL0 L3=aL3+bL2 +ε

L(M1) U L(M2)

L0 +L2 = a(L1 +L2)+b(L0 +L3)+ ε


L1 +L2 = b(L1 +L3) +a(L0 +L2)
L0 +L3= a(L1 +L3)+b( L0 +L2) +ε
L1 +L3= b(L1+ L3) +a(L0 +L3) +ε

02
a b
a b
12 03
a
b a
13

b
Exercice 6 - Soient les deux automates M1 et M2. Construire le l’automate qui reconnaît le
langage L(M1).L(M2).
– Automate M1
a

0 1
b
– Automate M2
b

2 3
a

Exercice 7 - Soit la grammaire G = (V, Σ, P, S), avec V = {S, T, U, a, b}, Σ = {a, b},
P = {S → aS, S → bT , S → ε, T → bT , T → aU , T → ε, U → aU , U → ε}.

Corrigé :
Rappel
Grammaire associée à un automate fini
Pour tout automate M = (Q, Σ, Δ, q0, F), il existe une grammaire linéaire à droite qui génère
L(M).
G = (VG, ΣG, PG, SG), avec
• ΣG : l'ensemble des symboles terminaux
• VG = QUΣ : l’alphabet. Il y a donc un symbole non terminal pour chaque état de
l'automate
• SG = S, ou S est le symbole non terminal associé à q0
• PG = { A →wB | (A, w, B) ∈ Δ } U{ A→ε | A∈ F }

Construire l’automate M tel que L (G) = L (M).

a b c

0 1 2
b a
Exercice 8 - Soit Σ = {a, b}. Soit l’automate M suivant

a
a b
2
0 1 12
a a

1. Donner le système d’équations de l’automate M


2. Déterminiser l’automate M
3. Donner une grammaire linéaire à droite qui engendre L (M)
4. Construire l’automate complémentaire à M

Corrigé :

1. Le système d’équation de l’automate M

L0=aL0+aL1
L1=aL0+bL2
L2=aL1+aL2+ε

2. Déterminisons l’automate M
Le système d’équation du système de l’automate M déterminisé est :

L0=a(L0+L1)
L0+L1=a(L0+L1)+bL2
L2=a(L1+L2)+ε
L1+L2=a(L0+L1+L2)+bL2+ε
L0+L1+L2=a(L0+L1+L2)+bL2+ε

Notons que L1+L2= L0+L1+L2


Le système d’équation du système de l’automate M déterminisé s’écrit comme suit :

L0=a(L0+L1)
L0+L1=a(L0+L1)+bL2
L2=a(L1+L2)+ε
L1+L2=a(L1+L2)+bL2+ε
L’automate M déterminisé

a
b
0 01 2 12
a a a

3. Une grammaire linéaire à droite qui engendre L(M)


S → aA
A → aA/bB
B → aC/ε
C → aD/bB/ε
D → aD/bB/ε

4. L’automate complémentaire à M
Pour trouver l’automate complémentaire à M, il faut suivre la méthode suivante (p.
35 du cours) :
a) Déterminiser et compléter l'automate
b) Transformer tous les états finaux en états non finaux, et vice-versa
Complétons l’automate ci-dessous :

a,b

b
b a
b
01 2
a a

0 b b

12 a 012

a
Transformons tous les états finaux en états non finaux, et vice-versa
a,b

b b
a
b
01 2
a a

0 b b

12 a 012

Exercice 9 - Soit la grammaire G = (V, Σ, P, S), avec V = {S, T, a, b}, Σ = {a, b},
P = {S → aS, S → bT, S → ε, S → a, T → aS, T → bT , T → a}.
Construire l’automate M tel que L (G) = L (M).

Corrigé :

Rappel
Une production de la forme A → a peut être transformée en { A → aU, U → ε }

S → aS, S → aS,
S → bT, S → bT,
S → ε, S → ε,
P S → a, P S → aU,
T → aS, U → ε,
T → bT, T → aS,
T →a T → bT,
T → aV,
V →ε
L’automate M tel que L (G) = L (M) est celui-ci

a
a b
b
S T
a

V
Théorie des Langages – TD 5
AUTOMATES ET EXPRESSIONS RÉGULIÈRES

Exercice 1 - Soit Σ = {a, b}. En utilisant le théorème d’Arden, donnez sous forme
d’expressions régulières les langages L(M) et L(M’) reconnus respectivement par les
automates suivants :

a
a a

0 1 0 1

a b
b a b a
b
b
2 3 2 3

M b M’

Rappel sur les propriétés des expressions régulières


P1. r + s = s + r
P2. r +∅ = ∅ + r = r
P3. r + r = r
P4. (r + s) + t = r + (s + t) = r + s + t
P5. rε = εr = r
P6. r∅ = ∅r = ∅
P7. (rs)t = r(st) = rst
P8. r(s + t) = rs + rt
P9. r* = (r*)* = r*r* = (ε + r)* = r *(r + ε) = (r + ε)r* = ε + rr* =ε+ r*r
P10. (r + s)* = (r*s*)* = (r*s)*r* = (s*r )*s* = r*(sr*)*
P11. r(sr)* = (rs)*r
P12. (r*s)* = ε + (r + s)*s
P13. (rs*)* = ε + r (r + s)*
P14. (r + ε)*(r + ε) + s = sr*
P15. rr* = r*r = r+
Corrigé :
Le système d’équation des langages L(0), L(1), L(2) et L(3) associé à M

L0 = aL1+bL2 (e0)
L1 = aL0 +ε (e1)
L2 = bL3+aL0 (e2)
L3 = bL2 (e3)

- En utilisant e3, remplaçons L3 dans l’équation e2


L2= bL3+aL0
L2= b(bL2)+aL0
L2= bbL2+aL0
- Eliminons L2, en utilisant le théorème d’Arden
L2=(bb)*aL0 (e’2)
- En utilisant e1 et e’2, remplaçons L1 et L2 dans e0
L0=aL1+bL2
L0=a(aL0 +ε)+b(bb)*aL0
L0=(aa+b(bb)*a)L0+a
- Eliminons L0, en utilisant le théorème d’Arden
L0=(aa+b(bb)*a)*a
- L’expressions régulières reconnue par l’automate M est (aa+b(bb)*a)*a

Le système d’équation des langages L(0), L(1), L(2) et L(3) associé à M’

L0=aL0+aL1+bL2+ε (e0)
L1=bL0 (e1)
L2=bL3 (e2)
L3=aL0 (e3)

- Remplaçons L3 dans (e2), en utilisant (e3)


L2=bL3
L2=b(aL0)
L2=baL0 (e’2)
- Remplaçons L1 et L2 dans (e0), en utilisant (e1) et (e’2)
L0=aL0+aL1+bL2+ε
L0=aL0+abL0+bbaL0+ε
L0=(a+ab+bba)L0+ε (e’0)
- Eliminons L0 de l’équation (e’0), en utilisant le théorème d’Arden
L0=(a+ab+bba)*ε
- L’expressions régulières reconnue par l’automate M’ est : (a+ab+bba)*
Exercice 2 - Soit Σ = {a, b}. Soit l’automate M suivant

a
a

b
0 1

1. Montrez, en utilisant le théorème d’Arden, que L(M) = (a*ab)*


2. Déterminisez M. Proposez une grammaire qui engendre L(M).

Corrigé :

1. Le système d’équation des langages L(0), L(1) et L(2) associé à M

L0=aL1+aL2+ε (e0)
L1=bL0 (e1)
L2=aL2+aL1 (e2)

- Eliminons L2 de l’équation (e2), en utilisant le théorème d’Arden

L2= a*aL1

- Remplaçons L1 dans (e’2), en utilisant (e1)

L2= a*abL0 (e’2)

- Remplaçons L1 et L2 dans (e0), en utilisant (e1) et (e’2)

L0=aL1+aL2+ε

L0=abL0+aa*abL0 +ε

L0=(ab+aa*ab)L0+ε

L0=(ab+aa*ab)L0+ε ( aa*=a+ en appliquant P15)

L0=(ε+ a+)abL0+ε (car ε+ a+= a*)

L0=(a*ab)*ε (car ε+ a+= a*)

L0=(a*ab)*

L0= (a+b) * (en appliquant P15)


2. Déterminisons M

A partir de l’équation (e0) on obtient

L0=a(L1+L2)+ε

En utilisant les équations (e1) et (e2), on obtient

L1+L2= bL0+ a(L1+L2 )

Le système d’équation des langages de l’automate M déterminisé est comme suit :

L0=a(L1+L2)+ε

L1+L2= a(L1+L2) +bL0

L’automate M déterminisé peut être construit comme suit :

b
0 12
a

Une grammaire qui engendre le langage L(M) peut être déduite à partir du système
d’équation ci-dessus : ( en appliquant la partie cours sur la transformation d'un
automate fini en une grammaire linéaire à droite –voir page 47 du chapitre 3
« Automates finis »).

En prenant S=L0 et A=L1+L2, on obtient les règles de production suivantes :

S→aA/ε

A→aA/bS
Exercice 3 - Par la méthode d’élimination des états, donnez les expressions régulières
équivalentes aux automates suivants :

1. Automate M1
a b

a a b
0 1 2 3

2. Automate M2

a a, b a, b

b a b a
0 1 2 3 4

a a

5 6
b

3. Automate M3 (à gauche) et automate M4 (à droite)


b a

a b
0 1 0 1
b
a,b a b b

a a
2 3 2 3

Corrigé :

1. Pour obtenir l’expression régulière de l’automate M1 par la méthode d'élimination


d'état, on suivra l’algorithme du cours décrit dans le chapitre 4 – page 19 -

L’automate M1
a b

a a b
0 1 2 3

- On ajoute à M1 deux nouveaux états que l’on note ω et α et des ε-transitions comme
ceci :
a b
b
ε a a ε
α 0 1 2 3 ω

- On élimine la transition 2 comme ceci :


a b
ε a ab ε
α 0 1 3 ω

- On élimine la transition 0 comme ceci

b
εa*a ab ε
α 1 3 ω

εa*a=a*a (par la propriété P5)

- On élimine la transition 3 comme ceci:

a*a b*abε
α 1 ω

b*abε=b*ab (P5)
- On élimine la transition 1 comme ceci:

a*ab*ab
α ω

a*ab*ab=a+ b* ab (P15)
- L’expression régulière de l’automate M1 est : a+ b* ab

L’automate M2
a a,b a,b

b a b a
0 1 2 3 4

a a

5 6
b
- On Ajoute à M2 deux nouveaux états que l’on note ω et α et des ε-transitions
comme ceci :

a a,b a,b

ε b a b a ε
α 0 1 2 3 4 ω

a a

5 6
b

- On remplace les transitions en rouge par une seule comme ceci :

a a,b a,b

ε b a b a ε
α 0 1 2 3 4 ω

aba

- L’expression régulière de M2 est comme ceci : (aba+a)*b(a+b)*aba(a+b)*

Même chose pour les automates M3 et M4


Exercice 4 - Construire sur l’alphabet Σ = {a, b} les automates qui reconnaissent les
langages :
1. L = (aa + bb*a + abb*a)*
2. L’= (b(aa)*b)*
3. L’’= ((a + b)b*a)*
4. L’’’ = (a*b)*a

Corrigé :
1. L = (aa + bb*a + abb*a)*

L= (aa + bb*a + abb*a)*ε (En utilisant le théorème d’Arden, on obtient :


L=(aa + bb*a + abb*a)L+ε)
L= aaL+bb*aL+abb*aL+ε

L=aL1+bL2+aL3+ε (En posant L1=aL, L2=b*aL et L3=bb*aL)

L2=b*aL (En utilisant théorème d’Arden, on obtient : L2=bL2+aL)


L3=bb*aL
L3=b*baL ( En utilisant le théorème d’Arden on obtient : L3=bL3+baL)

L3=bL3+baL
L3=bL3+bL4 (En posant L4=aL)

En rassemblant les équations linéaires, on obtient le système d’équation du langage


L comme suit :

L=aL1+bL2+aL3+ε
L1=aL
L2=bL2+aL
L3=bL3+bL4
L4=aL

b
1
a
a a
3
0

a b b

2 a 4
b

2. L= (b(aa)*b)*
L= (b(aa)*b)*ε (p5) (e)
En appliquant le théorème d’Arden sur l’équation e, on obtient :
L= b(aa)*bL+ε ) (e’ )

L=bL1+ε (En posant L1=(aa)*bL dans l’équation (e’ )

L1=(aa)*bL (e1)
En appliquant le théorème d’Arden sur l’équation (e1), on obtient :
L1=(aa)L1+bL (e’1)
L1=aL2+bL (En posant L2=aL1 dans l’équation (e’1)

En rassemblant les équations linéaires, on obtient le système d’équation du langage


L comme suit :

L=bL1+ε
L1=aL2+bL
L2=aL1

b
0 1
b
a
b
2
Exercice 5 - Les langages suivants sont-ils réguliers?

1.

2.

3.

4.

Corrigé :

Rappel sur les expressions régulières et les langages représentés par des expressions
régulières – page 7, 8 et 9

1. Pour n=1, w=00

Pour n=2, w=00.00 etc.

L1 = 00(00)*. C’est donc un langage régulier.

Rappel sur le théorème de pompage – page 30

2. Supposons que L2 soit régulier. Soit n ≥ 1. Alors, le théorème de pompage nous dit
que, comme , on peut écrire z = uvw avec |v| ≤ n tel que z’ = uv2w
ϵ L2. Or |z0| = |uv2w| ≤ 2n + n. Mais 2n + n < 2n+1 donc on ne peut pas avoir z’ϵ L 2.
C’est une contradiction, donc L2 n’est pas régulier.

3. Supposons que L3 soit régulier. Soit n≥1. On applique le théorème de pompage


avec z=0n1n. Donc z=uvw et z’=uv2w doit être dans L3. Donc v a autant de 0 que de
1;

4. L5 est régulier car reconnu par l’automate :


1

0 0
0 1 2
1

Vous aimerez peut-être aussi