Está en la página 1de 6

Forma

Normal
de
Choms
ky

Una gramtica GLC, esta en la FNC (Forma Normal de Chomsky), si se presenta


que el lado derecho en todas las reglas de produccin de una Gramtica Libre
de Contexto consiste en un nico smbolo terminal o exactamente dos no
terminales, o sea las dos formas siguientes:
A BC
Aa

Donde A, B y C son variables (en V) y a es un smbolo Terminal (en T)


Obsrvese que, para una Gramtica en Forma Normal de Chomsky, el rbol de
derivacin para cualquier derivacin est bastante bien construido ya que,
excepto en las hojas, el rbol es binario.
Ejemplo: mostramos dos Gramticas equivalentes, una de ellas en FNC.
P1= { S-> xSy , S-> xy }
P2= { S-> XM , S-> XY , M->SY , X-> x , Y-> y }
Se ve claramente que L(G1)= {x*y*} = L(G2)
Observar que G2 est en Forma Normal de Chomsky.
Teorema: Cualquier GLC sin -producciones puede ser transformada a una
gramtica equivalente en donde las producciones son de la forma A BC o A
a.
Sin embargo, antes de aplicar el algoritmo, para obtener un GLC en FNC, hay
que eliminar:
1. Producciones
2. Producciones unitarias
3. Smbolos intiles.
Debido a los tres procesos anteriores, podremos tratar una GLC cualquiera y
convertirla a otra forma GLC equivalente, la cual recin podr ser convertida a
la Forma Normal de Chomsky.

ALGORITMO (para llevar a la Forma Normal de Chomsky)


INICIO
Sea:

A X1 X2 Xm en P

1. Crear producciones del tipo A a adecuadamente


Si Xi es Terminal y Xi = a entonces agregamos a P la produccin Ca
a y remplazamos
Xi por Ca. Entonces todas las producciones son de forma:
A B1B2 Bm y A a
2. Cuando creamos producciones A BC adecuadamente
Para los casos en que m 3, hacemos:
A B1 D1; D1 B2D2;, Dm-2 Bm-1 Bm
Agregamos las respectivas variables y producciones
V= V U { D1, D2 Dm-2 }
FIN

Ejemplo 01:
Convertir la siguiente Gramtica Libre de Contexto a otra equivalente, en su
Forma Normal de Chomsky (FNC):
P = { S zS | AB | C,
A CE | CDE | zD,
B ABA | E,
C BA | xA | yz,
D xyz,
E EE | zB}
Paso 1:
P = { S ZS | AB | C,
A CE | CDE | ZD,
B ABA | E,
C BA | XA | YZ,
D XYZ,
E EE | ZB,
X x,
Y y,

Z z

}.

Paso 2:
P={

S ZS | AB | C,
A CE | CM | ZD,
B AN | E,
C BA | XA | YZ,
D X,
E EE | ZB,
X x,
Y y,
Z z,
M DE,
N BA,
YZ}.

P = { S ZS | AB | BA | XA | YZ,
A CE | CM | ZD,
B AN | EE | ZB,
C BA | XA | YZ,
D X,
E EE | ZB,
X x,
Y y,
Z z,
M DE,
N BA,
YZ}
Ejemplo 02:
Convertir la siguiente Gramtica Libre de Contexto a otra equivalente, en su
Forma Normal de Chomsky (FNC):
P = { S bA | aB
AbAA | aS | a,
BaBB | bS | b
}
Paso 1:
P = { S NA | MB,
A NAA | MS | a,
B MBB | NS | b,
M a,
N b

Paso 2:
P={

S NA | MB,
A NP | MS | a,
B MQ | NS | b,
M a,
N b,
Q BB,

P AA,
}.

Forma Normal de
Greibach

Teorema: todo LLC sin -producciones puede ser generado por una GLC en
donde las producciones son de forma:
A aB, donde a en T y B esta en V*
El cuerpo de las producciones comienzan con un Terminal y puede seguirla
cualquier cantidad de variables (inclusive 0 variables). Su importancia radica
en que, la Forma Normal de Greibach (FNG) genera smbolos terminales por
cada forma sentencial (==>), entonces una cadena de longitud n tiene
exactamente n pasos de derivacin en esta GLC, su derivacin depende
directamente del tamao de la entrada (obtener una GLC en la FNG es costoso
computacionalmente). Adems una forma normal de Greibach permite generar
Autmatas de Pila sin reglas (es decir, transiciones espontneas).
Esta forma normal, tiene una precondicin, y es que se comienza con una
gramtica en Forma Normal de Chomsky. Para aplicar el algoritmo de la
obtencin de una Forma Normal de Greibach, cada variable se etiqueta en un
conjunto ordenado de variables (con subndices en secuencia). Por ejemplo, si
V = {S, A, B}, entonces V = {A1, A2, A3}. La cardinalidad de V es llamada m,
es decir m es el nmero de variables de la GLC.
ALGORITMO (para llevar a la Forma Normal de Greibach)
INICIO
Paso 1: Convertir todas las producciones de una variable en la FNG
PARA K= m a 1 HACER
PARA J=1 a K-1 HACER
PARA Cada produccin de la forma Ak Aj HACER
PARA Todas las producciones Aj HACER
Agregar producciones Ak b
FINPARA
FINPARA
Remover produccin Ak Aj
FINPARA
SI existe Ak Ak ENTONCES
PARA Cada produccin de la forma Ak Ak HACER
Agregar produccin Bk y Bk Bk
FINPARA
Remover produccin Ak Ak
PARA Cada produccin Ak donde no comienza
con Ak HACER
Agregar la produccin Ak Bk
FINPARA
FINSI
FINPARA
Paso 2: Convertir todas las producciones: Las reglas de la forma Aj
a se sustituye

en las reglas de P hasta que todas sean FNG.


FIN
Ejemplo 01:
S MzN
M xM
M
N yN
N
1) =>

S MzN
,
M xM
S zN
,
Mx
S Mz
,
N yN
S z
,
Ny

2) =>

De S MzN obtenemos S xMzN y S xzN


De S Mz obtenemos S xMz y S xz
Conservamos las otras reglas:
S zN
Sz
M xM
Mx
N yN
Ny

3) =>
S
S
S
S
S

S xMZN , M xM
Xzn
, Mx
xMZ
, N yN
xZ
, N y
zN
,
Zz
z

Ejemplo 02:
Dada la GLC G siguiente se quiere obtener una GLC equivalente en la FNG:
G = ({A1, A2, A3}, {a, b}, P, A1)
P = A1 A2 A3
A2 A3 A1| b
A3 A1 A2| a
Paso 1: K = 3 , la variable A3
J=1
A3 A2 A3 A2 | a
A2 A3 A1 | b
A1 A2 A3
J=2
A1 A2 A3
A2 A3 A1 | b
A3 A3 A1 A3A2 | b A3 A2 | a
A1
A2
A3
B3

A2 A3
A3 A1| b
b A3 A2 | a
A1 A3A2| A1 A3 A2 B3

A1 A2 A3
A2 A3 A1 | b
A3 b A3A2 | a | b A3 A2 B3 | a B3
B3 A1 A3 A2| A1 A3 A2 B3
Paso 2:
A3 b A3A2 | a | b A3 A2 B3 | a B3
o sustituir A3 en A2
A2 b A3 A2 A1 | a A1 | b A3 A2 B3 A1 | a B3 A1 | b
o sustituir A2 en A1
o sustituir A1 en B3

También podría gustarte