1. ELEMENTOS BSICOS: ALFABETOS, PALABRAS Y LENGUAJES
- Alfabeto: Conjunto finito y no vaco cuyos elementos se denominan smbolos. Para designarlo se utilizan letras maysculas del alfabeto griego, especialmente y . Como ejemplos de alfabetos, contamos con {0,1} alfabeto binario; {a,b,cx,y,z} alfabeto latino de letras minsculas - Palabras: Secuencia finita de smbolos de un alfabeto, cuando adems queremos dejar claro que los smbolos que se utilizan son los de un alfabeto determinado, se habla de palabras sobre un alfabeto. Por ejemplo, segn el alfabeto {a,b} son palabras de este alfabeto aba, aab, aaabbaaaa, a, b y (sta ltima es una secuencia vaca de smbolos y representa la palabra vaca, por lo cual es una palabra sobre cualquier alfabeto). - Subpalabras, prefijos y sufijos: Las subsecuencias de smbolos consecutivos de una palabra reciben el nombre de subpalabras de esta palabra. Se consideran subpalabras impropias la palabra vaca y la entera y el resto se consideran propias. Por ejemplo los prefijos de la palabra bbaab son {, b bb, bba, bbaa, bbaab} de los cuales el primero y el ltimo son prefijos impropios y el resto propios. - Lenguajes, conjunto de palabras: Un lenguaje es un conjunto de palabras sobre un alfabeto determinado, para designarlos se usa la letra L con subndices si es necesario, y otras letras maysculas del alfabeto latino. Algunos ejemplos de lenguajes sobre el alfabeto {a,b} son L1={a, aa, aaa}; L2= {a, b, aa, bb, ab, abababab}; L3={}. No obstante, un lenguaje no debe ser necesariamente finito, por ejemplo, lenguaje de todas las palabras sobre ={0,1} que comiencen por el smbolo 1.
2. OPERACIONES SOBRE PALABRAS
- Concatenacin: Concatenar dos palabras significa construir una palabra nueva aadiendo los smbolos de la segunda tras los smbolos de la primera, el operador de concatenacin es el smbolo . As aaabbb=aaabbbb, aba =aba. La concatenacin no es conmutativa, porque en general w1w2<>w2w1; s tiene en cambio la propiedad asociativa y la palabra vaca constituye el elemento neutro de la concatenacin. La concatenacin de una palabra consigo misma se suele representar con notacin exponencial, de manera que w 2 =ww; y la concatenacin de una palabra y un smbolo se denota de la misma manera que la concatenacin de dos palabras. - Longitud: el nmero de smbolos de una palabra se desgina por |w| y es interesante reconocer que: |w1w2|=|w1|+|w2| y |w|=0 w= . - Nmero de ocurrencias de un smbolo: la notacin |w|a denota el nmero de apariciones del smbolo a en la palabra w, as |aabbabaa| a = 5. - Inversin: Consiste en escribir al revs una palabra dada, la palabra resultante de la inversin se denomina inversa, si w es una palabra cualquiera w R denota su inversa; as (ab) R =ba, (011101) R =101110, R = . Fijmonos que (w1w2) R =(w2) R (w1) R . - Palndromos: Cuando una palabra es igual a su inversa, se denomina palndromo. As es un palndromo, y tambin aba y tambin todas las palabras formadas por un solo smbolo.
Teora de autmatas y lenguajes formales 1
Tema 1 Alfabetos, palabras y lenguajes 1. Elementos bsicos: alfabetos, palabras y lenguajes 2. Operaciones sobre palabras 3. Operaciones sobre lenguajes 4. Definicin de lenguajes 2 Teora de autmatas y lenguajes formales 1
3. OPERACIONES SOBRE LENGUAJES
- Operaciones conjuntistas: Estas operaciones son las siguientes: la unin, interseccin, complementacin y diferencia. - Concatenacin: de dos lenguajes es otro lenguaje que contiene todas las palabras que se pueden construir concatenando una palabra del primer lenguaje con una palabra del segundo lenguaje. Como ejemplos tenemos, si L1={a, aa} y L2={b, bb} entonces L1L2={ab, abb, aab, aabb}. Entre las propiedades de la concatenacin de lenguajes destacan: o La concatenacin no es conmutativa, as L1L2<>L2L1 o La concatenacin s es asociativa (L1L2)L3=L1L2L3 o El elemento neutro de la concatenacin es . o La concatenacin es distributiva respecto de la unin. o Pero no lo es respecto de la interseccin. - Concatenacin de un lenguaje consigo mismo: Tambin se puede representar con la notacin exponencial, as L 2 =LL. - Concatenacin de una palabra y un lenguaje: El concatenar una palabra y un lenguaje {w}L y L{w} puede abreviarse como wL y Lw y es el resultado de aadir una palabra w delante y detrs de cada una de las palabras de L. Misma aplicacin para los smbolos aL y La. - Inversin: El lenguje inverso L R de otro L dado no es ms que el lenguaje formado por los inversos de las palabras de L. - Cierre de Kleene: El cierre de Kleene de un lenguaje es la unin de todas las potencias de ese lenguaje. Si L es un lenguaje este cierre se representa por L*, y as si L={ab}, L*={ , ab, abab. Ababab, abababab} - Cierre positivo de Kleene: Se representa por L + y es igual al anterior a excepcin de la presencia del smbolo . Por ello s L={ab}, L + ={ab, abab. Ababab, abababab}. - Cierres de un alfabeto * y + : Dado que cualquier alfabeto puede ser considerado un lenguaje formado por palabras de un solo smbolo (longitud 1), las operaciones de cierre de Kleene y de cierre positivo de Kleene tambin son aplicables a los alfabetos.
4. DEFINICIN DE LENGUAJES
A menudo disponemos de una definicin informal de un lenguaje dada en lenguaje natural, y necesitamos ser ms especficos convirtindola en una definicin cuanto ms formal, mejor. Generalmente para formalizar la definicin de un lenguaje se utiliza: L = { w e * | Condicion(es) de pertenencia}. Por ejemplo: - Palabras con el doble de smbolos de a que de smbolos b: o L = {w | |w|a = 2|w|b } - Palabras que empiezan con el smbolo a y acaban con el sufijo aba. o L = {w | -x e *(w=axaba)} o L={a} *{aba}
Teora de autmatas y lenguajes formales 1 3
TEMA 2 AUTMATAS FINITOS Y LENGUAJES REGULARES
1. AUTMATAS FINITOS DETERMINISTAS Y LENGUAJES REGULARES
Los autmatas finitos representan un modelo matemtico con las siguientes caractersticas: - A cada momento el sistema se encuentra en un estado (q) y el conjunto total de estados diferentes en los que se puede encontrar el sistema es finito (si adems no es un nmero muy elevado puede ser representado grficamente). - Pueden responder a un nmero finito de acontecimientos diferentes. - El estado en el que se encuentra el sistema resume toda la informacin referente a acontecimientos pasados. - La respuesta a un acontecimiento slo se determina en funcin del acontecimiento y del estado en que se encuentra el sistema.
Como ejemplo de estos tipos de sistemas podemos encontrar un interruptor biestable, que puede estar encendido o apagado y que responde al acontecimiento de pulsacin que provoca un cambio de estado que depende obviamente del estado actual en que se encuentre.
Imaginaremos los autmatas finitos como mquinas que constan de una unidad central con un cabezal que se encuentra en un estado inicial (q0), situado a la izquierda de una cinta sobre la cual se ha escrito de izquierda a derecha; a cada unidad de tiempo el cabezal se desplaza una posicin y lee el smbolo sobre el que se sita, y esto determina un nuevo estado. Hay dos tipos de estado, el estado aceptador que hace que la cadena de smbolos que van desde el inicio de la cinta hasta el que se encuentra ahora forme una palabra reconocida como perteneciente a L, o estado no aceptador que no reconoce la palabra. Como ejemplo estudiamos el autmata finito representado a la izquierda, que es capaz de reconocer la palabra ababa si el estado final es aceptador.
Ya hemos adelantado que es habitual que los autmatas finitos se representen grficamente si las medidas lo permiten, para ello tendremos en cuenta:
- Los estados se representan con crculos que, si es preciso, llevan en su interior un nombre para identificarlo. - El estado inicial se indicar con una pequea flecha que incida sobre ste. - Los estados aceptadores se indicarn con una pequea cruz que salga de los mismos. - Las posibles transiciones, en funcin de los smbolos ledos, se indicarn con flechas que van de un estado a otro (o a s mismo).
En el ejempo lateral podemos observar un autmata que reconoce el lenguaje de las palabras que empiezan por a y acaban por b, es decir:
L = {w | -x e *(w=axb)}
Cualquier autmata finito puede interpretarse como un algoritmo que especifica un clculo, y la cantidad de memoria que debe consumirse para realizar el procesamiento de la palabra es siempre la misma e independientemente de la longitud de la misma. Aquellos lenguajes que para poder dictaminar si una palabra pertenece a los mismos o no, requieren algoritmos que utilizan una cantidad de memoria que depende de la longitud de la palabra medida, no pueden ser reconocidos por autmatas finitos, y se denominan lenguajes no regulares. Por ejemplo el lenguaje de las palabras de la forma L={a n b n |n>=0}={a} n {b} n , no es un lenguaje regular, dado que solo se reconocen las palabras cuyo nmero de Tema 2 Autmatas finitos y lenguajes Regulares 1. Autmatas finitos deterministas y lenguajes regulares 2. Autmatas finitos indeterministas 3. Operaciones con autmatas finitos 4. Minimizacin de autmatas finitos 5. Expresiones regulares 6. Determinacin de la no regularidad de un lenguajes: el lema del bombeo Autmata finito
Autmata finito
4 Teora de autmatas y lenguajes formales 1
smbolos a sea igual al nmero de smbolos b; as pues es indispensable recordar el nmero de smbolos de cada tipo que se llevan ledos en cada momento. La memoria que se requiere para llevar a cabo esta operacin depende por tanto de la longitud de la palabra. Habra que asignar un estado distinto a cada nmero de smbolos posible, sin embargo esto es imposible, porque el nmero de estados debe ser finito.
La definicin formal de un autmata finito determinista o DFA es que se trata de autmatas con un nmero finito de estados, que tienen un nico estado inicial y para cada estado una, y solo una, transicin para cada smbolo. Por tanto, para poder definir completamente un DFA es necesario conocer los siguientes elementos de los que se compone: - Conjunto de estados (Q). - Cual es el estado inicial (q0). - Cuales son los estados aceptadores (F). - Cual es el alfabeto de la palabra que se escribe en la cinta (). - La manera de determinar el nuevo estado en funcin del smbolo ledo y del estado actual (). Este smbolo es la llamada funcin de transicin, que dado un estado y un smbolo el resultado es otro estado.
Con todo ello, un DFA se define como un quntuplo de la forma (Q, , q0, F, ). Como ejemplo proponemos el DFA lateral, representado de manera formal (que incluya una representacin tabular para la funcin de transicin) y grfica.
Un ltimo aspecto nos queda por aclarar y es definir formalmente lo que es un lenguaje reconocido por un DFA. Para ello debemos saber que:
- (qi, a) = qj ; es decir dato un estdo inicial, y en presencia de un smbolo, obtenemos otro estado final (funcin de transicin). - (q,w) = q si w = o d ((q0, x), a) si w=xa. A esto se le denomina funcin de transicin extendida y su propsito es extender a las palabras la funcin de transicin. Haciendo uso de esta funcin definimos un lenguaje reconocido por un DFA -L(A)- como el conjunto de palabras que, a partir del estado inicial, provocan que el autmata evolucione hasta alguno de los estados aceptadores, es decir: L(A) = {we * | (q0, w) e F}.
Lenguaje regular y lenguaje reconocido por un DFA son expresiones sinnimas ya que un lenguaje es regular si, y solo si, existe un DFA que lo reconoce (y adems requieren una cantidad de memoria independiente de la longitud de las palabras). Para demostrar que un lenguaje es regular, es suficiente con exhibir un autmata que lo reconozca, porque, por definicin, un lenguaje es regular si es reconocido por algn DFA.
2. AUTMATAS FINITOS DETERMINISTAS Y LENGUAJES REGULARES
Los autmatas finitos indeterministas son una forma especial de autmatas finitos que forman parte del conjunto de herramientas que pueden utilizarse para facilitar la tarea de construccin de autmatas finitos deterministas. Construir un NFA (Non-deterministic Finite Automaton) es ms simple que un DFA, y tiene lugar cuando se da una o ms de las siguientes 3 condiciones: - Tiene ms de un estado inicial - Tiene transiciones definidas de forma mltiple - Tiene transiciones no definidas
Para que una palabra sea aceptada por un NFA el reconocimiento es similar al que tena lugar en el apartado anterior, pero tendremos en cuenta adems las siguientes consideraciones: - Si el autmata tiene ms de un estado inicial, entonces el reconocimiento comienza en cualquiera de stos. Formalizacin de un DFA Representacin formal - Q = {A,B,C,D,E} - = {a,b} - q0 = A - F = {A,B,E} - = a b + A B D + B B C C C C D E D + E E D
Representacin grfica
Teora de autmatas y lenguajes formales 1 5
- Si en un estado y para un smbolo determinado hay ms de una transicin definida, se aplica cualquiera de stas. - Si en un estado y para un determinado smbolo no hay transicin definida, entonces el proceso de reconocimiento se detiene y la palabra no se acepta.
Podemos entender que un NFA es un autmata que, en algunas circunstancias, tiene capacidad de eleccin, y habr palabras que en algunas ocasiones sea aceptada y en otras rechazada por el mismo NFA. As entenderemos que una palabra es aceptada por un NFA cuando hay alguna secuencia de transiciones que la hacen evolucionar hasta un estado aceptador. En el autmata de la tabla lateral la secuencia abaabb en algunas ocasiones puede ser reconocida y en otras no. A pesar de ello existen 4 tipos de lenguaje para los cuales es muy fcil construir los autmatas indeterministas que los reconocen:
- Los lenguajes que se definen como palabras que empiezan por un determinado prefijo. En la tabla lateral de ejemplos el primer autmata reconoce claramente todas las palabras que empiecen por aba. - Los lenguajes que se definen como palabras que acaban con un determinado sufijo. En el segundo autmata del ejemplo, se reconocen todas las palabras que acaben por bba, independientemente de lo que haya delante. - Lenguajes que se definen como palabras que contienen una determinada subpalabra. Es una especie de mezcla de los anteriores, y observamos en el ejemplo que se reconoce cualquier palabra de la forma babb - Lenguajes que se definen en trminos de la unin de otros lenguajes. Dados dos autmatas, la suma de ambas da un nico NFA, pues puede tener varios estados de inicio.
La definicin formal de un autmata finito indeterminado o NFA es que se define por un quntuplo de la forma (Q, , I, F, ). - Conjunto de estados (Q). - Cual es el conjunto de estados inicial (I cQ). - Cuales son los estados aceptadores (FcQ). - Cual es el alfabeto de la palabra que se escribe en la cinta (). - La manera de determinar el nuevo estado en funcin del smbolo ledo y del estado actual (). Este smbolo es la llamada funcin de transicin, que dado un estado y un smbolo el resultado es otro estado.
Recordemos que ahora no contamos con un nico estado inicial y que para cada pareja estado-smbolo puede no definirse un nico estado, sino un conjunto de ellos. As podemos observar la representacin grfica y en tabla de transicin de un DFA:
Igualmente la definicin formal de lenguaje reconocido por un NFA es el conjunto de palabras que desde los estados iniciales (I) pueden llevar al autmata hasta alguno de sus estados finales. Pero que esto no nos lleve a confusin, los lenguajes que puede reconocer un NFA son los mismos que un DFA, es decir, los lenguajes regulares. As pues, el indeterminismo de los NFA no aporta la capacidad de reconocer ms lenguajes, sino la simplicidad de construirlos.
Existe un proceso para la determinizacin de autmatas indeterministas, ya que realmente un DFA puede considerarse un caso particular de un NFA, es decir el caso particular en el que solo se cuenta con un estado inicial y con una funcin de transicin definida para todos los estados y smbolos posibles. Como es ms fcil crear un autmata indeterminista, se crea este primero, luego se determiniza y se suele utilizar la versin determinizada, ya que la indeterminacin es una cualidad poco deseable en la mayora de las ocasiones. Autmata finito indeterminado
Autmatas finitos indeterminados Autmata finito indeterminado 6 Teora de autmatas y lenguajes formales 1
En el proceso de determinizacin, las claves para hacerlo correctamente son las siguientes: - El estado inicial del autmata determinista el el conjunto de los estados iniciales del indeterminista (I). - Los estados aceptadores del determinista son aquellos que contienen algn aceptador del indeterminista. - La funcin de transicin del determinista tiene en consideracin todas las transiciones definidas para cada uno de los estados del autmata indeterminista, que componen un estado del autmata determinista.
Vemos a continuacin dos ejemplos de ello, el primero en construccin grfica, y el segundo en funcin de transicin a partir de la tabla de funciones de transicin del NFA.
Es necesario saber que cada estado del autmata determinista es un conjunto de estados del autmata indeterminista, en otras palabras cada estado del determinista es un subconjunto del conjunto de estados del indeterminista; si ste tiene N estados, el autmata determinista puede llegar a tener 2 N estados. El crecimiento del nmero de estados puede llegar a ser exponencial, pero ste es el precio que se deber pagar por eliminar el indeterminismo.
3. OPERACIONES CON AUTMATAS FINITOS
La unin de dos lenguajes es tambin un lenguaje regular? Pues efectivamente as es. Si un lenguaje L es regular su complementario (L C ), su inverso (L R ), su cierre de Kleene (L*) y su cierre positivo de Kleene (L + ) tambin son lenguajes regulares. E igualmente la interseccin, unin y producto cartesiano de dos lenguajes regulares da lugar a un tercer lenguaje regular. Con estas propiedades no solo mostramos el inters por las propiedades de los lenguajes regulares, sino que adems se proporcionan herramientas muy tiles para la construccin de autmatas, porque permiten construir autmatas de gran complejidad a partir de autmatas ms simples.
3.1. Autmata finito para el lenguaje complementario
Si en un DFA se intercambian los estados aceptadores por los no aceptadores y viceversa, se obtiene otro DFA que reconoce el complementario del lenguaje aceptado por el primero (ver ejemplo en la figura lateral). Eso s, esta tcnica solo es aplicable a autmatas deterministas, pues en indeterministas pueden dar resultados incorrectos.
3.2. Autmata finito para el lenguaje interseccin: producto cartesiano
Si L1 y L2 son dos lenguajes regulares, su interseccin tambin lo es. Es decir, sin u lenguaje reconoce (como vemos en el ejemplo de la pgina siguiente) las palabras que acaban e a y otro lenguaje las palabras que empiezan por b, su interseccin ser el lenguaje que reconoce las palabras que empiezan por b y acaban en a. Para encontrar estos autmatas es necesario llevar a cabo el producto cartesiano y tratar la tabla de funcin de transicin del autmata. As por ejemplo Procesos de determinizacin Autmata finito para el lenguaje complementario Teora de autmatas y lenguajes formales 1 7
como vemos en las tablas laterales, partimos del estado A1 (estados de inicio en ambas tablas) y construimos dos nuevos estados para ellos el B1 y A2. As continuamos tratando la tabla de transicin hasta que no quedan estados nuevos y solo sern estados aceptadores cuando lo sean en ambos elementos del producto cartesiano. As si en el primer autmata el estado aceptador es B y en el segundo lo es 2, solo puede existir un estado aceptador, que es el <B,2>.
La construccin del producto cartesiano tambin se puede aplicar, sin ninguna modificacin, si alguno o todos los autmatas fuesen indeterministas. No obstante, es recomendable minimizarlos antes para evitar la proliferacin de estados.
3.3. Autmata finito para el lenguaje unin
Existen dos formas de llevar a cabo este lenguaje. Debemos saber que la unin en el ejemplo anterior sera aquel lenguaje capaz de reconocer todas las palabras que empiecen por b o terminen por a. Pues bien este autmata finito se construye de manera anloga al anterior, partiendo del producto cartesiano y de la tabla de transiciones anterior, a excepcin de que: - En el caso de la interseccin, son estados aceptadores los pares en los que cada componente es un estado aceptador. - En el caso actual de la unin, son estados aceptadores los pares en los que cualquiera de los dos componentes sea un estado aceptador.
As los estados aceptadores aumentaran de uno en el caso anterior de la interseccin a 4 en la tabla de transiciones actual, como puede verse en el ejemplo de la figura lateral.
No obstante, existe un segundo mtodo para llevar a cabo la unin que es la adjuncin y que es conveniente llevar a cabo cuando al menos uno de los dos autmatas a unir es indeterminista. Este segundo mtodo consiste en considerar que en lugar de dos autmatas se tiene uno. Tanto si los autmatas de partida son deterministas como si no lo son, el resultado es siempre un autmata indeterminista. Dado que la adjuncin (independientemente del tipo de autmatas de partida) introduce indeterminismo, es preferible llevar a cabo este mtodo cuando existe algn autmata de partida indeterminista, como ya apuntbamos anteriormente.
3.4. Autmata finito para la concatenacin
Dados dos lenguajes regulares L1 y L2, la concatenacin consistira en palabras que tiene una primera parte de L1 y una segunda parte de L2, por ello lo que debemos hacer ser aprovechar el primer autmata para reconocer esta primera parte y cuando se produzca el reconocimiento, saltar al autmata que reconoce L2 e intentar aceptar entonces la palabra. Para concatenar los dos Interseccin: Producto cartesiano Unin: Producto cartesiano
Unin por adjuncin
Autmata finito para la concatenacin 8 Teora de autmatas y lenguajes formales 1
autmatas, aadiremos transiciones a todos los estados del primer autmata que desemboquen en estados aceptadores. Las nuevas transiciones con los mismos smbolos que los originales irn a parar a los estados iniciales del autmata que reconoce el segundo lenguaje. As los pasos por los que debemos concatenar son: - Conectaremos los estados que preceden a los estados aceptadores de A1 con los iniciales de A2 con el mismo smbolo que hacan llegar al estado aceptador en A1. - Si e L1 (algn estado inicial de L1 es aceptador) dejamos entonces como estados iniciales tanto los de A1 como los de A2. En caso contrario solo los estados iniciales de A1 quedarn como estados iniciales del nuevo autmata. - Consideramos como estados aceptadores solo los estados aceptadores del autmata A2.
En el ejemplo de la tabla lateral observamos que conectamos los estados que preceden a los aceptadores del autmata 1 con los iniciales del autmata 2, y para ello realizamos 4 conexiones: dos que parten de A y dos que parten de C. Una vez hecho esto dado que el estado A inicial de A1 es aceptador, tanto los estados de A1 como los de A2 son estados iniciales; y por ltimo, los estados aceptadores son nicamente los del autmata 2.
3.5. Autmata finito para el cierre positivo
El caso del cierre positivo es igual que el de la concatenacin, con la nica salvedad que el autmata 1 y el 2 son el mismo, es decir, es la concatenacin de un lenguaje consigo mismo. Por lo tanto, el mecanismo a seguir es:
- Detectar los estados que preceden a los aceptadores y con qu smbolos. - Se aaden transiciones desde estos estados preaceptadotes hasta los iniciales del autmata con los mismos smbolos. - No es necesario hacer nada ms, pues los estados iniciales y aceptadores son los mismos.
3.6. Autmata finito para el cierre de Kleene
Debemos recordar que el cierre de Kleene es el conjunto de todas las potencias de un lenguaje incluyendo . Por lo tanto primero debemos hallar el cierre positivo como hacamos en el caso anterior y despus adjuntarle el autmata que reconoce . Ciertamente esto aade indeterminismo, pero es que el autmata resultante del paso anterior ya era indeterminado. Como ejemplo llevamos a cabo el autmata que reconoce el lenguaje L={a,a}, ver en la figura lateral.
3.7. Autmata finito para el lenguaje inverso
Si L es un lenguaje regular su lenguaje inverso L R tambin lo es. En este caso probablemente la idea intuitiva consistira en construir un nuevo autmata, intercambiando los papeles de los estados aceptadores y los estados iniciales e invirtiendo el sentido de las transiciones. Pues efectivamente, la idea intuitiva es correcta, y podemos comprobarlo en el ejemplo de la figura lateral, donde a partir de un autmata que reconoce las palabras que acaban con el sufijo bb, se pasa a un autmata que reconoce las palabras que empiezan por el sufijo bb. Este mtodo puede provocar la introduccin de indeterminismo.
Autmata finito para el cierre positivo Autmata finito para el cierre de Kleene Autmata finito para el lenguaje inverso Teora de autmatas y lenguajes formales 1 9
A continuacin se presenta una breve tabla resumen de las operaciones que podemos realizar con los lenguajes:
Lenguaje Abrev. Mtodo Ejemplo Lenguaje complementario L C
Intercambiar estados aceptadores por no aceptadores y viceversa De reconocer palabras que acaban en aa pasaramos a no reconocer las palabras que acaben en aa Lenguaje interseccin L1 L2 - Producto cartesiano - Se parte de un estado de inicio de ambos autmatas - Se crean nuevos estados en la tabla de transicin hasta que ya no quedan estados por tratar - El o los estados aceptadores son aquellos en que los dos componentes del estado son aceptadores en sus respectivos autmatas de origen Un lenguaje reconoce las palabras que empiezan por a y el otro las que acaben por b, la interseccin es un tercer lenguaje que reconoce las palabras que empiezan por a y adems acaban por b. Lenguaje unin L1 L2 - Producto cartesiano y seguimos el mismo mtodo del lenguaje interseccin - La diferencia es que el o los estados aceptadores en este caso con aquellos en los que cualquier componente del estado sea aceptador en su autmata de origen. - Tambin se puede hacer la unin por adjuncin (indeterminismo). Un lenguaje reconoce las palabras que empiezan por a y otro las que acaban por b, la unin es un tercer lenguaje que reconoce las palabras que empiezan por a o acaben por b Concatenacin L1L2 - Se conectan los estados que preceden a los aceptadores de A1 con los iniciales de A2 con el mismo smbolo que hacan llegar al estado aceptador en A1 - Si L1 (algn estado inicial de L1 es aceptador) dejamos entonces como estados iniciales tanto los de A1 como los de A2. En caso contrario solo los estados iniciales de A1 quedarn como estados iniciales del nuevo autmata. - Consideramos como estados aceptadores solo los estados aceptadores del autmata A2. El nuevo lenguaje reconoce palabras que tienen una primera parte de un lenguaje y una segunda parte de un segundo lenguaje. Cierre positivo L +
- Detectar los estados que preceden a los aceptadores y con qu smbolos. - Se aaden transiciones desde estos estados preaceptadotes hasta los iniciales del autmata con los mismos smbolos. - No es necesario hacer nada ms, pues los estados iniciales y aceptadores son los mismos. La misma idea de la concatenacin anterior pero en este caso solo se involucra un nico autmata Cierre de Kleene L* Primero debemos hallar el cierre positivo como hacamos en el caso anterior y despus adjuntarle el autmata que reconoce . L* = L + { } Lenguaje inverso L R
Los estados iniciales pasan a ser estados aceptadores y los aceptadores estados iniciales; adems debemos invertir el sentido de todas las transiciones Pasamos de un autmata que reconoce las palabras acabadas en bb a un autmata inverso que reconoce las palabras que comienzan por bb.
4. MINIMIZACIN DE AUTMATAS FINITOS
La versin mnima de un DFA es otro DFA que reconoce exactamente el mismo lenguaje que el primero, pero que lo hace con el menor nmero posible de estados. Minimizar un DFA es muchas veces una necesidad incuestionable dado que la determinizacin puede provocar que se pase de N a 2 N estados y que la introduccin del indeterminismo es insalvable cuando se utilizan algunos de los mtodos que hemos visto en el apartado anterior.
La idea subyacente para poder minimizar es que pueden existir un grupo de estados cuyos comportamiento pueda reducirse a un nico estado, como vemos 10 Teora de autmatas y lenguajes formales 1
por ejemplo en la figura lateral, donde hemos reducido dos estados a uno solo y con el mismo comportamiento.
Es evidente que dado un lenguaje regular, el autmata mnimo que lo reconoce es mnimo, con lo cual y esto da lugar a la unicidad del autmata mnimo: - Para saber si dos autmatas reconocen el mismo lenguaje, los minimizamos los dos y comparamos los autmatas mnimos resultantes. Si son iguales, podemos afirmar que los dos autmatas originales reconocen el mismo lenguaje. - Para saber si dos lenguajes regulares son el mismo lenguaje, construimos los autmatas que los reconocen, los minimizamos y los comparamos. Si son iguales podemos afirmar que los dos lenguajes originales son el mismo lenguaje.
La construccin del autmata mnimo o cociente es un poco complicada, complicacin que aumentar con el nmero de estados que hayamos de minimizar. Lo que vamos a hacer es separar las clases primero en estados aceptadores y no aceptadores. En cada clase estudiaremos la respuesta de cada uno de los estados que lo componen. Si son el mismo la clase no se dividir, si son distintos la clase se dividir. Una vez halladas las divisiones volvemos a repetir el mismo proceso, hasta que las clases no se dividan ms, y en ese momento construiremos el autmata finito mnimo.
Se estudia de manera ms sencilla con un ejemplo. Tomamos el autmata finito que tenemos en la figura lateral. Buscamos primeramente las clases inducidas por 0, estas clases es el resultado de separar los estados aceptadores de los no aceptadores, y as obtenemos: A={A,H,I} y B={B,C,D,E,F,G}. Ahora estudiamos el comportamiento de los elementos de estas dos clases y llegamos a la siguiente conclusin, buscando las clases inducidas por 1 y al lado y una vez halladas stas, las inducidas por 2
Minimizacin de un DFA DFA a minimizar Teora de autmatas y lenguajes formales 1 11
No vamos a buscar las clases inducidas por 3, aunque habra que hacerlo, ya que sern iguales a las 2; por ello el autmata se construye segn la siguiente tabla de transiciones y da el siguiente autmata:
5. EXPRESIONES REGULARES
Las expresiones regulares nos proporcionan una manera simple y precisa de describir lenguajes regulares. Si es un alfabeto, una expresin regular sobre se define, recursivamente de la siguiente manera: - y son expresiones regulares. - Cada smbolo de es una expresin regular. - Si e1 y e2 son expresiones regulares, entonces e1+e2 es una expresin regular, como tambin lo es e1e2. - Si e es una expresin regular, entonces e* tambin lo es. DFA ya minimizado 12 Teora de autmatas y lenguajes formales 1
Utilizaremos algunas convenciones que nos ahorrarn smbolos a la hora de reducir estas expresiones, as la prioridad de * es la mayor y la de + es la menor. El punto se puede omitir.
Las expresiones regulares y los lenguajes regulares estn muy vinculados, tal como pone de manifiesto el teorema de Kleene: un lenguaje es regular si y solo si, es descrito por una expresin regular; y como tambin sabemos que un lenguaje es regular si y solo si es reconocido por algn autmata finito, nos queda claro que si L es un lenguaje, entonces existe un autmata que lo reconoce si, y solo si, existe una expresin regular que describe L.
Es fundamental para minimizar las expresiones regulares el lema de Arden que afirma que la ecuacin X= AX+B, donde A y B son lenguajes cualesquiera, da como resultado el lenguaje A*B.
Para pasar un autmata finito a una expresin regular no solo hay que poner en marcha los mecanismos anteriores, debemos comenzar con ver el lenguaje asociado a cada estado y que debemos expresar en forma de ecuacin. Para ello nos vamos a servir del ejemplo que se observa en la figura lateral. En primer lugar encontramos el sistema de ecuaciones que describen el autmata:
La = bLa + aLb Lb = aLb + bLa +
La segunda ecuacin, aplicando el lema de Arden queda Lb = a(bLa + ), y sustituyendo este resultado en la primera ecuacin nos queda: La = bLa + a a(bLa + ), reorganizamos para volver a aplicar Arden: La = (b+aa*b)La + aa*; y nos queda entonces: La = (b+aa*b)aa* ; Este ya puede ser un resultado final, pero aun as podemos reducirlo mucho ms, quedndose en (a*b)*aa*.
6. DETERMINACIN DE LA NO REGULARIDAD DE UN LENGUAJE
Enunciado informalmente el lema del bombeo afirma que si L es un lenguaje regular y w pertenece a este lenguaje siendo una palabra lo bastante larga, entonces es inevitable que pase lo siguiente: la palabra w se puede descomponer en tres subpalabras xyz (w=xyz) de manera que xy 2 z pertenece a L, xy 3 z pertenece a L y en general xy n z pertenece a L. En otras palabras, si w es suficientemente larga, entonces todas las palabras resultantes de repetir tantas veces como se quiera una determinada parte central continan perteneciendo a L.
Evidentemente si nos encontramos con un autmata finito con n estados y resulta que w tiene ms smbolos que los n estados de los que se compone el autmata, es evidente que debe pasar por algn estado ms de una vez. Ese estado o estados centrales son los que reconocemos por y, y que se pueden repetir tantas veces como se quiera perteneciendo siempre la palabra resultante al lenguaje L.
Esta condicin es necesaria para la regularidad pero nos podemos encontrar con el caso contrario, la condicin suficiente para la no regularidad:
- Si se detecta que en un lenguaje todas las palabras a partir de una determinada longitud son abombables, esto no significa que el lenguaje sea necesariamente regular. - Pero por otro lado, si se detecta que en un determinado lenguaje es posible encontrar palabras de todas las longitudes posibles que no son abombables, entonces ya se puede afirmar con toda seguridad que el lenguaje no es regular. Operaciones X = AX + B A*B aa* = a +
a* = a + + Ejemplo El lema del bombeo recibe este nombre porque afirma que la parte central (y) de la palabra w=xyz se puede hacer crecer tanto como se quiera sin que esto afecte a la pertenencia de la palabra resultante al lenguaje L. Este hacer crecer la parte central se denomina bombeo de la palabra. Teora de autmatas y lenguajes formales 1 13
Este ltimo planteamiento nos permite afirmar con seguridad la no regularidad de un lenguaje es el contrarrecproco del lema del bombeo y para que ello se de es necesario que:
- Para cada posible longitud, podamos encontrar una palabra de aquella longitud o superior. - Para cada una de las palabras, consideraremos todas las posibles factorizaciones en tres subpalabras x, y y z. - Para cada una de las factorizaciones de cada una de las palabras debemos encontrar una constante que no cumpla que xy n z pertenezca a L.
Si se consigue todo lo anterior, ya se puede afirmar que L no es regular.
El contrarrecproco Recordemos ue cuanto estudibamos lgica AB es lo mismo que BA: Si A es suficiente para B, entonces B es necesario para A. Esto se conoce como ley del contrarrecproco 14 Teora de autmatas y lenguajes formales 1
TEMA 3 GRAMTICAS INCONTEXTUALES Y AUTMATAS CON PILA
1. CONCEPTOS INTRODUCTORIOS
Una gramtica generativa es un conjunto finito de reglas de produccin cuya aplicacin repetida nos proporciona el conjunto de palabras de un determinado lenguaje. Est formada por los cuatro componentes siguientes:
- Un alfabeto V de smbolos no terminales o variables. - Un alfabeto (disyunto del anterior) de smbolos terminales, sern estos smbolos terminales los que ya conocemos a, b, 1, etc. - Un conjunto de pares ordenados de reglas de produccin A B, donde el primer elemento del par A, contiene como mnimo un smbolo de V, y el segundo un smbolo de , o la palabra vaca . Para aplicar una regla de produccin, hay que reconocer en la palabra en curso la subpalabra que coincide con la parte izquierda de la regla de produccin (A) y sustituirla por la parte derecha de la regla de produccin (B). Este proceso de denomina derivacin en un solo paso. - Un smbolo inicial o axioma S que pertenece a V.
Veamos ahora algunos ejemplos:
- S y SaS Habitualmente representamos las variables con letras maysculas (reservando la S para el smbolo inicial) y los smbolos terminales con letras minsculas. Para abreviar la escritura de las reglas de produccin se suelen agrupar en una misma lnea todas las que comparten la misma variable en la parte izquierda separadas por la barra vertical |. As que las dos reglas anteriores seran: S |aS Podemos obtener aplicando de un solo paso la primera regla; a, aplicando una vez la segunda regla y despus la primera; aa aplicando dos veces la segunda y una vez la primera,; y en general a n aplicando n veces la segunda regla y una vez la primera; por tanto L = {a n | n>=0} - S | aSb Obtenemos: S, aSb, aaSbb, aaaSbbb, hasta que nos decidamos a aplicar la primera regla, y asi obtenemos aaabbb, por tanto L = {a n b n | n>=0}
Segn la jerarqua de lenguajes de Chomsky existen 4 tipos de gramticas generativas:
- Tipo 0: Gramticas generales son aquellas que no tienen ningn tipo de restriccin.
- Tipo 1: Gramticas contextuales o sensibles al contexto. Cada regla de produccin tiene la forma xAy x~y, donde x, ~ e y pertenecen a (V)* y entonces S no puede aparecer en la parte derecha de las reglas. Fijmonos en que se llaman sensibles al contexto porque para poder aplicar la regla sobre el smbolo no terminal A, debe tener un contexto determinado, es decir, un conjunto de elementos delante y detrs (en este caso x e y).
- Tipo 2: Gramticas incontextuales o de contexto libre. Cada regla de produccin tiene la forma A~, por lo tanto la sustitucin de la variable A puede hacerse en cualquier contexto.
- Tipo 3: Gramticas regulares: Cada regla de produccin tiene la forma A~B o bien A~, perteneciendo ~ a * y A y B a V. Esta gramtica genera lenguales como los ya estudiados en el tema anterior.
Tema 3 Gramticas incontextuales y autmatas con pila 1. Conceptos introductorios 2. rbol de derivacin y ambigedad 3. Verificacin de gramticas 4. Formas normales 5. Formas normales 6. Propiedades de los lenguajes incontextuales Teora de autmatas y lenguajes formales 1 15
La propiedad ms interesante es la jerarqua de lenguajes respecto al tipo de gramtica que la genera, en que cada uno est incluido estrictamente en la clase anterior. El objetivo de este tema es el estudio de los lenguajes incontextuales, es decir los generados por las gramticas de tipo 2, y dentro de este grupo aquellos que no son regulares (pues stos ya se han visto en el tema anterior).
Los lenguajes incontextuales son los generados por una gramtica incontextual y se podra formular as: L(G) = {w e * | S * w}
Lo cual indica que las palabras w se formarn a travs de * derivaciones partiendo del smbolo inicial S. Forman parte de este lenguaje las cadenas de parntesis balanceados, las expresiones aritmticas bien definidas, los lenguajes tipo a n b n , las frmulas bien formadas de la lgica proposicional, el lenguaje de los palndromos, el lenguaje de todas las palabras que contienen tantas a como b
2. RBOL DE DERIVACIN Y AMBIGEDAD
Para mostrar que una palabra est generada por una gramtica (y que por tanto pertenece al lenguaje generado por la gramtica), damos su derivacin paso a paso. Por ejemplo, en la figura lateral aparecen las reglas de produccin de un lenguaje incontextual y su rbol de derivacin correspondiente para la palabra bbaaab, segn el siguiente tratamiento:
S bAS bAaBS bbAAaB bbaAaB bbaaaB bbaaab
Hemos de darnos cuenta que en la figura lateral si leemos las hojas del rbol de derivacin de izquierda a derecha, obtenemos la palabra anterior bbaaab.
Un rbol es un rbol de derivacin con respecto a una gramtica G, con componentes (, V, P ,S) si se cumplen las siguientes condiciones:
- Cada nodo tiene una etiqueta, que es un smbolo de V. - La etiqueta de la raz del rbol es la variable S. - Si un nodo es interno y tiene la etiqueta A, A debe estar en V. - Si un nodo interno tiene la etiqueta A y sus hijos de izquierda a derecha X1, X2Xn, respectivamente, entonces A X1X2Xn debe ser una regla de produccin de P. - Si un nodo interno tiene la etiqueta , entonces noe s una hoja y es el nico hijo de su padre.
Intuitivamente ya observamos que una palabra es una derivacin de una cierta gramtica (y por tanto pertenece al lenguaje generado por sta) si hay un rbol de derivacin respecto a la gramtica tal que las hojas del rbol ledas de izquierda a derecha forman la palabra. Realmente, lo bueno de aplicas el rbol de derivacin es que queda ms clara la regla de produccin que se aplica sobre cada variable, independientemente del orden en que se haga. Por ello diferentes derivaciones de una misma palabra, pueden quedar representadas en un mismo rbol de derivacin. En el ejemplo anterior de esta misma pgina, tambin podamos aplicar:
S bAS bAaBS bbAAaB bbaAaB bbaaaB bbaaab S bAS bbAAS bbaAS bbaaS bbaaaBS bbaaab
A pesar de aplicar diferentes reglas de derivacin en distinto orden, el rbol de derivacin sera el mismo para las dos. Todas las derivaciones que corresponden a un mismo rbol de derivacin son equivalentes. De aqu podemos definir la Jerarqua de lenguajes
rbol de derivacin S aBs | bAs | A bAA | a B aBB | b
16 Teora de autmatas y lenguajes formales 1
gramtica ambigua como aquella en la que es posible construir dos rboles de derivacin diferentes que corresponden a la misma palabra, y no son dos derivaciones diferentes de la misma palabra. Mientras haya una sola palabra con dos derivaciones diferentes, la gramtica ya se puede considerar ambigua; y por tanto, para demostrar que una gramtica es inambigua, se debe demostrar que no puede haber ninguna palabra en la gramtica que tenga dos rboles de derivacin.
Por ejemplo, la gramtica de la tabla lateral, que general el lenguaje que tiene tantas a como b, es una gramtica ambigua, ya que como se ve en la imagen lateral encontramos dos rboles de derivacin distintos para la palabra baba, y aunque existan ms rboles distintos para otras palabras, ya es una gramtica ambigua.
Para demostrar que una gramtica es inambigua, lo podemos hacer intuitivamente por reduccin al absurdo. Si intentamos encontrar una palabra con dos rboles de derivacin diferentes, llegamos a la conclusin, tras probar con distintas reglas de produccin, que es imposible. Tambin puede ser til intentar construir los dos rboles de derivacin distintos para una misma palabra en paralelo y tratar de aplicar sucesivamente distintas reglas alternativas para una misma variable, descartando los casos en los que quede claro que ya no podemos llegar a la palabra buscada (reduccin al absurdo constructiva).
Hay lenguajes que tienen gramticas ambiguas que lo generan y a la vez tambin gramticas inambiguas. Como regla general nos interesar tener gramticas inambiguas; pero no existe un procedimiento general para encontrar estas gramticas; de hecho existen los llamados lenguajes inherentemente ambiguos, aquellos que solo estn generados por gramticas ambiguas, como pueden ser el lenguaje: L = {aibjck | i=j j=k}
3. VERIFICACIN DE GRAMTICAS
La verificacin de una gramtica es la demostracin de que esta gramtica genera un lenguaje determinado. Es decir, si nos piden un lenguaje que genere una determinada gramtica incontextual, el hecho de encontrarlo no es nada trivial. Para saber si lo hemos hecho bien debemos verificar este lenguaje; no hay un mtodo general para ello, aunque habitualmente se utiliza el razonamiento por induccin, que es el que vamos a aplicar.
Como ejemplo debemos saber si:
S | (S) | SS
es capaz de generar el lenguaje de los parntesis balanceados. Una cierta cadena de parntesis est balanceada si el nmero de parntesis de abrir es igual al de parntesis de cerrar; y si en todos los prefijos de la palabra, el nmero de parntesis abrir es mayor o igual al nmero de parntesis de cerrar.
En este ejemplo debemos demostrar:
1. Toda palabra generada por la gramtica pertenece al lenguaje (satisface las dos condiciones anteriores). 2. Toda palabra que pertenece al lenguaje se puede generar con la gramtica.
Para demostrar que toda palabra pertenece al lenguaje lo demostramos:
1. Lo demostraremos por induccin sobre la longitud de la derivacin: Gramtica ambigua S aSbS | bSaS | Una demostracin por induccin consta de dos pasos: 1. Demostrar que la afirmacin es cierta para un caso base. 2. Suponiendo que la afirmacin sea cierta para un caso general n, demostrar que tambin es cierta para el caso n+1. Teora de autmatas y lenguajes formales 1 17
- Para un caso base, que es la derivacin de cero pasos: S 0 = S; por tanto de forma obvia S verifica las dos condiciones anteriores - Ahora debemos descomponer la derivacin en la dervicacin (n+1)-sima: S n
1
Para la hiptesis de induccin satisface las dos condiciones, y comprobaremos . EL nmero de parntesis de abrir es igual al de cerrar queda demostrado porque si lo cumple, tambin lo cumplir ; con la primera y ltima reglas de produccin est claro, dado que no aparecen parntesis, y con la segunda tambin dado que hay igual nmero de parntesis de abrir que de cerrar. Ahora bien, en relacin con saber que el nmero de parntesis de abrir es mayor o igual al de cerrar, debemos ahora distinguir por separado los 3 subcasos en las reglas de produccin. Tenemos una palabra que cumple la segunda condicin y que contiene como mnimo una variable S y queremos saber si, al aplicar la regla S (S) sobre cualquiera de las variables S de , se continua afirmando que cumple la segunda condicin. La palabra la podemos dividir para ello en B = B1S 2 y =B1(S) 2. Observamos que los prefijos de B1 coinciden en las dos palabras, con lo que cumple la segunda condicin. Los prefijos de B1(S tambin cumplen la segunda condicin y finalmente B1(S)B2 tambin la cumplen. Con todo esto queda demostrado que toda palabra generada por la gramtica es balanceado y por lo tanto pertenece al lenguaje.
2. Ahora toca demostrar que toda palabra que pertenece al lenguaje se puede generar con esta gramtica. - El caso base es la palabra de longitud 0. Y la palabra vaca se puede derivar en un solo paso con la regla S . - Suponemos ahora que toda palabra de longitud menor o igual que n se puede generar con la gramtica y debemos demostrar que una palabra de longitud n+1 tambin se puede generar.
Los problemas de una demostracin surgen cuando la gramtica juega con muchas variables y muchas reglas de produccin; entonces hay una explosin de casos; por ello es conveniente la simplificacin o depuracin de gramticas como paso previo a su verificacin. Cuestin que resolvemos en el apartado siguiente.
4. SIMPLIFICACIN DE UNA GRAMTICA
En este apartado lo que pretendemos es eliminar reglas o elementos intiles de una gramtica con la intencin de simplificarla o depurarla. Eso s, la simplificacin no significa necesariamente reducir o hacer menor la gramtica, al contrario, en la mayora de las ocasiones crecer exteriormente.
Nos vamos a enfrentar a los siguientes procesos:
- Gramtica limpia: o Eliminacin de las reglas de produccin vacas o Eliminacin de las reglas unitarias Variables equivalentes en un primer paso Variables no equivalentes posteriormente. - Gramtica pelada: o Variables que derivan en smbolos terminales. o Seleccin de las variables que aparecen en alguna derivacin a partir de S.
La Gramtica limpia consiste en eliminar las reglas del tipo A (reglas de produccin vacas) y las del tipo A B (unitarias); est claro que si la gramtica 18 Teora de autmatas y lenguajes formales 1
generaba la palabra vaca, al limpiarla dejar de generarla, pero el resto del lenguaje permanecer igual. El proceso de limpieza tiene dos partes:
- Eliminacin de las reglas de produccin vacas: Aadiremos directamente en las reglas lo que se deja de generar al eliminar las reglas vacas. Lo estudiaremos con el ejemplo lateral: o En primer lugar, determinamos las variables anulables; en el ejemplo lateral las variables anulables son B (ya que genera directamente ) e indirectamente BB. o Ampliamos las reglas en las que aparecen variables anulables en la parte derecha aadiendo una regla idntica pero sin la variable anulable. Si as aadimos reglas que ya se encuentran en la parte derecha, evidentemente no la aadimos. Por ejemplo, en el ejemplo lateral tenemos que S genera aBCb, pues como la regla de B ser eliminada, generamos tambin aCb; como tenemos BB, generamos B; en A tenemos aAbB, pues generamos aAb; y quiz en C la ms complicada, al tener bSBa, generaremos bBa, bSa y ba. o Finalmente eliminamos las reglas vacas.
- Eliminacin de las reglas unitarias: Las reglas unitarias son del tipo AB, donde A y B son dos variables cualesquiera. Diferenciamos aqu dos pasos: en primer lugar las variables equivalentes y despus las que no lo son: o Variables equivalentes: Son aquellas en las que AB y BA. Lo que hacemos es eliminar una de ellas, por ejemplo la A y colocar aadir en B todas las reglas de la A. Por supuesto en el resto de reglas de transicin sustituiremos todas las As que aparezcan por Bs. En nuestro ejemplo lateral, rpidamente identificamos la S y la B como variables equivalentes. Por ejemplo de la A se desprende la C, pero como de la C no la A pues no podemos tocarla. Lo que vamos a hacer con S y B es eliminar esta ltima, para eso sus reglas las aadimos a las de la S y sustituimos todas las B por S. o Variables no equivalentes: Procedemos a ordenar el resto de las variables, de tal manera que A < B si A se puede derivar de B. En nuestro ejemplo tanto a partir de A como de S podemos llegar a derivar C y por tanto esta es la palabra ms pequea, pero como ni S ni A se pueden generar, pues nos da igual el orden C<S<A o C<A<S. Si elegimos este ltimo rden, lo que debemos hacer es sustituir las reglas en A que involucren la regla unitaria C aadiendo en A las reglas de C y sustituyendo si aparecen Cs por A; una vez acabado esto sustituiremos en S las regla unitaria C pero sustituyendo las posibles C por S. As si en C aparecen dos reglas de transicin como son bSSa y AA las colocamos en A, y posteriormente esas dos mismas reglas las colocaremos en S y quedarn eliminadas las reglas unitarias.
La Gramtica pelada consiste en eliminar los elementos intiles o sea variables o reglas que no aportan nada a la gramtica, que quitndolas sin ms, no hacen cambiar el conjunto de palabras o lenguaje generado por esa gramtica. Para cada gramtica incontextual que genera un lenguaje no vaco, hay una gramtica pelada que genera ese mismo lenguaje. Para pelar una gramtica hay que seguir dos pasos:
- Identificar las variables a partir de las cuales se puede derivar una palabra de smbolos terminales. En un primer paso identificaremos las variables que generan palabras con smbolos terminales por s mismas. En una segunda vuelta incorporaremos todas las variables que contengan estas variables anteriores y que con ello generen palabras; y as hasta que no podamos aadir ms. Por ejemplo en la tabla lateral y con la gramtica incontextual dada, observamos que C forma una palabra por s misma aunque sea vaca, tambin Eliminacin de las reglas de produccin vacas Gramtica incontextual: S aBCb | BB | aC A aAbB | Ca B | aCS | B C bSBa | AA
Ampliamos las reglas: S aBCb | BB | aC | aCb | B | A aabB | Ca | aAb B | aCS | B | aC C bSBa | AA | bBa | bSa| ba
Eliminacin reglas vacas: S aBCb | BB | aC | aCb | B A aabB | Ca | aAb B aCS | B | aC C bSBa | AA | bBa | bSa| ba Eliminacin de las reglas unitarias Gramtica incontextual: S aBCb | B | aC A aAbB | C B S | aCS | B | C C bSBa | AA
Variables equivalentes S aSCb | aC | aCS | C A aAbS | C C bSSa | AA
Sustitucin C<A: S aSCb | aC | aCS | C A aAbS | bSSa | AA C bSSa | AA
Sustitucin C<A<S: S aSCb | aC | aCS | bSSa | AA A aAbS | bSSa | AA C bSSa | AA Gramtica pelada 1 Gramtica incontextual: S aAb | bDA | AEb A aaA | CabA | DCba B bAB | aaD C | Aa D baba | AD E EbbCB F | bbB | aaA
Identificar variables {C, D, F} {C, D, F, A, B,} {C, D, F, A, B, S}
Resultado: S aAb | bDA A aaA | CabA | DCba B bAB | aaD C | Aa D baba | AD F | bbB | aaA Teora de autmatas y lenguajes formales 1 19
F hace lo propio y adems D puede generar la palabra baba. En esta primera vuelta hemos encontrado estas 3 variables. En una segunda vuelta observamos que a forma DCba, y como D y C estn en el grupo inicial lo aadimos. As continuamos hasta comprobar que la E no se puede aadir; ello implica que la variable E es intil y se puede borrar sin ms; quedando la gramtica con menos variables y reglas de produccin, quitamos todas aquellas reglas en las que apareciese la E, como la tercera regla en S. - Seleccionar las variables que aparecen el alguna derivacin a partir de S: De manera incremental al igual que en el paso anterior ahora partimos de S y anotamos todas las variables que aparecen en las reglas de produccin en S. Con el grupo que encontramos ahora aadimos las que aparecen en esas nuevas palabras y as vamos incrementando el grupo. Por ejemplo, de la tabla lateral en S, extraemos las variables A y D. Ahora buscamos en estas variables y encontramos C. Ya no podemos aadir ms porque en C solo encontramos la A. Con lo cual partiendo de S no podemos llegar nunca a B ni a F; por ello las podemos eliminar tranquilamente y las dems variables no requerirn ningn retoque en sus reglas de transicin puestas dos variables evidentemente no aparecan.
5. FORMAS NORMALES
Una gramtica esta en forma normal si sus variables y reglas estn sujetas a restricciones especiales, sin que esto afecte al lenguaje que ha generado. Las dos formas normales ms utilizadas son la de Chomsky y la de Greibach, que procedemos a estudiar a continuacin:
5.1. Forma normal de Chomsky
Una gramtica est en la forma normal de Chomsky si todas sus reglas de produccin estn en una de las dos formas siguientes:
- A BC - A a
Donde A, B y C son variables y a es un smbolo terminal; adems la forma normal de Chomsky no acepta que haya ms de dos variables por regla de produccin. Los pasos para conseguir la forma normal de Chomsky los relatamos a continuacin con un ejemplo:
- En primer lugar, limpiamos la gramtica (eliminamos las reglas de produccin vacas y unitarias) como ya sabamos hacer en el apartado anterior). - A continuacin introducimos una nueva variable no terminal (B, C, etc) para sustituir todos los smbolos terminales, excepto claro est si la regla solo incluye smbolos terminales. Tras este paso todas las reglas de produccin o contienen smbolos terminales o solo variables. En el ejemplo lateral sustituimos solo las a y b que no estn solas, por tanto en la primera lnea, en la segunda lnea solo la primera B y en la tercera lnea solo la primera a. - En tercer lugar, por cada regla de produccin que tiene ms de dos variables (como CSA en el ejemplo), introducimos una nueva variable que viene a sustituir las dos variables de la derecha por solo una. (Por ejemplo ESA); y as obtenemos la forma normal de Chomsky.
5.2. Forma normal de Greibach
Una gramtica incontextual, est en la forma normal de Greibach si todas sus reglas de produccin son de la forma A a, donde A es una variable, a es Gramtica pelada 2 Gramtica incontextual : S aAb | bDA A aaA | CabA | DCba B bAB | aaD C | Aa D baba | AD F | bbB | aaA
Seleccionar variables: {S} {S, A, D} {S, A, D, C}
Resultado final: S aAb | bDA A aaA | CabA | DCba C | Aa D baba | AD Forma normal de Chomsky Gramtica incontextual: S aSA | SB A bAA | a B aB | b
Sustitucin inicial: S CSA | SB A DAA | a B CB | b C a D b
Reglas > 2 variables: S CE | SB A DF | a B CB | b C a D b E SA F AA 20 Teora de autmatas y lenguajes formales 1
un smbolo terminal y es una concatenacin de variables. Los pasos para su obtencin son los siguientes:
- En primer lugar, limpiamos la gramtica y la pasamos a la forma normal de Chomsky. Una vez hecho esto cambiamos el nombre de las variables numerndolas con subndices; A1, A2, A3 - A continuacin hacemos los cambios necesarios para que las reglas cumplan que en AiAj siempre j>1, por ello nos podemos encontrar con varios casos: o Si i=j debemos introducir una nueva variable Bi para cada caso., y aadiremos las reglas Bi y Bi Bi con la nueva variable como parte izquierda y las reglas Ai Bi, donde es la parte derecha de todas las reglas en que Ai es su parte izquierda. En el ejemplo, tenemos una regla en la primera lnea que dice A1A1A1. Para poder sustituirla debemos introducir una nueva variable B1 y las siguientes cuatro reglas: B1A1 Porque es la parte derecha del A1 inicial. B1A1B1 Igual a la anterior pero con B1 en su parte dcha. A1 A2A3B1 y A1 A2A4B1 Porque A2A3 y A2A4 son dos normas en las que A1 es su parte izquierda, en la primera lnea. o Si i>j se deben aadir nuevas reglas Ai XY, donde X son las partes derechas de todas las reglas con Aj en la parte izquierda. Y quiz debamos repetir este proceso varias veces. En el ejemplo encontramos que A4A1A3, por lo que debemos proceder a sustituir A1, por los valores que tenemos en la primera lnea de reglas de produccin, que son las 4 reglas que hemos creado anteriormente, as la primera regla de produccin de A1 es A2A3, pues sustituimos A4A1A3 por A4(A2A3)A3 y este mismo cambio lo tenemos que hacer con las 3 reglas restantes. Como aun as i sigue siendo mayor que j, procedemos a cambiar A2 que es el nuevo valor j por el valor ( de su regla de produccin. - En tercer lugar, pasamos a sustituir en las variables A desde abajo hasta arriba aquellas que no comiencen por un smbolo terminal. En nuestro ejemplo, solo en la primera lnea no comienzan por un smbolo terminal, pero nosotros los sustituimos por el de A2 que es (. - Por ltimo ahora en B pasamos a sustituir la variable inicial A1 en estos dos casos por todas las 4 reglas de transicin de A1. Como son 4 reglas x2 deberan salirnos 8, pero omitimos dos que nos saldran repetidas; as finalizamos la forma normal de Greibach.
6. AUTMATAS CON PILA
Un autmata con pila es un autmata infinito con control sobre una cinta de entrada, que dispone de una memoria (potencialmente infinita) con estructura de pila (LIFO) en la que almacena smbolos de trabajo. Hay que tener claro que en su versin indeterminista, los autmatas con pila son equivalentes a los lenguajes y gramticas incontextuales; sin embargo los autmatas con pila deterministas solo caracterizan un subconjunto estricto de los lenguajes incontextuales. Tambin es preciso recordar que todo autmata finito no determinista (NFA) tena un equivalente determinista; pero no sucede lo mismo en los autmatas con pila, ya que se pueden realizar ms acciones con el no determinista.
Por tanto, la estructura de un autmata con pila est formada por los siguientes componentes: - Un conjunto finito de estados Q. - Un alfabeto de entrada . - Un alfabeto de pila Z. - Un estado inicial q0 eQ. Gramtica pelada 1 Gramtica incontextual: A1 A2A3 | A2A4 | A1A1 A2 (, A3 ), A4 A1A3
- Un smbolo de fondo de pila zo e Z. - Un conjunto de estados finales F. - Un conjunto de transiciones. La notacin quedar (q, a, z) |- (q, ) que significa intuitivamente que cuando el autmata est en el estado q, leyendo el smbolo a en la cinta de entrada y z es la cima de la pila, se puede desafilar z, despus apilar y mover el cabezal de la cinta una posicin a la derecha y pasar al estado q.
El lenguaje aceptado por un autmata con pila utiliza dos definiciones alternativas: - Aceptacin por pila vaca: Esta definicin acepta las palabras que dejan la pila vaca despus de ser consumidas. El lenguaje aceptado por pila vaca denota el conjunto de las palabras que permiten pasar de la descripcin instantnea inicial a una descripcin instantnea en la que la pila est vaca despus de haber consumido todos los smbolos de la cinta de entrada. - Aceptacin por estado final: Acepta las palabras que llegan a un estado final despus de ser consumidas. El lenguaje aceptado por estado final es el conjunto de las palabras que permiten pasar de la descripcin instantnea inicial a una descripcin instantnea con estado final despus de haber consumido todos los smbolos de la cinta de entrada.
Ambas definiciones son equivalentes y no importa la que se utilice.
Para fijar mejor estos conceptos, vamos a llevar a cabo un ejemplo: Dado el lenguaje de la tabla lateral, el autmata con pila que lo reconoce tiene las 12 transiciones que podemos observar tambin en la tabla: - Esta transicin 1 sirve para reconocer como palabra del lenguaje. - 2 y 3: Son las transiciones que sirven para reconocer el primer smbolo de la palabra (sea a o b) y apilarlo. - 4, 5, 6 y 7: Son las transiciones que sirven para reconocer los restantes smbolos de la primera mitad de la palabra. Es decir si hay una a en la cinta y tenemos una a en la pila, aadimos esa a (transicin 4). - 8 y 9 son transiciones que sirven para reconocer el primer smbolo de la segunda mitad de la palabra y desapilarlo; el autmata ahora transita al estado q1, porque en este punto cambia el comportamiento del autmata. - 10 y 11 son las transiciones que sirven para reconocer los restantes smbolos de la segunda mitad de la palabra. Solo hay dos transiciones porque solo hay dos posibilidades para que la palabra sea palndromo, que en la cinta salga una a y en la pila haya una a; o en la cinta salga una b y en la pila haya una b. - La transicin 12 pasa al estado final y vaca la pila cuando no hay ms smbolos de entrada, se acepta la palabra.
Es obvio que los lenguajes aceptados por un autmata con pila (no determinista) son exactamente los lenguajes incontextuales (generados por una gramtica incontextual). O dicho de otra forma, un lenguaje es incontextual s y solo s, es aceptado por algn autmata con pila: todo lenguaje incontextual tiene un autmata con pila que lo reconoce, y todo lenguaje aceptado por algn autmata con pila es un lenguaje incontextual.
Del prrafo anterior se desprende que siempre se puede construir un autmata con pila a partir de una gramtica incontextual, tal como apreciamos en la tabla lateral.
Autmata con pila L={ww R / w e (a+b)*}
1. (q0, , z0) |- (qf, ) 2. (q0, a, z0) |- (q0, az0) 3. (q0, b, z0) |- (q0, bz0) 4. (q0, a, a) |- (q0, aa) 5. (q0, a, b) |- (q0, ab) 6. (q0, b, a) |- (q0, ba) 7. (q0, b, b) |- (q0, bb) 8. (q0, a, a) |- (q1, ) 9. (q0, b, b) |- (q1, ) 10. (q1, a, a) |- (q1, ) 11. (q1, b, b) |- (q1, ) 12. (q1, , z0) |- (qf, ) Construccin de un autmata con pila S [B | [SB | [BS | [SBS B }
Existe un lema de bombeo para los lenguajes incontextuales muy similar al que tenemos para lenguajes regulares. En su forma contrapositiva nos permite demostrar que un cierto lenguaje no es incontextual. Dice que para todo lenguaje L hay una constante N>=0, tal que si m pertenece al lenguaje L y |m|>=N entonces podemos dividirlo en 5 subpalabras m=uvwxy, tal que: - |vx| = - |vwx| <= N - Para todo i>= 0, uv i wx i y pertenecen al lenguaje L.
Informalmente podemos decir que para todo lenguaje incontextual L, toda palabra suficientemente larga se puede dividir en cinco factores tales que los tres factores centrales no son demasiado largos, el segundo y el cuarto no son nulos y que es igual las veces que dupliquemos simultneamente el segundo y el cuarto factor, porque la palabra continuar perteneciendo al lenguaje. Como ya apuntbamos anteriormente solemos utilizar esta propiedad en su forma contrarrecproca, y decimos que para todo N>=0 hay una palabra m que pertenece al lenguaje L tal que para todas las posibles maneras de dividir m en 5 subpalabras m=uvwxy con |vx| = , |vwx| <= N, existe un i>= 0, tal que uv i wx i y no pertenece al lenguaje L.
No obstante, hay ciertos lenguajes incontextuales en los que el lema del bombeo no permite demostrar que no lo son, para estos casos hay una versin todava ms restringida del lema de bombeo, conocido como lema de Orden que reza que para todo lenguaje incontextual L, hay una constante n>=0, tal que si marcamos cualquier N o ms posiciones de m como distinguidas, entonces podemos dividir la palabra en cinco subpalabras m= uvwxy, tal que: - Las subpalabras v y x tienen como mnimo una posicin distinguida. - Las subpalabrasvwx tienen como mximo N posiciones distinguidas - Para todo i>0 uv i wx i y pertenece a L.
Tambin podemos apreciar la incontextualidad de un lenguaje de forma intuitiva y rpida, y para ello lo que hacemos es razonar sobre el autmata con pila. Por ejemplo en el lenguaje en el que existe el mismo nmero de a , b y c, sabemos que no es un lenguaje incontextual. As, si pensamos en la pila, cuando apilamos a, y luego vienen b y las desapilamos, cuando llegan las c no tenemos ya nada en la pila y por eso el lenguaje no es incontextual.
7.2. Propiedades de cierre
Procedemos a ver como se comportan los lenguajes incontextuales frente a las operaciones bsicas de concatenacin, unin, etc, el inters es elevado ya que puede ayudarnos a construir gramticas para lenguajes incontextuales a travs de lenguajes ms simples, nos puede ayudar adems a demostrar que un determinado lenguaje no es incontextual o que s lo es.
- Unin: Los lenguajes incontextuales son cerrados respecto a la unin, es decir la unin de dos lenguajes incontextuales es un tercer lenguaje incontextual. As en el ejemplo lateral llegamos al lenguaje final a travs de la unin del lenguaje A y del lenguaje B con la regla S A | B que nos permite escoger entre un lenguaje u otro.
- Concatenacin: La concatenacin de dos lenguajes incontextuales es tambin un lenguaje incontextual. EN el ejemplo lateral en el que existentes tantas a como b y tantas c como d, un posible lenguaje para cada uno de ellos es el Gramtica pelada 1 Unin: L={a i b j | i!=j} = L={a i b j | i<j} {a i b j | i>j}
A a | aA | aAb B b | bB 1 bBa
Resultado: S A | B A a | aA | aAb B b | bB 1 bBa
Concatenacin: L={a i b i c j d j | i,j >=1}
A ab | aAb B cd | cBd
Resultado: S AB A ab | aAb B cd | cBd
Teora de autmatas y lenguajes formales 1 23
mostrado en las reglas de transicin A y B, que unidas a la regla S AB, nos permite concaternar estos dos lenguajes.
- La estrella de kleene (*) y el cierre positivo (+): Tambin son lenguajes incontextuales.
- El lenguaje inverso tambin es incontextual.
- La interseccin de dos lenguajes incontextuales no siempre es u lenguaje incontextual. Ahora bien, la interseccin de un lenguaje incontextual y un lenguaje regular, es un lenguaje incontextual.
- La complementacin de dos lenguajes incontextuales no siempre es un lenguaje incontextual.
Texto elaborado a partir de: Teora de autmatas y lenguajes formales I Joan Vancells i Flotats, Enric Sesa i Nogueras, Junio 2003