5.9.AMBIGÜEDAD INHERENTE 101se agregan producciones para [q 0 , Z 0 , q 0 ]:[q 0 , Z 0 , q 0 ] → 0 [q 0 , X, q 0 ] [q 0 , Z 0 , q 0 ][q 0 , Z 0 , q 0 ] → 0 [q 0 , X, q 1 ] [q 1 , Z 0 , q 0 ]requeridas por δ(q 0 , 0, Z 0 ) = {(q 0 , XZ 0 )} son[q 0 , Z 0 , q 1 ] → 0 [q 0 , X, q 0 ] [q 0 , Z 0 , q 1 ][q 0 , Z 0 , q 1 ] → 0 [q 0 , X, q 1 ] [q 1 , Z 0 , q 1 ]también requeridas por δ(q 0 , 0, Z 0 ) = {(q 0 , XZ 0 )}.Las producciones para las variables y las movidas relevantes <strong>de</strong> M, son:[q 0 , X, q 0 ] → 0 [q 0 , X, q 0 ] [q 0 , X, q 0 ]→ 0 [q 0 , X, q 1 ] [q 1 , X, q 0 ][q 0 , X, q 1 ] → 0 [q 0 , X, q 0 ] [q 0 , X, q 1 ]porque→ 0 [q 0 , X, q 1 ] [q 1 , X, q 1 ]δ(q 0 , 0, X) = {(q 0 , XX)}[q 0 , X, q 1 ] → 1 porque δ(q 0 , 1, X) = {(q 1 , ε)}[q 1 , Z 0 , q 1 ] → ε porque δ(q 1 , ε, Z 0 ) = {(q 1 , ε)}[q 1 , X, q 1 ] → ε porque δ(q 1 , ε, X) = {(q 1 , ε)}[q 1 , X, q 1 ] → 1 porque δ(q 1 , 1, X) = {(q 1 , ε)}Debe notarse que no hay producciones para las restantes variables ( [q 1 , X, q 0 ] y [q 1 , Z 0 , q 0 ] ). Como todaslas producciones para [q 0 , X, q 0 ] y [q 0 , Z 0 , q 0 ] tienen [q 1 , X, q 0 ] o [q 1 , Z 0 , q 0 ] a la <strong>de</strong>recha, ningún string <strong>de</strong>terminales pue<strong>de</strong> <strong>de</strong>rivarse <strong>de</strong> ellas. Eliminando las producciones en que aparecen esas variables, se llega aS → [q 0 , Z 0 , q 1 ][(q 1 , Z 0 , q 1 ] → ε[q 0 , Z 0 , q 1 ] → 0 [q 0 , X, q 1 ] [q 1 , Z 0 , q 1 ] [(q 1 , X, q 1 ] → ε[q 0 , X, q 1 ] → 0 [q 0 , X, q 1 ] [q 1 , X, q 1 ] [(q 1 , X, q 1 ] → 1[q 0 , X, q 1 ] → 1En resumen <strong>de</strong> esta sección, se pue<strong>de</strong> concluir que las siguientes tres aserciones son equivalentes:• L es un lenguaje libre <strong>de</strong> contexto.• L es N(M 1 ) para algún AA, M 1 .• L es L(M 2 ) para algún AA, M 2 .5.9 Ambigüedad InherenteEs muy fácil exhibir gramáticas libres <strong>de</strong> contexto que son ambiguas. Por ejemplo,S → A|BA → aB → aen que el único string <strong>de</strong>l lenguaje (a) tiene dos árboles <strong>de</strong> <strong>de</strong>rivación.Lo que no es tan simple es encontrar un lenguaje libre <strong>de</strong> contexto para el cual toda gramática seaambigua. En esta sección se muestra que en realidad hay lenguajes libres <strong>de</strong> contexto que son inherentementeambiguos. Se mostrará que el lenguajeL = {a N b N c M d M /N ≥ 1, M ≥ 1} ∪ {a N b M c M d N /N ≥ 1, M ≥ 1}es inherentemente ambiguo, probando que el conjunto infinito <strong>de</strong> strings <strong>de</strong> la forma a N b N c N d N (N ≥ 1),<strong>de</strong>ben tener dos <strong>de</strong>rivaciones por la izquierda distintas.✷
102 CHAPTER 5.ACEPTACIÓN Y GENERACIÓN DE LENGUAJES LIBRES DE CONTEXTOLema 7 Sean (N i , M i ), 1 ≤ i ≤ r, pares <strong>de</strong> conjuntos <strong>de</strong> enteros (los conjuntos pue<strong>de</strong>n ser finitos oinfinitos). Seay seaS i = {(n, m)/n ∈ N i y m ∈ M i }S = S 1 ∪ S 2 ∪ . . . ∪ S rSi cada par <strong>de</strong> enteros (n, m) está en S, para todo n y m, con n ≠ m; entonces (n, n) está en S paratodos, excepto un conjunto finito <strong>de</strong> n.Demostración : Asuma que para todo n y m, con n ≠ m, cada par (n, m) ∈ S, y que hay un número infinito<strong>de</strong> n tales que (n, m) ∉ S. Sea δ el conjunto <strong>de</strong> todos los n tales que (n, n) no está en S. Se contruye unasecuencia <strong>de</strong> conjuntos δ r , δ r−1 , . . . , δ 1 , tales queδ ⊇ δ r ⊇ δ r−1 . . . ⊇ δ 1Cada δ i será infinito y para cada n, m en δ i , (n, m) no está enS i ∪ S i+1 ∪ . . . ∪ S rPara n ∈ δ, o n no está en N r o n no está en M r ; sino, (n, m) estaría en S r y por lo tanto en S. Hay,por lo tanto, un subconjunto infinito <strong>de</strong> δ, llamado δ r , tal que para todo n ∈ δ r , n ∉ N r , o para todo n ∈ δ r ,n ∈ M r . También, para n y m ∈ δ r , (n, m) no está en S r .Asuma que δ r , δ r−1 , . . . , δ i−1 ha sido construido para i ≤ r − 1; δ i se construye como sigue. Por cadan ∈ δ i+1 , n no está en N i o n no está en M i ; si no (n, n) habría estado en S i y por lo tanto en S, unacontradicción ya que δ i+1 ⊆ δ. Por lo tanto, ya sea un subconjunto infinito <strong>de</strong> δ i+1 no está en N i o unsubconjunto infinito <strong>de</strong> δ i+1 no está en M i . En cualquier caso, sea δ i ese conjunto infinito. Ahora, para todon y m en δ i , (n, m) no está en S i y por lo tanto, no está en S i ∪ S i+1 ∪ . . . ∪ S r .Ya que δ 1 tiene un número infinito <strong>de</strong> elementos, existen n y m en δ 1 , con n ≠ m. Ahora, (n, m) no estáen S 1 ∪ S 2 ∪ . . . ∪ S r = S, contradiciendo la hipótesis <strong>de</strong> que todo (n, m), con n ≠ m está en S. Por lo tanto,(n, m) está en S para todos excepto un conjunto finito <strong>de</strong> n.Lema 8 Sea G una gramática libre <strong>de</strong> contexto no ambigua. Entonces se pue<strong>de</strong> construir efectivamenteuna gramática libre <strong>de</strong> contexto no ambigua, G ′ , equivalente a G, tal que G ′ no tiene símbolos inútiles, niproducciones unitarias, ni producciones vacías y en que para toda variable A, excepto posiblemente el símboloinicial <strong>de</strong> G ′ , se tiene una <strong>de</strong>rivación A⇒ ∗ G ′X 1 AX 2 , en que X 1 y X 2 no son ambos ε.Demostración : Las construcciones para remover símbolos inútiles no convierten una gramática no ambiguaen una ambigua, ya que el conjunto <strong>de</strong> árboles <strong>de</strong> <strong>de</strong>rivación no cambia. La construcción para removerproducciones unitarias no pue<strong>de</strong> introducir ambigueda<strong>de</strong>s, ya que si se incluye la producción A → α, hay unúnico B, tal que A⇒B ∗ y B → α es una producción, si no la gramática original era ambigua. Similarmentela construcción para remover producciones vacías, tampoco introduce ambigueda<strong>de</strong>s.Se asume por lo tanto, que G no tiene símbolos inútiles ni producciones unitarias ni producciones vacías.Suponga que para ningún X 1 , X 2 , ambos no ε, A⇒X ∗ 1 AX 2 . Reemplace cada ocurrencia <strong>de</strong> A en el lado<strong>de</strong>recho <strong>de</strong> cada producción por todos los lados <strong>de</strong>rechos <strong>de</strong> las producciones-A. Como no hay produccionesunitarias ni producciones vacías ni símbolos inútiles, no pue<strong>de</strong> haber una producción A → α 1 Aα 2 , si no hayuna <strong>de</strong>rivación A⇒X ∗ 1 AX 2 con X 1 y X 2 no ambos ε. El cambio <strong>de</strong>scrito no altera el lenguaje generado,como se mostró en un lema anterior. Cada nueva producción viene <strong>de</strong> una única secuencia <strong>de</strong> produccionesantiguas, si no G era ambigua. Por lo tanto la gramática resultante no era ambigua. A es ahora inútil ypue<strong>de</strong> eliminarse. Después <strong>de</strong> remover la variables que violan la condición <strong>de</strong>l lema <strong>de</strong> la manera <strong>de</strong>scrita,la nueva gramática es equivalente a la original, es aún no ambigua y satisface el lema.✷