You are on page 1of 8

Captulo 7: Propiedades de los lenguajes independientes del contexto. 7.

1 Formas normales para las gramticas independientes del contexto 7.1.1 Eliminacin de smbolos intiles 7.1.2 Clculo de smbolos generadores y alcanzables 7.1.3 Eliminacin de producciones- 7.1.4 Eliminacin de las producciones unitarias 7.1.5 Forma Normal de Chomsky 7.2 El lema de bombeo para los lenguajes independientes del contexto 7.3 Propiedades de clausura de los lenguajes independientes del contexto 7.4 Propiedades de decisin de los LIC

Captulo 7: Propiedades de los lenguajes independientes del contexto.


7.1 Formas normales para las gramticas independientes del contexto
Todo LIC (sin ) es generado por una GIC en la que todas las producciones son de la forma ABC o Aa, donde A, B y C son variables y a es un smbolo terminal (forma normal de Chomsky). Para llegar a ella, tenemos que: l. Eliminar los smbolos intiles, aquellas variables o smbolos terminales que no aparecen en ninguna derivacin de una cadena terminal que parta del smbolo inicial. 2. Eliminar las producciones-, aquellas de la forma A para alguna variable A. 3. Eliminar las Producciones unitarias, aquellas de la forma AB para A y B.

7.1.1 Eliminacin de smbolos intiles


Un smbolo X es til para una gramtica G = (V, T, P, S) si existe alguna derivacin de la forma

S X w , donde

w pertenece a T*. Observe que X puede ser V o T, y la forma sentencial X puede ser la primera o la ltima en la derivacin. Si X no es til, decimos que es intil. La omisin de los smbolos intiles de una gramtica no cambiar el lenguaje generado. El mtodo para eliminar los smbolos intiles identifica las dos cosas que un smbolo tiene que cumplir para resultar til: l. Decimos que X es generador si w puede ser ese mismo smbolo terminal obtenido en cero pasos. 2. Decimos que X es alcanzable si existe una derivacin
*

X w para alguna cadena terminal w. Todo smbolo terminal es generador, ya que S X w para algn y .
*

Un smbolo que es til ser generador y alcanzable. Si eliminamos los smbolos que no son generadores en primer lugar y luego eliminamos aquellos smbolos que no son alcanzables, tendremos slo los smbolos tiles Ejemplo 7.1. Considere la gramtica: SAB| a, Ab. Todos los smbolos excepto B son generadores; a y b se generan a s mismos; S genera a y A genera b. Si eliminamos B, tenemos que eliminar la produccin S AB, quedando la gramtica: Sa Ab Ahora comprobamos que slo S y a son alcanzables a partir de S. Eliminando A y b slo queda la produccin Sa. Dicha produccin por s misma es una gramtica cuyo lenguaje es {a}, igual que el lenguaje de la gramtica original. Si primero comprobamos la alcanzabilidad, nos encontramos con que todos los smbolos de la gramtica son alcanzables. Si luego eliminamos el smbolo B porque no es generador, obtenemos una gramtica que todava tiene smbolos intiles, en concreto, A y b. Teorema 7.2. Sea G = (V, T, P, S) una GIC y supongamos que L(G) ; es decir, G genera al menos una cadena. Sea G1 = (V1, T1, P1, S) la gramtica que obtenemos mediante los siguientes pasos: l. Primero eliminamos los smbolos no generadores y todas las producciones que impliquen a uno o ms de dichos smbolos. Sea G2 = (V2, T2, P2, S) esta nueva gramtica. Observe que S tiene que ser generador, ya que suponemos que L(G) tiene al menos una cadena. 2. En segundo lugar, eliminamos todos los smbolos que no son alcanzables de la gramtica G2. Luego G1 no tiene ningn smbolo intil, y L(G1) = L(G) .

7.1.2 Clculo de smbolos generadores y alcanzables

Trataremos de saber cmo, para una gramtica, calcular el conjunto de smbolos generadores y calcular el conjunto de smbolos alcanzables. Para ambos problemas, vamos a emplear el algoritmo que intenta descubrir los smbolos de dichos tipos. Si las construcciones inductivas apropiadas de estos conjuntos no consiguen descubrir un smbolo que sea generador o alcanzable, respectivamente, entonces el smbolo no es de ninguno de esos tipos. Sea G = (V, T, P, S) una gramtica. Para calcular los smbolos generadores de G, realizamos la siguiente induccin. Base. Todo smbolo de T, es generador, ya que se genera a s mismo. Paso inductivo. Supongamos que existe una produccin A y que todo smbolo de es generador. Entonces A es generador. Esta regla incluye el caso en que = ; todas las variables que tienen como cuerpo de una produccin son generadoras. Ejemplo 7.3. Considere la gramtica del ejemplo 7.1. De acuerdo con el caso base, a y b son generadores. Segn el paso inductivo, podemos utilizar la produccin Ab para concluir que A es generador y podemos emplear la produccin Sa para concluir que S es generador. El paso inductivo termina en dicho punto. No podemos utilizar la produccin SAB, porque no se ha demostrado que B sea generador. Por tanto, el conjunto de smbolos generadores es {a, b, A, S}. Teorema 7.4. El algoritmo anterior encuentra todos y slo los smbolos generadores de G. Consideremos ahora el algoritmo inductivo mediante el que determinaremos el conjunto de smbolos alcanzables para la gramtica G = (V, T, P, S). De nuevo, podemos demostrar que cualquier smbolo que no aadamos al conjunto de smbolos alcanzables no es realmente alcanzable. Ejemplo 7.5. Partimos de la gramtica del ejemplo 7.1. De acuerdo con el caso base, S es alcanzable. Dado que S tiene cuerpos de produccin AB y a, concluimos que A, B y a son alcanzables. B no tiene producciones, pero A tiene Ab. Por tanto, concluimos que b es alcanzable. Ahora no se puede aadir ningn smbolo ms al conjunto de smbolos alcanzables, que es {S, A, B, a, b}. Teorema 7.6. El algoritmo anterior determina todos (y slo) los smbolos alcanzables de G.

7.1.3 Eliminacin de producciones-


Ahora vamos a demostrar que las producciones-, aunque sean convenientes en muchos problemas de diseo de gramticas, no son esenciales. Por supuesto, sin una produccin que tenga un cuerpo , es imposible generar la cadena vaca como miembro del lenguaje. Por tanto, lo que realmente vamos a demostrar es que si el lenguaje L tiene una GIC, entonces L - {} tiene una GIC sin producciones-. Si no pertenece a L, entonces el propio L es L - {}, por lo que L tiene una GIC sin producciones-. Hay que descubrir qu variables son "anulables". Una variable A es anulable si cuando A aparece en el cuerpo de una produccin, decimos que BCAD, A puede (o no) generar . Construimos dos versiones de la produccin, una sin A en el cuerpo (BCD), que corresponde al caso en que A tendra que haberse empleado para generar , y el otro en el que A si est presente en (BCAD). Si utilizamos la versin en la que aparece A, entonces no podemos permitir que A genere . Sea G = (V, T, P, S) una GIC. Podemos encontrar todos los smbolos anulables de G mediante el siguiente algoritmo iterativo. Base. Si A es una produccin de G, entonces A es anulable. Paso inductivo. Si existe una produccin BC1C2Ck, donde cada Ci es anulable, entonces B es anulable. Observe que cada Ci tiene que ser una variable anulable, por lo que slo hay que considerar las producciones cuyos cuerpos sean slo variables. Teorema 7.7. En cualquier gramtica G, los nicos smbolos anulables son las variables encontradas por el algoritmo anterior. Ahora proporcionamos la construccin de una gramtica sin producciones- . Sea G = (V, T, P, S) una GIC. Determinamos todos los smbolos anulables de G. Construimos una nueva gramtica G1 = (V, T, P1, S), cuyo conjunto de producciones P1 se determina como sigue. Para cada produccin AX1X2Xk de P, donde k 1, suponemos que m de los k Xi son smbolos anulables. La nueva gramtica G1 tendr 2m versiones de esta produccin, donde los Xi anulables, en todas las posibles combinaciones estn presentes o ausentes. Existe una excepcin: si m = k, es decir, todos los smbolos son anulables, entonces no incluimos el

A . Si A es anulable, entonces

caso en que todos los Xi estn ausentes. Observe tambin que si una produccin de la forma A existe en P, no incluimos esta produccin en P1. Ejemplo 7.8. Considere la gramtica SAB, AaAA| , BbBB| . En primer lugar, determinamos los smbolos anulables. A y B son directamente anulables porque tienen producciones con como cuerpo. Entonces, determinamos que S es anulable, porque la produccin SAB tiene un cuerpo que consta slo de smbolos anulables. Por tanto, estas tres variables son anulables. Ahora construimos las producciones de la gramtica G1. En primer lugar, consideramos SAB. Todos los smbolos del cuerpo son anulables, por lo que existen cuatro formas en las que podemos elegir que A y B estn presentes o ausentes de forma independiente. Sin embargo, no podemos elegir que todos los smbolos estn ausentes, por lo que slo existen tres producciones: SAB| A| B. A continuacin consideramos la produccin AaAA. La segunda y tercera posiciones son smbolos anulables, por lo que de nuevo existen cuatro opciones de presencia o ausencia. En este caso, ninguna de las cuatro opciones es anulable, ya que el smbolo no anulable a estar presente en cualquier caso. Estas cuatro opciones dan las producciones: AaAA| aA| aA| a. Las dos opciones intermedias generan la misma produccin, ya que no importa qu A eliminemos si decidimos eliminar una de ellas. Por tanto, la gramtica final G1 slo tendr tres producciones para A. De forma similar, la produccin B proporciona para G1: BbBB| bB| b. Las dos producciones- de G no generan nada para G1. Por tanto, G1 est constituido por las siguientes producciones: SAB| A| B, AaAA| aA| a, BbBB| bB| b. Concluimos este estudio sobre la eliminacin de las producciones- demostrando que la construccin dada anteriormente no cambia el lenguaje, excepto porque ya no est presente si es que exista en el lenguaje de G. Teorema 7.9. Si la gramtica G1 se construye a partir de G mediante la construccin anterior para eliminar las producciones-, entonces L(Gl) = L(G) - {}.

7.1.4 Eliminacin de las producciones unitarias


Una produccin unitaria es una produccin de la forma AB, donde A y B son variables. Estas producciones pueden resultar tiles, por ejemplo, para crear una gramtica no ambigua a partir de otra. La tcnica que est garantizada para funcionar implica determinar en primer lugar todos aquellos pares de variables A y B tales que una secuencia de producciones unitarias.

A B , utilizando slo

Una vez que hayamos determinado dichos pares, podemos reemplazar cualquier secuencia de pasos de derivacin en la que A B1 B2 ... Bn por una produccin que utilice directamente la produccin no unitaria Bn a partir de A; es decir, A. Comenzamos viendo la construccin inductiva de los pares (A, B) tales que slo producciones unitarias. Denominamos a este tipo de pares par unitario. Base. (A, A) es un par unitario para cualquier variable A. Es decir,

A B empleando

Paso Inductivo. Suponga que hemos determinado que (A, B) es un par unitario y que BC es una produccin, donde C es una variable. Luego (A, C) es un par unitario. Ejemplo 7.10. Considere la gramtica de la figura. El caso base nos proporciona los pares unitarios (E, E), (T, T), (F, F) y (I, I). Para el paso inductivo, podemos hacer las siguientes inferencias: 1. (E, E) y la produccin ET generan el par unitario (E, T). 2. (E, T) y la produccin TF generan el par unitario (E, F). 3. (E, F) y la produccin FI generan el par unitario (E, I). 4. (T, T) y la produccin TF generan el par unitario (T, F). 5. (T, F) y la produccin FI generan el par unitario (T, I). 6. (F, F) y la produccin FI generan el par unitario (F, I). No pueden inferirse ms pares. De hecho, estos diez pares representan todas las derivaciones que no usan nada ms que producciones unitarias.

A A en cero pasos.

Existe una demostracin sencilla de que el algoritmo propuesto proporciona todos los pares que deseamos. A continuacin utilizamos dichos pares para eliminar las producciones unitarias de una gramtica y demostrar que los lenguajes de ambas gramticas son el mismo. Teorema 7.11. El algoritmo anterior determina exactamente los pares unitarios para una GIC G. Para eliminar las producciones unitarias, hacemos lo siguiente. Dada una GIC G = (V, T, P, S), construimos la GIC G1 = (V, T, P1, S): l. Determinamos todos los pares unitarios de G. 2. Para cada par unitario (A, B), aadimos a P1 todas las producciones A, donde B es una produccin no unitaria de P. Observe que A = B es posible; de esa forma, P1 contiene todas las producciones no unitarias de P. Ejemplo 7.12. Continuamos con el ejemplo 7.10, en el que se llev a cabo el paso (l) de la construccin anterior. La figura resume el paso (2) del algoritmo, en el que hemos creado el nuevo conjunto de producciones utilizando el primer miembro de un par como la cabeza y todos los cuerpos no unitarios del segundo miembro del par como los cuerpos de la produccin.

El paso final consiste en eliminar las producciones unitarias de la gramtica de la figura anterior. La gramtica resultante, no tiene ninguna produccin unitaria, aunque genera el mismo conjunto de expresiones que la gramtica original. Teorema 7.13. Si la gramtica G1 se construye a partir de la gramtica G mediante el algoritmo descrito anteriormente para eliminar las producciones unitarias, entonces L(G1) = L(G). Si Deseamos convertir cualquier GIC G en una GIC equivalente que no emplee ningn smbolo intil, ni producciones-, ni producciones unitarias hay que realizar las siguientes simplificaciones, en el orden indicado: l. Eliminar las producciones-. 2. Eliminar las producciones unitarias. 3. Eliminar los smbolos intiles. Teorema 7.14. Si G es una GIC que genera un lenguaje que contiene al menos una cadena distinta de , entonces existe otra GIC G1 tal que L(G1) = L(G) - {}, y G1 no tiene producciones-, ni producciones unitarias ni smbolos intiles.

7.1.5 Forma normal de Chomsky


Completamos el estudio sobre las simplificaciones gramaticales demostrando que todo LIC no vaco sin tiene una gramtica G en la que todas las producciones tienen una de las dos formas siguientes: l. ABC, donde A, B y C son variables, o 2. Aa, donde A es una variable y a es un smbolo terminal. Adems, G no contiene smbolos intiles. Una gramtica as se dice que est en la forma normal de Chomsky, o FNC. Para expresar una gramtica en la forma normal de Chomsky, partimos de una gramtica que no contenga producciones-

, ni producciones unitarias ni smbolos intiles. Toda produccin de dicha gramtica es de la forma Aa, que es una
forma permitida por la FNC, o tiene un cuerpo de longitud 2 o superior. Nuestras tareas son entonces: a) Conseguir que todos los cuerpos de longitud 2 o superior estn formados slo por variables. b) Descomponer los cuerpos de longitud 3 o superior en una cascada de producciones, teniendo cada una de ellas un cuerpo formado slo por dos variables. La construccin para (a) es la siguiente: para todo smbolo a que aparezca en un cuerpo de longitud 2 o superior, creamos una nueva variable, por ejemplo A. Esta variable slo tiene una produccin, Aa. Ahora empleamos A en lugar de a en cualquier lugar que aparezca esta ltima dentro de un cuerpo de longitud 2 o superior. En este punto, toda produccin tendr un cuerpo formado por un slo smbolo terminal o por al menos dos variables y ningn smbolo terminal.

Para el paso (b), tenemos que descomponer dichas producciones AB1B2Bk para k 3, en un grupo de producciones con dos variables en cada cuerpo. Introducimos k-2 nuevas variables, C1, C2,, Ck-2. La produccin original se reemplaza por las k-1 producciones: AB1C1, C1B2C2,, Ck-3Bk-2Ck-2, Ck-2Bk-1 Bk Ejemplo 7.15. Vamos a expresar la gramtica del ejemplo 7.12 en su FNC. Para la parte (a), observe que existen ocho smbolos terminales, a, b, 0, 1, +, *, (, y), cada uno de los cuales aparece en un cuerpo que no est formado por un nico smbolo terminal. Por tanto, tenemos que introducir ocho nuevas variables, y ocho producciones en las que la nueva variable es reemplazada por el smbolo terminal. Utilizando las iniciales obvias como las nuevas variables, introducimos: Aa, Bb, Z0, O1, P+, M*, L(, R) Si introducimos estas producciones y reemplazamos cada uno de los smbolos terminales de un cuerpo formado por ms de un smbolo terminal por la variable correspondiente, obtenemos la gramtica mostrada en la figura. Ahora todas las producciones estn en la forma normal de Chomsky excepto aquellas cuyos cuerpos tienen longitud 3: EPT, TMF y LER. Algunos de estos cuerpos aparecen en ms de una produccin, pero podemos tratarlos introduciendo una variable adicional en cada uno.

Para EPT, introducimos la nueva variable C1, y reemplazamos la produccin EEPT por EEC1 y C1PT. Para TMF introducimos la nueva variable C2. Las dos producciones que utilizan este cuerpo, ETMF y TTMF, son reemplazadas por ET C2, TTC2 y C2MF. Para LER introducimos la nueva variable C3 y reemplazamos las tres producciones que utiliza, ELER, TLER y FLER por EL C3, TL C3, FL C3 y C3ER. La gramtica final, que est en la forma normal de Chomsky, se muestra en la figura.

Teorema 7.16. Si G es una GIC cuyo lenguaje consta de al menos una cadena distinta de , entonces existe una gramtica G1 en la forma normal de Chomsky, tal que L(G1) = L(G) - {}.

7.2 El lema de bombeo para lenguajes independientes del contexto


El teorema, conocido como "lema de bombeo para lenguajes independientes del contexto", establece que en cualquier cadena lo suficientemente larga de un LIC, es posible encontrar a los sumo dos subcadenas cortas y muy prximas que pueden "bombearse" en tndem. Es decir, podemos repetir ambas cadenas i veces, para cualquier entero i, y la cadena resultante pertenecer al lenguaje.

7.2.1 El tamao de los rboles de derivacin


Una de las aplicaciones de la FNC es transformar los rboles de derivacin en rboles binarios. Estos rboles tienen propiedades interesantes y aqu vamos a aprovechar una de ellas. Teorema 7.17. Suponga que tenemos un rbol de derivacin de la gramtica en forma normal de Chomsky G = (V, T, P, S) y que el resultado del rbol es una cadena terminal w. Si la longitud del camino ms largo es n, entonces |w| 2n-1.

7.2.2 Enunciado del lema de bombeo


Teorema 7.18. (Lema de bombeo para los lenguajes independientes del contexto). Sea L un LIC. Entonces existe una constante n tal que si z es cualquier cadena de L tal que |z| n, entonces podemos escribir z = uvwxy, sujeta a las siguientes condiciones: l. |vwx| n. Es decir, la parte central no es demasiado larga. 2. vx . Puesto que v y x son las partes que se van a "bombear", esta condicin establece que al menos una de las cadenas que se van a bombear no tiene que ser vaca.

3. Para todo i 0, uviwxiy pertenece a L. Es decir, las dos cadenas v y x pueden "bombearse" cualquier nmero de veces, incluyendo cero, y la cadena resultante pertenecer a L.

7.2.3 Aplicaciones del lema de bombeo para los LlC


El primer ejemplo demuestra que, aunque los lenguajes independientes del contexto pueden emparejar dos grupos de smbolos para establecer si son iguales o no, no pueden emparejar tres de esos grupos. Ejemplo 7.19. Sea L el lenguaje {0m1m2m | m 1}. Es decir, L consta de todas las cadenas de 0+1+2+ con un cantidad igual de cada smbolo; por ejemplo, 012, 001122, etc. Supongamos que L fuera independiente del contexto. Entonces existe un entero n que nos viene determinado por el lema de bombeo. Elegimos z = 0n1n2n. Descomponemos z en uvwxy, y como | vwx| n, podr contener como mximos dos tipos de smbolos del alfabeto, ya que para contener los 3 tendra que tener longitud mayor que n. Entonces en el momento que se bombeen v y x en un nmero diferente a uno, el nmero de apariciones del tercer smbolo que se qued fuera de vwx ser distinto a los otros dos, con lo que la cadena dejara de pertenecer al lenguaje. Otra cosa que los LIC no pueden hacer es emparejar dos pares de nmeros iguales de smbolos, con la condicin de que los pares se entrelacen. Precisamos esta idea en el siguiente ejemplo. Ejemplo 7.20. Sea L el lenguaje {0i1j2i3j | i 1 y j 1}. Si L es independiente del contexto, sea n la constante para L y elegimos z = 0n1n2n3n. Podemos escribir z = uvwxy sujeta a las restricciones habituales |vwx| n y vx . Entonces vwx o est contenida en la subcadena de un smbolo o est entre dos smbolos adyacentes. Por lo tanto al bombear en un nmero distinto a uno, dejar de cumplirse la condicin de igualdad de nmero de smbolos entre 0s y 2s o entre 1s y 3s. Vamos a demostrar que los LIC no pueden emparejar dos cadenas de longitud arbitraria, si las cadenas se eligen de un alfabeto de ms de un smbolo Ejemplo 7.21. Sea L = {ww | w pertenece a {0, 1}*}. Es decir, L consta de cadenas que se repiten, tales como , 0101,00100010 o 110110. Si L es independiente del contexto, entonces sea n su constante del lema de bombeo. Considere la cadena z = 0n1n0n1n. Esta cadena es la cadena 0n1n repetida, por lo que z pertenece a L. Siguiendo el patrn de los ejemplos anteriores, podemos descomponer z = uvwxy, tal que |vwx| n y vx . De nuevo vwx o est contenida en la subcadena de un smbolo o est entre dos smbolos adyacentes. Si est en un solo smbolo y bombeamos i veces, con i 1, una cadena w dejara de ser igual a la otra; si est en dos smbolos adyacentes, pertenece a la primera w, a la segunda w o est formada por 1s de la primera y 0s de la segunda. Si pertenece a una nica w y bombeamos con i 1, entonces las dos cadenas dejaran de ser iguales. Si est formada por 1s de la primera y 0s de la segunda, al bombear con i 1, el nmero de 1s de la primera w sera distinto del nmero de 1s de la segunda w, y lo mismo pasara con los 0s.

7.3 Propiedades de clausura de los lenguajes independientes del contexto


Ahora vamos a abordar algunas de las operaciones sobre los lenguajes independientes del contexto que est garantizado que generan un LIC. Muchas se parecen a la de los lenguajes regulares, otras no. A diferencia de los lenguajes regulares, los LIC no son cerrados para la interseccin y la diferencia. Sin embargo, la interseccin o la diferencia de un LIC y un lenguaje regular siempre es un LIC.

7.3.1 Sustituciones
Sea un alfabeto y supongamos que para todo smbolo a de , elegimos un lenguaje La. Estos lenguajes que elegimos pueden emplear cualquier alfabeto, no necesariamente y no necesariamente el mismo para todos. Esta eleccin de lenguajes define una funcin s (una sustitucin) sobre , y nos referiremos a La como s(a) para cada smbolo a. Si w = ala2...an es una cadena de *, entonces s(w) es el lenguaje de todas las cadenas x1x2xn tal que la cadena xi pertenece al lenguaje s(ai), para i = 1,2,,n o dicho de otra manera, s(w) es la concatenacin de los lenguajes s(a1)s(a2) s(an). Podemos extender la definicin de s para aplicarla a lenguajes: s(L) es la unin de s(w) para todas las cadenas w de L. Teorema 7.23. Si L es un lenguaje independiente del contexto sobre el alfabeto , y s es una sustitucin sobre tal que s(a) es un LIC para cada a de , entonces s(L) es un LIC.

7.3.2 Aplicaciones del teorema de sustitucin


Hay varias propiedades de clausura, que podemos demostrar para los LIC utilizando el Teorema 7.23. Teorema 7.24. Los lenguajes independientes del contexto son cerrados para las siguientes operaciones:

1.

Unin. Sean L1 y L2 lenguajes independientes del contexto. Entonces L1UL2 es el lenguaje s(L), donde L es el lenguaje {1 ,2} y s es la sustitucin definida por s(1) = L1 y s(2) = L2. Concatenacin. De nuevo, sean L1 y L2 lenguajes independientes del contexto. Entonces L1L2 es el lenguaje s(L), donde L es el lenguaje {12} y s es la misma sustitucin que en el caso (1). Clausura y clausura positiva. Si L1 es un lenguaje independiente del contexto, L es el lenguaje {1}* y s es la sustitucin s(l) = L1, entonces L1* = s(L). De forma similar, si L es el lenguaje {1}+, entonces L1+ = s(L). Homomorfismo. Supongamos que L es un lenguaje independiente del contexto del alfabeto y h es un homomorfismo sobre . Sea s la sustitucin que reemplaza cada smbolo a en por el lenguaje que consta de una sola cadena que es h(a). Es decir, s(a) = {h(a)}, para todo a en . Entonces, h(L) = s(L).

2.

3.

4.

7.3.3 Reflexin
Los lenguajes independientes del contexto tambin son cerrados para la reflexin. Teorema 7.25. Si L es un lenguaje independiente del contexto, entonces LR tambin lo es.

7.3.4 Interseccin con un lenguaje regular


Los LIC no son cerrados para la interseccin. Ejemplo: L1 = {0n1n2i | n 1, i 1}, L2 = {0i1n2n | n 1, i 1}, L3 = L1 L2 = {0n1n2n | n 1}. L1 y L2 son LIC, mientras que L3 no lo es. Teorema 7.27. Si L es un lenguaje independiente del contexto y R es un lenguaje regular, entonces L R es un lenguaje independiente del contexto. Puesto que sabemos que los LIC no son cerrados para la interseccin, pero s son cerrados para la interseccin con un lenguaje regular, sabemos que ocurre lo mismo para las operaciones de complementacin y diferencia de conjuntos. Teorema 7.29. Las siguientes afirmaciones son verdaderas para los lenguajes independientes del contexto L, L1 y L2, y un lenguaje regular R. 1. L R es un lenguaje independiente del contexto. 2. L no es necesariamente un lenguaje independiente del contexto. 3. L1 - L2 no es necesariamente un lenguaje independiente del contexto.

7.3.5 Homomorfismo inverso


Si h es un homomorfismo y L es cualquier lenguaje, entonces h-1(L) es el conjunto de cadenas w tal que h(w) pertenece a L. Teorema 7.30. Sea L un lenguaje independiente del contexto y h un homomorfismo. Luego h-1(L) es un lenguaje independiente del contexto.

7.4 Propiedades de decisin de los LlC


Una serie de cuestiones fciles de formular acerca de las gramticas y los LIC no tienen algoritmo y se conocen como "problemas indecidibles". Las siguientes cuestiones son indecidibles: l. Es ambigua una determinada GIC G? 2. Es inherentemente ambiguo un LIC dado? 3. Est vaca la interseccin de dos LIC? 4. Son dos LIC iguales? 5. Es un LIC dado igual a *, donde es el alfabeto del lenguaje?

7.5 Resumen del Captulo 7


+ Eliminacin de smbolos intiles. Una variable puede eliminarse de una GIC a menos que genere alguna cadena de terminales y que tambin aparezca en al menos una cadena generada a partir del smbolo inicial. Para eliminar correctamente tales smbolos intiles, primero hay que comprobar si una variable genera una cadena de smbolos

terminales, y eliminar aqullas que no lo hacen junto con todas sus producciones. Slo entonces eliminaremos las variables que no son derivables a partir del smbolo inicial. + Eliminacin de producciones- y unitarias. Dada una GIC, podemos encontrar otra GIC que genere el mismo lenguaje, excepto la cadena , y que no tenga producciones- (aquellas con como cuerpo) ni producciones unitarias (aquellas con una sola variable en el cuerpo). + Forma normal de Chomsky. Dada una GIC que genera al menos una cadena no vaca, podemos encontrar otra GIC que genere el mismo lenguaje, excepto la cadena , y que est en la forma normal de Chomsky: no existen smbolos intiles y todo cuerpo de produccin consta de dos variables o de un smbolo terminal. + El lema de bombeo. En cualquier LIC, es posible encontrar, dentro de cualquier cadena lo suficientemente larga del lenguaje, una subcadena corta tal que los dos extremos de dicha subcadena puedan ser "bombeados" en tndem; es decir, cada uno de ellos puede repetirse el nmero de veces que se desee. Las dos cadenas que van a bombearse no pueden ser ambas . + Operaciones que preservan la independencia del contexto. Los LIC son cerrados para la sustitucin, la unin, la concatenacin, la clausura (asterisco), la reflexin y el homomorfismo inverso. Los LIC no son cerrados para la interseccin y la complementacin, aunque la interseccin de un LIC con un lenguaje regular siempre es un lenguaje independiente del contexto.

You might also like