0% ont trouvé ce document utile (0 vote)
45 vues3 pages

Corrigé Abrégé de La Sé Rie D'Exercices N 1 de THL: Par: S. Khemliche, H. Djemai, M.S. Habet

Ce document contient les corrigés d'une série d'exercices sur la théorie des langages formels. Il aborde divers sujets tels que les types de grammaires, les langages engendrés, la correspondance entre grammaires et langages. Le document est structuré en plusieurs exercices avec leurs réponses.

Transféré par

Absalom Obissi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
45 vues3 pages

Corrigé Abrégé de La Sé Rie D'Exercices N 1 de THL: Par: S. Khemliche, H. Djemai, M.S. Habet

Ce document contient les corrigés d'une série d'exercices sur la théorie des langages formels. Il aborde divers sujets tels que les types de grammaires, les langages engendrés, la correspondance entre grammaires et langages. Le document est structuré en plusieurs exercices avec leurs réponses.

Transféré par

Absalom Obissi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

lOMoARcPSD|37891612

Université Mouloud MAMMERI de Tizi-Ouzou Année universitaire : 2014/2015


Faculté de génie électrique et informatique 2ième année Licence-Informatique
Département d’informatique module : Théorie des langages

CORRIGÉ ABRÉGÉ DE LA SÉRIE D’EXERCICES no 1 de ThL


par : S. Khemliche, H. Djemai, M.S. Habet

EXERCICE 1 :
1) x = acabacbc
2) |x| = 8, |x|a=3, |x|b=2, et |x|c=3
3) acabac
4) acbc

EXERCICE 2 :
1) Les mot w1 et w3 ne sont pas générés par G ;
les mots w2 et w4 sont générés par G : S ⊢ aS ⊢ aaS ⊢ aabA ⊢ aabcA ⊢ aabccA ⊢ aabcccA ⊢ w2
et pour w4 : S ⊢ aS ⊢ abA ⊢ ab = w4.
2) Soit L = { ai b cj / i, j  0 }. Montrons que L(G)=L en prouvant la double inclusion :
● L(G)  L : soit w un mot de L(G), donc w est généré à partir de S en appliquant n fois les règles
de production de G. Montrons par récurrence sur n que w  L :
- si n=2 alors on a : S ⊢ bA ⊢ b ; w=b  L. Supposons que la propriété reste vraie jusqu'au rang
n=k.
- pour n=k+1, on a deux cas :
-- la première règle appliquée est S → aS, puis k règles pour avoir un mot a.u. Puisque u est généré
à partir de S avec application de k règles de G, et d’après l’hypothèse de récurrence, u est dans L,
donc il s’écrit comme u = ai b cj et ainsi le mot a.u = ai+1 b cj  L.
-- la première règle appliquée est S → bA, puis à partir de A, on obtient cj (j≥0), et on aura donc
généré le mot b.cj qui  L (c’est : ai.b. cj avec i=0).
● L  L(G) : Soit w  L. Donc w s’écrit comme w= an b cm. w peut être dérivé de S en appliquant
n fois la règle S → aS puis une fois la règle S → bA, puis encore m fois la règle A → cA et enfin
une fois la règle A → ε. Donc w  L(G).

EXERCICE 3 : Nous donnons ici les types des Gi, (i=1,..,5), ainsi que les langages engendrés par les
grammaires Gi (i=1,..,5). (Pour que la réponse soit complète, il faut le prouver comme c’est fait dans
l’exercice 2 précédent).
1) Type de G1 = 3. L(G1) = { b.an / n ≥ 0 }.

2) Type de G2 = 2. L(G2) = { an bm cn+m / n, m  0 }.

3) Type de G3 = 2. L(G3) = { w  {a, b}* / |w|a = |w|b et  u préfixe de w, |u|a  |u|b }.

4) Type de G4 = 1. L(G4) = { an bn cn / n  1 }.

5) Type de G5 = 0. L(G5) = { anb2.[n/2] / n  0} ; ([x] est la partie entière de x)


On peut aussi écrire L(G5) comme { a2n+1b2n / n≥0 }  { a2nb2n / n≥0 }.

Corrigé de la Série n° 1 de Théorie des langages -1- U.M.M.T.O – année : 2014/2015

Téléchargé par Absalom Obissi ([email protected])


lOMoARcPSD|37891612

EXERCICE 4 :
a) pour L1 : il est engendré par G1 = ({0}, {S}, S, P1), où P1 : S → 00S 
b) pour L2 : il est engendré par G2 = ({0, 1}, {S}, S, P2), où P2 : S → 0S1 
c) pour L3 : il est engendré par G3 = ({a, b}, {S}, S, P3), où P3 : S → aSbb 
d) pour L4 : il est engendré par G4 = ({a, b}, {S, B}, S, P4),
où P4 : S → aSbB  ; B → b 
e) pour L5 : il est engendré par G5 = ({a, b, 0, 1}, {S, A}, S, P5),
où P5 : S → 0S1 A ;
A → aAa bAb 
f) pour L6 : il est engendré par G6 = ({a, b}, {S, A}, S, P6),
où P6 : S → aSb aAb ;
A → bAa ba
g) pour L7 : il est engendré par G7 = ({a, b}, {S, A}, S, P7),
où P7 : S → AAAS AAA ;
A → a b
h) pour L8 : il est engendré par G8 = ({0, 1}, {S}, S, P8),
où P8 : S → 0S1 0S 
i) L9 = { 0i 1j / i > j }  { 0i 1j / i < j }; ) L9 est engendré par G9 = ({0, 1}, {S, S0, S1}, S, P9),
où P9 : S → S0 S1 ;
S0 → 0S01 0S0 0 ;
S1 → 0S11 S11 1
j) L10 : il est engendré par G10 = ({0, 1}, {S, A, B, C, D}, S, P10),
où P10 : S → BCD
C → AC | a
Aa → aaA
AD → D
Ba → aB
BD → ε

EXERCICE 5 :
Soient les langage L = {0, 1}* et L’ = { 0n1n / n ≥ 0 }. L est de type 3 (vérifier le !) ; mais L’, qui est
inclus dans L, n’est pas de type 3 (il est de type 2).

EXERCICE 6 :
1) L peut être généré par la grammaire, de type 3, G = ({a, b, c}, {S, C}, S, P)
où P : S → aaS | bcC
C → ccC | 
2) Une autre grammaire de type 2, et qui n’est pas de type 3, qui engendre L :
G’ = ({a, b, c}, {S, A, C}, S, P’)
où P’ : S → AbcC
A → aaA | 
C → ccC | 

Corrigé de la Série n° 1 de Théorie des langages -2- U.M.M.T.O – année : 2014/2015

Téléchargé par Absalom Obissi ([email protected])


lOMoARcPSD|37891612

EXERCICE 7 :
1) L peut être généré par la grammaire, de type 3, G = ({0, 1}, {S, A}, S, P)
où P : S → 0S | 1A | 
A → 0A | 1S
2) Une autre grammaire de type 2, et qui n’est pas de type 3, qui engendre L :
G’ = ({0, 1}, {S}, S, P’)
où P’ : S → 0S | S1S1S | 

EXERCICE 8 :
1) L(G) = { anbm / n ≤ m ≤ 2*n }
2) Grammaire à contexte libre équivalente à G : G’ = ({a, b}, {S, B}, S, P’)
P’ : S → aSbB | ε
B→b|ε

EXERCICE 9 :
1) L(G) = { anb2n / n  0} ;
2) Grammaire de type 2 équivalente à G : G’ = ({a, b}, {S}, S, P’)
où P’ : S → aSbb | 

EXERCICE 10 :
Une grammaire de type 2 pour L pourrait être G = (π, N, S, P) ; où N = {S}
et P : S → S+S | S*S | a | (S)

EXERCICE 11 :
Pour générer ces identificateurs on utilisera la grammaire G = (π, N, <Id1>, P) ;
où π = {A..Z, a..z, 0..9} ; N = {<Id1>, <Id2>, <Id3>, <Lettre>, <Chiffre>}
et P : <Id1> → <Lettre> <Id2>
<Id2> → <Id3> <Id2> | 
<Id3> → <Lettre> | <Chiffre>
<Lettre> → A | B | .. | Z | a | b | .. | z
<Chiffre> → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

EXERCICE 12 :
On pourrait procéder, en TurboPascal, comme suit :
on lit la chaîne dans le string t et on vérifie si elle se termine par ‘#’. Si c’est le cas on passe à l’étape
suivante en invoquant la procédure S et ainsi le processus de vérification est entamé ; S appelle A
qui s’appelle elle-même lorsqu’elle rencontre un ‘a’ ou s’arrête sinon. Bien sûr qu’à chaque étape
on vérifiera qu’il y a les bons caractères aux bons endroits ; sinon il y a erreur.

uses wincrt;
var car : char;
erreur : boolean;
t : string;
k,n : integer;

Corrigé de la Série n° 1 de Théorie des langages -3- U.M.M.T.O – année : 2014/2015

Téléchargé par Absalom Obissi ([email protected])

Vous aimerez peut-être aussi