Maestría en Ciencia e Ingeniería de la Computación UNAM Tema 9: Propiedades de cerradura y normalización de gramáticas
libres de contexto
Dr. Favio Ezequiel Miranda Perea
Facultad de Ciencias UNAM
Propiedades de Cerradura
Propiedades de cerradura
Lenguaje Libres del ContextoLa clase de los lenguajes libres del contexto es cerrada bajo las siguientes operaciones:
Unión: siL1,L2son lenguajes libres del contexto entoncesL1∪L2
es un lenguaje libre del contexto.
Concatenación: siL1,L2son lenguajes libres del contexto
entoncesL1L2es un lenguaje libre del contexto.
Estrella de Kleene:siL1es un lenguaje libres del contexto
Cerradura bajo la unión
Lenguajes Libres del ContextoSiG1=hV1,T,S1,P1i, G2=hV2,T,S2,P2ison GLC con
L1=L(G1), L2=L(G2)entoncesL1∪L2=L(G)dondeGes la
gramática
G=hV1∪V2∪ {S},T,S,Pi
yP está dado porP1∪P2mas las producciones:
Propiedades de Cerradura
Cerradura bajo la concatenación
Lenguajes Libres del ContextoSiG1=hV1,T,S1,P1i, G2=hV2,T,S2,P2ison GLC con
L1=L(G1), L2=L(G2)entoncesL1L2=L(G)donde Ges la
gramática
G=hV1∪V2∪ {S},T,S,Pi
yP está dado porP1∪P2mas la producción:
Cerradura bajo la estrella de Kleene
Lenguajes Libres del ContextoSiG1=hV1,T,S1,P1ies una GLC conL1=L(G1)entonces
L?1=L(G)dondeGes la gramática
G=hV1∪ {S},T,S,Pi
yP está dado porP1mas la producciones:
Propiedades de Cerradura
Propiedades de cerradura
inválidas
Lenguajes libres del contextoEn general las siguientes propiedades no son válidas para lenguajes libres del contexto.
Cerradura bajo la intersección.
Cerradura bajo el complemento.
Propiedades de cerradura
inválidas
IntersecciónLa intersección de dos LIC puede ser un lenguaje que no es libre del contexto.
L1={aibicj |i,j≥1}es libre del contexto:
S →AB, A→aAb|ab, B→cC |c
L2={aibjcj |i,j≥1}es libre del contexto:
S →AB, A→aA|a, B→bBc|bc
Propiedades de Cerradura
Propiedades de cerradura
inválidas
Complemento y diferenciaSi el complemento de un LLCL,L¯fuera también libre del contexto
entonces la intersección también lo sería pues
L1∩L2=L1∪L2
Si la diferencia fuera un LLC, entonces también lo sería el complemento pues
Introducción
Normalización de gramáticas
La normalización consiste en transformar todas las producciones de una gramática de manera que tengan cierta forma sintáctica en particular.
La normalización de gramáticas libres de contexto es útil para homogeneizar la forma de las producciones así como para optimizar los procesos de derivación de cadenas.
Normalización de Gramáticas Introducción
Problema de la pertenencia
Normalización de gramáticas
Dada una gramáticaGy una palabrau, ¿Se cumpleu∈L(G)?
Es decir, perteneceu al lenguaje generado porG.
Si la palabrau es generada porGla construcción de un árbol de
derivación terminará eventualmente.
En caso contrarionopodemos saber cuando parar en la
Variables Inútiles
DefiniciónUna variableAesaccesibleoalcanzablesi existen
u,v ∈(V ∪T)? tales queS→?uAv. Obsérvese que según esta
definiciónSes alcanzable.
Una variableAesproductivaoterminablesi existew ∈T? tal que
A→? w. En particular siA→εes una producción entoncesAes
productiva.
Normalización de Gramáticas Eliminación de variables inútiles
Algoritmo para hallar variables productivas
Transformaciones en GLCProd :={A∈V |A→w ∈P, w ∈T?}
repetir
Prod :=Prod∪ {A∈V |A→w, w ∈(T ∪Prod)?}
Ejemplo
Variables productivasS→ ACD|bBd |ab A→ aB|aA|C B→ aDS|aB C→ aCS|CB|CC D→ bD|ba
E → AB|aDb
Normalización de Gramáticas Eliminación de variables inútiles
Ejemplo
Eliminación de variables improductivas
C es la única variable improductiva, se elimina junto con todas las
reglas donde figure:
Algoritmo para hallar variables accesibles
Transformaciones en GLCAcc :={S}
repetir
Acc := Acc∪ {A∈V | ∃ B→uAv ∈P, B∈Acc, u,v ∈(V∪T)?}
Normalización de Gramáticas Eliminación de variables inútiles
Ejemplo
Variables accesibles
S→ aS|AaB|ACS A→ aS|AaB|AC B→ bB|DB|BB C→ aDa|ABD|ab D→ aD|DD|ab E → FF |aa F → aE |EF
Ejemplo
Eliminación de variables inaccesibles
E,F son variables inaccesibles, se eliminan junto con todas las reglas
donde figuren:
Normalización de Gramáticas Eliminación de variables inútiles
Eliminación de variables inútiles
Transformaciones en GLC
Para eliminar variables inútiles se aplican los dos algoritmos anteriores
en el siguiente orden:
Eliminar variables no productivas.
Eliminación de variables inútiles
Importancia del orden de los algoritmosSi se aplican los algoritmos en orden inverso el resultado puede ser una gramática que aún contenga variable inútiles.
S→a|AB, A→aA|ε
Al eliminar primero las variables no accesibles se obtiene la misma gramática, al ser todas las variables accesibles.Posteriormente al eliminar variables improductivas resulta
S→a, A→aA|ε
Normalización de Gramáticas Eliminación deε-producciones
Eliminación de
ε-producciones
Transformaciones en GLC
Una producción de la formaA→εes unaε-producción
Algoritmo para hallar variables anulables
Transformaciones en GLCAnul :={A∈V |A→ε ∈P}
repetir
Anul :=Anul∪ {A∈V | ∃ A→w ∈P, w ∈Anul?}
Normalización de Gramáticas Eliminación deε-producciones
Eliminación de
ε-producciones
Transformaciones en GLC
Eliminar todas lasε-producciones.
Para cada producción de la formaA→w1. . .wnagregar las
produccionesA→v1. . .vndonde:
I vi =wi siwi ∈/Anul.
I vi =wi óvi =εsiwi ∈Anul.
Ejemplo
Eliminación deε-producciones
S → AB|ACA|ab A→ aAa|B|CD B → bB|bA C → cC|ε
D → aDc|CC |ABb
Normalización de Gramáticas Eliminación deε-producciones
Ejemplo
Eliminación deε-producciones
Al eliminar la producciónC→εse obtiene la siguiente gramática:
S→ AB|ACA|ab|B|CA|AA|AC |A|C |ε A→ aAa|B |CD|aa|C |D
B→ bB|bA|b C→ cC|c
Acerca de la palabra vacía
Transformaciones en GLCSi originalmente se teniaε∈L(G)la eliminación deε
producciones genera una gramática que no genera aε.
Es posible saber si se pierde la palabra vacía al eliminar
ε-producciones verificando siS∈Anul.
Si se quiere recuperar aεdebe agregarse un nuevo símbolo
inicialS0 y las produccionesS0→S yS0 →ε.
Normalización de Gramáticas Eliminación de producciones unitarias
Eliminación de producciones unitarias
Transformaciones en GLC
Una producción de la formaA→BdondeAyB son ambas
variables se llamaproducción unitaria.
Elconjunto unitariodeAse define como sigue:
Unit(A) ={B∈V |A→? Busando sólo prod. unitarias}
Algoritmo para hallar el conjunto
Unit
(
A
)
Transformaciones en GLCUnit(A) :={A}
repetir
Unit(A) :=Unit(A)∪ {B∈V | ∃ C →B, C∈Unit(A)}
Normalización de Gramáticas Eliminación de producciones unitarias
Eliminación de producciones unitarias
Transformaciones en GLC
Para cadaB ∈Unit(A)y cada producciónA→wagregar la
producción
B→w
Ejemplo
Eliminación de producciones unitarias
S→ AS|AA|BA|ε A→ aA|a
B→ bB|bC |C C → aA|bA|B |ab
Los conjuntos unitarios para cada variable son:
Unit(S) ={S} Unit(A) ={A}
Normalización de Gramáticas Eliminación de producciones unitarias
Ejemplo
Eliminación de producciones unitarias
La gramática obtenida al eliminar producciones unitarias es:
S→ AS|AA|BA|ε A→ aA|a
Problema de la pertenencia
Normalización de gramáticasDada una gramáticaGsinε-producciones ni producciones
unitariasy una palabrau de longitudn, ¿Se cumpleu∈L(G)?
Es decir, perteneceu al lenguaje generado porG.
Si la palabrau es generada porGla construcción de un árbol de
derivación terminará eventualmente.
En caso contrario basta con construir el árbol hasta el nivel2n−1
para concluir queu∈/ L(G).
En cada paso se obtiene un nuevo terminal (a lo masnpasos) o
Normalización de Gramáticas Formas Normales
Forma Normal de Chomsky
Definición
Una GLCGestá en forma normal de Chomsky (FNC) si:
Gno contiene variables inútiles.
Gno contiene producciones unitarias niε-producciones (salvo
S→ε)
Todas las producciones son de la forma:
A→BC ó A→a
Transformación a forma normal de Chomsky
Transformaciones en GLCCualquier GLC es equivalente a una gramática en FNC, lo cual se logra como sigue:
Eliminar las variables inútiles.
Eliminar lasε-producciones (salvoS→ε)
Eliminar producciones unitarias.
Las producciones restantes son todas de la formaA→acon
Normalización de Gramáticas Formas Normales
Eliminación de producciones
A
→
w
,
|
w
| ≥
2
Forma Normal de ChomskyHacer lo siguiente para cada producciónP de la forma
A→α1α2. . . αncon αi ∈V∪T,n≥2 (sin=2, al menos uno de
α1, α2debe ser terminal, pues si no la producción ya es válida
para FNC)
Siαi ∈T, digamosαi =a, entonces
I Agregar la producciónTa→a, dondeTaes una nueva variable.
I Cambiarαi porTaen la producciónP
Para cada producciónP de la formaA→B1B2. . .Bm con
Bi ∈V, m≥3
Ejemplo
Simulación de produccionesA→w1w2. . .wn, n≥2
La producciónA→abBaC se simula con producciones simples y
binarias como sigue:
Agregamos las nuevas variablesTa,Tby las producciones
A→TaTbBTaC, Ta→a, Tb→b
Para simular la producciónA→TaTbBTaC agregamos nuevas
variablesD1,D2,D3y las producciones binarias necesarias
obteniendo finalmente:
Normalización de Gramáticas Formas Normales
Forma normal de Chomsky
Ejemplo
Transformar la siguiente gramática a FNC:
S→ AB|aBC|SBS
A→ aA|C
B→ bbB |b
Forma normal de Chomsky
EjemploLa gramática equivalente en FNC es:
S→ AB|TaD1|SD2|TaB|TbD3|b
A→ TaA|TcC |a|c
B→ TbD3|b
C → TcC |c
D1→ BC
D2→ BS
D3→ TbB
Ta→ a
Normalización de Gramáticas Formas Normales
Forma Normal de Greibach (FNG)
DefiniciónUna GLCGestá en forma normal de Greibach (FNG) si:
La variable inicialSno es recursiva, es decir, no figura en el lado
derecho de las producciones.
Gno tiene variables inútiles niε-producciones.
Transformación a forma normal de Greibach
Transformaciones en GLCCualquier GLC es equivalente a una gramática en FNG.
El proceso requiere que la gramática esté en Forma Normal de Chomsky.
Normalización de Gramáticas Formas Normales
Problema de la pertenencia
Normalización de gramáticas
Dada una gramáticaGen forma normal de Greibachy una
palabraude longitudn, ¿Se cumpleu ∈L(G)? Es decir,
perteneceual lenguaje generado porG.
Siu es generada porGla construcción de un árbol de derivación
terminará eventualmente.
En caso contrario basta con construir el árbol hasta el nivelnpara
concluir queu∈/ L(G).
En cada paso se obtiene un nuevo terminal (a lo masnpasos) y