Documente Academic
Documente Profesional
Documente Cultură
Gh. Grigoras 2
Eliminarea simbolurilor neproductive
Intrare: G = (N, T, S, P)
Ieire: G = (N, T, S, P) L(G) = L(G), N conine doar simboluri productive
Metoda:
N1 =
do
{
N0 = N1
N1 = N0 { A| A P, (N0T)*}
} while N1 N0
N = N1
P = {A P| A N, (NT)*}
Gh. Grigoras 3
Eliminarea simbolurilor inaccesibile
Intrare: G = (N, T, S, P)
Ieire: G = (N, T, S, P) L(G) = L(G), n G toate simbolurile sunt accesibile
Metoda:
V1 = {S}
do
{
V0 = V1
V1 = V0 { X| X NT, A X P, A V0N }
} while V1 V0
N = N V1
T = T V1
P = { A P | A N, (NT)*}
Gh. Grigoras 4
Exemplu
G = ({S, A, B}, {a,b}, S, {S a|A, A AB, B b})
Eliminarea simbolurilor neproductive duce la:
G = (,S, B-, ,a,b-, S, ,S a, B b})
Gh. Grigoras 5
Eliminarea regulilor de tergere
Intrare: G = (N, T, S, P)
Ieire: G = (N, T, S, P) L(G) = L(G) {}, P nu are reguli de
tergere
Metoda:
N1 = {A| A N, A P}
do
{
N0 = N1
N1 = N0 { X| X N, X P, N0*
}
} while N1 N0
Gh. Grigoras 6
Eliminarea regulilor de tergere
P se obtine din P astfel:
- In fiecare productie A P se pun in evidenta
simbolurile din N1 ce apar in : = 1X12X2...
nXnn+1, Xi N1
- Se inlocuieste fiecare productie de acest fel cu
multimea de productii de forma A 1Y12Y2...
nYnn+1 unde Yi = Xi sau Yi =
in toate modurile posibile (2n)
- Se elimina toate regulile de stergere
Gh. Grigoras 7
Eliminarea regulilor de tergere
Exemplu:
G = ({S, A, B, C}, {a, b, c-, S, ,S ABC, A aA|, B bB|,
C cC| })
N1 = {S, A, B, C}
G = (,S, S, A, B, C}, {a, b, c-, S, P)
P = ,S ABC|AB| AC|BC| A|B|C,
A aA| a, B bB | b, C cC | c, S S, S }
Gh. Grigoras 8
Eliminarea redenumirilor A B
Intrare: G = (N, T, S, P) fr simboluri inutile
Ieire: G = (N, T, S, P) L(G) = L(G), G liber de redenumiri
Metoda:
for(A N) // se determina toate redenumirile lui A
{
N1 = {A}
do
{
N0 = N1
N1 = N0 { C| B C P, B N0}
} while N1 N0
NA = N1
}
P =
for(A P| N)
for(X N and A NX)// X se rescrie in k>=0 pasi in A
P = P {X }
Gh. Grigoras 9
Orice limbaj independent de context poate fi
generat de o gramatic fr simboluri inutile,
fr reguli de tergere (cu excepia eventual a
regulii S ) i fr redenumiri. Spunem c o
astfel de gramatic este n forma redus
Gh. Grigoras 10
Eliminarea recursivitii stngi
Intrare: G = (N, T, S, P) n forma redus
Ieire: G = (N, T, S, P) fr recursie stng, echivalent
Metoda:
1. Se ordoneaz N; fie N = N = { A1, A2, , An}
2. for(i = 1..n)
1. Se inlocuiesc toate productiile de forma Ai Ai| ( nu
incepe cu Ai) cu productiile Ai | Ai , Ai | Ai ,
unde Ai este un neterminal nou ce se adauga la N
2. for (j = 1..i & i <n)
Fiecare productie Ai+1 Aj se inlocuieste cu Ai+1
pentru toate productiile Aj
3. N este obtinuta din N prin adaugarea tuturor neterminalilor nou
introdusi iar P este noua multime de reguli
Gh. Grigoras 11
Exemplu
G = (,E, T, F-, ,+, *, (, ), a-, E, P) unde P const din
E E+T, E T , T T*F, T F , F (E), F a
Gh. Grigoras 12
Forma normal Chomsky
Se pot construi diverse forme normale (restricii asupra regulilor)
pentru gramaticile de tip 2:
Forma normal Chomsky: A BC, A a ( i eventual S )
Forma normal Greibach: A a, N* (i eventual S )
Forma normal operator: A , nu conine 2 neterminali
consecutivi (orice 2 operanzi sunt desparii de un operator) (i
eventual S )
w L(G) S V1n
Gh. Grigoras 15
Automate pushdown
M = (Q, , , , q0, Z0, F)
Q este mulimea (finit a) strilor,
q0 starea iniial, F submulimea strilor finale
alfabetul de intrare
alfabetul memoriei pushdown (stiv)
Z0 simbolul iniial din stiv
: Q ( {} ) 2Q*
Gh. Grigoras 18
Echivalena definiiilor privind recunoaterea
Pentru orice automat pushdown M exist unul M astfel
ca N(M) = L(M)
Dac M = (Q, , , , q0, Z0, F), considerm
M = (Q{q, q0}, , ,Z0}, , q0, Z0, )
- Automatul M simuleaz M:
- din configuraia sa iniial trece n cea iniial a lui M
pstrnd Z0 n stiv;
- are n continuare aceleai micri ca ale lui M
- cnd M intr ntr-o stare final, M trece n starea q
care provoac golirea stivei
Gh. Grigoras 19
Echivalena definiiilor privind recunoaterea
Pentru orice automat pushdown M exist unul M astfel
ca L(M) = N(M)
Dac M = (Q, , , , q0, Z0, ), considerm
M = (Q{qf, q0}, , ,Z0}, , q0, Z0, {qf })
- Automatul M simuleaz M:
- din configuraia sa iniial trece n cea iniial a lui M
pstrnd Z0 n stiv;
- are n continuare aceleai micri ca ale lui M
- cnd M i golete stiva, M mai are n stiv Z0 i
trece n starea final qf
Gh. Grigoras 20
Exemple
Un automat pushdown ce recunoate limbajul ,anbn|
n>=1}
Dac se citete a se introduce n stiv
Pentru fiecare b citit se scoate un a din stiv
Un automat pushdown ce recunoate limbajul
{wawR|w{0,1}*}
Fiecare 0 sau 1 citit se introduce n stiv
a la intrare produce pregtirea scoaterii a cte un simbol
din stiv dac el coincide cu cel din intrare
Un automat pushdown ce recunoate limbajul
{wwR|w{0,1}*}
?
Gh. Grigoras 21
Automate pushdawn vs. L2
Pentru orice gramatic G exist un automat
pushdown M astfel nct N(M) = L(G)
Fie G = (N, T, S, P)
Construim M = ({q}, T, NT, , q, S, ) unde:
(q, , A) = {(q, )| A P}
(q, a, a) = {(q, )}
(q, x, y) = n restul cazurilor
w L(G) S + w (q, w, S) + (q, , )
M simuleaz derivrile extrem stngi din G
Gh. Grigoras 22
Automate pushdawn vs. L2
Pentru orice automat pushdown M exist o gramatic G
astfel nct L(G) = N(M)
Fie M = (Q, , , , q0, Z0, )
Construim G = (N, , S, P) astfel:
N = {[q, A, p]| p, q Q, A } {S}
P conine toate regulile de forma:
S [q0, Z0, q], qQ
[q, A, qm+1] a[q1,B1,q2][q2,B2,q3+*qm,Bm,qm+1]
q, q1,q2,,qm+1Q, a {}, B1, B2, Bm astfel ca
(q1,B1B2Bm) (q, a, A)
[q, a, q1] a, q, q1Q, a {}, A astfel ca
(q1,) (q, a, A)
Se dovedete c [q, Z, p] +w (q, w, Z) + (p, , )
Gh. Grigoras 23