Sunteți pe pagina 1din 16

Ministerul Educaţiei, Culturii și Cercetării Republicii Moldova

Universitatea Tehnică a Moldovei

Facultatea Calculatoare Informatică şi Microelectronică

Departamentul ISA

RAPORT
Lucrare de laborator Nr.3
La Limbaje Formale si Automate
Tema: a) Forma Normală Chomsky (FNC)
b) Forma Normală Greibach (FNG)

A efectuat:
st. gr. TI-162 Goncearov Vladislava

A verificat:
lect., sup. Duca Ludmila

Chisinau 2016
1
CUPRINS:
1. SCOPUL ȘI SARCINA LUCRĂRII…………………………………………….. 3
2. EFECTUAREA LUCRĂRII …………………………………………………….. 4
a) Sarcina a.............................................................................................................. 4
b) Sarcina b.............................................................................................................. 9
3. CONCLUZII ……………………………………………………………………… 12
4. ANEXE ……………………………………………………………………………. 13
a) ANEXA 1 –efectuarea sarcinii cu ajutorul JFLAP-ului……………………. 13

2
Scopul lucrarii
Pentru sarcina a)
1. Eliminati  productii.
2. Eliminati redenumirile.
3. Eliminati simbolurile inaccesibile.
4. Eliminati simbolurile neproductive.
5. Aduceti la Forma Normala Chomsky.
Pentru sarcina b)
1. Eliminați recursiile de stânga
2. Aduceti la Forma Normală Greibach

Sarcina a)
G  (VN ,VT , P, S ) VN  {S , A, B, C, D} VT  {a, b}
P = {1. S  aB
8. B  b
2. S  bA
9. B  bS
3. S  A
10. B  aD
4. A  B
11. B  ε
5. A  Sa
12. D  AD
6. A  bBA
13. C  Ba}
7. A  b

Sarcina b)
G  (VN ,VT , P, S ) VN  {S , A, B, C} VT  {a, b}
P={ 1. S  AC
2. S  SCB
3. A  CB
4. B  a
5. C  A
6. C  b }.

3
SARCINA a)

1 .Eliminam  productii

N={B} N={B,A}
P = {1. S  aB 17. D  D
P = {1. S  aB P = {1. S  aB
2. S  bA 18. C  Ba
2. S  a 2. S  a
3. S  A 19. C  a }
3. S  bA 3. S  bA
4. A  B 4. S  A 4. S  b
5. A  Sa 5. A  B 5. S  A
6. A  bBA 6. A  ε 6. S  ε
7. A  b 7. A  Sa 7. A  B
8. B  b 8. A  bBA 8. A  Sa
9. B  bS 9. A  bA 9. A  bBA
10. B  aD 10. A  b 10. A  bB
11. B  ε 11. B  b 11. A  bA
12. D  AD 12. B  bS 12. A  b
13. C  Ba} 13. B  aD 13. B  b
14. D  AD 14. B  bS
15. C  Ba 15. B  aD
16. C  a } 16. D  AD

N={B,A,S} 12. A  b
P = {1. S  aB 13. B  bS
2. S  a 14. B  b
3. S  bA 15. B  aD
4. S  b 16. D  AD
5. S  A 17. D  D
6. A  B 18. C  Ba
7. A  Sa 19. C  a }
8. A  a
9. A  bBA
10. A  bB
11. A  bA 4
3. Eliminăm redenumirile

P = {1. S  aB RA ={A,S} P = {1. S  aB


2. S  a RB ={B,A,S} 2. S  a
3. S  bA 3. S  bA
RS ={S}
4. S  b 4. S  b
RD ={D}
5. S  A 5. A  Sa
6. A  B P = {1. S  aB 6. A  a
7. A  Sa 2. S  a 7. A  bBA
8. A  a 3. S  bA 8. A  bB
9. A  bBA 4. S  b 9. A  bA
10. A  bB 5. A  Sa 10. A  b
11. A  bA 6. A  a 11. B  bS
12. A  b 7. A  bBA 12. B  b
13. B  bS 8. A  bB 13. B  aD
14. B  b 9. A  bA 14. D  AD
15. B  aD 10. A  b 15. C  Ba
16. D  AD 12. B  bS 16. C  a
17. D  D 13. B  b 17. S  Sa
18. C  Ba 14. B  aD 18. S  bBA
19. C  a } 15. D  AD 19. S  bB
16. C  Ba 20. A  bS
17. C  a 21. A  aD
18. S  Sa 22.S  bS
19. S  a 23. S  aD}
20. S  bBA
21. S  bB
22. S  bA
23. S  b
25. A  b
24. A  bS
26. A  aD
27.S  bS
28. S  b 5

29. S  aD}
3. Eliminam simbolurile inaccesibile

P = {1. S  aB 10. A  b
2. S  a 11. B  bS 18. S  bBA
3. S  bA 12. B  b 19. S  bB
4. S  b 13. B  aD 20. A  bS
5. A  Sa 14. D  AD 21. A  aD
6. A  a 15. C  Ba 22.S  bS
7. A  bBA 16. C  a 23. S  aD}
8. A  bB 17. S  Sa
9. A  bA

AC ={S}
AC ={S, A, B, D, a, b}
I=(VN U VT)\ Ac={C}

P = {1. S  aB
16. S  bBA
2. S  a
17. S  bB
3. S  bA
18. A  bS
4. S  b
19. A  aD
5. A  Sa
20.S  bS
6. A  a
21. S  aD}
7. A  bBA
8. A  bB
9. A  bA
10. A  b
11. B  bS
12. B  b
13. B  aD
14. D  AD
15. S  Sa

6
4. Eliminam simbolurile neproductive

P = {1. S  aB P = {1. S  aB
Pr = 
2. S  a 2. S  a
Pr ={S, A, B}
3. S  bA 3. S  bA
N = VN \ Pr ={D}
4. S  b 4. S  b
5. A  Sa 5. A  Sa
6. A  a 6. A  a
7. A  bBA 7. A  bBA
8. A  bB 8. A  bB
9. A  bA 9. A  bA
10. A  b 10. A  b
11. B  bS 11. B  bS
12. B  b 12. B  b
13. B  aD 13. S  Sa
14. D  AD 14. S  bBA
15. S  Sa 15. S  bB
16. S  bBA 16. A  bS
17. S  bB 17. S  bS}
18. A  bS
19. A  aD
20. S  bS
21. S  aD}

7
5.Aducem la Forma Normala Chomsky

P = {1. S  aB P = {1. S  X 1 B
2. S  a 2. X 1  a
3. S  bA
3. S  a
4. S  b
4. S  X 2 A
5. A  Sa
5. X 2  b
6. A  a
7. A  bBA 6. S  b

8. A  bB 7. A  S X 1

9. A  bA 8. A  a
10. A  b 9. A  X 2 X 3
11. B  bS 10. X 3  BA
12. B  b
11. A  X 2 B
13. S  Sa
12. A  X 2 A
14. S  bBA
13. A  b
15. S  bB
14. B  X 2 S
16. A  bS
17. S  bS} 15. B  b
16. S  S X 1

17. S  X 2 X 3

18. S  X 2 B

19. A  X 2 S

20. S  X 2 S }

8
SARCINA b)
G  (VN ,VT , P, S ) VN  {S , A, B, C} VT  {a, b}
P={ 1. S  AC
2. S  SCB
3. A  CB
4. B  a
5. C  A
6. C  b }.

Verificăm dacă avem recursie stânga


P={ 1. S  AC
2. S  SCB
3. A  CB
4. B  a
5. C  A
6. C  b }.

Eliminam recurisa prin ambele metode

Metoda 1 Metoda 2
P={ 1. S  AC P={ 1. S  ACY
2. S  ACY 2. Y  CBY
3. Y  CBY 3. Y  
4. Y  CB
4. A  CB
5. A  CB
5. B  a
6. B  a
6. C  A
7. C  A
7. C  b }.
8. C  b }.

9
Aducem la Forma Normala Greibach (FNG)
Se substituie neterminalele din prima pozitie cu productiile respective.
Dupa Metoda 1 Dupa Metoda 2
P={ 1. S  CBC
8. A  bB P={ 1. S  CBCY
2. S  CBCY 8. C  CB
9. B  a 2. Y  ABY
3. Y  ABY 9. C  b }
10. C  CB 3. Y  bBY
4. Y  bBY
11. C  b} 4. Y  
5. Y  AB
5. A  AB
6. Y  bB
6. A  bB
7. A  AB
In rezultatul acestor 7. B  a

În urma substituiri a apărut recursia stânga, de aceea repetăm pasul și eliminăm recursia de stânga.

Eliminam recursia stinga

Metoda 1 Metoda 2
P={ 1. S  CBC P={ 1. S  CBCY
2. S  CBCY 2. Y  ABY
3. Y  ABY 3. Y  bBY
4. Y  bBY
4. Y  
5. Y  AB
5. A  bBX
6. Y  bB
6. X  ABX
7. A  bB
7. X  
8. A  bBX
8. B  a
9. X  AB
9. Z  CBZ
10. X  ABX
10. C  bZ
11. B  a
12. Z  B 11. Z   }

13. Z  BZ
14. C  b
15. C  bZ}

10
Aducem la Forma Normala Greibach (FNG)
Se substituie neterminalele din prima pozitie cu productiile respective.

Dupa Metoda 1 Dupa Metoda 2


P={ 1. S  bBC P={ 1. S  bZBCY
13. X  bBB
2. S  bZBC 2. Y  bBXBY
14. X  bBXB
3. S  bBCY 3. Y  bBY
15. X  bBBX
4. S  bZBCY
16. X  bBXBX 4. Y  
5. Y  bBBY
17. B  a 5. A  bBX
6. Y  bBXBY
18. Z  a 6. X  bBXBX
7. Y  bBY
19. Z  aZ 7. X  
8. Y  bBB
20. C  b 8. B  a
9. Y  bBXB
21. C  bZ } 9. Z  bZBZ
10. Y  bB
10. C  bZ
11. A  bB
12. A  bBX 11. Z   }

11
CONCLUII

În urma efectuării acestei lucrării de laborator am capătat experiență în lucrul cu eliminarea


producțiilor, eliminarea redenumirilor, eliminarea simbolurilor inaccesibile, eliminarea simbolurilor
neproductive si aducerea la Forma Normala Chomsky, precum si lucrul cu toate acestea prin programul
JFLAP, care ne poate facilita cu mult rezolvarea acestor probleme.
De asemenea am capatat experiența în lucrul cu eliminarea recursiei stânga și aducerea la Forma
Normala Greibach. Am eliminat recurisia stânga prin ambele metode ( Metoda 1: A  1 , A  1Y ,

Y  1 , Y  1Y ) si ( Metoda 2: A  1Y , Y  1Y , Y   ) apoi am adus exemplul nostrul la Forma

Normala Greibach dupa Metoda 1 si dupa Metoda 2.

12
ANEXA 1

Transformarea gramaticii independente de context in FNC cu ajutorul programului JFLAP

1.Eliminarea  productii

13
2. Eliminam redenumirile

14
3,4. Eliminam simbolurile inaccesibile si neproductive

15
5. Aducem la Forma Normala Chomsky

16