Vous êtes sur la page 1sur 20

DEDICATORIA

Este trabajo est dedicado a nuestros Padres que


nos apoyan en las buenas y en las malas.
PRESENTACION
En este siguiente trabajo de GRAMTICAS Y LENGUAJES DE CONTEXTO
LIBRE existen ciertos lenguajes muy usuales que no pueden ser generados por
medio de gramticas regulares. Algunos de estos lenguajes s pueden ser
generados por otro tipo de gramticas, las denominadas gramticas de contexto
libre (tambin denominadas gramticas incontextuales, o independientes del
contexto). Uno de los ejemplos ms tpicos consiste en la gramtica de contexto
libre que genera el lenguaje formado por aquellas cadenas que tengan igual
nmero de parntesis abiertos que cerrados.
INDICE:
1. GRAMTICAS Y LENGUAJES DE CONTEXTO LIBRE.
1.1. LA GRAMATICA
1.2. AUTMATA
1.3. DEFINICIN FORMAL DE GRAMTICA

2. ARBOLES DE DERIVACIN
2.1. DEFINICION
2.2. PROPIEDADES
2.3. RELACIN ENTRE DERIVACIONES Y RBOLES

3. SIMPLIFICACIN DE GRAMTICA DE CONTEXTO LIBRE


3.1. DEFINICION
3.2. PASOSPARA SIMPLIFICAR UNA GCL
3.3. PROCEDIMIENTOS
3.3.1. Eliminacin de smbolos intiles.
3.3.2. Eliminacin de las producciones vacas.
3.3.3. Eliminacin de las producciones unitarias.

4. FORMAS NORMALES
4.1. FORMAS NORMALES DE CHOMSKY
4.2. FORMAS NORMALES DE GREIBACH

5. CONCLUSIN

6. WEBGRAFIA
1. GRAMTICAS Y LENGUAJES DE CONTEXTO LIBRE.

1.1 LA GRAMATICA:

Permite definir un lenguaje mediante reglas que nos


permiten generar o producir cadenas de un lenguaje.
Estas gramticas son similares a las gramticas de los
lenguajes naturales, pero mucho ms restrictivas y
sencillas.
Un ejemplo de regla de una gramtica:
Oracin -> Sujeto predicado
Estas reglas se suelen llamar reglas de reescritura: el
smbolo Oracin se puede reescribir por el smbolo Sujeto
seguido del smbolo Predicado.

1.2 AUTMATA:
Al igual que con los lenguajes regulares podemos definir un
autmata como una mquina reconocedora de cadenas
(palabras) de un determinado lenguaje.
Los autmatas con los que trabajaremos en este tema son algo
ms complejos que los AF.

1.3 DEFINICIN FORMAL DE GRAMTICA:

G = (VN, VT, S, P) donde:

a. VN (vocabulario no terminal): conjunto finito de smbolos


que permiten representar estados intermedios de la
generacin de las palabras del lenguaje
b. VT (vocabulario terminal): conjunto finito de los smbolos
que forman las palabras del lenguaje.
c. S VN (smbolo inicial o axioma): a partir del que se
aplican las reglas de la gramtica para obtener las
distintas palabras del lenguaje.
d. P es el conjunto de reglas de produccin (reglas de
derivacin o reglas de reescritura) que permiten generar
las palabras del lenguaje.

Las reglas de reescritura son un par ordenado de cadenas, ,


(VN VT)*, representado de la forma:

Esto significa que si es una subcadena de una cadena


p, entonces se puede sustituir por en p.
En general, las reglas son de la forma: , con
(VN VT)+ (VN VT)*

2. ARBOLES DE DERIVACIN
2.1. DEFINICION:
Un rbol de derivacin permite mostrar grficamente cmo se puede
derivar cualquier cadena de un lenguaje a partir del smbolo distinguido
de una gramtica que genera ese lenguaje. Un rbol es un conjunto de
puntos, llamados nodos, unidos por lneas, llamadas arcos.
2.2. PROPIEDADES
Hay un nico nodo distinguido, llamado raz (se dibuja en la parte
superior) que no tiene arcos incidentes.
Todo nodo c excepto el nodo raz est conectado con un arco a
otro nodo k, llamado el padre de c (c es el hijo de k).
El padre de un nodo, se dibuja por encima del nodo. Todos los
nodos estn conectados al nodo raz mediante un nico camino.
Los nodos que no tienen hijos se denominan hojas, el resto de los
nodos se denominan nodos interiores

DEFINICION:

Sea G=(N,T,S,P) una GLC. Un rbol es un rbol de derivacin para


G si:
1. Todo vrtice tiene una etiqueta tomada de
2. La etiqueta de la raz es el smbolo inicial S
3. Los vrtices interiores tienen etiquetas de N
4. Si un nodo n tiene etiqueta A y n1n2 ...nk respectivamente son
hijos del vrtice n, ordenados de izquierda a derecha, con etiquetas
x1 ,x2 ..xk respectivamente, entonces: A x1x2 ...xk debe ser una
produccin en P 5. Si el vrtice n tiene etiqueta , entonces n es
una hoja y es el nico hijo de su padre.

2.3. RELACIN ENTRE DERIVACIONES Y RBOLES


Si leemos las etiquetas de las hojas de izquierda a derecha
tenemos una sentencia. Llamamos a esta cadena la produccin del
rbol de derivacin. Teorema. Sea G=(N,T,S,P) una GLC.
Entonces (de S se deriva ) si y slo si hay un rbol de derivacin
en la gramtica G con la produccin . Si w es una cadena de L(G)
para la gramtica libre de contexto G, entonces w tiene al menos
un rbol de derivacin. Referido a un rbol de derivacin
particular,w tendr una nica derivacin a la izquierda y otra nica
a la derecha.

3. SIMPLIFICACIN DE GCL
3.1. DEFINICIN

Una de las primeras tareas que hay que realizar con una GCL es
eliminar todas aquellas producciones que no aporten ningn tipo de
informacin valida en la generacin de alguna de las cadenas del
lenguaje. Es decir, hay que simplificar la GCL sin alterar el conjunto
de cadenas que es capaz de generar

El objetivo al simplificar una gramtica de contexto libre es obtener


una gramtica equivalente, pero en la que se asegura que cada
derivacin es til, y que no obliga a aplicar ningn paso innecesario.

3.2. PASOS PARA SIMPLIFICAR UNA GRAMTICA DE CONTEXTO


LIBRE.
Cualquier lenguaje de contexto libre, L, puede ser generado por medio
de una GCL, G, que cumpla las siguientes condiciones:
1. Cada smbolo (terminal o auxiliar) de G se emplea en la
derivacin de alguna cadena de L.
2. Si no pertenece a L entonces en el conjunto de producciones
de G no existen producciones vacas, es decir, producciones de
la forma A .
3. En el conjunto de producciones de G no existen producciones
unitarias, es decir, producciones de la forma A B donde A, B
A.
Si se obtiene una gramtica que cumpla estas tres condiciones se
puede asegurar que en cada derivacin que se realiza se introduce
informacin relevante.
Cmo se puede asegurar que son ciertas en nuestra gramtica cada
una de estas tres condiciones?
1. Podemos asegurar que cada smbolo (terminal o auxiliar) de G
se emplea en la derivacin de alguna cadena de L si
eliminamos los smbolos intiles.
2. Podemos asegurar que si no pertenece a L entonces en el
conjunto de producciones de G no existen producciones de la
forma A si eliminamos las producciones vacas.
3. Podemos asegurar que en el conjunto de producciones de G
no existen producciones unitarias si eliminamos las
producciones unitarias.
Estos son los tres pasos que debemos seguir para asegurar que la
gramtica est simplificada. A continuacin se desarrolla cada uno de
ellos.

3.3. PROCEDIMIENTOS.
Para ilustrar el procedimiento se simplificara la gramtica G = {A,
T , S, P}, en la que A = {S, A, B, C, D, E, F, G}, T = {a, b, c} y el
conjunto de producciones, P, es el siguiente:
S Aab | B | CSa | b
A aA | Cb | a | aBAE
B bB | aBC | F |
C CG | DC D aCb | a
E aaE | bB
F aF | ab
GF
3.3.1. ELIMINACIN DE SMBOLOS INTILES.
Hay que dividirlo en dos pasos y, adems, el orden en que
se realizan es significativo. Primero hay que eliminar los
smbolos no derivables y, despus, los smbolos no
alcanzables.

I. Eliminar los smbolos no derivables.


Un smbolo auxiliar que nunca se podr substituir por
un terminal (o una cadena de terminales) es un
smbolo no derivable. Y se puede eliminar de la
gramtica: es intil puesto que si lo usamos nunca
derivaremos una cadena formada exclusivamente por
terminales. Una forma de actuar es calcular que
smbolos s son derivables y desechar los que no lo
sean, ya que la teora nos da un procedimiento para
determinar el conjunto de smbolos derivables:
Paso Base: A A, w T tal que A w P,
entonces se sabe que A es derivable.
Paso Recursivo: Si (A ) P y si todos los smbolos
auxiliares de son derivables, entonces el smbolo A
tambin es derivable.
Ejemplo: Al partir del siguiente conjunto de
producciones,
S Aab | B | CSa | b
A aA | Cb | a | aBAE
B bB | aBC | F |
C CG | DC
D aCb | a
E aaE | bB
F aF | ab
GF
Se puede iniciar el conjunto de derivables, D, con los
siguientes smbolos: D = {S, A, B, D, F} ya que al
menos una produccin de cada uno de esos smbolos
auxiliares esta formada por una cadena de T: S
b, A a, B , D a y F ab.
Aplicamos un primer paso recursivo, aadiendo los
smbolos que contienen al menos una produccin
formada exclusivamente por derivables y que an no
pertenecen al conjunto D; esto es, E (porque se tiene
la produccin E bB) y G (por la produccin G F).
Con esto, se tiene
D = {S, A, B, D, F, E, G}
Se intenta aplicar otra vez el paso recursivo, pero no
es posible aadir ms smbolos: solo falta C y no
puede ser incluido, ya que ninguna de sus
producciones est formada exclusivamente por
derivables. Por lo tanto, C no es derivable y debe
eliminarse completamente de la gramtica. Se
obtiene, por lo tanto, la gramtica equivalente G =
{A, T, S, P}, en la que A = {S, A, B, D, E, F, G},
T = {a, b, c} y el conjunto de producciones,
P, es el siguiente:
S Aab | B | b
A aA | a | aBAE
B bB | F |
D a E aaE | bB
F aF | ab
GF
Que no tiene smbolos no derivables.

II. Eliminar los smbolos no alcanzables.


Un smbolo auxiliar que nunca se podr alcanzar
desde el smbolo inicial de la gramtica es un smbolo
no alcanzable, esto es, un smbolo que nunca
aparecer en la derivacin de una cadena porque no
hay una secuencia de substituciones en las
producciones que hagan que aparezca. Y, por
supuesto, si nunca se va a usar, se puede eliminar de
la gramtica.
Paso Base: A = {S}, T = ,
Paso Recursivo: si A A y (A ) P,
Ejemplo:
Si se parte de la gramtica sin smbolos no derivables
G, que se acaba de obtener, el valor inicial de los
conjuntos de auxiliares alcanzables y de los
terminales tiles se inician como:
A = {S}, T =
Tal y como indica el mtodo terico. En la primera
aplicacin del paso recursivo, se ha aadido a los
auxiliares A y B, y a T los terminales a y b; por lo tanto
A = {S, A, B}, T = {a, b}
En la segunda aplicacin de este paso, hay que
aadir los smbolos que se alcanzan desde A y
desde B, que son E y F. No hay terminales nuevos
que aadir a T . Por lo tanto,
A = {S, A, B, E, F}, T = {a, b}
En la tercera aplicacin del paso recursivo, hay que
aadir los auxiliares y terminales que intervienen en
las producciones de E y F. Vemos que no se aaden
smbolos nuevos, de lo que se deduce que D y G no
son alcanzables y que el terminal c nunca se utiliza.
Por lo tanto, la gramtica equivalente a la original sin
smbolos intiles ser:
G00 = { A, T, S, P},
En la que A = {S, A, B, E, F}, T = {a, b} y el
conjunto de producciones, P, es el siguiente:
S Abab | B | b
A aA | a | aBAE
B bB | F |
E aaE | bB
F aF | ab

3.3.2. Eliminacin de las producciones vacas.


Eliminar las producciones vacas es una forma de ahorrar trabajo intil
en el proceso de generacin de una cadena. Para conseguirlo, el
primer paso es determinar que smbolos auxiliares son anulables, es
decir, que smbolos pueden producir la cadena vaca en uno o ms
pasos. Tambin en este caso se dispone de un algoritmo recursivo:
Paso Base: X A | (X ) P, entonces se sabe que X es anulable
Paso Recursivo: Si (X ) P y si todos los smbolos auxiliares de
son anulables, entonces X tambin es anulable.
El proceso finaliza cuando no se puedan aadir nuevos valores al
conjunto de smbolos anulables.
Ejemplo:
Si seguimos con el ejemplo anterior, y aplicamos el procedimiento
terico, el conjunto de smbolos anulables, N, tendr como valor inicial
N = {B}
Ya que B es el nico auxiliar que tiene una produccin vaca. Al aplicar
por primera vez el paso recursivo se aade S, ya que tiene una
produccin formada exclusivamente por anulables, S B,
N = {S, B}
Si se aplica una segunda vez el paso recursivo no se aade ningn
nuevo smbolo, por lo que el proceso ya finaliza.
Una vez que ya est calculado el conjunto de smbolos anulables, hay
que reescribir las producciones de la gramtica. Cada produccin se
reescribe eliminando ninguna, una o ms apariciones de cada
elemento del conjunto de smbolos anulables que aparezca en el
consecuente de la produccin.
Ejemplo:
En este punto del proceso, las producciones de la gramtica son:
S Aab | B | b
A aA | a | aBAE
B bB | F |
E aaE | bB
F aF | ab
y, tal y como hemos visto, N = {S, B}. Como reescribir las
producciones? Comencemos con las de los smbolos no anulables,
por ejemplo con las de A,
A aA | a | aBAE en A aA
No intervienen anulables y en A a, tampoco. En A aBAE,
evidentemente, s. Esa produccin debe reescribirse, una vez tal cual
est y otra teniendo en cuenta que B puede ser :
A aA | a | aBAE | aAE
Pasemos a estudiar las producciones de E:
E aaE | bB
Hay que reescribir la produccin
E bB que es la nica que contiene un anulable. Se escribe tal cual
y teniendo en cuenta que B puede ser ,
E aaE | bB | b
Con las producciones de F no es necesario hacer una reescritura
porque no contienen smbolos anulables. Pasemos, a continuacin, a
ver qu se hace con las producciones de los smbolos anulables, por
ejemplo B:
B bB | F |
En principio, con la produccin B bB se procede como con las
dems: se escribe tal cual y teniendo en cuenta que B puede ser . Y
este sera el resultado:
B bB | b | F
Qu ocurre? Adems de reescribir la produccin con smbolos
anulables se ha eliminado la produccin vaca; esto es as, porque ya
se ha tenido en cuenta al escribir las producciones que B podra ser .
Por lo tanto, ya no es necesaria esa produccin. Finalmente, se
reescriben las producciones de S,
S Aab | B | b En S Aab no intervienen anulables y en S b,
tampoco. En S B, evidentemente, s. Esa produccin debe
reescribirse, una vez tal cual est y otra teniendo en cuenta que B
puede ser : S Aab | B | | b

3.3.3. Eliminacin de las producciones unitarias.


Las producciones de la forma A B dan lugar a trabajo
innecesario, ya que cuando aparecen en una derivacin lo nico
que introducen es un cambio de nombre del auxiliar. Por eso
tambin se eliminan cuando se pretende obtener una gramtica
simplificada. El nuevo conjunto de producciones se forma de la
manera siguiente: Si (A B) P y A, B A, entonces esta
produccin se elimina del nuevo conjunto de producciones y se
introducen las siguientes nuevas producciones: (A ) | es una
forma sentenciar que se obtiene a partir de B, al aplicar
producciones de P. Es decir, a las producciones de A aadimos las
producciones de B
Ejemplo:
Tal y como esta en este momento la gramtica, con el siguiente
conjunto de producciones / No olvidar que S /
S Aab | B | b
A aA | a | aBAE | aAE
B bB | b | F
E aaE | bB | b
F aF | ab
Solo hay dos producciones unitarias, S B y B F. Se
reescriben las producciones de S substituyendo B por sus
producciones (y arreglndolas: si lo hago tal cual la produccin S
b aparece dos 7 veces... con una llega, no?),
/ No olvidar que S /
S Aab | bB | b | F
A aA | a | aBAE | aAE
B bB | b | F
E aaE | bB | b
F aF | ab
Y ahora toca substituir F en las producciones de B... y en las de S,
ya que al substituir B, se ha introducido F,
/ No olvidar que S /
S Aab | bB | b | aF | ab
A aA | a | aBAE | aAE
B bB | b | aF | ab
E aaE | bB | b
F aF | ab
No se han reintroducido smbolos intiles. Para tener la gramtica
simplificada equivalente a la original solo hace falta ver qu hacer
cuando, como en este caso, el smbolo inicial es anulable y, por lo
tanto, L(G).
4. FORMAS NORMALES

Es un formato en el que se pueden escribir las producciones de una


gramtica que genere un lenguaje de esa clase.

Una gramtica que no genera la cadena vaca puede ser transformada en


una equivalente (que genera el mismo lenguaje) en Forma Normal de
Chomsky o en Forma Normal de Greibach.

Las formas normales ms tiles son:

Forma Normal de Chomsky (FNCH).


Forma Normal de Greibach (FNG).
Desarrollaron algoritmos para transformar cualquier gramtica a una
gramtica de forma normal que ellos especifican.

4.1. FORMAS NORMALES DE CHOMSKY


TEOREMA: cualquier Gramtica de Libre de Contexto (GLC) sin -
producciones puede ser generada a una gramtica en donde las
producciones son de la forma A BC o A a.
Hay dos operaciones bsicas:
- Eliminar terminales en producciones que no sean Aa.
- Eliminar producciones con un cuerpo de variables de
longitud mayor de 2.
Sea A X1X2...Xm en P y m 2.
1. Producciones del tipo Aa:
Si Xi es Terminal y Xi =a entonces agregamos a P la
produccin Caa y reemplazamos Xi por Ca. V=VU{ Ca }

2. Producciones ABC.
Para los casos en que m3, hacemos:
ABD1;D1B2D2;;Dm-2Bm-1Bm.

Agregamos las respectivas variables y producciones


V=VU{D1,D2;;Dm-2 }

EJEMPLO:
S bA | aB
A bAA | aS | a
B aBB | bS | b
Paso 1: Aa
S CbA | CaB
A CbAA | CaS | a
B CaBB | CbS | b
Ca a
Cb b

Paso 2: A BC
S CbA | CaB
A CbD1 | CaS | a
B CaD2 | CbS | b
Ca a
Cb b
D1 AA
D2 BB

Gramtica en Forma Normal Chomsky (FNC):


S CbA | CaB
A CbD1 | CaS | a
B CaD2 | CbS | b
Ca a
Cb b
D1 AA
D2 BB

4.2. FORMAS NORMALES DE GREIBACH

Una gramtica independiente del contexto (GIC) est en Forma


Normal de Greibach (FNG) si todas y cada una de sus reglas de
produccin tienen un consecuente que empieza por un carcter
del alfabeto, tambin llamado smbolo terminal.
Formalmente, cualquiera de las reglas tendr la estructura:

A aw

Forma Normal de Greibach G=(N, , P, S) diremos que est en


forma normal de Greibach si todas sus producciones son de la
forma.

A a a N*

Para toda gramtica incontextual G existe una gramtica


incontextual.

G en forma normal de Greibach tal que L(G)=L(G) - { }

Algoritmo para la obtencin de la Forma Normal de Greibach.

Entrada G=(N, , P, S) gramtica incontextual arbitraria con


L(G)

Salida G1=(N1, , P1, S) gramtica en FNG tal que L(G1)=L(G)-


{}

MTODO:

Al final de la Fase 1 las Producciones estn en una de las te


formas.

Ai Aj Y con j > i
Ai aY
Bi Y con A Y (N U {B1, B2,,Bi1*)

CARACTERSTICAS:

Se sigue una secuencia para aplicar las reglas de una en una.


Los componentes de la gramtica se justifican as:

Hay smbolos a los que no se puede aplicar reglas


porque ya son smbolos finales (terminales).
Los dems no pueden estar en la expresin final (no
terminales).
El proceso comienza con el smbolo que representa lo
que se quiere analizar, construir (axioma).
La expresin final obtenida (que pertenece al lenguaje
generado por la gramtica) est compuesta solo por
terminales. Las palabras intermedias no pertenecen a l.
5. CONCLUSIN
La importancia de usar reglas de gramtica generativa, de usar
formalismos al describir un lenguaje es para poder generar, producir,
demostrar de alguna forma el lenguaje. Es el proceso de
reconocimiento para poder comprender el mensaje, de esta forma un
lenguaje debe ser capaz de generar una infinita cantidad de palabras
a partir de un nmero limitado de reglas un modelo finito.
Estas reglas estn formadas por 4 componentes los no terminales que
se denotan con maysculas, terminales que son los elementos del
alfabeto en minsculas, las producciones que son los elementos
donde una cabeza estn en variables de cualquier tipo de
combinacin, y los smbolos de inicio es una variable dentro del
conjunto no terminal que se escoge como variable de inicio, en
conclusin de las reglas de gramtica generativa.
WEBGRAFIA

http://www.exa.unicen.edu.ar/catedras/ccomp1/Apunte5.pdf

http://libroweb.alfaomega.com.mx/book/685/free/ovas_statics/cap9/Presentacion%2
0sobre%20gramaticas%20y%20lenguajes%20libres%20de%20contexto..pdf

http://www.uco.es/users/ma1fegan/2010-2011/talf/temas/tema-8/Tema-8-
gramaticas-contexto-libre.pdf

http://teodelacomp.blogspot.pe/2011/03/arboles-de-derivacion.html

http://mitecnologico.com/Main.ArbolesDeDerivacion

http://www.sc.ehu.es/jiwnagom/MAC1-ALF/MAC-archivos/Tema3.pdf

http://antares.sip.ucm.es:8180/webtalf/index.jsp?submenu=temas/submenuIncontex
tuales&contenido=temas/ambiguedad

http://users.dsic.upv.es/asignaturas/facultad/tal/practica5.pdf

http://repositori.uji.es/xmlui/bitstream/handle/10234/5875/bolAuto5.pdf;jsessionid=
E063661BB85F40AB9C8BF0C98DF3C360?sequence=6

www.uhu.es/francisco.moreno/talf/docs/tema6.pdsequence=6

https://sites.google.com/site/.../formas-normales-para-gramatica-libres-de-contexto

https://es.wikipedia.org/wiki/Forma_normal_de_Greibach

https://es.wikipedia.org/wiki/Forma_normal_de_Chomsky

www.uhu.es/francisco.moreno/talf/docs/tema6.pdf

https://es.wikipedia.org/wiki/Forma_normal_de_Chomsky