Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO INDICE Introduccin Conceptos sobre GLCs Limpieza de GLCs (a) Eliminacin de smbolos y producciones intiles (b) Eliminacin de producciones nulas (c) Eliminacin de producciones unitarias Formas normales (a) Forma normal de Chomsky (FNC) (b) Forma normal de Greibach (FNG)
Teora de Autmatas y Lenguajes Formales 2
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Ejercicio Obtener la gramtica que genera el lenguaje
L = a n b n c m d m | n, m 1 a n b m c m d n | n, m 1
y probar que es ambigua.
} {
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (1) El objetivo de esta parte del tema, es probar que dada una gramtica G, siempre podemos encontrar otra gramtica G equivalente y escrita de forma ms correcta. En concreto, la nueva gramtica no tendr: Producciones intiles Producciones nulas (excepto S si L(G)) Producciones unitarias En algunos textos este proceso se denomina simplificacin de GLCs, aunque como veremos slo el primer paso "simplifica" realmente la gramtica.
Teora de Autmatas y Lenguajes Formales 6
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (2) Eliminacin de producciones intiles (1) Un smbolo X (N T) es til si aparece en una secuencia de derivaciones S * 1X2 * z T* Una produccin se dice til si y solo si todos sus smbolos son tiles. Esto es equivalente a que pueda usarse en la derivacin de alguna palabra del lenguaje asociado a la gramtica. Eliminando todos los smbolos y producciones intiles el lenguaje generado por la gramtica no cambia.
Teora de Autmatas y Lenguajes Formales 7
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (3) Eliminacin de producciones intiles (2) El algoritmo para eliminar los smbolos y producciones intiles consta de dos pasos: 1.Smbolos no generativos: Eliminar los smbolos no terminales desde los que no se puede llegar a una palabra de T y las producciones en las que aparezcan. 2.Smbolos no accesibles: Eliminar aquellos smbolos que no sean alcanzables desde el smbolo inicial, S, y las producciones en las que aparecen.
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (4) Eliminacin de producciones intiles (3) Es importante aplicar los algoritmos anteriores en el orden especificado. S AB, S a, A a En el primer paso se elimina B y la produccin S AB. Entonces en el segundo se elimina la variable A y la produccin A a. Si aplicamos en orden inverso, entonces no se elimina nada. Al aplicar despus el primero de los algoritmos se elimina B y la produccin S AB. En definitiva, nos queda la gramtica S a, A a donde todava nos queda la variable intil A.
Teora de Autmatas y Lenguajes Formales 9
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (5) Eliminacin de producciones intiles (4) Eliminacin de smbolos no generativos (1) Se disea un algoritmo calculando Nt , conjunto de no terminales que se pueden sustituir por smbolos terminales.
Condicin Bsica: Si A u, u T, entonces A Nt Condicin Recursiva: Si A 1...k y cada j est en TNt , entonces A Nt.
10
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (6) Eliminacin de producciones intiles (5) Eliminacin de smbolos no generativos (2) 1.Nt = 2.Para cada produccin de la forma A w, A se introduce en Nt . 3.Mientras Nt cambie 1.Para cada produccin B 1.Si todas las variables de pertenecen a Vt, B se introduce en Nt 4.Eliminar las variables que estn en N y no en Nt 5.Eliminar todas las producciones donde aparezca una variable de las eliminadas en el paso anterior
Teora de Autmatas y Lenguajes Formales 11
Ejercicio
12
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (7) Eliminacin de producciones intiles (6) Eliminacin de smbolos no accesibles La idea es hacer una bsqueda recursiva a partir del smbolo S para ver qu smbolos se pueden alcanzar desde l. 1. Inicializacin: N {S}, T {}, P {} 2. Bucle 1. Para cada A N hacer
1.Para cada (A w) P hacer P P {A w} N N {smbolos no terminales de w} T T {smbolos terminales de w}
Teora de Autmatas y Lenguajes Formales
13
Ejercicio
14
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (8) Eliminacin de producciones nulas (1) Definiciones. Dada una gramtica G = (N, T, P, S), Una produccin de la forma A se llama nula. Un smbolo A N es anulable si existe una secuencia de derivaciones A * . Algoritmo: Anulables 1. Inicializacin: H {A N | (A ) P}. 2. Repetir H H {A N H | (A w) P y w H*} hasta que H no cambie.
Teora de Autmatas y Lenguajes Formales 15
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (9) Eliminacin de producciones nulas (2) 1. Calcular H (anulables) 2. P P {producciones nulas} 3. Para cada produccin A X1...Xn P hacer P P {A1...n} donde - si Xi H, entonces i = Xi - si Xi H, entonces i = Xi o i = (las dos posibilidades) - eliminar A , si ha sido generada 4. Si S H eliminar S de P
Teora de Autmatas y Lenguajes Formales 16
Ejercicio
17
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (10) Eliminacin de producciones unitarias (1) Definiciones. Dada una gramtica G, Se llama produccin unitaria a la que tiene la forma A B Dado A N, se llama unitarios de A, al conjunto unit(A) = {B N | A * B}
18
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (11) Eliminacin de producciones unitarias (2)
1. P P {producciones unitarias} 2. Para cada A N hacer (a) Calcular unit(A) (b) Para cada B unit(A) hacer si B w P no unitaria P P {A w}
19
Ejercicio
20
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO LIMPIEZA DE GLCs (12) Gramtica limpia Dada una GLC G podemos obtener una GLC limpia y equivalente G, tras aplicar la siguiente secuencia de algoritmos:
1. 2. 3. 4. Eliminar producciones intiles Eliminar producciones nulas Eliminar producciones unitarias Eliminar producciones intiles
21
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Chomsky (1) Definicin: Una GLC se dice que est en Forma Normal de Chomsky (FNC) si todas sus producciones son de la forma: A BC, A a, donde A, B, C N, a T. Excepcionalmente se permite la produccin S cuando L(G). La idea de la transformacin de una gramtica limpia a FNC se ejecuta en dos pasos:
Hacer que en la parte derecha de las producciones de longitud mayor o igual que dos slo haya terminales. Trocear estas producciones para que tengan longitud dos.
Teora de Autmatas y Lenguajes Formales 22
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Chomsky (2) Algoritmo FNC: 1. Para cada produccin de la forma A 1..n, i (N T), n 2 (a) Para cada i, si i es terminal: i = a T - Se aade la produccin Ca a - Se cambia i por Ca en A 1..n 2. Para cada produccin de la forma A B1...Bm, m 3 (a) Se aaden (m-2) no terminales D1, D2, ..., Dm-2 (distintos para cada produccin) (b) La produccin A B1...Bm se reemplaza por A B1D1, D1 B2D2, ... Dm-2 Bm-1Bm
Teora de Autmatas y Lenguajes Formales 23
24
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (1) Definicin: Una GLC se dice que est en Forma Normal de Greibach (FNG) si todas sus producciones son de la forma: A a, donde A N, a T, N* Excepcionalmente se permite la produccin S cuando , L(G). Hasta qu profundidad deberamos explorar el rbol de expansin para decidir si una cadena w de longitud n es generada o no por una gramtica en FNC/FNG?
Teora de Autmatas y Lenguajes Formales 25
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (2) Eliminacin de recursividad a izquierdas (1): Dada una GLC G, se dice que una produccin es recursiva a izquierdas si tiene la forma: A A, donde A N, (NT)* Para pasar una GLC G a FNG necesitaremos que est limpia y que no contenga recursividad a izquierdas.
26
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (3) Eliminacin de recursividad a izquierdas (2): Algoritmo:
1. Para cada smbolo no terminal A con recursividad a izquierdas tendremos: A A1 | ... | Ar | 1 | ... | s 2. Para cada smbolo de este tipo, crear un nuevo no terminal Bi y sustituir el anterior conjunto de producciones por el siguiente: A 1 | ... | s | 1Bi | ... | sBi Bi 1 | ... | r | 1Bi | ... | rBi
Teora de Autmatas y Lenguajes Formales 27
Ejercicio
28
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (4) Algoritmo (1): Sea G una GLC limpia y en FNC (bastara con el primer paso de FNC).
1. Eliminar recursividad por la izquierda 2. Establecer un orden entre los smbolos de N. Por ejemplo: N = {A1, ..., Am}, Ai Ai+1 3. Clasificar las producciones en tres grupos (i) A a, a T, N* (ya en FNG) (ii) Ai Aj, i < j, N+ (iii) Ak Aj, k > j, N+
Teora de Autmatas y Lenguajes Formales 29
TEMA 8: GRAMTICAS LIBRES DEL CONTEXTO Forma Normal de Greibach (5) Algoritmo (2): 4. Eliminar las producciones del grupo (iii) Hacer, de menor a mayor valor de k: (a) Sustituir Ak Aj por Ak j1 | ... | js, usando las producciones Aj j1 | ... | js. (b) Eliminar la recursividad por la izquierda que pueda surgir. El nuevo smbolo aadido Bi se pone al principio del orden establecido para N. 5. Eliminar las producciones del grupo (ii) Hacer de mayor a menor valor de i: (a) Sustituir Ai Aj por Ai a1j1 | ... | aljs usando las producciones Aj a1j1 | ... | aljs.
Teora de Autmatas y Lenguajes Formales 30
Ejercicio
31
32