nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/lftc/resursecurs/... · •...

28
1/7/2014 LFTC (Dana Lupsa) 1 Ne reamintim : clasificarea Chomsky Gramatici de tip 0: nici o restrictie (suplimentara) referitoare la forma regulilor de productie Gramaticile de tip 1 a b P: |a| <= |b | caz special: S→ e poate P. In acest caz S nu apare în membrul drept al nici unei reguli de productie. Gramatici de tip 2: reg. productie sunt de forma A a , A N, a (N S ) * Gramaticile de tip 3: reg. prod. sunt de forma A aB A b unde A,B N si a,b S caz special: S→ e poate P In acest caz S nu apare în membrul drept al nici unei reguli de productie.

Upload: vongoc

Post on 11-Jun-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 1 Ne reamintim : clasificarea Chomsky

• Gramatici de tip 0:

nici o restrictie (suplimentara) referitoare la forma regulilor de productie

• Gramaticile de tip 1

– a b P: |a| <= |b |

– caz special: S→ e poate P. In acest caz S nu apare în membrul

drept al nici unei reguli de productie.

• Gramatici de tip 2:

reg. productie sunt de forma A a , A N, a (N S )*

• Gramaticile de tip 3:

reg. prod. sunt de forma

• A aB

• A b unde A,B N si a,b S

caz special: S→ e poate P In acest caz S nu apare în membrul

drept al nici unei reguli de productie.

Page 2: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 2

Ne reamintim :

• Gramatici echivalente

G1 echiv. cu G2 ddaca L(G1)=L(G2)

• Gramatici independente de context

(gramatici de tip 2)

G = (N, S , P, S)

reguli de productie de forma:

A a , A N, a (N U S )*

Page 3: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 3

Simplificarea GIC

• simbol neproductiv

Un simbol A N este neproductiv dacã nu existã

nici o derivare de forma A =*> x (xS*)

• în caz contrar A este simbol productiv

• Teorema

G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã,

fãrã simboluri neproductive

(transformari echivalente)

Page 4: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 4

Determinarea simbolurilor productive

≈ algoritm AF determ. stari productive

1. i:=0 ; V0:= F

2. Repeta

Vi+1 :=Vi U{A | $A→ a P, a (ViUS)*}

i:=i+1

pana cand Vi=Vi-1

{Vi – multimea simbolurilor productive}

A → BC

B → bB

C → c

Page 5: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 5

Simplificarea GIC

(transformari echivalente)

• simbol inaccesibil

Un simbol X N USeste simbol inaccesibil dacã nu

existã nici o * derivare: S=>* aXb (a,b(NUS)*)

• în caz contrar simbolul este accesibil

• Teorema

G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã,

fãrã simboluri inaccesibile

Page 6: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 6

Determinarea simbolurilor accesibile

≈ algoritm AF determ. stari accesibile

1. i:=0 ; V0:={S}

2. Repeta

Vi+1 :=Vi U{ B | $A Vi, a,bUS)* a.i

A→ aBb P}

i:=i+1

pana cand Vi=Vi-1

{Vi – multimea simbolurilor neterminale accesibile}

* analog pentru simboluri terminale accesibile

Page 7: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 7

Simplificarea GIC

• Un simbol este neutilizabil dacã el este fie

inaccesibil, fie neproductiv

• Teorema

G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã

fãrã simboluri neutilizabile

Page 8: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 8

e-productii si gram. e-independente

• e-productie : o productie de forma A e

• Gramatica G = (N, S, P, S) este e-independentã daca:

a) dacã eL(G) atunci G nu are e-productii

b) dacã eL(G) atunci avem o singurã productie Se iar celelalte productii nu-l contin în membrul drept pe S

• Teorema

G= (N, S, P, S)

$ G' = (N', S', P', S) echivalentã, e-independentã

Page 9: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 9

Eliminarea e-productiilor

1. Construim multimea Ne care are ca elemente acele

neterminale care prin derivare conduc la e adicã :

• Ne = {A | A N, A =>*e}

alg. ≈ determinarea simb. productive

2. Determinam noile reguli de productie

• astfel incat productiile de forma A→ e se elimina

• dar, daca eL(G), atunci $ S e si S nu apare în

membrul drept al nici unei productii

Page 10: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 10

Determinarea lui Ne

1. i:=0 ;

V0:= {A | $A→ e P}

2. Repeta

Vi+1 :=Vi U{A | $A→ a P, a (Vi)*}

i:=i+1

pana cand Vi=Vi-1

Page 11: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 11

determinam noile reguli de productie

• productiile de forma A→ e se elimina

• celelalte r.p. se rescriu astfel incat sa “suplineasca” eliminarea e-productiilor astfel:

Fie r.p. A→a0B1a1B2a2…Bkak

unde: Bi Ne

aj nu contine simb. din Ne

Se inlocuieste cu:

A→a0X1a1X2a2…Xkak

unde Xi = Bi este unul dintre Bi sau e e (se fac toate inlocuirile posibile)

Ce lipseste ???

Page 12: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 12

determinam noile reguli de productie

• continuare

Dacã eL(G) trebuie sa avem o e-productie

“atunci avem productia S e si S nu apare în

membrul drept al nici unei productii”

(gram. e-independenta)

• adaugam un nou simbol de start S' si productiile

S’ e | S

Page 13: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 13

Eliminarea e-productiilor

Exercitiu:

S → aSbS

S → bSaS

S → e

Page 14: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 14

Redenumiri. Cicluri.

• redenumire: reg.prod. de forma A B

• Gramatica fãrã redenumiri: fara r.p. de redenumire

Teorema:

G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã fãrã

redenumiri

• ciclu: o * derivare de forma A =>* B

• Gramatica fãrã cicluri: nu se pot obtine cicluri (la derivare)

Teorema:

G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã fãrã

cicluri

Page 15: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 15

Eliminarea redenumirilor

PP. G – e-independenta (daca nu , luam gr.echiv. e-ind.)

Pentru fiecare A N

se elimina redenumirile de forma A→B (B N )

• construieste multimile NA = {B | A=*> B};

(≈ det. simb. accesibile)

• determinam noile reguli de productie

Page 16: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 16

Construieste NA

= {D | A=*> D}

1.i:=0 ;

V0:= {A}

2. Repeta

Vi+1 :=Vi U {C | (BC) P, B Vi}

i:=i+1

pana cand Vi=Vi-1

NA := Vi

Page 17: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 17

determinam noile reguli de productie

A N:

• pentru fiecare A→a P executa

• daca a e format dintr-un singur neterminal

atunci

il excludem din mult. noilor reg.prod

altfel

adaugam: B→ a , BN a.i. A NB

• sf.daca

• sf.pentru

Page 18: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 18

Eliminarea redenumirilor

Exercitiu:

E→E+T

E → T

T → T * F

T → F

F → (E)

F → a

Page 19: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 19

Gramatica fara cicluri

Teorema:

G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã

fãrã cicluri

Daca G – e-independenta si fara redenumiri

atunci este fara cicluri

Page 20: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 20

Gramatica proprie:

este o gramatica

• fara simb. neutilizabile

• e-independenta

• fara cicluri

Teorema:

G= (N, S, P, S) $ G' = (N', S', P', S) proprie echiv.

Page 21: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 21

Recursivitate

• reg.prod. recursiva la stanga:

o reg.prod. de forma: A→Aa

• reg.prod. recursiva la dreapta:

o reg.prod. de forma: A→aA

• reg.prod. recursiva:

o reg.prod. de forma: A→aAb

Page 22: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 22

Reg. prod. recursive la stanga

• reg.prod. recursiva la stanga: A→Aa

Teorema:

G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã

fãrã reg.prod. recursive la stanga

• PP. G – gr. proprie

(daca nu este, det. gr. proprie echiv. si lucram cu ea)

• Obs.: vom obtine tot o gramatica proprie

Page 23: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 23

Eliminarea r.p. recursive la stanga

pentru fiecare A N: reg.prod.cu m.s. A

• grupam r.p. in recursive la stng. si nerec. la stanga

AAa1 | Aa2 | . . . |Aar (r.p. recursive)

Ab1| b2| . . . |bs (r.p. ne-recursive)

• r.p. se transforma astfel:

Ab1| b2| . . . |bs| b1 A’| b2 A’ | . . . |bs A’

A’a1 | a2 | . . . | ar |a1 A’ | a2 A’| . . . | ar A’

(a fost introdus un net. nou: A’)

Page 24: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 24

Eliminarea r.p. recursive la stanga

Observatii:

• Recursivitatea nu se poate elimina.

• Recursivitatea la stanga a fost transformata în

recursivitate la dreapta.

Exercitiu

Eliminati recursivitatea la stanga:

S-> Sa

S->a

Page 25: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 25

Recursivitate

• neterminal recursiv la stanga:

AN daca $ o derivare de forma: A=*>Aa

• neterminal recursiv la dreapta:

AN daca $ o derivare de forma: A =*> aA

• neterminal recursiv:

AN daca $ o derivare de forma: A =*> aAb

• gramatica recursiva la stanga:

are cel putin un neterminal recursiv la stanga

• gramatica recursiva la dreapta: …

Page 26: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 26

Eliminarea recurs. la stg. a neterm.

Teorema:

G= (N, S, P, S) $ G' = (N', S', P', S) echivalentã fãrã neterminale recursive la stanga

• PP. G – gr. proprie (daca nu este, det. gr. proprie echiv. si lucram cu ea)

• impunem o ordine asupra neterminalelor

N = {A1,A2,…,An}

si apoi modific r.p. a.i. sa nu existe Ai→Aja cu j<=i

de aici => nu va exista recursivitate la stanga

Page 27: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 27

Eliminarea recurs. la stg. a neterm.

pentru Ai de la A1 la An executa

//se elimina r.p. de forma Ai→Aja cu j<=i astfel:

*repeta

pentru j:=1,i-1 executa

* Ai→Aja (j<i) se inlocuieste cu: Ai→ba

cu toti b cu proprietatea Aj→bPinloc

sf.pentru

* se elimina r.p. de forma Ai→Aia

(se inlocuiesc cf.alg. de elim.r.p.rec.stg)

*pana cand toate r.p. cu Ai in m.s. respecta: $ j<i :Ai→Aja

sf.pentru

Page 28: nici o restrictie (suplimentara) referitoare la forma ...dana/2013-2014/LFTC/ResurseCurs/... · • simbol neproductiv Un simbol A N este neproductiv dacã nu existã nici o derivare

1/7/2014 LFTC (Dana Lupsa) 28

Eliminarea recurs. la stg. a neterm.

Exercitii:

(1) (2)

A → BC | a A → a | aB

B → CA | b B → AC | b

C → AB | c C → BA | c