Anda di halaman 1dari 11

Teor a de Aut omatas y Lenguajes Formales Bolet n de Autoevaluaci on 5: C omo se simplica una Gram atica de Contexto Libre?.

1.

Objetivos.

El objetivo de este bolet n es ilustrar c omo proceder para simplicar gram aticas de contexto libre y, adem as, proporcionar la soluci on a alguno de los problemas propuestos en el bolet n para que pod ais comprobar si hab eis aplicado bien este m etodo.

2.

Idea Principal.

Una gram atica nos proporciona un conjunto de producciones que nos permitir an obtener cadenas de un determinado lenguaje. En este juego hay pocas reglas: una producci on nos indica c omo substituir una serie de s mbolos auxiliares por otra cadena de s mbolos; se empieza siempre por un s mbolo auxiliar nicamente por s especial, el s mbolo S, start, y el objetivo es formar cadenas formadas u mbolos terminales esto es, s mbolos del alfabeto sobre el que construimos el lenguaje. Al substituir no hay cota sobre el n umero de veces que se aplica una producci on y tampoco hay reglas que tengan una preferencia sobre otras. Al dise nar la gram atica nuestra principal preocupaci on es asegurar que se producen todas las cadenas. De hecho, puede ocurrir que en el proceso de dise no se introduzcan producciones que no facilitan la obtenci on de cadenas o que introducen pasos innecesarios en el proceso de derivaci on. El objetivo al simplicar una gram atica de contexto libre es obtener una gram atica equivalente, pero til, y que no obliga a aplicar ning en la que se asegura que cada derivaci on es u un paso innecesario.

3.

Pasos para simplicar una Gram atica de Contexto Libre.

Cualquier lenguaje de contexto libre, L, puede ser generado por medio de una GCL, G, que cumpla las siguientes condiciones: 1. 2. 3. Cada s mbolo (terminal o auxiliar) de G se emplea en la derivaci on de alguna cadena de L. Si L entonces en el conjunto de producciones de G no existen producciones vac as, es decir, producciones de la forma A . 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 gram atica que cumpla estas tres condiciones se puede asegurar que en cada derivaci on que se realiza se introduce informaci on relevante. C omo se puede asegurar que son ciertas en nuestra gram atica cada una de estas tres condiciones? 1

1. 2. 3.

Podemos asegurar que cada s mbolo (terminal o auxiliar) de G se emplea en la derivaci on de alguna cadena de L si eliminamos los s mbolos inutiles . Podemos asegurar que si L entonces en el conjunto de producciones de G no existen producciones de la forma A si eliminamos las producciones vac as. 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 gram atica est a simplicada. A continuaci on se desarrolla cada uno de ellos.

3.1.

Procedimiento.

Para ilustrar el procedimiento se simplicar a la gram atica 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.1.1.

Eliminaci on de s mbolos inutiles.

Hay que dividirlo en dos pasos y, adem as, el orden en que se realizan es signicativo. Primero hay que eliminar los s mbolos no derivables y, despu es, los s mbolos no alcanzables.

Eliminar los s mbolos no derivables. Un s mbolo auxiliar que nunca se podr a substituir por un terminal (o una cadena de terminales) es un s mbolo no derivable. Y se puede eliminar de la gram atica: es in util puesto que si lo usamos nunca derivaremos una cadena formada exclusivamente por terminales. Una forma de actuar es calcular qu e s mbolos s son derivables y desechar los que no lo sean, ya que la teor a nos da un procedimiento para determinar el conjunto de s mbolos 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 s mbolos auxiliares de son derivables, entonces el s mbolo A tambi en es derivable. Siguiendo el algoritmo anterior, tendr amos que comenzar el proceso incluyendo en el conjunto de s mbolos derivables, todos los auxiliares que tengan una producci on que pertenezca a T , es decir, que se deriven en , en un terminal o en una subcadena de terminales. 2

Una vez determinado este conjunto inicial, el siguiente paso consiste en a nadir como nuevos elementos los s mbolos auxiliares que tengan al menos una producci on en la que todos los s mbolos son derivables. Al nalizar este paso, se tiene un nuevo conjunto de derivables; se vuelve a aplicar este paso, de nuevo se da un repaso a todas las producciones a ver si con este nuevo conjunto de derivables se puede a nadir un nuevo auxiliar porque entre sus producciones hay alguna con todos sus s mbolos derivables. El paso se repite sucesivamente, trabajando cada vez con el nuevo conjunto obtenido, hasta que en alg un paso no se a nada ning un nuevo elemento. F jate en el ejemplo. 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 s mbolos: D = {S, A, B, D, F } ya que al menos una producci on de cada uno de esos s mbolos auxiliares est a formada por una cadena de : S b , A a , B , D a y F ab . T Aplicamos un primer paso recursivo, a nadiendo los s mbolos que contienen al menos una producci on formada exclusivamente por derivables y que a un no pertenecen al conjunto D; esto es, E (porque se tiene la producci on E bB ) y G (por la producci on 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 a nadir m as s mbolos: s olo falta C y no puede ser incluido, ya que ninguna de sus producciones est a formada exclusivamente por derivables. Por lo tanto, C no es derivable y debe eliminarse completamente de la gram atica. Se obtiene, por lo tanto, la gram atica 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 | Da E aaE | bB F aF | ab GF que no tiene s mbolos no derivables. 3

Eliminar los s mbolos no alcanzables. Un s mbolo auxiliar que nunca se podr a alcanzar desde el s mbolo inicial de la gram atica es un s mbolo no alcanzable, esto es, un s mbolo que nunca aparecer a en la derivaci on 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 gram atica. El mismo razonamiento se puede aplicar a los s mbolos terminales que aparezcan en la denici on de la gram atica pero que luego no aparecen en ninguna producci on. Como en el caso anterior, la forma m as simple de desechar estos s mbolos in utiles es determinando cu ales s son alcanzables y eliminando lo que no lo sean. Tambi en en este caso la teor a brinda un procedimiento recursivo para calcular el conjunto de s mbolos alcanzables: Paso Base: A = {S }, T = , Paso Recursivo: si A A y (A ) P , todos los s mbolos auxiliares de se a naden a A y todos sus s mbolos terminales se a naden a T . De acuerdo a esto, se inicia el conjunto de s mbolos auxiliares alcanzables con S (y el conjunto de tiles al conjunto vac s mbolos terminales u o). En un primer paso, se incluyen en el conjunto de alcanza tiles, los bles todos los auxiliares que aparecen en producciones de S (y, en el conjunto de terminales u terminales). Con este nuevo conjunto, se realiza un segundo paso, similar, pero ahora incluyendo todos tiles, los los auxiliares que aparecen en producciones de los alcanzables (y, en el conjunto de terminales u terminales). Cuando ya no se pueda a nadir ning un nuevo elemento, naliza el proceso y se eliminan los auxiliares que no est en incluidos en el conjunto de alcanzables (y, por lo que respecta a los terminales tiles, habr u a que redenir la gram atica indicando cu al es el conjunto de terminales de verdad). Ejemplo: Si se parte de la gram atica sin s mbolos no derivables G , que se acaba de obtener, el valor inicial de tiles se inician como: los conjuntos de auxiliares alcanzables y de los terminales u A = {S }, T = tal y como indica el m etodo te orico. En la primera aplicaci on del paso recursivo, se a naden a 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 aplicaci on de este paso, hay que a nadir los s mbolos que se alcanzan desde A y desde B , que son E y F . No hay terminales nuevos que a nadir a T . Por lo tanto, A = {S, A, B, E, F }, T = {a, b}

En al tercera aplicaci on del paso recursivo, hay que a nadir los auxiliares y terminales que intervienen en las producciones de E y F . Vemos que no se a naden s mbolos 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 gram atica equivalente a la original sin s mbolos in utiles ser a: 4

G = {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 Aab | B | b A aA | a | aBAE B bB | F | E aaE | bB F aF | ab

3.1.2.

Eliminaci on de las producciones vac as.

Cuando una gram atica contiene producciones vac as, por ejemplo A , y en el proceso de generaci on de una cadena aparece el s mbolo A en un forma sentencial, esto quiere decir que, m as pronto o m as tarde, el auxiliar A va a ser substituido por . Esto no supone un avance en el proceso de generar la cadena ya que substituir A por es lo mismo que eliminar A y, entonces qu e utilidad ha reportado el uso del auxiliar A en el proceso? Ninguna, y de hecho lo hemos eliminado al substituirlo por . Por lo tanto, eliminar las producciones vac as es una forma de ahorrar trabajo in util en el proceso de generaci on de una cadena. Para conseguirlo, el primer paso es determinar qu e s mbolos auxiliares son anulables, es decir, que s mbolos pueden producir la cadena vac a en uno o m as pasos. Tambi en 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 s mbolos auxiliares de son anulables, entonces X tambi en es anulable. El proceso naliza cuando no se puedan a nadir nuevos valores al conjunto de s mbolos anulables. Ejemplo: Si seguimos con el ejemplo anterior, y aplicamos el procedimiento te orico, el conjunto de s mbolos anulables, N , tendr a como valor inicial N = {B } nico auxiliar que tiene una producci ya que B es el u on vac a. Al aplicar por primera vez el paso recursivo se a nade S , ya que tiene una producci on formada exclusivamente por anulables, S B , N = {S, B }

Si se aplica una segunda vez el paso recursivo no se a nade ning un nuevo s mbolo, por lo que el proceso ya naliza. Una vez que ya est a calculado el conjunto de s mbolos anulables, hay que reescribir las producciones de la gram atica. Cada producci on se reescribe eliminando ninguna, una o m as apariciones de cada elemento del conjunto de s mbolos anulables que aparezca en el consecuente de la producci on. Expresado 5

de otra forma, cada producci on con s mbolos anulables se reescribe varias veces: una tal y como est a expresada originalmente y todas las necesarias para indicar todas las combinaciones posibles de anulables que desaparecen. Con el ejemplo se ve m as claro. Ejemplo: En este punto del proceso, las producciones de la gram atica 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 }. C omo reescribir las producciones? Comencemos con las de los s mbolos 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 producci on debe reescribirse, una vez tal cual est a y otra teniendo en cuenta que B puede ser : A aA | a | aBAE | aAE Pasemos a estudiar las producciones de E : E aaE | bB nica que contiene un anulable. Se escribe tal Hay que reescribir la producci on E bB que es la u 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 s mbolos anulables. Pasemos, a continuaci on, a ver qu e se hace con las producciones de los s mbolos anulables, por ejemplo B : B bB | F | En principio, con la producci on B bB se procede como con las dem as: se escribe tal cual y teniendo en cuenta que B puede ser . Y este ser a el resultado: B bB | b | F Qu e ocurre? Adem as de reescribir la producci on con s mbolos anulables se ha eliminado la producci on vac a; esto es as , porque ya se ha tenido en cuenta al escribir las producciones que B podr a ser . Por lo tanto, ya no es necesaria esa producci on. Finalmente, se reescriben las producciones de S , S Aab | B | b 6

En S Aab no intervienen anulables y en S b, tampoco. En S B , evidentemente, s . Esa producci on debe reescribirse, una vez tal cual est a y otra teniendo en cuenta que B puede ser : S Aab | B | | b Curioso, eh? Ha aparecido una producci on vac a entre las producciones de S (lo que no debe sorprendernos porque S es anulable, no lo olvidemos). Por qu e no se ha eliminado esa producci on tal y como se ha hecho con la producci on vac a de B ? Pues porque no se puede. Si el s mbolo inicial se deriva en , eso quiere decir que L(G) y si se elimina esa producci on, la gram atica obtenida no puede ser equivalente (los lenguajes son distintos, uno contiene a y el otro, no). Pero, por ahora, vamos a ignorar este hecho. Nos apuntamos que S P y se elimina esa producci on vac a, quedando las producciones como sigue: / N o olvidar que S / S Aab | B | b A aA | a | aBAE | aAE B bB | b | F E aaE | bB | b F aF | ab ltima Como al eliminar las producciones no se han reintroducido s mbolos in utiles, se pasa a la u etapa.

3.1.3.

Eliminaci on de las producciones unitarias.

Las producciones de la forma A B dan lugar a trabajo innecesario, ya que cuando aparecen en nico que introducen es un cambio de nombre del auxiliar. Por eso tambi una derivaci on lo u en se eliminan cuando se pretende obtener una gram atica simplicada. El nuevo conjunto de producciones se forma de la manera siguiente: Si (A B ) P y A, B A , entonces esta producci on se elimina del nuevo conjunto de producciones y se introducen las siguientes nuevas producciones: (A ) | es una forma sentencial que se obtiene a partir de B , al aplicar producciones de P. Es decir, a las producciones de A a nadimos las producciones de B . Ejemplo: Tal y como est a en este momento la gram atica, con el siguiente conjunto de producciones / N o olvidar que S / S Aab | B | b A aA | a | aBAE | aAE B bB | b | F E aaE | bB | b F aF | ab s olo hay dos producciones unitarias, S B y B F . Se reescriben las producciones de S substituyendo B por sus producciones (y arregl andolas: si lo hago tal cual la producci on S b aparece dos 7

veces.. con una llega, no?), / N o 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 , / N o 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 s mbolos in utiles. Para tener la gram atica simplicada equivalente a la original s olo hace falta ver qu e hacer cuando, como en este caso, el s mbolo inicial es anulable y, por lo tanto, L(G). Recordad que hay un lema que da la soluci on:

Dada una GCL G puede construirse una GCL G equivalente a G tal que no tenga producciones excepto cuando L(G) en cuyo caso S es la u on en la que nica producci aparece y adem as S no aparece en el consecuente de ninguna otra regla de producci on.

nico auxiliar con una Pues aplicamos el lema; se introduce un nuevo s mbolo inicial, S , y ser a el u nica... producci on vac a. Y, para asegurar la segunda condici on, se a nade otra producci on unitaria (la u nos ha salido un poco transgresor este S ;-) . La gram atica quedar a nalmente de la siguiente forma:
s s s s Gs = {s A , T , S , P }, en la que A = {S , S, A, B, E, F }, T = {a, b} y el conjunto de producs ciones, P , es el siguiente: S |S S Aab | bB | b | aF | ab A aA | a | aBAE | aAE B bB | b | aF | ab E aaE | bB | b F aF | ab

3.2.

Otro Ejemplo.

El ejemplo desarrollado en el apartado anterior era completito en el sentido de que nos j abamos en la gram atica (que es lo que se debe hacer desde el punto de vista formal). Pero lo habitual en este asignatura es que tengamos un enunciado como el siguiente:

Simplicar la siguiente GCL: S aSb | aAb A BA | | aCB B ASb | abB C aDF | aDb D abC | aCB | aF F F b | aCb

en el que prestamos atenci on principalmente al conjunto de producciones. Ello obliga, por ejemplo, a tiles (s que no solamos plantearnos cuestiones como, por ejemplo, si todos los terminales son o no u olo tiles, los que s trabajamos con los u aparecen en la producciones). Por eso, este ejemplo nos limitaremos al desarrollo habitual en clase, dejando el del apartado anterior como ejemplo completo del proceso de simplicaci on. Se plantean, entonces, cada uno de los tres pasos: 1. Eliminaci on de s mbolos inutiles: En dos pasos, sin olvidar que el orden es signicativo, a) Eliminaci on de s mbolos no derivables: nico El valor inicial del conjunto de s mbolos derivables, D, ser a D = {A} ya que A es el u s mbolo auxiliar con una producci on en una cadena de , A . T Al aplicar una vez el paso recursivo, puede a nadirse el s mbolo S , ya que entre sus producciones est a la producci on S aAb en la que todos los s mbolos son derivables. Por lo tanto, tras este paso, D = {A, S }. Si se vuelve a aplicar el paso recursivo, se puede a nadir el s mbolo B , ya que entre sus producciones est a B ASb en la que todos los s mbolos son derivables. As , D = {A, S, B }. Si se vuelven a examinar las producciones, se puede comprobar que ya no es posible a nadir ning un nuevo elemento a D. Es decir, D = {S, A, B } y los s mbolos C , D y F son no derivables y se eliminan completamente de la gram atica, quedando las producciones de la siguiente forma: S aSb | aAb A BA | B ASb | abB b) Eliminaci on de s mbolos no alcanzables: Si s olo nos centramos en los s mbolos auxiliares (al partir de las producciones, asumimos tiles), el paso base indica el siguiente valor que T = {a, b} y que todos los terminales son u inicial para A, A = {S } 9

Al aplicar el paso recursivo, a nadimos A, ya que S aAb, A = {S, A} y si se vuelve a aplicar, se debe a nadir B , ya que A BA, A = {S, A, B } No hay m as s mbolos auxiliares. Por lo tanto, todos los s mbolos auxiliares son alcanzables y no se elimina ninguno. 2. Eliminaci on de producciones vac as: S olo hay una producci on vac a, A . Por lo tanto, el valor incial de N es N = {A} Al aplicar el paso recursivo, se ve que ning un otro s mbolo tiene producciones formadas exclusivamente por s mbolos anulables. Por lo tanto, no se a nade ning un nuevo elemento a N y A resulta nico s ser el u mbolo anulable. Por lo tanto, se va a eliminar su producci on vac a teniendo en cuenta que cada producci on en la que aparezca A se debe escribir tal cual y teniendo en cuenta que A puede ser : S aSb | aAb | ab A BA | B B ASb | Sb | abB No se han introducido s mbolos in utiles en el proceso de eliminar las producciones vac as, por lo que se pasa a la siguiente etapa. 3. Eliminaci on de producciones unitarias: S olo aparece una producci on unitaria, A B ; se substituye B por sus producciones S aSb | aAb | ab A BA | ASb | Sb | abB B ASb | Sb | abB y, como no hay m as producciones unitarias, ni se han introducido s mbolos in utiles en el proceso, se puede asegurar ya que la gram atica est a simplicada.

4.
1.

Autoevaluaci on.
Simplicar la siguiente GCL S A | AA | AAA A ABa | ACa | a B ABa | Ab | C Cab | CC D CD | Cd | CEa Eb Soluci on: S ABa | Aa | a | AA | AAA A ABa | Aa | a B ABa | Aa | Ab 10

2.

Simplicar la siguiente GCL S aAb | cHB | CH A dBH | eeC B ff | D C gF B | ah Di E jF F dcGGG | cF G kF H Hlm Soluci on: S aAb A eeC C ah

3. Simplicar la siguiente GCL S aAB | bBA | ABb | SS A aAb | CCA | BB B | bC C aCS | SCS D ab | SABC Soluci on: S aA | a | bA | b | Ab | SS A aAb | ab 4. Simplicar la siguiente gram atica: S CBa | D A bbC B Sc | ddd C eA | f | C D E | SABC E gh Soluci on: S CBa | gh | SABC A bbC B Sc | ddd C eA | f

11

Anda mungkin juga menyukai