formas normales
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 PresentationTRANSCRIPT
FORMAS NORMALES
Tomado de Sudkamp:Languages and Machines
Cap. 5.
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
• 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
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
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}
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.
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.
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
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.
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
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.
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
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 :
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
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 :
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
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
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
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
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.
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