Sunteți pe pagina 1din 17

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

Catedra Automatica si Tehnologii Informationale

Lucrarea de Curs
la Limbaje Formale si Proiectarea Algoritmilor

A efectuat:

A verificat:

Chişinău 2015
Lucrarea Nr.1
Scopul lucrarii:
1.Pentru gramatica formală G=(VN, VT, P, S) construiţi 5 şiruri care aparţin
limbajului L(G) generat de această gramatică.
2.Construiţi arborii de derivare pentru aceste şiruri.
3.Construiţi (desenaţi) automatul finit echivalent.

Varianta 4.
VN={S, L }, VT={a, b,c,d,e,f,j } ,
P= {
1. S  aS
2. S  bS
3. S  cS
4. S  dL
5. L  eL
6. L  fL
7. L  jL
8. L  e
9. L  f
10.L  j
11.S  d }

1.
a)SaSabSaabd
b)SbsbdLbdjLbdje
c)ScScbScbaScbadLcbadf
d)SdLdeLdejLdejf
e)SbSbcSbcdLbcdjLbcdje

2.
a)
b)

c)
d)

e)
3.

a b c d e f j
q0 q0 q0 q0 q1q2 - - -
q1 - - - - q1q2 q1q2 q1q2
q2 - - - - - - -
Lucrarea Nr.2
Scopul lucrarii:
1. Este dat automatul finit AF=(Q, , , q0, F). Reprezentaţi automatul sub formă de graf.
2. Este sau nu automatul dat determinist?
3. Dacă automatul este nedeterminist, construiţi automatul finit determinist echivalent.
4. Construiţi gramatica regulată echivalentă cu AFD
5. Inventaţi un şir peste vocabularul  care nu va fi acceptat de către AFD. Arătaţi acest lucru
scriind secvenţa (secvenţele) de configuraţii respective.
6. Pentru automatul finit AFD=(Q, , , q0, F) construiţi 5 şiruri acceptate de automat. Lungimea
şirurilor să nu fie mai mică decât n+2, unde n este numărul de stări din Q.
7. Scrieţi expresia regulată echivalentă.
8. Pentru fiecare şir x scrieţi secvenţa de configuraţii pentru acceptarea şirului, adică (q0, x) — (qi1,
x1) — (qi2, x2) — … — (qf, ), unde qf  F.
9. Petru toate cele 5 şiruri obţinute construiţi aplicând lema de pompare descompunerea x=uvw.

Varianta 4
AF=(Q, , , q0, F), Q = {q0, q1, q2 , q3},  = { a, b, c}, F = { q3}.
 (q0, a) = {q1},  (q1, a) = {q2},  (q2, b) = {q2, q3},  (q2, c ) ={q2},  (q3, a) ={q3} .

1.Este data automatul finit AF=(Q, , , q0, F). Reprezentaţi automatul sub formă de graf.

2.Este sau nu automatul dat determinist.

3. Dacă automatul este nedeterminist, construiţi automatul finit determinist echivalent.


Q’ a b c
q0 q1 - -
q1 q2 - -
q2 - q2,q3 q2
q2q3 q3 q3,q2 q2
q3 q3 - -

c b a

a a b a
q0 q1 q2 q2q3 q3
4.Construiţi gramatica regulată echivalentă cu AFD
a)q0→aq1 b)q2→b
q1→aq2 q3→a
q2→bq2 q2q3->b
q2q3->bq2 q2q3->a
q2→cq2
q2→bq3
q2q3->aq3
q3→aq3

5. Inventaţi un şir peste vocabularul  care nu va fi acceptat de către AFD. Arătaţi acest lucru
scriind secvenţa (secvenţele) de configuraţii respective.
x=aacbca

(q0,aacbca) —(q1,acbca) —(q2,cbca) —(q2,bca) —(q2q3,ca) —(q2,a)-impas

6.Pentru automatul finit AFD=(Q, , , q0, F) construiţi 5 şiruri acceptate de automat. Lungimea
şirurilor să nu fie mai mică decât n+2, unde n este numărul de stări din Q.

x1=aaccbcba
x2=aacbbaa
x3=aabbaaa
x4=aacbcbba
x5=aacbbba

7.Scrieţi expresia regulată echivalentă.


𝑎𝑎 ∗ (𝑏 + 𝑐)∗ ∗ 𝑏 ∗ 𝑎∗

8.Pentru fiecare şir x scrieţi secvenţa de configuraţii pentru acceptarea şirului, adică (q0, x) —
(qi1, x1) — (qi2, x2) — … — (qf, ), unde qf  F.

a)(q0,aaccbcba) —(q1,accbcba) —(q2,ccbcba) —(q2,cbcba) —(q2,bcba) —(q2q3,cba) —


—(q2,ba) —(q2q3,a) —(q3,e)

b)(q0,aacbbaa) —(q1,acbbaa) —(q2,cbbaa) —(q2,bbaa) —(q2q3,baa) —(q2q3,aa) —(q3,a) —


(q3,e)

c) (q0,aabbaaa) —(q1,abbaaa) —(q2,bbaaa) —(q2q3,baaa) —(q2q3,aaa) —(q3,aa) —(q3,a) —


(q3,e)

d) (q0,aacbcbb) —(q1,acbcbb) —(q2,cbcbb) —(q2,bcbb) —(q2q3,cbb) —(q2,cbb) —


(q2q3,bb) —(q2q3,b) —(q2q3,e)

e) (q0,aacbbba) —(q1,acbbba) —(q2,cbbba) —(q2,bbba) —(q2q3,bba) —(q2q3,ba) —(q2q3,a)


—(q3,e)
9.Petru toate cele 5 şiruri obţinute construiţi aplicând lema de pompare descompunerea x=uvw.
a)aaccbcba

a a c c b c b a
q0q1q2q2q2q2q3q2q2q3q3

u=aa
v=c
w=cbcba

b) aacbbaa

a a c b b a a
q0q1q2q2q2q3q2q3q3q3

u=aa
v=c
w=bbaa

c) aabbaaa

a a b b a a a
q0q1q2q2q3q2q3q3q3q3

u=aab
v=b
w=aaa

d) aacbcbb

a a c b c b b
q0q1q2q2q2q3q2q2q3q2q3

u=aa
v=c
v=bcbb

e) aacbbba

a a c b b b a
q0q1q2q2q2q3q2q3q2q3q3

u=aa
v=c
w=bbba
Lucrarea Nr.3 1.Eliminam ε – producţii
EPS004. Să se elimine ε - Nε={}
producţiile. Nε={I}
G = (VN , VT , P, S), VN= {S, L, A, I}, Nε={I,A}
VT = {a,b} Nε={I,A,L}
P= { Nε={I,A,L,S}
1. S→ L
2. L→ A I 1.S→L
3. L→ a A 2.L→AI
4. L→ L a A I L→A
5. L→ L b I L→I
6. A→ a I b 3.L→aA
7. A→ I L→a
8. I→ b 4.L→LaAI
9. I→ ε } L→aAI
L→LaI
Algoritmul de eliminare ε – producţii L→LaA
1.Construim Nε L→aA
2.Initial P=P\{A→ ε} L→La
Eliminam din P toate ε-productii L→aI
3.Pentru toate productiile A→ α din P L→a
si toate combinatiile posibile 5.L→LbI
4.Repetam pasul 3 cat timp apar L→Lb
productii noi in P. L→bI
5.Daca S∈Nε(ε∈L(b))atunci P=P∪{ L→b
S→ ε} 6.A→aIb
A→ab
A→aI
Lucrarea Nr.4

FNC004. Să se reducă la Forma Normală S→LaA


Chomsky gramatica independentă de context S→LbI
G = (VN , VT , P, S), VN= {S, L, A, I}, VT = S→Lb
{a,b} L→AI
P= { L→aA
1. S→ L L→LaA
2. L→ A I L→LbI
3. L→ a A L→Lb
4. L→ L a A A→aIb
5. L→ L b I A→ab
6. A→ a I b S→aIb
7. I→ b S→ab
8. I→ ε}. L→aIb
Eliminăm ε producţii: L→ab
1. I→b
Nε={}
Nε={I} Aducem la forma normala Chomsky
S→AI
2. S→XA
S→L -redenumire X→a
L→AI S→QA
L→A -redenumire Q→LX
L→aA S→LM
L→LaA M→YI
L→LbI Y→b
L→Lb S→LY
A→aIb L→AI
A→ab L→XA
I→ b L→QA
L→LM
Eliminam redenumirile A→XC
C→IY
1.Rs={S} RL={L} RA={A} A→XY
2.S→L RL=RL U RS={L,S} S→XC
L→A RA=RA U RL={A,L,S} S→XY
L→XC
L→XY
S→AI I→b
S→aA
Lucrarea Nr.5

REC004. Să se elimine recursia stângă.


G = (VN , VT , P, S), VN= {S, L, A, I}, VT = {a,b}
P= {
1. S→ L
2. L→ A I
3. L→ a A
4. L→ L a A I
5. L→ L b I
6. A→ a I b
7. A→ A I
8. I→ b
9. I→ a L }.
Pentru S nu este recursie stanga

Pentru L:
a)L→LaAI L→LbI
b) L→AI L→aA
a1)L→AIX L→aAX
a2)X→aAI X→bI
a3)X→ aAIX X→bIX
b) L→AI L→aA

Pentru A:
A→aIb
A→AI
a1)A→aIbY
a2)Y→I
a3)Y→IY
b)A→aIb

S→L
L→AIX
L→Aax
X→aAI
X→bI
X→ aAIX
X→bIX
L→AI
L→aA
A→aIbY
Y→I
Y→IY
A→aIb
Lucrarea Nr.6
FNG004. Să se reducă la forma normală Greibach gramatica independentă de context
G=(VN, VT, P, S,), VN={S, A, B, C}, VT ={a, b},
P={ 1. S → B C A3→ A3A2A2 –recursie stinga
2. C → B B A3→a
3. C → a A3→aX
4. A → b A1→b
5. B → C A A2→A3A1
}

1. S → B C A3→a
A3→aX
2. C → B B X→A1A2
3. C → a X→A1A2X
4. A → b
5. B → C A i=3
A3→a
Notam A3→aX
A0 = S X→bA2
A1 = A X→bA2X
A2 = B
A3 = C i=2
A2→aA1
A0→A2A3 A2→aXA1
A3→A2A2 i=1
A3→a A→b
A1→b i=0
A2→A3A1 A0=aA1A2
A0=aXA1A2
Pentru i=0:
A0→A2A3
Pentru i=3:
A3→A2A2 -teorema substitutiei FNG
A3→a A3→a
Pentru i=1: A3→aX
A1→b X→bA2
Pentru i=2: X→bA2X
A2→A3A1 A2→aA1
A2→aXA1
A0→aA1A2
A0→A2A3 A0→aXA1A2
Lucrarea Nr.7
UVWXY004. Este dată gramatica independentă de context :
G=(VN, VT, P, S,), VN={S, A, B}, VT ={a, b},
P={ 1. S → B S 2. S → A S 3. S → a
4. A → A S 5. A → a 6. B → S B 7. B → b }.
a) Construiţi un cuvânt arbitrar z, care aparţine limbajului L(G), | z | ≥ 8;
b) Aplicând teorema “uvwxy” construiţi reprezentarea z= uvwxy.

Z=aaaabaaa
S

B S

A B A S

a S b A S a

B S a a

S B a

a a

u=aa
v=a
w=abaa

Lucrarea Nr.8
AS004. Este dat limbajul L= { an-2bdcn | n>=2}.
a) Construiţi gramatica independentă de context G care generează limbajul
L. Construiţi derivările şirurilor x1 (n=2), x2 ( n=3) şi x3 (n=4).
b) Construiţi automatul cu memorie stivă care acceptă limbajul L. Arătaţi
secvenţele de acceptare pentru şirurile şirurile x1, x2 şi x3.

Gramatica independent de context:


Pentru n=2:bdcc
Pentru n=3:abdccc
Pentru n=4:aabdcccc

Automatul cu memorie stiva care accepta limbajul:

 (q0,z0,a) = (q0,az0)
 (q0,z0,b) = (q0,az0)
 (q0,a,b) = (q0,aa)
 (q0,a,d) = (q1,aa)
 (q1,a,c) = (q1, ε)
 (q1,z0, ε) = (q1, ε)

n=2 :bdcc

(q0,z0,bdcc)—(q0,az0,dcc)—(q1,aaz0,cc)—(q1,az0,c)—(q1,z0, ε) —(q1, ε) —
acceptare.
n=3:abdccc

(q0,z0,abdccc) —(qo,azo,bdcc) —(q0,aaz0,dccc) —(q1,aaaz0,ccc) —


(q1,aaz0,cc) —(q1,az0,c) —(q1,z0, ε) —(q1, ε) — acceptare.

n=4:aabdcccc
(q0,z0,aabdcccc) —(q0,az0,abdcccc) —(q0,aaz0,bdcccc) —(q0,aaaz0,dcccc) —
(q1,aaaaz0,cccc) —(q1,aaz0,ccc) —(q1,aaz0,cc) —(q1,az0,c) —(q1,z0, ε) —
(q1, ε) —acceptare.

Lucrarea Nr.9
PRSMP008. Este dată gramatica independentă de context :
G=(VN, VT, P, S,), VN ={S, A, F, E}, VT ={a,b,c,d,e},
P={ 1. S → A 2. A → F 3. A → E c F
4. F → a 5. F → b 6. F → d E 7. E → A e }.
Să se construiască matricea relaţiilor de precedenţă şi să se analizeze şirul
daeecdbe

PRIM ULTIM
S A,F,E,a,b,d A,F,a,b,E,e
A F,E,a,b,d,A F,a,b,E,e
F a,b,d a,b,E,e
E A,F,E,a,b,d e

EQ = {(Ec),(cF),(dE),(Ae)}
1. (Ec)=>E=c
ULTIM(F)>c=>e>c
2. (cF)=>c=A
c<PRIM(F) =>c<a ,c<b,c<d
3. (dE)=>d=E
d<PRIM (E)=>d<A,d<F,d<E,d<a,d<b,d<d
4. (A,e)=>A=e
ULTIM(A)>e=>F<e,a<,b<e,E<e,e<e
5. $ < PRIM
6. ULTIM(S) > $
Tabelul relatiilor de precedenta
S A F E a b c d e $
S >
A =
F > >
E = > >
a > >
b > >
c = < < <
d < < < < < <
e > > >
$ < < < < < <
($,daeecdbe,$)—D($d,aeecdbe,$)—D($da,eecdbe,$)—R4($dF,eecdbe,$)—
R2($dA,eecdbe,$)—D($dAe,ecdbe,$)—R7($dE,ecdbe,$) —R6($F,ecdbe,$)—
R2($A,ecdbe,$)—D($Ae,cdbe,$)—R7($E,cdbe,$)—D($Ec,dbe,$)—D($Ecd,be,$) —
D($Ecdb,e,$)—R5($EcdF,e,$)—R2($EcdA,e,$)—D($EcdAe,$)—R7($EcdE,$) —
R6($EcF,$)—R2($A,$)—($S,$)—acceptare

Lucrarea Nr.10
LL(1)007.
Este dată gramatica independentă de context
G=(VN, VT, P, S,), VN ={S, A, E, R, D, X, Z}, VT ={a,b,c,d},
P={ 1. S → A 2. A → c E 3. E → R d 4. R → D X
5. X → ε 6. X → b D X 7. D → a Z 8. Z → ε 9. Z → c R d }.
Să se construiască tabelul de analiză LL(1) şi să se analizeze şirul

X FR(X) FL(X)
S c $
A c $
E a $
1.S→A R a d SD(α)
2.A→cE X b,ε d 1.S→A c
3.E→Rd D A b,d 2.A→cE c
4.R→DX Z c,ε b,d 3.E→Rd a
5.X→ε 4.R→DX a
6.X→bDX 5.X→ε d
7.D→aZ 6.X→bDX b
8.Z→ε 7.D→aZ a
9.Z→cRd 8.Z→ε b,d
9.Z→cRd c
Nε={X,Z}

a b c d $

a V

b V

c V

d V

$ S

S 1

A 2

E 3

R 4 2

X 6 5

D 7

Z 8 9 8

Analiza şirului caadbad:


(S$,caadbad$)—1(A$,caadbad$)—2(cE$,caadbad$)—V(E$,aadbad$)—
3(Rd$,aadbad$)—4(DXd$,aadbad) —7(aZXd$,aadbad) —V(ZXD$,adbad) —
sirul nu este acceptat

Analiza sirului cabad


(S$,cabad$)—1(A$,cabad$)—2(cE$,cabad$)—V(E$,cabad$)—
3(Rd$,cabad$)—4(DXd$,abad) —7(aZXd$,abad) —V(ZXD$,bad) —
8(XD$,bad) —6(bDXd$,bad) —V(DXd$,ad) —7(aZXd$,ad) —(ZXd$,d) —
(ZXd$,d)—8(Xd$,d) —5(d$,d)-acceptare