formas normales

21
FORMAS NORMALES Tomado de Sudkamp: Languages and Machines Cap. 5.

Upload: jasper

Post on 19-Mar-2016

54 views

Category:

Documents


2 download

DESCRIPTION

FORMAS NORMALES. Tomado de Sudkamp: Languages and Machines Cap. 5. Gramática regular. Forma normal de Chomsky. A aB A a A . A BC A a S . S no aparece al lado derecho de ninguna producción. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: FORMAS NORMALES

FORMAS NORMALES

Tomado de Sudkamp:Languages and Machines

Cap. 5.

Page 2: FORMAS NORMALES

Gramática regular

A aB

A a

A

A BC

A a

S

Forma normal de Chomsky

A aA1A2A3…. An

A a

S

Forma normal de Greibach

S no aparece al lado derecho de ninguna producción

Page 3: FORMAS NORMALES

• Evite que el símbolo de arranque sea recursivo.

• Eliminación de reglas Lambda• Eliminación de las reglas en cadena

(chain rules).• Símbolos inútiles

Page 4: FORMAS NORMALES

Algoritmo 5 .1. 2

Costrucción del conjunto de variables anulables

Input: Context-free Grammar G=(V,,P,S)

1. NULL=:{A | A }

2. Repeat

2.1 PREV:=NULL

2.2 for each variable AV do

if there is an A rule A w and wPREV* then

NULL=NULL{A}

until NULL=PREV

Page 5: FORMAS NORMALES

EJEMPLO 5.1.2GG: : V = V = {S, A, B, C}{S, A, B, C} ΣΣ = = {a,b}{a,b} P:P: S → ACA S → ACA A → aAa | B | CA → aAa | B | C B → Bb | bB → Bb | b C → cC | C → cC |

Iter. NULL PREV

1. {C}

2. {A,C} {C}

3. {S, A, C} {A,C}

4. {S, A, C} {S,A,C}

Page 6: FORMAS NORMALES

Teorema 5.1.5

• Dada G =(V,,P,S) una cfg, existe un algoritmo que construye una gramática cfg GL=(VL,,PL,SL) tal que :

• L(G)=L(GL)

• SL no es una variable recursiva.

• A →→ si y solo sí L(G) y A=SL.

Page 7: FORMAS NORMALES

DEMOSTRACIÓN

Construcción de GL

VL es V con un nuevo símbolo de arranque si es necesario.

Construcción de PL

Si L(G) entonces SL →→

Sea A→→ w una regla de P. Si w puede escribirse de la forma

w1A1w2A2….wkAkwk+1

donde A1…A2, Ak son símbolos anulables entonces

A→→ w1w2….wkwk+1

Es una regla de PL.A →→ si y solo si L(G) y A=SL.

Page 8: FORMAS NORMALES

Ejemplo 5.1.4GG: : V = V = {S, A, B, C}{S, A, B, C} ΣΣ = = {a,b}{a,b} P:P: S → ACA S → ACA A → aAa | B | CA → aAa | B | C B → Bb | bB → Bb | b C → cC | C → cC |

Símbolos anulables: S,A,C

GGLL: : V = V = {S, A, B, C}{S, A, B, C} ΣΣ = = {a,b}{a,b} P:P: S → ACA|CA|AC|AA|A|C| S → ACA|CA|AC|AA|A|C| A → aAa |aa | B | CA → aAa |aa | B | C B → Bb | bB → Bb | b C → cC | cC → cC | c

GG: : S => ACA S => ACA =>aAaCA=>aAaCA => aBaCA=> aBaCA =>abaCA =>abaA =>abaC =>aba

GG: : S => A S => A =>aAa=>aAa =>aBa=>aBa => aba=> aba

Page 9: FORMAS NORMALES

Reglas en cadena

• Es una regla de la forma A → B.A → B.• CHAIN(A) CHAIN(A) comprende además de comprende además de A,A, todas todas

las símbolos auxiliares que se derivan de las símbolos auxiliares que se derivan de AA..

• Es decir Es decir CHAIN(A)={B | A=>*B}CHAIN(A)={B | A=>*B}{A}{A}..• CHAIN(A) se construye recursivamente a

partir de A.

Page 10: FORMAS NORMALES

Ejemplo 5.2.1

GG: : V = V = {S, A, B, C}{S, A, B, C} ΣΣ = = {a,b}{a,b} P:P: S → ACA|CA|AC|AA|AC|A|C| S → ACA|CA|AC|AA|AC|A|C| A → aAa | B | CA → aAa | B | C B → Bb | bB → Bb | b C → cC | cC → cC | c

CHAIN RULESCHAIN RULESChain(S)= {S,A,C,B}Chain(S)= {S,A,C,B}Chain(A)= Chain(A)= {A,C,B}{A,C,B}Chain(B)= Chain(B)= {B}{B} Chain(C)= Chain(C)= {C}{C}

S → ACA| CA| AC| AA| AC| S → ACA| CA| AC| AA| AC| S → aAa| Bb| b| cC| cS → aAa| Bb| b| cC| cA → aAa| Bb| b| cC| cA → aAa| Bb| b| cC| cB→ Bb| bB→ Bb| bC → cC| cC → cC| c

Page 11: FORMAS NORMALES

Símbolos Inútiles

• Hay dos clases de símbolos inútiles:• Aquellos que no derivan cadenas de

símbolos terminales (estériles).• Aquellos que no son alcanzables a partir

de S (inalcanzables).• El teorema 5.3.3 garantiza que para toda cfg

existe una equivalente sin símbolos estériles.• El teorema 5.3.6 garantiza que para toda cfg

existe una equivalente sin símbolos inútiles.

Page 12: FORMAS NORMALES

Construcción del conjunto de variables no estériles.

• TERM:={A | existe A → w A → w con con ww** }.• repeat PREV:=TERM for cada variable AV do if existe A → w A → w con con ww(PREV(PREV)*)* then then TERM:=TERM{A} until PREV:=TERM

Page 13: FORMAS NORMALES

EJEMPLO 5.3.1 S → AC| BS | BS → AC| BS | B A → aA | aFA → aA | aF B → CF | bB → CF | b C → cC | DC → cC | D D → aD | BD | CD → aD | BD | C E → aA | BSAE → aA | BSA F → bB | bF → bB | b

Iter. TERM PREV

1. {B,F}

2. {B,F,A,S} {B,F}

3. {B, F, A, S, E} {B,F,A,S}

4. {B, F, A, S, E} {B, F, A, S, E}

S → BS | BS → BS | B A → aA | aFA → aA | aF B → bB → b E → aA | BSAE → aA | BSA F → bB | bF → bB | b

GT :

Page 14: FORMAS NORMALES

Construcción del conjunto de variables ALCANZABLES.

• REACH:={S}• PREV:=• repeat NEW:=REACH-PREV PREV:=REACH for cada variable ANEW do for cada regla A → w A → w agrege a REACH todas agrege a REACH todas

las variables de las variables de ww until REACH:=PREV

Page 15: FORMAS NORMALES

EJEMPLO 5.3.2 S → AC| BS | BS → AC| BS | B A → aA | aFA → aA | aF B → CF | bB → CF | b C → cC | DC → cC | D D → aD | BD | CD → aD | BD | C E → aA | BSAE → aA | BSA F → bB | bF → bB | b

Iter. REACH PREV NEW

1. {S} {S}

2. {S,B} {S} {B}

3. {S, B } {S, B}

S → BS | BS → BS | B A → aA | aFA → aA | aF B → bB → b E → aA | BSAE → aA | BSA F → bB | bF → bB | b

GT : S → BS | BS → BS | B B → bB → b

GU :

Page 16: FORMAS NORMALES

FN de CHOMSKY

• Se parte de una gramática que:• El símbolo de arranque no es recursivo.• No contiene variables anulables salvo S.• No contiene reglas en cadena.• No tiene símbolos inútiles.

A →→ bAaD A →→ B’AA’D

B’ →→ b

A’ →a→a

A →→ B’T

T →→ AW

W →A’D→A’D

Page 17: FORMAS NORMALES

Ejemplo 5.4.2 (AE)AE: AE: V = V = {S, A, T}{S, A, T} ΣΣ = = {b, +, (, )}{b, +, (, )} P:P: 1. 1. S → A S → A 2. 2. A → T A → T 3. 3. A → A + TA → A + T 4. 4. T → bT → b 5. 5. T → (A)T → (A)

S → A + T | b | (A)S → A + T | b | (A) A → A + T | b | (A)A → A + T | b | (A) T → b | (A)T → b | (A)

R → )R → ) L → (L → ( P → +P → + Z →ARZ →AR

Y →PTY →PT T → b | AY | LZ T → b | AY | LZ S→AY| b | LZ S→AY| b | LZ

Page 18: FORMAS NORMALES

Eliminar la recursividad a izquierda directa.

• Se busca eliminar las reglas de tipo A → Aw A → Aw como como A → A + TA → A + T..

A → A a | bA → A a | b A → A a | Ab| b | cA → A a | Ab| b | c A → A B |BA | aA → A B |BA | a

B → b | cB → b | c

ba* (bvc)(avb)* (bvc)*a(bvc)*

A → bZ | bA → bZ | b

ZZ →→ aZ | a

A → bZ | cZA → bZ | cZ

ZZ →→ aZ | bZ | a | bA → BAZ | aZ | BAA → BAZ | aZ | BA

ZZ →→ BZ | B BB →→ b | c

Page 19: FORMAS NORMALES

Generalizando…

A → AuA → Au11 | Au | Au22 |…| Au |…| Aunn

A → vA → v11 | v | v22 |…| v |…| vkk

A → vA → v11 | v | v22 |…| v |…| vkk | | vv11Z | vZ | v22Z |…| vZ |…| vk k ZZ

Z → uZ → u11Z | uZ | u22Z|…| uZ|…| unnZZ

Page 20: FORMAS NORMALES

Conversión a fn de GreibachA →→ aA1A2A3…. An

A →→ a

S →→

Forma normal de Greibach

S → AB | S → AB | A → AB | CB | aA → AB | CB | a B → AB | bB → AB | b C → AC | c C → AC | c

G

S → AB | S → AB | A → aRA → aR11 | CBR | CBR11 | CB | a | CB | a B → AB | bB → AB | b C → AC | c C → AC | c RR11 →BR →BR11 | B | B

S → AB | S → AB | A → aRA → aR11 | CBR | CBR11 | CB | a | CB | a B → B → aRaR11B | B | CBRCBR11B | B | CBCBB | B | aaB | bB | b C → AC | c C → AC | c R1 →BRR1 →BR11 | B | B

LEMA 5.6.2 La regla A →uBv→uBv se puede reemplazar por se puede reemplazar por A→uk1v|…|uknv→uk1v|…|uknv donde B→k1|…| kn→k1|…| kn son todas las B reglas. son todas las B reglas.

Page 21: FORMAS NORMALES

continuamos S → AB | S → AB | A → aRA → aR11 | CBR | CBR11 | CB | a | CB | a B → aRB → aR11B | CBRB | CBR11B | CBB | aB | bB | CBB | aB | b C → AC | c C → AC | c R1 →BRR1 →BR11 | B | B S → AB | S → AB | A → aRA → aR11 | CBR | CBR11 | CB | a | CB | a B → aRB → aR11B | CBRB | CBR11B | CBB | bB | CBB | b C → C → aRaR11C | C | CBRCBR11C | C | CBCBC | C | aaC | c C | c RR11 →BR →BR11 | B | B C → aRC → aR11C | aC | c | C | aC | c | aRaR11CCRR22 | | aCaCRR22 | | ccRR22

RR22 → → BRBR11CCRR22 | BC | BCRR22 |BR |BR11C|BC C|BC