1. Gramáticas positivas y Forma Normal de Chomsky
Una cuestión interesante de las gramáticas independientes del contexto es que si el lenguaje que
generan contiene la cadena vacía λ, entonces debe existir al menos una regla del tipo N λ,
donde N es una no terminal, ya que de otra manera no habría forma de derivar la cadena
vacía; pero si el lenguaje generado no contiene λ, pueden existir reglas λ que, ¿podrían
hacerse desaparecer y obtener una nueva gramática positiva?. En lo que sigue trataremos de
dar una respuesta a esta pregunta.
Previo hablaremos un poco de la forma positiva de una gramática, gramáticas que no
contienen reglas de reescritura vacías, y como se puede obtener para una gramática que
genera un lenguaje que no incluye λ. Definamos un encuadernamiento de longitud n como
la secuencia de reglas de la forma Nn Nn-1; Nn-1, Nn-2 … N0 λ y el no terminal Nn se
define como el origen del encuadernamiento.
Si G es una gramática independiente del contexto que no genera la cadena vacía, definimos
Un como el conjunto de los no terminales que aparecen como origen de los
encadenamientos λ de longitud cero, esto es, los no terminales que aparecen del lado
izquierdo de las reglas λ. A este conjunto le añadimos los orígenes de todos los
encadenamientos λ de longitud 1, para obtener otro conjunto U1, luego a U1 le agregamos
los orígenes de todos los encadenamientos λ de longitud 2 para formar un conjunto U2, y así
sucesivamente.
Ejemplo 1: Sea la siguiente gramática G que no puede generar la cadena vacía
S xAxBx
A yAy
A B
B zAz
B λ
Podemos observar que aunque la gramática no puede generar la cadena vacía, tiene una
regla que sí la genera, por lo tanto esta forma de escribir la gramática no es una forma
positiva. Ahora bien, U0 contiene B, y U1 contiene a A , puesto que la tercer regla permite
obtener λ a partir de B, y no hay más no terminales que conduzcan a λ, puesto que la
única no terminal que falta considerar en U es el símbolo inicial S, pero si este símbolo
derivase λ, entonces no sería verdad que el lenguaje generado por G no incluye la cadena
vacía.
2. Ahora, para cada regla de reescritura de la forma N w, donde w es una cadena de
terminales y no terminales, agregamos a G todas las reglas de reescritura de la forma N w¨,
donde w´ es cualquier cadena no vacía obtenida al eliminar de w una o más ocurrencias de no
terminales en U
Ejemplo 2: En la gramática del ejemplo anterior, podemos eliminar A y B (dado que están
en U) y adicionar a G las siguientes reglas de reescritura:
SxAxx eliminando B en S xAxBx
S xxBx eliminando A en SxAxBx
S xxx eliminando A y B en SxAxBx
Axx eliminando A en A yAy
B zz eliminando A en B zAz
Y si incluimos en G las reglas obtenidas, llegamos a la forma positiva siguiente:
S xAxBx
SxAxx
S xxBx
S xxx
A yAy
Axx
A B
B zAz
B zz
Por supuesto, las reglas agregadas permiten excluir la regla B λ
Podemos concluir que cualquier lenguaje independiente del contexto que no incluye la
cadena vacía, se puede generar por medio de una gramática independiente del contexto que
no tenga reglas λ.
3. A partir de una gramática en Forma Positiva, podemos ahora decir que la Forma Normal de
Chomsky cumple que el lado derecho de cualquier regla de reescritura consiste en un solo
terminal o exactamente dos no terminales.
Así la gramática
S AB
B SC
A a
C c
Tiene la Forma Normal de Chomsky, mientras que la gramática
S aSc
S ac
Genera el mismo lenguaje, pero no está en la Forma Normal de Chomsky.
El procedimiento para poner en la Forma Normal de Chomsky una gramática positiva es el
siguiente:
1. Para cada terminal x en G , introducimos un nuevo y único no terminal X, y la regla de
reescritura X x
2. Reemplazamos todas las ocurrencias de la terminal x en todas las demás reglas de G con X,
esto produce una gramática G´ en la cual el lado derecho de cada regla de reescritura una
sola terminal o una cadena de no terminales, y L(G´) = L(G)
3. Reemplazamos cada regla de G´de la forma NN1N2… Nn con N > 2, con las reglas
N N1R1
R1 N2R2
.
.
.
Rn-1Nn-1Nn
4. Si existen reglas de reescritura cuyo lado derecho contenga una sola terminal, consideramos
cada secuencia de reglas de reescritura de la forma NnNn-1, NNn-2, …, N2N1, e
4. introducimos la regla Nn x, si N1 x es una regla de G´e introducimos la regla
NnAB si N1 AB está en G´.
Ejemplo 4: La gramática del ejemplo anterior que no tiene la Forma Normal de Chomsky
S aSc
S ac
Se puede reescribir como Gramática en la Forma Normal de Chomsky, aplicando los 4
pasos del procedimiento anterior, de la siguiente manera:
Paso 1.
S aSc
S ac
A a
Cc
Paso 2.
SASC
SAC
Aa
Cc
Paso 3
S AR1
R1 SC
A a
C c
Paso 4 No aplica puesto que no existen reglas de reescritura cuyo lado derecho sea una sola
no terminal, y por lo tanto, la Forma Normal de Chomsky se obtiene al llegar al paso 3.
Ejemplo 5. Si en la gramática del ejemplo anterior se agregasen reglas de reescritura de
manera que fuese de la forma
5. S aSc
S ac
X Y
Y A
Paso 1.
S aSc
S ac
X Y
Y A
A a
Cc
Paso 2.
SASC
SAC
X Y
Y A
Aa
Cc
Paso 3
S AR1
R1 SC
X Y
Y A
A a
C c
6. Paso 4
S AR1
R1 SC
X x
Y x
A a
C c
Y la gramática se encuentra en su Forma Normal de Chomsky
Otra forma utilizada para escribir gramáticas libres de contexto, que no generan la cadena vacía, es la
llamada Forma Normal de Greibach o FNG, cuya estructura es tal que el lado derecho de las reglas de
reescritura inician con una terminal seguida de cero o más no terminales útiles. Esta forma se puede
obtener a partir de la Forma Normal de Chomsky siguiendo los pasos siguientes:
1. Construimos una gramática equivalente en forma normal de Chomsky.
2. Sustituimos las reglas recursivas a la izquierda, es decir, reglas de tipo X XY
3. Establecemos un orden en las variables, es decir de tal manera que todas las reglas
X serán de tipo Xi XjY con i< j y Y una no terminal.
4. Sustituimos las reglas que no tengan un símbolo terminal como primer símbolo en
su parte derecha.
Nota: Ejemplos de aplicación de este procedimiento serán tema de discusión en equipo, sugiriéndoles
usen el ejemplo 5, para obtener la Forma Normal de Greibach, en la seguridad de que el profesor
Luque les ayudará a despejar las dudas que puedan surgir, y en todo caso, pueden escribirme ya que
tienen mi correo
7. Tarea para el martes 13-11-2012 (última que yo les dejo antes de que asuma el grupo el profesor
Luque).
1. Escriba, en su Forma Positiva, la siguiente gramática
S xyAB
A xB
B yA
B λ
2. Utilizando la Forma positiva de la gramática del ejercicio 1, escríbala en la Forma Normal de
Chomsky.
3. Utilizando la Forma Normal de Chomsky, escriba la gramática del ejercicio 2 en la Forma Normal
de Greibach.