Vous êtes sur la page 1sur 143

MODULO AUTMATAS Y LENGUAJES FORMALES

Edgar Alberto Quiroga Rojas

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD FACULTAD DE CIENCIAS BSICAS E INGENIERA PROGRAMA INGENIERIA DE SISTEMAS BOGOT D.C., 2008

MODULO AUTMATAS Y LENGUAJES FORMALES

@Copyright Universidad Nacional Abierta y a Distancia

ISBN Autor: Edgar Alberto Quiroga Rojas Diseo Portada Juan Olegario Monroy V. 2008 Centro Nacional de Medios para el Aprendizaje

TABLA DE CONTENIDO.
Primera Unidad Captulos 1. Conceptos Bsicos I. LENGUAJES REGULARES Lecciones 1. Introduccin e Historia. 2. Diferentes Modelos de Computacin. 3. Autmatas y Lenguajes. 4. Lenguajes Regulares 5. Autmata 2. Autmatas Finitos 6. Definicin Formal de Autmatas Finitos 7. Autmatas Finitos Determinsticos (AFD) 8. Autmatas Finitos no Determinsticos (AFND) 9. Autmatas Finitos con Transacciones 10. Lenguaje Aceptado por Autmata Finito 11.Expresiones Regulares 12. Significado de las Expresiones Regulares 13. Autmatas Finitos y Expresiones Regulares 14.Propiedades de los Lenguajes Regulares 15.Equivalencia de Autmatas Finitos Determinsticos y Autmatas Finitos no Determinsticos Lecciones 16. Gramticas Regulares 4. Conceptos Generales 17. Gramticas Regulares y Lenguajes Regulares 18. Gramticas Independientes del Contexto 19. Formas Cannicas para las Gramticas Independientes del Contexto 20. Formas Norlmales 5. Autmatas a Pila II. LENGUAJES INDEPENDIENTES DEL CONTEXTO 21. Definicin de Autmata con Pila 22. Diseo de Autmatas con Pila 23. Combinacin Modular de Autmatas con Pila. 24. Autmatas con Pila y Lenguajes Libres de Contexto 25. Relacin entre los Autmatas de Pila y Lenguajes Libres de Contexto 26. Lema de Bombeo. 27. Propiedades de Clausura de los Lenguajes Libres de Contexto 28. Algoritmos de Decisin para los Lenguajes Libres de Contexto 29. Algoritmos de Pertenencia 30.Problemas Indecibles para Lenguajes Libres de Contexto

3. Expresiones Regulares

Segunda Unidad

Captulos

6. Propiedades de Lenguajes Independientes de Contexto

Tercera Unidad III. LENGUAJES ESTRUCTURADOS POR FRASES

Captulos 31. Definicin. 7. Mquinas de Turing. 32. Funcionamiento de la Mquina de Turing. 33. Diferencias entre un Computador y una Mquina de Turing 34. La Mquina Universal de Turing

35. Codificacin de Mquinas de Turing

INTRODUCCIN
Autmatas y lenguajes formales es un curso de carcter terico, que se inscribe en el campo de formacin profesional bsico del Programa de Ingeniera de Sistemas con un valor acadmico de tres crditos. El estudiante en el desarrollo de este curso demuestra la asimilacin de los conceptos y mecanismos fundamentales para la definicin de lenguajes (expresiones regulares, gramticas independientes del contexto y gramticas generales), los tres tipos de mquinas correspondientes para su reconocimiento (autmatas finitos, autmatas a pila y maquinas de Turing) y las propiedades fundamentales de las familias de lenguajes por ellos definidas, tambin realiza el estudio de las condiciones necesarias para que un lenguaje sea de un tipo determinado. El curso es principalmente terico, jugando un papel secundario la implementacin de algoritmos. Al final del curso el estudiante debe demostrar la asimilacin de los conceptos fundamentales mediante la resolucin de problemas acerca de los mismos, as como la realizacin de algunas prcticas en el computador. Este curso toma como base el avance de los lenguajes de programacin de alto y bajo nivel para propiciar la distincin entre lenguajes formales con reglas sintcticas y semnticas rgidas, concretas y bien definidas, de los lenguajes naturales como el ingls o el espaol, donde la sintaxis y la semntica no se pueden controlar fcilmente. Los intentos de formalizar los lenguajes naturales, lleva a la construccin de gramticas, como una forma de describir estos lenguajes, utilizando para ello reglas de produccin para construir las frases del lenguaje. Se puede entonces caracterizar un lenguaje mediante las reglas de una gramtica adecuada. Los temas sobre autmatas, computabilidad, e incluso la complejidad algortmica fueron incorporndose al currculo de ciencias de la computacin de diferentes universidades desde la dcada de los 60, esta incorporacin puso de manifiesto que las ciencias de la computacin haban usado gran cantidad de ideas de muy diferentes campos para su desarrollo, y que la investigacin sobre aspectos bsicos poda cooperar y aumentar los avances de la computacin. Como elemento determinante en el curso es importante que se tengan en cuenta los conceptos matemticos bsicos de teora de conjuntos, funciones, relaciones y principios fundamentales de la lgica, ya que stos temas no son tratados como temticas en el mdulo, pero que tienen gran importancia en el curso.

INTENCIONALIDADES FORMATIVAS
PROPSITOS Facilitar la apropiacin de conocimientos para que el estudiante pueda adquirir los conceptos bsicos de la teora de los lenguajes formales y la relacin que existe con la teora de autmatas. Lograr que el estudiante entienda el alto nivel de abstraccin de las mquinas secuenciales y los autmatas y que conozca los elementos y las tcnicas necesarias para la construccin de las fases iniciales de un compilador. OBJETIVOS Estudiar los conceptos fundamentales de la teora de autmatas y lenguajes formales, para la descripcin de ellos. Conocer la correspondencia entre mquinas, gramticas y lenguajes, los problemas en los que las teoras tienen aplicacin o que han motivado su construccin. COMPETENCIAS El estudiante conoce la jerarqua de modelos de mquinas computacionales y su funcionamiento, as como la jerarqua de las gramticas formales y de los lenguajes correspondientes. El estudiante conoce la correspondencia entre mquinas, gramticas y lenguajes para poder construir compiladores. El estudiante desarrolla la capacidad de abstraccin y anlisis terico en relacin con la teora de lenguajes para adquirir herramientas para algunas asignaturas de la carrera. METAS Al terminar el curso el estudiante: Debe demostrar la asimilacin de los conceptos fundamentales mediante la resolucin de problemas acerca de los mismos, y de la realizacin de algunas practicas con el apoyo del computador. Desarrollar la capacidad de entender los problemas computacionales, y lograr una comprensin total de algunos tpicos de la ciencia de la computacin; especficamente en modelos bsicos de conmutabilidad y complejidad de problemas.

INTRODUCCIN
Los lenguajes pueden describirse como elementos que se generan, como cadenas a partir de cadenas sencillas, con el uso de operaciones de cadenas o el desarrollo del lenguaje mismo, que se puede generar con otros lenguajes ms sencillos mediante operaciones de conjuntos. Los Lenguajes ms sencillos son los considerados lenguajes regulares, es decir, los que se pueden generar a partir de lenguajes de un elemento con la aplicacin de ciertas operaciones estandar realizadas un nmero finito de veces. Estos son pues los lenguajes que pueden reconocer los dispositivos llamados Autmatas finitos (AF) que son mquinas de cmputo con memoria muy restringida. En esta unidad se considera como segundo aspecto la idea de que un lenguaje no sea regular, ademas de proporcionar un modelo sencillo de computacin que se puede generalizar en las unidades siguientes. Con las caracterizaciones anteriores y otras de los lenguajes regulares se obtienen y estudian algoritmos para traducir una descripcin de un lenguaje a otra descripcin de un tipo distinto; se acumula experiencia en el uso de mtodos formales para describir lenguajes y se intenta responder a preguntas acerca de ellos, son preguntas y ejercicios sencillos con sus respuestas y que permiten determinar la utilidad de los lenguajes regulares en aplicaciones del mundo real.

OBJETIVO GENERAL
Reconocer los lenguajes regulares, autmatas finitos y su aplicacin.

OBJETIVOS ESPECIFICOS
Estudiar la aplicacin de los lenguajes regulares y los autmatas finitos. Adquirir las habilidades necesarias para desarrollar autmatas y mquinas que reconozcan lenguajes o computen funciones. Distinguir los diferentes tipos de lenguajes formales existentes.

LECCION 1. - INTRODUCCION E HISTORIA1


oy en da parece que no existe ningn lmite a lo que un computador puede llegar a hacer, y da la impresin de que cada vez se pueden resolver nuevos y ms difciles problemas. El hombre ha tratado de buscar procedimientos y mquinas que le faciliten la realizacin de clculos (aritmticos primero, y otros ms complejos posteriormente). El avance tecnolgico para representar datos y/o informacin por un lado, y el diseo de nuevas formas de manejarlos, propician el desarrollo de dispositivos y mquinas de calcular. Un aspecto importante en el desarrollo de los computadores, es sin duda, su aplicacin para resolver problemas cientficos y empresariales. Esta aplicacin hubiese resultado muy difcil sin la utilizacin de procedimientos que permiten resolver estos problemas mediante una sucesin de pasos claros, concretos y sencillos, es decir algoritmos. El avance de las matemticas permite la utilizacin de nuevas metodologas para la representacin y manejo de la informacin. Por otro lado, aparece el intento de los matemticos y cientficos para obtener un procedimiento general para resolver cualquier problema (matemtico) claramente formulado. Es lo que podramos llamar El problema de la computacin terica. El avance de la tecnologa y de las matemticas, y ms en concreto de la teora de conjuntos y de la lgica, permiten plantearse aspectos de la computacin en 3 caminos. a) Computacin terica. Autmatas, Funciones Recursivas, ... b) Computadores digitales. Nuevas tecnologas, nuevos lenguajes, .... c) Intentos de modelizar el cerebro biolgico 1. Redes Neuronales (intentan modelizar el "procesador") 2. Conjuntos y Lgica Difusa (representar y manejar la informacin) Uno de los principales factores determinantes de la profunda revolucin experimentada en el mbito de la ciencia, la tcnica y la cultura de nuestros das es el desarrollo de la informtica. La palabra informtica (Informacin automtica), es un nombre colectivo que designa un vasto conjunto de teoras y
1

MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En: http://decsai.ugr.es/~smc/docencia/mci/automata.pdf NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales En: http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf

tcnicas cientficas desde la matemtica abstracta hasta la ingeniera y la gestin administrativa cuyo objeto es el diseo y el uso de los computadores. Pero el ncleo terico ms slido y fundamental de todo ese conjunto de doctrinas y prcticas es la llamada Teora de la Computabilidad, formalmente elaborada en los aos 30 y 40 gracias a los descubrimientos de lgicos matemticos como Gdel, Turing, Post, Church, y Kleene, aunque sus orgenes ms remotos datan de antiguo, con el planteamiento de la cuestin de saber si, al cabo de cierto esfuerzo, el hombre podra llegar a un extremo en la investigacin en que, eventualmente, toda clase de problemas pudiera ser atacado por un procedimiento general de forma que no requiriera el ms leve esfuerzo de imaginacin creadora para llevarlo a cabo. Si todo queda determinado as en detalle, entonces sera obviamente posible abandonar la ejecucin del mtodo a una mquina, mxime si la mquina en cuestin es totalmente automtica. Esta idea, ambiciosa sin duda, ha influido poderosamente en diferentes pocas el desarrollo de la ciencia. El propsito inicial es hacer precisa la nocin intuitiva de funcin calculable; esto es, una funcin cuyos valores pueden ser calculados de forma automtica o efectiva mediante un algoritmo, y construir modelos tericos para ello (de computacin). As podemos obtener una comprensin ms clara de esta idea intuitiva; y solo de esta forma podemos explorar matemticamente el concepto de computabilidad y los conceptos relacionados con ella, tales como decibilidad, etc... La teora de la computabilidad puede caracterizarse, desde el punto de vista de las Ciencias de la Computacin, como la bsqueda de respuestas para las siguientes preguntas: 1)Qu pueden hacer los computadores (sin restricciones de ningn tipo )? 2) Cuales son las limitaciones inherentes a los mtodos automticos de clculo?. El primer paso en la bsqueda de las respuestas a estas preguntas est en el estudio de los modelos de computacin. Los comienzos de la Teora. La Tesis de Church-Turing Los modelos abstractos de computacin tienen su origen en los aos 30, bastante antes de que existieran los computadores modernos, en el trabajo de los lgicos Church, Gdel, Kleene, Post, y Turing. Estos primeros trabajos han tenido una profunda inuencia no solo en el desarrollo terico de las Ciencias de la Computacin, sino que muchos aspectos de la prctica de la computacin que son ahora lugar comn de los informticos, fueron presagiados por ellos; incluyendo la existencia de computadores de propsito general, la posibilidad de interpretar programas, la dualidad entre software y hardware, y la representacin de lenguajes por estructuras formales basados en reglas de produccin. El punto de partida de estos primeros trabajos fueron las cuestiones fundamentales que D. Hilbert formul en 1928, durante el transcurso de un congreso internacional:

1.-Son completas las matemticas, en el sentido de que pueda probarse o no cada aseveracin matemtica? 2.-Son las matemticas consistentes, en el sentido de que no pueda probarse simultaneamente una aseveracin y su negacin? 3.-Son las matemticas decidibles, en el sentido de que exista un mtodo denido que se pueda aplicar a cualquier aseveracin matemtica, y que determine si dicha aseveracin es cierta?. La meta de Hilbert era crear un sistema matemtico formal completo, consistente", en el que todas las aseveraciones pudieran plantearse con precisin. Su idea era encontrar un algoritmo que determinara la verdad o falsedad de cualquier proposicin en el sistema formal. A este problema le llam el Entscheidungs problem. Por desgracia para Hilbert, en la dcada de 1930 se produjeron una serie de investigaciones que mostraron que esto no era posible. Las primeras noticias en contra surgen en 1931 con K. Gdel y su Teorema de Incompletitud: "Todo sistema de primer orden consistente que contenga los teoremas de la aritmtica y cuyo conjunto de (nmeros de Gdel de) axiomas sea recursivo no es completo." Como consecuencia no ser posible encontrar el sistema formal deseado por Hilbert en el marco de la lgica de primer orden, a no ser que se tome un conjunto no recursivo de axiomas, hecho que escapaba a la mente de los matemticos. Una versin posterior y ms general del teorema de Gdel elimina la posibilidad de considerar sistemas deductivos ms potentes que los sistemas de primer orden, demostrando que no pueden ser consistentes y completos a la vez. Un aspecto a destacar dentro del teorema de incompletitud de Gdel, fu la idea de codicacin. Se indica un mtodo (numeracin de Gdel) mediante el cual se asigna un nmero de cdigo (entero positivo) a cada frmula bien formada del sistema (fbf) y a cada sucesin nita de frmulas bien formadas, de tal modo que la fbf o sucesin nita de fbf se recupera fcilmente a partir de su nmero de cdigo. A travs de este cdigo, los enunciados referentes a enteros positivos, pueden considerarse como enunciados referentes a nmeros de cdigo de expresiones, o incluso referentes a las propias expresiones. Esta misma idea fu posteriormente utilizada para codicar algoritmos como enteros positivos, y as poder considerar un algoritmo, cuyas entradas fuesen enteros positivos, como un algoritmo cuyas entradas fuesen algoritmos. El siguiente paso importante lo constituye la aparicin casi simultnea en 1936 de varias caracterizaciones independientes de la nocin de calculabilidad efectiva, en los trabajos de Church, Kleene, Turing y Post. Los tres primeros mostraban problemas que eran efectivamente indecidibles; Church y Turing probaron adems que el Entscheidungsproblem era un problema indecidible. Church propuso la nocin de funcin -denible como funcin efectivamente calculable. La demostracin de teoremas se convierte en una transformacin de

una cadena de smbolos en otra, en clculo lambda, segn un conjunto de reglas formales. Este sistema result ser inconsistente, pero la capacidad para expresarcalcular funciones numricas como trminos del sistema llam pronto la atencin de l y sus colaboradores. Gdel habia recogido la idea de Herbrand de que una funcin f podra denirse por un conjunto de ecuaciones entre trminos que incluian a la funcin f y a smbolos para funciones previamente denidas, y precis esta idea requiriendo que cada valor de f se obtenga de las ecuaciones por sustitucin de las variables por nmeros y los trminos libres de variables por los valores que ya se habian probado que designaban. Esto dene la clase de las funciones recursivas de Herbrand-Gdel. En 1936, Church hace un esquema de la demostracin de la equivalencia entre las funciones -denibles y las funciones recursivas de Herbrand-Gdel (esta equivalencia tambin haba sido probada por Kleene ); y aventura que estas iban a ser las nicas funciones calculables por medio de un algoritmo a travs de la tesis que lleva su nombre, y utilizando la nocin de funcin -denible, di ejemplos de problemas de decisin irresolubles, y demostr que el Entscheidungsproblem era uno de esos problemas. Por otra parte Kleene, pocos meses despues, demuestra formalmente la equivalencia entre funciones -denible y funciones recursivas de Herbrand-Gdel, y d ejemplos de problemas irresolubles utilizando la nocin de funcin recursiva. La tercera nocin de funcin calculable proviene del matemtico ingls A. Turing, quin argument que la tercera cuestin de Hilbert (el Entscheidungsproblem) poda atacarse con la ayuda de una mquina, al menos con el concepto abstracto de mquina. Turing seal que haba tenido xito en caracterizar de un modo matemticamente preciso, por medio de sus mquinas, la clase de las funciones calculables mediante un algoritmo, lo que se conoce hoy como Tesis de Turing. Aunque no se puede dar ninguna prueba formal de que una mquina pueda tener esa propiedad, Turing di un elevado nmero de argumentos a su favor, en base a lo cual present la tesis como un teorema demostrado. Adems, utiliz su concepto de mquina para demostrar que existen funciones que no son calculables por un mtodo denido y en particular, que el Entscheidungsproblem era uno de esos problemas. Cuando Turing conoci los trabajos de Church-Kleene, demostr que los conceptos de funcin -denible y funcin calculable por medio de una mquina de Turing coinciden. Naturalmente a la luz de esto la Tesis de Turing resulta ser equivalente a la de Church.

Finalmente, cabe resear el trabajo de E. Post. Este estaba interesado en marcar la frontera entre lo que se puede hacer en matemticas simplemente por procedimientos formales y lo que depende de la comprensin y el entendimiento. De esta forma, Post formula un modelo de procedimiento efectivo a travs de los llamados sistemas deductivos normales. Estos son sistemas puramente formales en los que puede deducirse sucesiones nitas de smbolos como consecuencia de otras sucesiones nitas de smbolos por medio de un tipo normalizado de reglas y a partir de un conjunto de axiomas. As pues, dada una sucesin nita de smbolos como entrada, las reglas permiten convertirla en una sucesin nita de salida. En su artculo, Post demostr resultados de incompletitud e indecibilidad en estos sistemas. Los resultados hasta ahora citados, se reeren a funciones totales. La existencia de algoritmos que con determinadas entradas nunca terminan, condujo de forma natural a considerar funciones parciales. Kleene fu el primero en hacer tal consideracin en 1938. El estudio de estas funciones ha mostrado la posibilidad de generalizar todos los resultados anteriores a funciones parciales. Por otro lado, el estudio de las funciones parciales calculables ha resultado esencial para el posterior desarrollo de la materia. Posteriormente, se demostr la equivalencia entre lo que se poda calcular mediante una mquina de Turing y lo que se poda calcular mediante un sistema formal en general. A la vista de estos resultados, la Tesis de Church-Turing es aceptada como un axioma en la teora de la computacin, y ha servido como punto de partida en la investigacin de los problemas que se pueden resolver mediante un algoritmo. 1.1.1. Problemas no computables Usando la codicacin de Gdel, se demostr que era posible construir una mquina de propsito general, es decir, capaz de resolver cualquier problema que se pudiese resolver mediante un algoritmo. Dicha mquina tendra como entrada el entero que codicara el algoritmo solucin del problema y la propia entrada del problema, de tal forma, que la mquina aplicara el algoritmo codicado a la entrada del problema. Esta hipottica mquina puede considerarse como el padre de los actuales computadores de proposito general. Una de las cuestiones ms estudiadas en la teora de la computabilidad ha sido la posibilidad de construir algoritmos que nos determinen si un determinado algoritmo posee o no una determinada propiedad. As, sera interesante responder de forma automtica a cuestiones como: Calculan los algoritmos A y B la misma funcin? (Problema de la equivalencia) Parar el algoritmo A para una de sus entradas? (Problema de la parada) Parar el algoritmo A para todas sus entradas? (Problema de la totalidad)

Calcula el algoritmo A la funcin f? (Problema de la vericacin?) etc . . .

En un principio se fueron obteniendo demostraciones individuales de la no computabilidad de cada una de estas cuestiones, de forma que se tena la sensacin de que casi cualquier pregunta interesante acerca de algoritmos era no computable. A pesar de esto, y como consecuencia de la existencia de un programa universal hay otras muchas cuestiones interesantes que se han demostrado computables. El identicar los problemas que son computables y los que no lo son tiene un considerable inters, pues indica el alcance y los lmites de la computabilidad, y as demuestra los lmites tericos de los computadores. Adems de las cuestiones sobre algoritmos, se han encontrado numerosos problemas menos "generales"que han resultado ser no computables. Como ejemplo se cita: Dcimo problema de Hilbert. Una ecuacin diofntica es la ecuacin de los ceros enteros de un polinomio con coecientes enteros. Se pregunta si hay un procedimiento efectivo que determine si una ecuacin diofntica tiene o no solucin. Por otro lado, son muchos los problemas interesantes que se han demostrado computables. Todas las funciones construidas por recursividad primitiva o minimalizacin a partir de funciones calculables resultan ser calculables como consecuencia de los trabajos de Church y Turing. Pero adems, otras funciones ms complejamente denidas tambin son computables. Como ejemplo ms interesante de aplicacin de este tipo de recursin tenemos la funcin de Ackermann

LECCION 2. - DIFERENTES MODELOS DE COMPUTACION2


onsideraremos las Ciencias de la Computacin como un cuerpo de conocimiento cuyo principal objetivo es la resolucin de problemas por medio de un computador. Se pueden citar las siguientes deniciones: a) La ACM (Asociation Computing Machinering): la disciplina Ciencias de la Computacin es el estudio sistemtico de los procesos algortmicos que
2

MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En: http://decsai.ugr.es/~smc/docencia/mci/automata.pdf NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales En: http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf

describen y transforman informacin: teora, anlisis, diseo, eciencia, implementacin, y aplicacin. b) Norman E. Gibbs y Allen B. Tucker (1986) indican que: no debemos entender que el objetivo de las Ciencias de la Computacin sea la construccin de programas sino el estudio sistemtico de los algoritmos y estructura de datos, especcamente de sus propiedades formales. Para ser ms concretos (A. Berztiss 1987), se consideran las Ciencias de la computacin, como un cuerpo de conocimiento cuyo objetivo es obtener respuestas para las siguientes cuestiones: A) Qu problemas se pueden resolver mediante un computador? B) Cmo puede construirse un programa para resolver un problema? C) Resuelve realmente nuestro programa el problema? D) Cuanto tiempo y espacio consume nuestro problema? Al Analizar en profundidad los 4 puntos anteriores se llega a descubrir explcitamente los diferentes contenidos abarcados por las Ciencias de la Computacin. El planteamiento de la primera cuestin conduce a precisar el concepto de problema y de lo que un computador es capaz de realizar. Durante muchos aos se crey que si un problema poda enunciarse de manera precisa, entonces con suciente esfuerzo y tiempo sera posible encontrar un algoritmo o mtodo para encontrar una solucin (o tal vez podra proporcionarse una prueba de que tal solucin no existe). En otras palabras, se crea que no haba problema que fuera tan intrnsecamente difcil que en principio nunca pudiera resolverse. Uno de los grandes promotores de esta creencia fu el matemtico David Hilbert (1862 - 1943), quien en un congreso mundial arm: "Todo problema matemtico bien denido debe ser necesariamente susceptible de un planteamiento exacto, ya sea en forma de una respuesta real a la pregunta planteada o debido a la constatacin de la imposibilidad de resolverlo, a lo que se debera el necesario fallo de todos los intentos... " El principal obstculo que los matemticos de principios de siglo encontraban al plantearse estas cuestiones era concretar con exactitud lo que signica la palabra algoritmo como sinnimo de mtodo para encontrar una solucin. La nocin de algoritmo era intuitiva y no matemticamente precisa. Las descripciones dadas por los primeros investigadores tomaron diferentes formas, que pueden clasicarse ampliamente del siguiente modo: (a) mquinas computadoras abstractas (denidas de modo preciso), (b) construcciones formales de procedimientos de cmputo, y (c) construcciones formales productoras de clases de funciones.

Las dos primeras caracterizaciones se reeren a la propia nocin de algoritmo (en principio no hay gran diferencia entre ambas). La ltima d descripciones de la clase de funciones computables mediante un algoritmo. Ejemplos de (a) son los Autmatas y las mquinas de Turing, (diseadas por Turing en los aos 30). Un ejemplo de (b) son los sistemas de Thue. Por ltimo, las funciones recursivas constituyen el ejemplo clsico de (c). El resultado crucial es que las diversas caracterizaciones de las funciones (parciales) computables mediante un algoritmo condujeron todas a una misma clase, a saber, la clase de las funciones parciales recursivas. Esto es algo suceptible de demostracin, y que ha sido demostrado. Lo que no es suceptible de demostracin es que la clase de las funciones parciales recursivas coincida con la clase de las funciones computables mediante un algoritmo. No obstante, a la luz de las evidencias a favor y de la falta de evidencias en contra, aceptamos la Tesis de Church que arma la equivalencia de ambas clases. Se clasican los problemas segn que siempre sea posible encontrar la solucin por medio de un algoritmo (problemas computables) que no existan algoritmos que siempre produzcan una solucin (problemas no computables). Surge de modo inmediato la cuestin B) de como disear un programa (algoritmo especicado para poder ser ejecutado por un computador) que resuelva un problema dado. En la primera poca del desarrollo informtico los programas dependan intrnsecamente del computador utilizado, pues se expresaban en lenguaje mquina, directamente interpretable por el computador. Surgi entonces la necesidad de idear otros mecanismos para construir y expresar los programas. El hilo conductor de tales mecanismos fu la abstraccin: separar el programa del computador y acercarlo cada vez ms al problema. Los subprogramas empezaron ya a usarse a principios de los 50, dando lugar posteriormente al primer tipo de abstraccin, la procedimental. A principios de los 60, se empezaron a entender los conceptos abstractos asociados a estructuras de datos bsicas pero an no se separaban los conceptos de las implementaciones. Con el nacimiento en esta poca de los primeros lenguajes de alto nivel, Fortran p.ej., se lleg a la abstraccin sintctica, al abstraerse la semntica de las expresiones matemticas y encapsular el acceso a ellas a travs de la sintaxis propia del lenguaje. En cualquier caso con el desarrollo de estos lenguajes de alto nivel se solventaron los problemas de exibilidad en la comunicacin con el computador, y se empezaron a estudiar los algoritmos de forma independiente del computador concreto en que se probaran y del lenguaje concreto en que se expresaran. Aparece la necesidad de traducir los programas escritos en lenguajes de alto nivel al lenguaje mquina, de forma automtica, y se buscan mquinas o procedimientos que puedan reconer el lxico y la sintxis de dichos lenguajes.

Hay que comentar que no hay un algoritmo para ensear a disear algoritmos, y que muchas veces el proceso de construccin puede llegar a ser muy poco disciplinado. No obstante, existen tcnicas de diseo de algoritmos, que vienen a ser modelos abstractos de los mismos aplicables a gran variedad de problemas reales. Una vez construido un programa para un problema, surge la cuestin C) de si lo resuelve realmente. Normalmente los programadores prueban sus programas sobre una gran cantidad de datos de entrada para descubrir la mayora de los errores lgicos presentes, aunque con este mtodo (al que suele denominarse de prueba y depuracin) no se puede estar completamente seguro de que el programa no contiene errores. Necesitaramos para realizar la vericacin formal, reglas que describan de forma precisa el efecto que cada instruccin tiene en el estado actual del programa, para, aplicando dichas reglas demostrar rigurosamente que lo que hace el programa coincide con sus especicaciones. En cualquier caso y cuando la prueba formal resulte muy complicada, podemos aumentar la conanza en nuestro programa realizando en el mismo los "test cuidadosos de que hablbamos al principio. Alcanzado este punto, ya tenemos un programa que en principio es solucin de un problema. Se plantea entonces la duda de que hacer en caso de que para el mismo problema seamos capaces de construir otro programa que tambin lo resuelva. Cmo decidirnos por una u otra solucin? o ms an, qu ocurre si el programa an siendo correcto consume demasiados recursos y es inaceptable?. La respuesta viene dada a travs del punto D) en nuestro recorrido: el anlisis del tiempo y espacio que necesita una solucin concreta; en denitiva, el estudio de la eciencia de los programas, midiendo la complejidad en espacio, por el nmero de variables y el nmero y tamao de las estructuras de datos que se usan, y la complejidad en tiempo por el nmero de acciones elementales llevadas a cabo en la ejecucin del programa. Los problemas computables fueron entonces clasicados en dos tipos: problemas ecientemente computables, para los que exista un algoritmo eciente; y problemas intratables, para los que no existen algoritmos ecientes. La existencia de problemas intratables no ha sido probada, si bin se han encontrado muchas evidencias a su favor. Otra clase de problemas a considerar es la clase NP3 de los problemas para los que existia un algoritmo no determinstico en tiempo polinomial, y dentro de ella, los problemas NP- completos.

la N de no determinista; la P de polinmico. Problemas que no pueden ser resueltos por la mquinas determinsticas o computadores actuales.

Los intentos (desde los aos 40) de construir mquinas para modelizar algunas de las funciones del cerebro biolgico, ha permitido desarrollar mquinas capaces de aprender (y reproducir) funciones (o sistemas) cuya forma (o comportamiento) se desconoce, pero s conocemos una serie de ejemplos que reejan esta forma (o comportamiento). Estas mquinas llamadas Redes Neuronales Articiales tambin aportan su granito de arena al desarrollo de la computacin. A menudo se utiliza la tcnica de reducir un problema a otro para comprobar si tiene o no solucin efectiva. La estrategia en el caso de la respuesta negativa es la siguiente, si se reduce de forma efectiva un problema sin solucin efectiva a otro problema (mediante una funcin calculable), entonces este nuevo problema tampoco tendr solucin efectiva. La razn es muy simple, si tuviese solucin efectiva, componiendo el algoritmo solucin con el algoritmo de transformacin obtendramos una solucin para el problema efectivamente irresoluble. En sentido inverso, si se reduce un problema a otro para el que se conoce una solucin efectiva, entonces componiendo se obtiene una solucin para el primer problema. Esta tcnica es muy til y se utiliza a menudo. Por otro lado, esta msma tcnica es muy empleada en el campo de la complejidad algortmica. La Complejidad Algortmica trata de estudiar la relativa dicultad computacional de las funciones computables. Rabin (1960) fu de los primeros en plantear la cuestin Qu quiere decir que f sea ms difcil de computar que g? J. Hartmanis and R.E. Stearns, en On the computational complexity of algorithms (1965) introducen la nocin fundamental de medida de complejidad denida como el tiempo de computacin sobre una mquina de Turing multicinta. Despus surge la denicin de funciones computables en tiempo polinomial, y se establece una jerarqua de complejidad, los problemas NP, NP-duros y NPcompletos

LECCION 3. - AUTOMATAS Y LENGUAJES


l desarrollo de los ordenadores en la dcada de los 40, con la introduccin de los programas en la memoria principal, y posteriormente con los lenguajes de programacin de alto nivel, propician la distincin entre lenguajes formales, con reglas sintcticas y semnticas rgidas, concretas y bin definidas, de los lenguajes naturales como el ingls, donde la sintaxis y la semntica no se pueden controlar fcilmente. Los intentos de formalizar los lenguajes naturales, lleva a la construccin de gramticas, como una forma de describir estos lenguajes, utilizando para ello reglas de produccin para construir las frases del lenguaje. Se puede entonces caracterizar un Lenguaje, mediante las reglas de una gramtica adecuada. Los trabajos de McCulloch y Pitts (1943) describen los clculos lgicos inmersos en un dispositivo (neurona artificial) que haban diseado para simular la actividad

de una neurona biolgica. El dispositivo reciba o no, una serie de impulsos elctricos por sus entradas que se ponderaban, y produca una salida binaria (existe pulso elctrico o no). Las entradas y salidas se podan considerar como cadenas de 0 y 1, indicando entonces la forma de combinar la cadena de entrada para producir la salida. La notacin utilizada es la base para el desarrollo de expresiones regulares en la descripcin de conjuntos de cadenas de caracteres. C. Shannon (1948) define los fundamentos de la teora de la informacin, y utiliza esquemas para poder definir sistemas discretos, parecidos a los autmatas finitos, relacionndolos con cadenas de Markov, para realizar aproximaciones a los lenguajes naturales. J. Von Neumann (1948) introduce el termino de teora de autmatas, y dice sobre los trabajos de McCulloch-Pitts: ... el resultado ms importante de McCulloch-Pitts, es que cualquier funcionamiento en este sentido, que pueda ser definido en todo, lgicamente, estrctamente y sin ambiguedad, en un nmero finito de palabras, puede ser realizado tambin por una tal red neuronal formal. La necesidad de traducir los algortmos escritos en lenguajes de alto nivel al lenguaje mquina, propicia la utilizacin de mquinas como los autmatas de estados finitos, para reconocer si una cadena determinada pertenece (es una frase de) a un lenguaje concreto, usando para ello la funcin de transicin de estados, mediante un diagrama de transicin o una tabla adecuada. Tenemos as otra forma de caracterizar los lenguajes, de acuerdo con mquinas automticas que permitan reconocer sus frases. S.C. Kleene, en 1951, realiza un informe (solicitado por la RAND Corporation) sobre los trabajos de McCulloch-Pitts, que se publica en 1956. En este informe, Kleene demuestra la equivalencia entre lo que l llama "dos formas de definir una misma cosa", que son los sucesos regulares (que se pueden describir a partir de sucesos bases y los operadores unin, concatenacin e iteracin (*) ), es decir, expresiones regulares, y sucesos especificados por un autmata finito. Rabin y Scott (1960) obtienen un modelo de computador con una cantidad finita de memoria, al que llamaron autmata de estados finitos. Demostraron que su comportamiento posible, era bsicamente el mismo que el descrito mediante expresiones regulares, desarrolladas a partir de los trabajos de McCulloch y Pitts. No obstante lo dicho, para un alfabeto concreto, no todos los lenguajes que se pueden construir son regulares. Ni siquiera todos los interesantes desde el punto de vista de la construccin de algortmos para resolver problemas. Hay entonces muchos problemas que no son calculables con estos lenguajes. Esto pone de manifiesto las limitaciones de los autmatas finitos y las gramticas regulares, y propicia el desarrollo de mquinas reconocedoras de otros tipos de lenguajes y de las gramticas correspondientes, asociadas a los mismos.

En 1956, la Princenton Univ. Press publica el libro Automata Studies, editado por C. Shannon y J. McCarthy, donde se recogen una serie de trabajos sobre autmatas y lenguajes formales. D. A. Huffman (1954) ya utiliza conceptos como estado de un autmata y tabla de transiciones. N. Chomsky (1956) propone tres modelos para la descripcin de lenguajes, que son la base de su futura jerarqua de los tipos de lenguajes, que ayud tambin en el desarrollo de los lenguajes de programacin. Para ello intent utilizar autmatas para extraer estructuras sintcticas (....el ingls no es un lenguaje de estados finitos.) y dirige sus estudios a las gramticas, indicando que la diferencia esencial entre autmatas y gramticas es que la lgica asociada a los autmatas (p.e., para ver la equivalencia entre dos de ellos) es Decidible, mientras que la asociada a las gramticas no lo es. Desarrolla el concepto de gramtica libre del contexto, en el transcurso de sus investigaciones sobre la sintxis de los lenguajes naturales. Backus y Naur desarrollaron una notacin formal para describir la sintxis de algunos lenguajes de programacin, que bsicamente se sigue utilizando todava, y que poda considerarse equivalente a las gramticas libres del contexto. Consideramos entonces los lenguajes libres (independientes) del contexto, y las gramticas libres del contexto y los autmatas con pila, como forma de caracterizarlos y manejarlos. Los distintos lenguajes formales que se pueden construir sobre un alfabeto concreto pueden clasificarse en clases cada vez ms amplias que incluyen como subconjunto a las anteriores, de acuerdo con la jerarqua establecida por Chomsky en los aos 50. Se puede llegar as, de una forma casi natural a considerar las mquinas de Turing, establecidas casi 20 aos antes, como mquinas reconocedoras de los lenguajes formales dependientes del contexto o estructurados por frases, e incluso a interpretar la Tesis de Turing como que un sistema computacional nunca podr efectuar un anlisis sintctico de aquellos lenguajes que estn por encima de los lenguajes estructurados por frases, segn la jerarqua de Chomsky". En consecuencia, podemos utilizar la teora de autmatas y los conceptos relativos a gramticas sobre distintos tipos de lenguajes, para decidir (si se puede) si una funcin (o problema) es calculable, en base a que podamos construir un algoritmo solucin mediante un lenguaje que puede ser analizado mediante alguna mquina de las citadas anteriormente. Los temas sobre autmatas, computabilidad, e incluso la complejidad algortmica fueron incorporndose a los curriculum de ciencias de la computacin de diferentes universidades, mediada la dcada de los 60. Esta incorporacin puso de manifiesto que las ciencias de la computacin haban usado gran cantidad de

ideas de muy diferentes campos para su desarrollo, y que la investigacin sobre aspectos bsicos poda cooperar y aumentar los avances de la computacin. 1.3.1. Qu es un lenguaje formal?4 En matemticas, lgica, y las ciencias computacionales, un lenguaje formal es un conjunto de palabras (cadenas de caracteres) de longitud finita formadas a partir de un alfabeto (conjunto de caracteres) finito. Informalmente, el trmino lenguaje formal se utiliza en muchos contextos (en las ciencias, en derecho, etc.) para referirse a un modo de expresin ms cuidadoso y preciso que el habla cotidiana. Hasta finales de la dcada de 1990, el consenso general era que un lenguaje formal, era en cierto modo la versin lmite de este uso antes mencionado: un lenguaje tan formalizado que poda ser usado en forma escrita para describir mtodos computacionales. Sin embargo, hoy en da, el punto de vista de que la naturaleza esencial de los lenguajes naturales (sin importar su grado de formalidad en el sentido informal antes descrito) difiere de manera importante de aquella de los verdaderos lenguajes formales, gana cada vez ms adeptos. Un posible alfabeto sera, digamos, {a, b}, y una cadena cualquiera sobre este alfabeto sera, por ejemplo, ababba. Un lenguaje sobre este alfabeto, que incluyera esta cadena, sera: el conjunto de todas las cadenas que contienen el mismo nmero de smbolos a que b, por ejemplo. La palabra vaca (esto es, la cadena de longitud cero) es permitida y frecuentemente denotada mediante o . Mientras que el alfabeto es un conjunto finito y cada palabra tiene una longitud tambin finita, un lenguaje puede bien incluir un nmero infinito de palabras. Algunos ejemplos varios de lenguajes formales:

el conjunto de todas las palabras sobre {a, b} el conjunto {an: n es un nmero primo} el conjunto de todos los programas sintcticamente vlidos en un determinado lenguaje de programacin el conjunto de entradas para las cuales una particular mquina de Turing se detiene.

Los lenguajes formales pueden ser especificados en una amplia variedad de maneras, como:
4

cadenas producidas por una gramtica formal (ver Jerarqua de Chomsky) cadenas producidas por una expresin regular

Definicin de Wikipedia, En http://es.wikipedia.org/wiki/Lenguaje_formal

cadenas aceptadas por un autmata, tal como una mquina de Turing

Una pregunta que se hace tpicamente sobre un determinado lenguaje formal L es cun difcil es decidir si incluye o no una determinada palabra v. Este tema es del dominio de la teora de la computabilidad y la teora de la complejidad computacional. Por contraposicin al lenguaje propio de los seres vivos y en especial el lenguaje humano, considerados lenguajes naturales, se denomina lenguaje formal a los lenguajes artificiales propios de las matemticas o la informtica, los lenguajes artificiales son llamados lenguajes formales (incluyendo lenguajes de programacin). Sin embargo, el lenguaje humano tiene una caracterstica que no se encuentra en los lenguajes de programacin: la diversidad. En 1956, Noam Chomsky cre la Jerarqua de Chomsky para organizar los distintos tipos de lenguaje formal. Un Lenguaje normal o natural, como por ejemplo el lenguaje espaol u ingls, son la clase de lenguajes que han evolucionado con el paso del tiempo y tienen por fin la comunicacin humana. Este tipo de lenguajes estn en constante evolucin y sus reglas gramaticales solo pueden ser explicadas y no determinadas en cuanto a la estructura del lenguaje. En contraste, un lenguaje formal esta definido por reglas preestablecidas y se ajustan con rigor a ellas, ejemplos son los lenguajes computacionales como C o Pascal. Como especificar la sintaxis de un lenguaje?: Se utiliza la jerarqua de chomsky; la jerarqua de Chomsky es una clasificacin jerrquica de distintos tipos de gramticas formales que generan lenguajes formales. Esta jerarqua fue descrita por Noam Chomsky en 1956. Define cuatro familias de gramticas y lenguajes estas son: 0,1,2,3 gramticas sin restricciones, de contexto, de contexto libre y regulares.

Gramticas de tipo 0 (sin restricciones), que incluye a todas las gramticas formales. Estas gramticas generan todos los lenguajes capaces de ser reconocidos por una mquina de Turing. Los lenguajes son conocidos como lenguajes recursivamente enumerables. Ntese que esta categora es diferente de la de los lenguajes recursivos, cuya decisin puede ser realizada por una mquina de Turing que se detenga. Gramticas de tipo 1 (gramticas sensibles al contexto) generan los lenguajes sensibles al contexto. Estas gramticas tienen reglas de la forma con A un no terminal y , y cadenas de terminales y no terminales. Las cadenas y pueden ser vacas, pero no puede serlo. La regla est permitida si S no aparece en la parte derecha de ninguna

regla. Los lenguajes descritos por estas gramticas son exactamente todos aquellos lenguajes reconocidos por una mquina de Turing no determinista cuya cinta de memoria est acotada por un cierto nmero entero de veces sobre la longitud de entrada.

Gramticas de tipo 2 (gramticas libres del contexto) generan los lenguajes independientes del contexto. Las reglas son de la forma con A un no terminal y una cadena de terminales y no terminales. Estos lenguajes son aquellos que pueden ser reconocidos por un autmata con pila. Gramticas de tipo 3 (gramticas regulares) generan los lenguajes regulares. Estas gramticas se restringen a aquellas reglas que tienen en la parte izquierda un no terminal, y en la parte derecha un solo terminal, posiblemente seguido de un no terminal. La regla tambin est permitida si S no aparece en la parte derecha de ninguna regla. Estos lenguajes son aquellos que pueden ser aceptados por un autmata finito. Tambin esta familia de lenguajes pueden ser obtenidas por medio de expresiones regulares.

LECCION 4. LENGUAJES REGULARES5 os lenguajes regulares se llaman as porque sus palabras contienen regularidades o repeticiones de los mismos componentes, como por ejemplo en el lenguaje L1 siguiente: L1 = {ab, abab, ababab, abababab, . . .} En este ejemplo se aprecia que las palabras de L1 son simplemente repeticiones de ab cualquier nmero de veces. Aqu la regularidad consiste en que las palabras contienen ab algn nmero de veces. Otro ejemplo ms complicado sera el lenguaje L2: L2 = {abc, cc, abab, abccc, ababc, . . .} La regularidad en L2 consiste en que sus palabras comienzan con repeticiones de ab, seguidas de repeticiones de c. Similarmente es posible definir muchos otros lenguajes basados en la idea de repetir esquemas simples. Esta es la idea bsica para formar los lenguajes Regulares. Adicionalmente a las repeticiones de esquemas simples, vamos a considerar que los lenguajes finitos son tambin regulares por definicin. Por ejemplo, el lenguaje L3 = {anita, lava, la, tina} es regular. Finalmente, al combinar lenguajes regulares unindolos o concatenndolos, tambin se obtiene un lenguaje regular. Por ejemplo, L1 L3 = {anita, lava, la, tina, ab, abab, ababab, abababab, . . .} es regular.

BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html

Tambin es regular una concatenacin como L3L3 = {anitaanita, anitalava, anitala, anitatina, lavaanita, lavalava, lavala, lavatina, . . .} Las cadenas no nulas, en un alfabeto se crean por concatenacion de cadenas sencillas, las de longitud 1. Tambien es posible ver la concatenacin como una operacin en lenguajes, de modo que se podran considerar los lenguajes obtenidos por concatenacin de lenguajes sencillos de la forma {a}, donde a , No obstante si la concatenacin es la nica operacin permitida, entonces solo pueden obtenerse cadenas o lenguajes que contengan cadenas sencillas, agregar la operacin de conjuntos de unin posibilita tener lenguajes de varios elementos y si se aade la operacin * cerradura o estrella de Kleene que se deriva naturalmente de la concatenacin, tambien es factible producir lenguajes infinitos. Se adicionan dos lenguajes ms a los lenguajes sencillos de la forma {a}: el lenguaje vacio y el lenguaje {} cuyo nico elemento es la cadena nula. Un lenguaje regular en un alfabeto es uno que puede obtenerse de esos lenguajes bsicos con las operaciones de unin, concatenacin y * de Kleene. As pues es factible describir un lenguaje regular como una frmula explcita. Es comun que sta ltima se simplifique un poco, al omitir las llaves {} o substituirlas con parntesis y al reemplazar con +, de lo cual resulta una expresin regular. 1.4.1. Definicin formal de Lenguaje Regular Un lenguaje L es regular si y slo si se cumple al menos una de las condiciones siguientes: L es finito L es la unin o la concatenacin de otros lenguajes regulares R1 y R2, L = R1 R2 L = R1R2 respectivamente. L es la cerradura o estrella de Kleene de algn lenguaje regular, L = R*. Sea un alfabeto. El conjunto de lenguajes regulares sobre se define como: (a) es un lenguaje regular. (b) {} es un lenguaje regular. (c) Para todo a , {a} es un lenguaje regular. (d) Si A y B son lenguajes regulares, entonces AB, AB y A* son lenguajes regulares. (e) Ningn otro lenguaje sobre es regular. Por la definicin anterior, el conjunto de los lenguajes regulares sobre esta formado por el lenguaje vaco, los lenguajes unitarios incluido {} y todos los lenguajes obtenidos a partir de la unin, concatenacin y cerradura o estrella de Kleene.

Ejemplo: Sea = {a, b}, lo siguiente es cierto: (i) (ii) (iii) (iv) (v) (vi) (vii) (viii) y {} son lenguajes regulares {a} y {b} son lenguajes regulares. {a, b} es regular pues resulta de la unin de {a} y {b}. {ab} es regular pues resulta de la concatenacin de {a} y {b}. {a, ab, b} es regular (unin de ii) y iv)). {ai i 0} es regular. {aibj i 0 y j 0} es regular. {(ab)i i 0} es regular.

LECCION 5. - AUTOMATA6
a palabra autmata evoca algo que pretende imitar las funciones propias de los seres vivos, especialmente relacionadas con el movimiento, por ejemplo el tpico robot antropomorfo. En el campo de los Traductores, Procesadores, Compiladores e Intrpretes, lo fundamental no es la simulacin del movimiento, sino la simulacin de procesos para tratar informacin. La informacin se codifica en cadenas de smbolos, y un autmata es un dispositivo que manipula cadenas de smbolos que se le presentan a su entrada, produciendo otras tiras o cadenas de smbolos a su salida. El autmata recibe los smbolos de entrada, uno detrs de otro, es decir secuencialmente. El smbolo de salida que en un instante determinado produce un autmata, no slo depende del ltimo smbolo recibido a la entrada, sino de toda la secuencia o cadena, que ha recibido hasta ese instante. Todo lo anterior conduce a definir un concepto fundamental: estado de un autmata. El estado de un autmata es toda la informacin necesaria en un momento dado, para poder deducir, dado un smbolo de entrada en ese momento, cual ser el smbolo de salida. Es decir, conocer el estado de un autmata, es lo mismo que conocer toda la historia de smbolos de entrada, as como el estado inicial, estado en que se encontraba el autmata al recibir el primero de los smbolos de entrada. El autmata tendr un determinado nmero de estados (pudiendo ser infinitos), y se encontrar en uno u otro segn sea la historia de smbolos que le han llegado. Se define configuracin de un autmata a su situacin en un instante. Se define movimiento de un autmata como el transito entre dos configuraciones. Si un autmata se encuentra en un estado determinado, recibe un smbolo tambin

6 CUEVAS LOVALLE, Juan Manuel LENGUAJES, GRAMTICAS Y AUTMATAS. Segunda Edicin, (Espaa), 2001.

determinado, producir un smbolo de salida y efectuar un cambio o transicin a otro estado (tambin puede quedarse en el mismo estado). El campo de estudio de los Traductores, Procesadores e Intrpretes son los lenguajes y las gramticas que los generan. Los elementos del lenguaje son sentencias, palabras, etc... Formadas a partir de un alfabeto o vocabulario, que no es otra cosa que un conjunto finito de smbolos. Establecidas las reglas gramaticales, una cadena de smbolos pertenecer al correspondiente lenguaje si tal cadena se ha formado obedeciendo esas reglas. Entonces un autmata reconocedor de ese lenguaje, funciona de tal forma que cuando reciba a su entrada una determinada cadena de smbolos indica si dicha cadena pertenece o no al lenguaje. Tambin se mostrar como existe un tipo de autmata para reconocer cada uno de los tipos de lenguajes generados por las correspondientes gramticas. 1.5.1. Definicin formal de autmata Un autmata es una quntupla A = ( E, S, Q, f, g ) donde : E = {conjunto de entradas o vocabulario de entrada} S = {conjunto de salidas o vocabulario de salida} Q = {conjunto de estados} E es un conjunto finito, y sus elementos se llaman entradas o smbolos de entrada. S es un conjunto finito, y sus elementos se llaman salidas o smbolos de salida. Q es el conjunto de estados posibles, puede ser finito o infinito. f es la funcin de transicin o funcin del estado siguiente, y para un par del conjunto E Q devuelve un estado perteneciente al conjunto Q. E Q es el conjunto producto cartesiano de E por Q. g es la funcin de salida, y para un par del conjunto E Q, devuelve un smbolo de salida del conjunto S. Representacin de autmatas Los autmatas se pueden representar mediante: - Tabla de transiciones. - Diagrama de Moore. Tabla de transiciones. Las funciones f y g pueden representarse mediante una tabla, con tantas filas como estados y tantas columnas como entradas. As por ejemplo se puede representar el autmata A = ( E, S, Q, f, g ) donde E = {a,b}, S = {0,1}, Q = {q1,q2,q3} y las funciones f y g se pueden representar por :

f q1 q2 q3

a Q1 Q3 Q3

b q2 q2 q1

g q1 q2 q3

a 0 0 1

b 1 0 0

As se tiene que f(a ,q1)=q1 ;g (a ,q1)=0 ; o tambin f(a ,q2)=q3 ; y g (a ,q3)=1 . Ambas funciones tambin se pueden representar en una misma tabla de la siguiente forma: f/g a b q1 q2 q3 q1/0 q3/0 q3/1 q2/1 q2/0 q1/0

Diagramas de Moore. Los diagramas de Moore son otra forma de representar las funciones de transicin y salida de un autmata. El diagrama de Moore es un grafo orientado en el que cada nodo corresponde a un estado; y si f( , qi) = qj y g( , qi) = s existe un arco dirigido del nodo qi al correspondiente qj, sobre el que se pone la etiqueta / s, tal y como se muestra en la figura 1.

Figura 1: Diagrama de Moore As continuando con el ejemplo, el autmata se representa con el diagrama de Moore de la figura 2.

Figura 2: Ejemplo de Diagrama de Moore

Para comprender el significado de Autmata Finito7, tendremos en cuenta el trmino mquina, que evoca algo hecho en metal, usualmente ruidoso y grasoso, que ejecuta tareas repetitivas que requieren de mucha fuerza o velocidad o precisin. Ejemplos de estas mquinas son las embotelladoras automticas de refrescos. Su diseo requiere de conocimientos en mecnica, resistencia de materiales, y hasta dinmica de fluidos. Al disear tal mquina, el plano en que se le dibuja hace abstraccin de algunos detalles presentes en la mquina real, tales como el color con que se pinta, o las imperfecciones en la soldadura. El plano de diseo mecnico de una mquina es una abstraccin de sta, que es til para representar su forma fsica. Sin embargo, hay otro enfoque con que se puede modelar la mquina embotelladora: cmo funciona, en el sentido de saber qu secuencia de operaciones ejecuta. As, la parte que introduce el lquido pasa por un ciclo repetitivo en que primero introduce un tubo en la botella, luego descarga el lquido, y finalmente sale el tubo para permitir la colocacin de la cpsula (corcholata). El orden en que se efecta este ciclo es crucial, pues si se descarga el lquido antes de haber introducido el tubo en la botella, el resultado no ser satisfactorio. Las mquinas que se estudian son abstracciones matemticas que capturan solamente el aspecto referente a las secuencias de eventos que ocurren, sin tomar en cuenta ni la forma de la mquina ni sus dimensiones, ni tampoco si efecta movimientos rectos o curvos, etc. En esta parte se estudian las mquinas abstractas ms simples, los autmatas finitos, las cuales estn en relacin con los lenguajes regulares, como veremos a continuacin. LECCION 6. - DEFINICIN FORMAL DE AUTMATAS FINITOS

l describir una mquina de estados finitos en particular, debemos incluir las informaciones que varan de un autmata a otro; es decir, no tiene sentido incluir descripciones generales aplicables a todo autmata. Estas informaciones son exactamente las que aparecen en un diagrama de estados y transiciones, como se presenta ms adelante.

BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html

Un autmata nito es una quintupla M =(Q, A, , q0, F) en que: Q es un conjunto nito llamado conjunto de estados A es un alfabeto llamado alfabeto de entrada es una aplicacin llamada funcin de transicin :QAQ q0 es un elemento de Q, llamado estado inicial F es un subconjunto de Q, llamado conjunto de estado nales.

Figura 3: Automata Finito Desde el punto de vista intuitivo, podemos ver un autmata nito como una caja negra de control (ver Figura 3), que va leyendo smbolos de una cadena escrita en una cinta, que se puede considerar ilimitada por la derecha. Existe una cabeza de lectura que en cada momento est situada en una casilla de la cinta. Inicialmente, esta se sita en la casilla de ms a la izquierda. El autmata en cada momento est en uno de los estado de Q. Inicialmente se encuentra en q0. En cada paso, el autmata lee un smbolo y segn el estado en que se encuentre, cambia de estado y pasa a leer el siguiente smbolo. As sucesivamente hasta que termine de leer todos los smbolos de la cadena. Si en ese momento la mquina est en un estado nal, se dice que el autmata acepta la cadena. Si no est en un estado nal, la rechaza. Otra definicin: Una mquina de estados finitos M es un quntuplo (K,, , s, F), donde: K es un conjunto de identificadores (smbolos) de estados; es el alfabeto de entrada; s K es el estado inicial; F K es un conjunto de estados finales; : K x K es la funcin de transicin, que a partir de un estado y un smbolo del Alfabeto obtiene un nuevo estado. (que puede ser el mismo en que se encontraba)

Otra Definicin: Un Autmata Finito se define por una quntupla:< Q, , q0, , A > , en donde Q es el conjunto de estados es el alfabeto del lenguaje q0 es el estado inicial es la funcin de transicin A es el conjunto de estados de aceptacin. Ejemplo: Tomando el diagrama anterior:
Q = { , 0 , 1 , No } ; = {0,1} q0 = ; A ={ 1 }

Funcin de transicin: : Q x Q
E S T A D O S 0 1 NO ENTRADAS 0 1 0 NO 0 NO 1 1 1 NO

La funcin de transicin indica a qu estado se va a pasar sabiendo cul es el estado actual y el smbolo que se est leyendo. Es importante notar que es una funcin y no simplemente una relacin; esto implica que para un estado y un smbolo del alfabeto dados, habr un y slo un estado siguiente. Esta caracterstica, que permite saber siempre cul ser el siguiente estado, se llama determinismo. Los autmatas nitos son capaces de reconocer solamente, un determinado tipo de lenguajes, llamados Lenguajes Regulares, que pueden ser caracterizados tambin, mediante un tipo de gramticas llamadas tambin regulares. Una forma adicional de caracterizar los lenguajes regulares, es mediante las llamadas expresiones regulares, que son las frases del lenguaje, construidas mediante operadores sobre el alfabeto del mismo y otras expresiones regulares, incluyendo el lenguaje vaco. Estas caracterizaciones de los lenguajes regulares se utilizan en la prctica, segn que la situacin concreta est favorecida por la forma de describir el lenguaje de cada una de ellas. Los autmatas nitos se utilizan generalmente para vericar que las cadenas pertenecen al lenguaje, y como un analizador en la traduccin de algortmos al computador.

Las gramticas y sus reglas de produccin se usan frecuentemente en la descripcin de la sintaxis de los lenguajes de programacin que se suele incluir en los manuales correspondientes. Por otro lado, las expresiones regulares proporcionan una forma concisa y relativamente sencilla (aunque menos intuitiva) para describir los lenguajes regulares, poniendo de maniesto algunos detalles de su estructura que no quedan tan claros en las otras caracterizaciones. Su uso es habitual en editores de texto, para bsqueda y sustitucin de cadenas. En denitiva, las caracterizaciones sealadas de los lenguajes (formales) regulares, y por tanto ellos mismos, tienen un uso habitual en la computacin prctica actual. Ejemplo de autmata finito: Se va a disear un autmata que reconozca el paso de un alumno por un curso, por ejemplo, Autmatas y lenguajes formales. Representar las distintas decisiones que se realizan y si se aprueba o aplaza el curso. Se controla que no haya ms de dos convocatorias por ao y se termina cuando se aprueba el curso.Habr un alfabeto de entrada contendr los siguientes elementos: P: El alumno se presenta al examen. N: El alumno no se presenta al examen. A: El alumno aprueba el examen. S: El alumno aplaza un examen.

Figura 4: Recorrido de un alumno por una asignatura La secuencia se ilustra en la gura 4. Comienza en un estado, Inicio. A continuacin decide si presenta en Febrero o no. Si no presenta y aprueba, termina. Si no presenta o aplaza, se decide si se presenta en septiembre, pero como hay que controlar que un estudiante no se presente a tres convocatorias en un ao, los estados son distintos en ambos casos. Si en septiembre aprueba,

termina. Si suspende o aplaza y ya se haba presentado en febrero, comienza de nuevo. En otro caso, puede decidir si presenta en diciembre. Si aprueba, termina y si suspende, empieza de nuevo. Este esquema corresponde a un autmata finito. Se caracteriza por una estructura de control que depende de un conjunto nito de estados. Se pasa de unos a otros leyendo smbolos del alfabeto de entrada. Este autmata representa una versin simplicada del problema real, ya que no controla el nmero total de convocatorias. Un autmata para todos los cursos se puede construir uniendo autmatas para cada una de los cursos, pero teniendo en cuenta relaciones como requisitos entre los mismos. Ejemplo Supongamos el autmata M =(Q, A, q0, , F) donde Q ={q0, q1, q2} A ={a, b}

Figura 5: Diagrama de transicin, Autmata de estado finito La funcin de transicin est denida por las siguientes igualdades: (q0, a)=q1 (q0, b)=q2 (q1, a)=q1 (q1, b)=q2 (q2, a)=q1 (q2, b)=q0 F ={q1} El diagrama de transicin viene expresado en la Figura 5.

LECCION 7. - AUTOMATAS FINITOS DETERMINISTICOS8 (AFD)

n autmata finito determinstico (AFD) se dene como una quntupla M=(Q,V,,q0,F),donde:

Q es un conjunto finito de estados V es el alfabeto de entrada q0 es el estado inicial F Q es el conjunto de estados finales : Q V Q es la funcin de transicin El nombre determinista viene de la forma en que est definida la funcin de transicin: si en un instante t la mquina est en el estado q y lee el smbolo a entonces, en el instante siguiente t + 1 la mquina cambia de estado y sabemos con seguridad cual es el estado al que cambia, que es precisamente (q, a). El AFD es inicializado con una palabra de entrada w como sigue: 1. w se coloca en la cinta de entrada, con un smbolo en cada celda 2. el cabezal de lectura se apunta al smbolo mas a la izquierda de w 3. el estado actual pasa a ser q0

Una vez que se ha inicializado el AFD, comienza su ejecucin sobre la palabra de entrada. Como cualquier computador tiene un ciclo de ejecucin bsico: 1. se lee el smbolo actual, que es el apuntado por el cabezal de lectura. Si el cabezal apunta a una celda vacila entonces el AFD termina su ejecucin, aceptando la palabra en caso de que el estado actual sea final y rechazando la palabra en caso contrario. Esto ocurre cuando se ha ledo toda la palabra de entrada, y se produce una situacin similar a tener una condicin fin de fichero en la ejecucin de un programa.
MARIN MORALES, Roque y otros, Teora de autmatas y lenguajes formales En: Universidad de Murcia http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf
8

2. se calcula el estado siguiente a partir del estado actual y del smbolo actual segn la funcin de transicin, esto es, (estado actual, smbolo actual) = estado siguiente 3. el cabezal de lectura se mueve una celda a la derecha 4. el estado siguiente pasa a ser el estado actual y vuelve al paso 1 La funcin de transicin de un AFD se puede representar de dos formas: mediante una tabla de transicin o mediante un diagrama de transicin. Cada fila corresponde a un estado q Q El estado inicial se precede del smbolo Cada estado final se precede del smbolo # Cada columna corresponde a un smbolo de entrada a V En la posicin (q, a) esta el estado que determine (q, a) Los nodos se etiquetan con los estados El estado inicial tiene un arco entrante no etiquetado Los estados finales estn rodeados de un doble crculo Habr un arco etiquetado con a desde el nodo qi al qj si (qi, a) = qj

Tabla de transicin

Diagrama de transicin

Ejemplo: Suponga que se tiene el autmata finito determinista dado por M = ({q0, q1, q2} , {0, 1} , , q0, {q1}) donde la funcin : {q0, q1, q2} {0, 1} {q0, q1, q2} viene dada por: (q0, 0) = q0 (q0, 1) = q1 (q1, 0) = q0 (q1, 1) = q2 (q2, 0) = q2 (q2, 1) = q1 La tabla de transicin correspondiente a este autmata ser: q0 # q1 q2 0 q0 q0 q2 1 q1 q2

q1

y el diagrama de transicin correspondiente se muestra a continuacin.

Figura 6: Diagrama de transicin del ejemplo Nota El diagrama de transicin de un AFD tiene por cada nodo un solo arco etiquetado con cada uno de los smbolos del alfabeto. Algunos autores consideran que la funcin de transicin puede ser parcial, es decir, no estar definida para algn (q, a). En ese caso se dice que el AFD es incompleto, y en el diagrama de trancisin faltan entonces los arcos correspondientes a los casos no definidos de la funcin de transicin. En este mdulo se Nosotros considera que los AFDs son completos. Ejemplo: Se considera la expresin regular r=(11 + 110)*0 Se intenta construir un AF que acepte el lenguaje correspondiente L que corresponde a la expresin regular (a+b)*(ab+bba)(a+b)*) La solucion del ejercicio luego de los analisis correspondientes, en su diagrama de transicin queda de la siguiente forma

Figura 7: Autmata finito que acepta L3

LECCION 8. AUTOMATAS FINITOS NO DETERMINISTICOS (AFND)

na extensin a los autmatas finitos deterministas es la de permitir que de cada nodo del diagrama de estados salga un nmero de flechas mayor o menor que As, se puede permitir que falte la flecha correspondiente a alguno de los smbolos del alfabeto, o bien que haya varias flechas que salgan de un solo nodo con la misma etiqueta. Inclusive se permite que las transiciones tengan como etiqueta palabras de varias letras o hasta la palabra vaca. A estos autmatas finitos se les llama no Determinsticos o no deterministas (abreviado AFND), Al retirar algunas de las restricciones que tienen los autmatas finitos Determinsticos, su diseo para un lenguaje dado puede volverse ms simple. Hacemos notar en este punto que, dado que los AFN tienen menos restricciones que los AFD, resulta que los AFD son un caso particular de los AFND, por lo que todo AFD es de hecho un AFND.

Los autmatas nitos no Determinsticos (AFND) aceptan exactamente los mismos lenguajes que los autmatas determinsticos. Sin embargo, sern importantes para demostrar teoremas y por su ms alto poder expresivo. Un autmata finito no deterministico (AFND) es una quntupla M = (Q, V,, q0, F) donde todos los componentes son como en los AFDs, excepto la funcin de transicin que se define ahora como: : Q V P(Q) donde P(Q) denota el conjunto de las partes de Q (o conjunto potencia 2Q). No determinismo (codominio P(Q)): a partir del estado actual y del smbolo actual de entrada no se puede determinar de forma exacta cul ser el estado siguiente. Por ejemplo, (q, a) = {q1, q2,...,qm} indica que para el estado actual q y el smbolo de entrada a, el estado siguiente puede ser cualquier estado entre q1 y qm. Tambin puede darse (q, a) = 0: el estado siguiente no est definido, La interpretacin intuitiva es que ahora el autmata, ante una entrada y un estado dado, puede evolucionar a varios estados posibles (incluyendo un solo estado o ninguno si (q, a)= 0). Es decir es como un algoritmo que en un momento dado nos deja varias opciones posibles o incluso puede no dejarnos ninguna. Un AFND acepta una palabra de entrada w siempre que sea posible comenzar por el estado inicial y que exista una secuencia de transiciones que nos lleven a consumir la palabra y acabe el autmata en un estado final, es decir Una palabra se dice aceptada por un AFND si, siguiendo en cada momento alguna de las opciones posibles, llegamos a un estado nal.

Los AFND tambin se representan mediante tablas o diagramas de transicin En el diagrama de transicin, hay algn nodo del que parten dos o ms arcos etiquetados con el mismo smbolo del alfabeto, o falta algn arco para algn smbolo del alfabeto En la tabla de transicin, alguna celda contiene 0 o un conjunto no unitario a b Q0 {q0,q3} {q0,q1} Q1 0 {q2} #Q2 {q2} {q2} Q3 {q4} 0 #q4 {q4} {q4} Tabla de transicin Diagrama de transicion

Figura 8: Representacin de AFND 2.8.1 Diagramas de Transicin Los diagramas de transicin de los AFND son totalmente anlogos a los de los autmatas determinsticos. Solo que ahora no tiene que salir de cada vrtice un y solo un arco para cada smbolo del alfabeto de entrada. En un autmata no determinstico, de un vrtice pueden salir una, ninguna o varias echas con la misma etiqueta.

Figura 9: Autmata Finito no Deterministico Este es un autmata no-determinstico ya que hay transiciones no denidas. En general, los autmatas no-determinsticos son ms simples que los determinsticos. (Reconocimiento de Patrones).-Supongamos un ejemplo de tranmisin de datos

entre barcos. El receptor de un barco debe de estar siempre esperando la trasmisin de datos que puede llegar en cualquier momento. Cuando no hay trasmisin de datos hay un rudo de fondo (sucesin aleatoria de 0, 1). Para comenzar la trasmisin se manda una cadena de aviso, por ejemplo. 010010. Si esa cadena se reconoce hay que registrar los datos que siguen. El programa que reconoce esta cadena puede estar basado en un autmata nito. La idea es que este no pueda llegar a un estado no nal mientras no se reciba la cadena inicial. En ese momento el autmata pasa a un estado nal. A partir de ah todo lo que llegue se registra. el propsito es hacer un autmata que llegue a un estado nal tan pronto como se reconozca 010010. Intentar hacer un autmata nito determinstico directamente puede ser complicado, pero es muy fcil el hacer un AFND, como el de la Figura 10. Hay que sealar que esto sera solamente el esquema de una sola parte de la trasmisin. Se podra complicar incluyendo tambin una cadena para el n de la trasmisin.

Figura 10: Autmata No-Deterministico que reconoce la cadena 010010. Ejemplo: Usando los automatas No-Deterministicos se puede simplificar el ejercicio de la figura 7 y representar con ms claridad la estructura de la expresin regular (11 + 110)*0 se presentan las 2 figuras para verificar la similitud.

Figura 11: Automata finito y automata finito no deterministico

LECCION 9. - AUTOMATA FINITO CON -TRANSICIONES. Un automata nito con -transiciones (AFND-) es un AFND al que se le permite cambiar de estado sin necesidad de consumir un smbolo de entrada. La funcin se dene como: : QV {} P(Q) La tabla de transicion de un AFND- es como la de un AFND excepto que se le aade una columna correspondiente a Ejemplo AFND- cuyo diagrama de transicion es:

Figura 12: AFND- En el instante actual est en q1 y lee b: en el instante siguiente, el autmata puede decidir de forma no determinista entre: leer el smbolo b y cambiar al estado q4 cambiar al estado q2 sin mover el cabezal de lectura El conjunto de cadenas que es capaz de aceptar este automata es {b, bb, bbb} LECCION 10. - LENGUAJE ACEPTADO POR UN AF

n autmata finito sirve para reconocer cierto tipo de lenguajes. Antes de definir formalmente el concepto de lenguaje aceptado por un AF necesitamos definir los conceptos de configuracin y clculo en un autmata finito. La configuracin de un autmata finito (sin importar el tipo) en cierto instante viene dada por el estado del autmata en ese instante y por la porcin de cadena de entrada que le queda por leer o procesar. La porcin de cadena leda hasta llegar al estado actual no tiene influencia en el comportamiento futuro de la mquina. En este sentido podemos decir que un AF es una mquina sin memoria externa; son los estados los que resumen de alguna forma la informacin procesada.

Formalmente una configuracin de un AF es un elemento (q,w) (Q V*). Algunos tipos de configuraciones especiales son: Configuracin inicial : (q0,w), donde q0 es el estado inicial y w la palabra de entrada. Configuracin de parada: cualquier configuracin en la que el autmata puede parar su ejecucin, bien porque se haya procesado toda la entrada o bien porque se haya llegado a una situacin donde no es aplicable ninguna transicin. Configuracin de aceptacin: (qF , ), donde qF es un estado final del autmata. Una vez alcanzada esta configuracin el autmata puede aceptar la palabra. Si consideramos el conjunto de las configuraciones de un autmata finito, podemos definir una relacin binaria (Q V*) (Q V *) que llamaremos relacin de clculo en un paso. Intuitivamente si dos configuraciones Ci y Cj estn relacionadas mediante la relacin y lo notamos como Ci Cj , quiere decir que podemos pasar de la configuracin Ci a la Cj aplicando una sola transicin y diremos que la configuracin Ci alcanza en un paso la configuracin Cj. Para definir formalmente la relacin de clculo en un paso , distinguiremos tres casos correspondientes a los tres tipos de autmatas que hemos visto: Si tenemos un AFD, la relacin de clculo en un paso se define de la siguiente forma:

Si tenemos un AFND, la relacin de clculo en un paso la se define:

Si tenemos un AFND-, la relacin de clculo en un paso se define:

Cuando queramos distinguir el autmata M al que refiere la relacin, se usara M. La clausura reflexiva y transitiva de la relacin es otra relacin binaria * (Q V*) (Q V *), que llamaremos relacin de clculo. Diremos que la configuracin Ci alcanza (en cero o ms pasos) la configuracin Cj, y lo notamos como Ci * Cj , si se cumple una de las dos condiciones siguientes: 1. Ci = Cj , o bien, 2. C0,C1, ...Cn, tal que C0 = Ci, Cn = Cj , y 0 k n1 se cumple que Ck Ck+1 A una secuencia del tipo C0 C1 . . . Cn la llamaremos clculo en n pasos, abreviadamente C1 * n pasos Cn. Ejemplo: Considerando el AFD de la figura 6 podemos decir que (q0, 01) (q0, 1), (q0, 1) (q1, ) y por tanto (q0, 01) * (q1, ). Tambin (q1, 101) (q2, 01) y en varios pasos (q2, 0011) * (q1, 1). Por otra parte para el AFND de la figura 8 tenemos, por ejemplo, que (q0, abb) (q0, bb) y tambin (q0, abb) (q3, bb). Al ser el autmata no determinista vemos que a partir de una misma configuracin, en este caso (q0, abb), se puede llegar en un paso de clculo a dos o ms configuraciones distintas. Esta situacin no puede producirse en un AFD. Para el AFND- de la figura 12 el clculo (q1, bb) (q2, bb) es un ejemplo donde se produce una transicin que implica un cambio de estado sin consumir smbolos de entrada. Esto es posible porque q2 (q1, ). Si tenemos un autmata finito M = (Q, V, , q0, F), se define el lenguaje aceptado por M y lo notamos L(M), como: L(M) = {w V * | (q0,w) * (qF , ) donde qF F} Es decir, una palabra w Ser aceptada por el autmata M, si partiendo de la configuracin inicial con w en la cinta de entrada, el autmata es capaz de alcanzar una configuracin de aceptacin. Dependiendo del tipo de autmata de que se trate, * har referencia a la clausura reflexiva y transitiva de la relacin en un AFD, en un AFND o en un AF con -transiciones.

En un autmata finito determinista, el hecho de que una palabra w sea aceptada por el autmata nos asegura que existe un nico camino en el diagrama de transicin que nos lleva del nodo etiquetado con el estado inicial al nodo etiquetado con el estado final y cada arco que se recorre en este camino sta etiquetado con un smbolo de la palabra. Podramos simular la ejecucin de un autmata finito determinista mediante un programa que codifique la funcin de transicin y simule los cambios de estado. Si |w| = n entonces el programa puede determinar si la palabra es aceptada o no en O(n). En el caso de un AFND o un AFND- no podemos asegurar que exista un nico camino en el diagrama que nos lleve del estado inicial a un estado final consumiendo los smbolos de la palabra. Incluso puede que para una palabra w L(M) podamos tener una camino que no acabe en estado final o que llegue a un estado desde el que no se pueda seguir leyendo smbolos. Esto es debido al no determinismo, que hace que los clculos en estos autmatas no estn perfectamente determinados. Si quisiramos simular un autmata no determinista para decidir si una palabra es aceptada o no, tendramos que usar alguna tcnica de retroceso o backtracking para explorar distintas posibilidades hasta encontrar un clculo correcto que reconozca la palabra o determinar que la palabra no es aceptada si se han explorado todos los posibles clculos y ninguno de ellos conduce a un estado final. Esto nos llevara a un algoritmo de tiempo exponencial para reconocer una palabra. De ah que a efectos prcticos, como en la construccin de analizadores lxicos o reconocimiento de patrones en un texto, lo deseable es tener un autmata finito determinista. Ejemplo Recordemos los AFs ya vistos y veamos ahora cual es el lenguaje aceptado por ellos. El diagrama de la figura 8 correspondiente a un AFND permite ver que L(M) es el lenguaje descrito por la expresin regular (a + b)*(aa + bb)(a + b)* que consiste en aquellas cadenas sobre el alfabeto V = {a, b} que contienen al menos una ocurrencia de la subcadena aa o bb. Por ejemplo, la cadena abb es aceptada, ya que tenemos el clculo: (q0, abb) (q0, bb) (q1, b) (q2, ), y q2 F Sin embargo podemos tener otro clculo que no conduce a estado final: (q0, abb) (q0, bb) (q0, b) (q1, ), q1 / F e incluso un clculo que no llega a consumir la palabra: (q0, abb) (q3, bb) (y no puede seguir)

A partir del diagrama del AFD de la figura 6 no es tan sencillo ver cual es el lenguaje aceptado. Pero, segn se vera mas adelante con el teorema de kleene se tiene un mtodo exacto para encontrar este lenguaje. En este caso el lenguaje aceptado es el descrito por la expresin regular (0 + 1 (10*1)*)* 1 (10*1)*

Figura 13: AFs que aceptan L() donde = (ab + aba)

LECCION 11. - EXPRESIONES REGULARES9

a notacin de conjuntos nos permite describir los lenguajes regulares, pero se utiliza una notacin en que las representaciones de los lenguajes son simplemente texto (cadenas de caracteres). As las representaciones de los lenguajes regulares son simplemente palabras de un lenguaje (el de las representaciones correctamente formadas). Con estas ideas se va a definir un lenguaje, el de las expresiones regulares, en que cada palabra va a denotar un lenguaje regular. Asi mismo una expresin regular es la representacin de la cadena ms caracterstica del lenguaje respectivo, por ejemplo 1*10 es una cadena consistente en la subcadena 10 precedida de cualquier numero de unos.

La definicin de expresin regular es en realidad un poco ms restringida en varios aspectos de los que se necesita en la prctica, se usa una notacin como L2 para lenguajes y es razonable denotar en forma similar las expresiones regulares, entonces en ocasiones se escribe (r2) para indicar la expresin regular (rr), (r+) para la expresin regular ((r*)r), y asi sucesivamente. Una expresin regular R para un alfabeto se define como sigue: y son expresiones regulares. A es una expresin regular para todo a . Si a y b son expresiones regulares, entonces a b, ab, a* y b* son expresiones regulares. Ninguna otra secuencia de smbolos de es una expresin regular. Sea un alfabeto. El conjunto ER de las expresiones regulares sobre contiene las cadenas en el alfabeto {^, +, , *, (, ), } que cumplen con lo siguiente: 1. ^ y ER 2. Si , entonces ER. 3. Si E1,E2 ER, entonces (E1+E2) ER, (E1E2) ER, (E1)* ER. Las comillas enfatizan el hecho de que estamos definiendo cadenas de texto,
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html
9

no expresiones matemticas (es el caso de las expresiones de conjuntos para describir los conjuntos regulares.) Es la misma diferencia que hay entre el caracter ASCII 0, que se puede teclear en una terminal, y el nmero 0, que significa que se cuenta un conjunto sin ningn elemento. Ejemplo: Son ER No son ER

: en {a, b, c} las siguientes: a, ((a+b))*, ((a b) c). : ab, ((a b(c)*).

LECCION 12. - SIGNIFICADO DE LAS EXPRESIONES REGULARES as ER son simplemente frmulas cuyo propsito es representar cada una de ellas un lenguaje. As, el significado de una ER es simplemente el lenguaje que ella representa. Por ejemplo, la ER representa el conjunto vaco {}. Para comprender intuitivamente la manera en que las ER representan lenguajes, consideremos el proceso de verificar si una palabra dada w pertenece o no al lenguaje representado por una ER dada. Vamos a decir que una palabra empata con una expresin regular si es parte del lenguaje que esta representa. La palabra vaca " empata con la ER ^. Una palabra de una letra como a empata con una ER consistente en la misma letra a, b empata b, Luego, una palabra w = uv, esto es w est formada de dos pedazos u y v, empata con una expresin (U V ) a condicin de que u empate con U y v empate con V. Por ejemplo, abc empata con (a (b c)) porque abc puede ser dividida en a y bc, y a empata con a en la ER, mientras que bc empata con (b c) separando b y c de la misma manera. Similarmente, cuando la ER es de la forma (U + V ), puede empatar con una palabra w cuando esta empata con U o bien cuando empata con V . Por ejemplo, bc empata (a+(bc)). Una palabra w empata con una expresin U* cuando w puede ser partida en pedazos w = w1w2, . . . de tal manera que cada pedazo wi empata con U. Por ejemplo, caba empata con (((c + b) a))_ porque puede partirse en los pedazos ca y ba, y ambos empatan con ((c + b) a), lo cual es fcil de verificar.

Para simplificar la especificacin de un lenguaje se utilizan las expresiones regulares y por esto conviene escribir a en lugar de {a}: a b denota {a,b} = {a} {b} ab denota {a,b} a* denota {a}* a+ denota {a}+ El orden de precedencia de los operadores *, y es: Primero *; luego y por ltimo . Por ejemplo, una expresin dada por ({a}*{b}){c} se reduce a a*bc. Otro ejemplo: El lenguaje de todas las cadenas sobre {a,b,c} que no tienen ninguna subcadena ac se denota por c*(a bc*)*. Esta definicin nos permite construir expresiones en la notacin de conjuntos que representan lenguajes regulares. Ejemplo.- Sea el lenguaje L de palabras formadas por a y b, pero que empiezan con a, como aab, ab, a, abaa, etc. Probar que este lenguaje es regular, y dar una expresin de conjuntos que lo represente. Solucin.- El alfabeto es = {a, b}. El lenguaje L puede ser visto como la concatenacin de una a con cadenas cualesquiera de a y b; ahora bien, stas ltimas son los elementos de {a, b}*, mientras que el lenguaje que slo contiene la palabra a es {a}. Ambos lenguajes son regulares. Entonces su concatenacin es {a}{a, b}*, que tambin es regular. NOTA: La concatenacin de dos lenguajes L1 y L2 se define como el conjunto de las palabras formadas concatenando una de L1 con una de L2. {a} es finito, por lo tanto regular, mientras que {a, b}* es la cerradura de {a, b}, que es regular por ser finito. LECCION 13. - AUTMATAS FINITOS Y EXPRESIONES REGULARES10

H
10

asta ahora, la relacin entre los autmatas finitos y las expresiones regulares se ha tratado de una manera intuitiva. Ahora formalizaremos dicha relacin.

IOST F. Hans, Teora de autmatas y lenguajes formales, CAPTULO 2, LENGUAJES REGULARES Y AUTOMATAS FINITOS (2001) en: http://iie.ufro.cl/~hansiost/automatas/Capitulo2.doc

Para un alfabeto , se pueden construir los AFND (y los AFD) que acepten palabras unitarias. Por ejemplo:

r
(a)

s
(b)

El autmata de la Figura (a) acepta el lenguaje unitario {a}. El autmata de la Figura (b) acepta el lenguaje . Si M1 = (Q1,1,So1,F1,1) y M2 = (Q2,2,So2,F2,2) son AFND, podemos unir M1 y M2 en un nuevo AFND que acepte L(M1) L(M2), aadiendo un nuevo estado inicial So y 2 transiciones , una de So a So1 y otra de So a So2.Este nuevo AFND estar dado por: M = (Q,,So,F,), donde = 1 2 ; F = F1 F2 ; Q = Q1 Q2 {So}

y se define de tal forma que se incluyan todas las transiciones de 1, 2 y las transiciones de So a So1 y So2, es decir: = 1 2 {(So,,So1), (So,,So2) Ejemplo: Considere los siguientes AFND:

b s b t u a

b v

AFND que acepta ab*

AFND que acepta (ab)*

Ambos AFND se pueden unir de manera tal que el nuevo AFND acepte ab* (ab)* :

So

b s b b t

u a

Por otra parte si tenemos 2 autmatas M1 y M2, podemos unirlos para formar un AFND que acepte L(M1) L(M2). Se requiere un autmata que reconozca una cadena de L(M1) y a continuacin una de L(M2). Esto se realiza pasando del estado final de M1 al estado inicial de M2 a travs de una transicin . Por ejemplo:

Aceptan los lenguajes {a} y {b} respectivamente. As, el autmata que acepta el lenguaje {ab} es:

Es importante resaltar que el autmata resultante tendr como estado inicial, el estado inicial de M1 y como conjunto de estados finales, el conjunto de estados finales de M2. Por lo tanto el AFND que acepta L(M1) L(M2) est dado por: Q = Q1 Q2 So = So1 F = F2 = 1 2 (F1 x {} x {So2}) La funcin de transicin resultante, incluir todas las transiciones presentes en ambos autmatas junto con todas las ternas de la forma (q,,So2), donde q es un estado de aceptacin de M1, es decir So2 (q,) para todo q F1. Por otra parte se puede deducir un procedimiento para construir un AFND que acepte L(M)* para un AFND M = (Q, , So, F, ), como sigue: Primero, se agrega un nuevo estado inicial s'; adems, este nuevo estado ser de aceptacin, con el fin de que se acepte . Se agrega una transicin desde s' al antiguo estado inicial de M, So. Se agregar, adems, una transicin desde todos los estados de aceptacin de M hasta s'. El autmata resultante ser: M' = (Q', , s', F', ') donde: Q' = Q {s'} F' = {s'} ' = {(s',,So)} (F x {} x {s'})

Ejemplo: Sea el AFND M que acepta el lenguaje dado por ab*:

b a
M:

L(M)* se construye aplicando el procedimiento anterior: M:

b S
L(M) : (ab*)* Teorema: El conjunto de lenguajes aceptados por un autmata finito sobre el alfabeto contiene el lenguaje y los lenguajes unitarios {a} para todo a . Este conjunto es cerrado con respecto a la unin, concatenacin y cerradura de estrella. Este teorema implica que todo lenguaje regular es aceptado por un autmata finito. Sea el autmata finito M = (Q, ,So,F,) y supongamos que So = q0 es el estado incial. Se define: Ai = {w * e(qi,w) F } Ai es el conjunto de las cadenas sobre * que hacen que M pase desde qi hasta un estado de aceptacin. Se dice que Ai es el conjunto de las cadenas aceptadas por el estado qi. Es importante notar que A0 = L(M). Adems, es posible que Ai = . Si qi F, entonces Ai. Como ejemplo, considrese el siguiente AFND:

q0

a b

q1 a b q3

b q5 a a,b a,b

q2

q4

A5 = A2 = A4 = A1 = b A3 = a A0 = ab ba

Del autmata anterior se deduce: (q0,a) = {q1}, es decir q1 (q0,a), por lo tanto A0 contiene a: aA1. En general, si: qj (qi,w) implica que Ai contiene a wAj. De hecho se tiene que: Ai =

{wAj qj (qi,w)}

Esto proporciona las tcnicas bsicas para obtener una expresin regular a partir de un autmata finito. Consideremos el ejemplo anterior, tenemos: A0 = a A1 b A3 A1 = b A2 a A5 A2 = a A5 b A5 A3 = a A4 b A5 A4 = a A5 b A5 A5 =

As, tenemos un sistema de ecuaciones que se cumplen para L(M). Sustituyendo se obtiene: L(M) = ab ba = A0 Considrese ahora el siguiente autmata:

a q0
A0 = a A0 b A1 ;

b
A1 =

q1

Resolviendo y sustituyendo resulta que A0 = a A0 b, y no es posible simplificarlo ms. El siguiente lema muestra como resolver este problema: Lema de Arden: Una ecuacin de la forma X = AX B, donde A tiene una solucin nica X = A*B.

En el ejemplo anterior, al aplicar el lema de Arden queda A0 = a*b, que es lo que intuitivamente se deduce del diagrama. Ejemplo: Considrese el siguiente autmata:

a q0 a q1 a q2 a b b
A0 = aA1 ; A1 = aA2 bA4 ; A4 = bA4 ; A2 = aA3 bA4

b b q4

q3

A3 = aA3 bA4

Sustituyendo y aplicando el lema de Arden, tenemos: A4 = bA4 = bA4 = b* = b* (por lema de Arden)

A3 = aA3 bb* = aA3 b+ = a*( b+) = a*b* A2 = aa*b* bb* = a+b* b+ A1 = a(a+b* b+) bb* = aa+b* ab+ b+ A0 = aA1 = a(aa+b* ab+ b+) A0 = a2a+b* a2b+ ab+ Lema: Sea M un autmata finito. Entonces existe una expresin r para la cual: L(r) = L(M) Teorema de anlisis de Kleene: Si L es un lenguaje aceptado por un autmata finito M entonces existe una expresin regular tal que L = L(M) = L(). Podemos suponer que el autmata finito M no tiene -transiciones (si las tuviera ya sabemos que podemos encontrar autmata equivalente sin -transiciones). Sea M = (Q, V,, q0, F). A partir de este autmata podemos obtener un sistema de

ecuaciones de expresiones regulares que llamaremos ecuaciones caractersticas del autmata. Estas ecuaciones se obtienen a partir del diagrama de transicin del autmata del siguiente modo: A cada nodo qi le corresponde una ecuacin y cada estado se puede considerar como una incgnita de la ecuacin. La ecuacin para el estado qi tiene en el primer miembro el estado qi y el segundo miembro de la ecuacin est formado por una suma de trminos, de forma que por a cada arco del diagrama de la forma qi qj tenemos un trmino aqj . Si el estado qi es final, aadimos adems el termino al segundo miembro. Cada incgnita qi del sistema de ecuaciones representa el conjunto de palabras que nos llevan del nodo qi a un estado final, en el diagrama de transicin. Por tanto, si resolvemos el sistema de las ecuaciones caractersticas del autmata tendremos soluciones de la forma qi = i, donde i es una expresin regular sobre el alfabeto V y como hemos dicho el lenguaje descrito por esta expresin regular es:
L(i) = {w V | (qi,w) (qF , ) , qF F} (3.1)

El mtodo que se propone para obtener una expresin regular a partir de un AF es el siguiente: 1. Obtener las ecuaciones caractersticas del autmata; 2. Resolver el sistema de ecuaciones; 3. solucin para el estado inicial; Para comprobar que este mtodo es vlido tendramos que probar que se cumple L(i) = {w V | (qi,w) (qF , ) , qF F} (3.1) para toda solucin qi = i del sistema de ecuaciones, y en particular la solucin para el estado inicial es la expresin regular correspondiente al autmata. Aunque no lo vamos a demostrar formalmente, por la forma de obtener las ecuaciones caractersticas del autmata y la validez del mtodo de resolucin de sistemas de ecuaciones de expresiones regulares. En realidad, no es necesario resolver todas las incgnitas, slo necesitamos despejar la incgnita correspondiente al estado inicial. Ejemplo Consideremos de nuevo el autmata finito M

Las ecuaciones caractersticas correspondientes a este autmata son: q0 = 0q0 + 1q1 q1 = 0q0 + 1q2 + q2 = 1q1 + 0q2 Comenzando por la ltima ecuacin se tiene que q2 = 01q1 y sustituyendo en la segunda ecuacin queda q1 = 0q0 + 101q1 + de donde se obtiene que q1 = (101) (0q0 + ) y este valor se sustituye en la primera ecuacin q0 = 0q0 + 1 (101) (0q0 + ) = 0q0 + 1 (101) 0q0 + 1 (101) Esta ecuacin es fundamental y por el lema de Arden tiene como nica solucin q0 = (0 + 1 (101) 0) 1 (101) y por tanto (0 +1 (101) 0)1(101) es la expresin regular que describe el lenguaje L(M). Teorema de Sntesis de Kleene Si L es un lenguaje asociado a una expresin regular entonces existe un autmata finito M tal que L = L() = L(M). Demostrar por induccin sobre el nmero de operadores de (+, , ) que existe un AFND- M con un slo estado final sin transiciones y distinto del estado inicial, de forma que L() = L(M). Base.- (cero operadores) puede ser: , , a, donde a V. Los autmatas que aceptan el lenguaje vaco, el lenguaje {} y el lenguaje {a}, son, por este orden, los siguientes: (a), (b) y (c)

Induccin.- (uno o ms operadores en ). Supongamos que se cumple la hiptesis para expresiones regulares de menos de n operadores. Sean las expresiones regulares 1 y 2 donde op(1), op(2) < n. Entonces, por hiptesis existen dos autmatas finitos M1 y M2 tal que L(M1) = L(1) y L(M2) = L(2), donde M1 = (Q1, V1,1, q1, {f1}) yM2 = (Q2, V2, 2, q2, {f2}) y podemos suponer sin prdida de generalidad que Q1 Q2 = . Estos autmatas podemos representarlos esquemticamente como:

Supongamos que tenemos una expresin regular con n operadores. Vamos a construir un autmata M tal que L(M) = L() y para eso distinguimos tres casos correspondientes a las tres formas posibles de expresar en funcin de otras expresiones regulares con menos de n operadores. = 1 + 2 tal que op(1), op(2) < n. Los autmatas correspondientes a 1 y 2 son respectivamente M1 y M2, como hemos dicho antes. A partir de M1 y M2 construimos otro autmata M = (Q1 Q2 {q0, f0} , V1 V2,, q0, {f0}) donde se define como: a) (q0, ) = {q1, q2} b) (q, ) = 1(q, ), q Q1 {f1}, V1 {} c) (q, ) = 2(q, ), q Q2 {f2}, V2 {} d) (f1, ) = (f2, ) = {f0} M se puede representar grficamente del siguiente modo:

Cualquier camino de q0 a f0 debe pasar forzosamente a travs del autmata M1 o del autmata M2. Si una cadena w es aceptada por M, entonces debe ser aceptada tambin por M1 o por M2. Es decir, L(M) = L(M1) L(M2) = = L(1) L(2), por hiptesis de induccin = L(1 + 2), por definicin de lenguaje asociado a 1 + 2 = L(), como queramos demostrar. 2. = 1 2 tal que op(1), op(2) < n. A partir de M1 y M2 construimos otro autmata M = (Q1 Q2, V1 V2,, q1, {f2}) donde se define como:

a) (q, ) = 1(q, ), q Q1 {f1}, V1 {} b) (f1, ) = {q2} c) (q, ) = 2(q, ), q Q2, V2 {} M se puede representar esquemticamente como:

Cualquier camino de q1 a f2 debe pasar forzosamente a travs del autmata M1 y del autmata M2. Si una cadena w es aceptada por M, entonces esa cadena se puede descomponer como w = w1.w2, de forma que w1 debe ser aceptada por M1 y w2 por M2. Segn esto, L(M) = L(M1) L(M2) = = L(1) L(2), por hiptesis de induccin = L(1 2), por definicin de lenguaje asociado a 1 2 = L(), como queramos demostrar. 3. = (1) tal que op(1) = n1. El autmata correspondiente a 1 es M1, a partir del cual construimos otro autmata M = (Q1 {q0, f0} ,V1,, q0, {f0}) donde se define como: a) (q0, ) = (f1, ) = {q1, f0} b) (q, ) = 1(q, ), q Q1 {f1}, V1 {} M se puede representar del siguiente modo:

Este autmata acepta cadenas de la forma w = w1w2 . . . wj , donde j 0 y cada subcadena wi es aceptada por M1. Por tanto,

, por hiptesis de induccin = (L(1)) , por definicin de clausura de un lenguaje = L(1), por definicin de lenguaje asociado a = L(), como queramos demostrar.

Ejemplo Siguiendo el mtodo anterior, en la figura siguiente se ha construido un autmata para la expresin regular 01* +1, donde M1 representa el autmata para la expresin regular 0, M2 representa 1* y M3 la expresin regular 1. En el autmata final se han integrado simultneamente los autmatas para la concatenacin (0 con 1*) y la suma de expresiones regulares 01*+1.

Este mtodo de construccin de AFs para expresiones regulares est pensado para ser implementado de forma automtica mediante un programa. Se puede haber pensado en el siguiente autmata:

LECCION 14. - PROPIEDADES DE LOS LENGUAJES REGULARES

11

n los AFN es posible aplicar mtodos modulares de diseo, que permiten manejar mejor la complejidad de los problemas. Son estos mtodos modulares. AFN para la unin de lenguajes Si ya contamos con dos AFN, sean M1 y M2, es posible combinarlos para hacer un nuevo AFN que acepte la unin de los lenguajes que ambos autmatas aceptaban. Sean M1 = (K1,1,1, s1, F1) y M2 = (K2, 2, 2, s2, F2) dos autmatas que aceptan los lenguajes L1, L2. Podemos entonces construir un AFN M3 que acepte L1 L2 de la siguiente manera: Sea q un nuevo estado que no est en K1 ni en K2. Entonces
BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html
11

hacemos un autmata M3 cuyo estado inicial es q, y que tiene transiciones vacas de q a s1 y a s2. Esta simple idea permite escoger en forma no determinista entre ir al autmata M1 o a M2, segn el que convenga: si la palabra de entrada w est en L1, entonces se escoge ir a M1,,,,, y en contraposicin a M2 para L2. Formalmente M3 = (K1 K2 {q}, 1 2, 1 2 {(q, , s1), (q, , s2)}, q, F1 F2). En la figura siguiente se representa grficamente M3.

Figura 14: AFN para la unin de dos lenguajes

Ejemplo.- Disear un autmata no determinista que acepte las palabras sobre {a, b} que tengan un nmero par de a o que terminen en bb. Solucin.- En la figura 15(a) se presenta un AFN que acepta las palabras que contienen un nmero par de as, y en 15(b) otro que acepta las palabras que terminan en bb. Finalmente, en 15(c) est el AFN que acepta el lenguaje dado.

Figura 15: Unin de dos lenguajes, Combinacin de AFN

AFN para la concatenacin de lenguajes Similarmente al caso anterior, sean M1 = (K1,1,1, s1, F1) y M2 = (K2, 2, 2, s2, F2) dos autmatas que aceptan los lenguajes L1, L2 respectivamente. Podemos entonces construir un AFN M3 que acepte L1L2 de la siguiente manera: Aadimos unas transiciones vacas que van de cada uno de los estados finales de M1 al estado inicial de M2; tambin se requiere que los estados finales de M1 dejen de serlo. Formalmente M3 = (K1 K2, 1 2, 1 2 {(p, , s2) | p F1}, s1, F2) El funcionamiento de M3 es como sigue: cuando se recibe una palabra w = w1w2, w1 L1, w2 L2, entonces se empieza procesando w1 exactamente como lo hara M1, hasta llegar hasta alguno de los antiguos estados finales de M1; entonces se empieza procesando w2 como lo hara M2; forzosamente debe ser posible llegar a un estado final de M2, ya que por hiptesis M2 acepta w2. En la figura 16 se representa M3.

Figura 16: Concatanacin de dos lenguajes,Combinacin de AFNs Ejemplo.- Construir un AFN que acepte el lenguaje en {a, b} donde las as vienen en grupos de al menos dos seguidas, y los grupos de as que son repeticiones de aaa estn a la derecha de los que son repeticiones de aa, como en baabaaa, aaa, baab o baaaaa. Esta condicin no se cumple, por ejemplo, en bbaaabaa ni en aaabaaaa.

Solucin.- Un AFN, ilustrado en la figura 17(a), acepta palabras que contienen bs y grupos de aa en cualquier orden. Otro AFN figura 17(b) acepta un lenguaje similar, pero con grupos de aaa. La solucin es su concatenacin, que se presenta en la figura 17(c).

Figura 17: Concatenacin de dos AFN LECCION 15. - EQUIVALENCIA DE AUTMATAS FINITOS DETERMINISTICOS Y AUTMATAS FINITOS NO DETERMINSTICOS.

os autmatas finitos determinsticos (AFD) son un subconjunto propio de los no determinsticos (AFN), lo que quiere decir que todo AFD es un AFN. Se puede pensar entonces que los AFN son ms poderosos que los AFD, en el sentido de que habra algunos lenguajes aceptados por algn AFN para los cuales no hay ningn AFD que los acepte. Sin embargo, en realidad no sucede as.

Figura 18: AFN a transformar en AFD Para todo AFN N, existe algn AFD D tal que L(N) = L(D). Este resultado, sorprendente, pero muy til, puede probarse en forma constructiva, proponiendo para un AFN cmo construir un AFD que sea equivalente. El mtodo que se usa para pasar de un AFN a un AFD se basa en la idea de considerar el conjunto de estados en los que podr encontrarse el AFN al haber consumido una cierta entrada.

3.15.1. El mtodo de los conjuntos de estados Dado un AFN M, consideremos la idea de mantener un conjunto de estados Qi en los que sea posible estar en cada momento consumiendo las letras de una palabra de entrada. Por ejemplo, considrese el AFN de la figura 18. Se quiere analizar qu sucede cuando este AFN recibe la palabra baaaaab. Para ello, se lleva el registro de los conjuntos de estados en los que pueda encontrarse el AFN. Inicialmente, podr encontrarse en el estado inicial q0, pero sin gastar ningn caracter puede estar tambin en el estado q1, o sea que el proceso arranca con el conjunto de estados Q0 = {q0, q1}. Al consumirse el primer caracter, b, se puede pasar de q0 a q0 o bien a q1 (pasando por el ), mientras que del q1 slo se puede pasar a q1. Entonces, el conjunto de estados en que se puede estar al consumir la b es Q1 = {q0, q1}. Y as en adelante. La tabla siguiente resume los conjuntos de estados por los que se va pasando para este ejemplo:

Entrada b a a a a a b

Estados {q0,q1} {q0,q1} {q2,q4} {q0,q1,q3} {q1,q2,q4} {q0,q1,q3,q4} {q1,q2,q3,q4} q1

Puesto que el ltimo conjunto de estados {q1} incluye a un estado final, se concluye que la palabra de entrada puede ser aceptada. Otra conclusin es que si se considera a los conjuntos de estados Qi como una especie de mega-estados de cierto autmata, entonces se han estado siguiendo los pasos de ejecucin de un AFD con mega-estados. Una vez se comprenda lo anterior, se cocluye que, si en vez de considerar una palabra en particular, como fue baaaaab, se considera cada posible caracter que puede llegar a estar en un mega-estado, entonces se puede completar un AFD, que ser equivalente al AFN dado. Para poder ser exhaustivos, se necesita organizar las entradas posibles de manera sistemtica. Ejemplo: Considrese el problema de transformar a AFD el AFN de la figura 18.

Se consideran el conjunto de estados del AFN en los que puede encontrarse ste en cada momento. El conjunto inicial de estados estar formado por los estados del AFN de la figura 18 en los que puede estar antes de consumir el primer caracter, esto es, q0 y q1. Dicho conjunto aparece en la figura 19(a). A partir de ah, tras recibir un caracter a, el AFN puede encontrarse ya sea en q2 o en q4, los cuales se incluye un nuevo conjunto de estados, al que se llega con una transicin con a, como se ilustra en la figura 19(b); similarmente, a partir del conjunto inicial de estados {q0, q1} con la letra b se llega al mismo conjunto {q0, q1}, lo cual se representa con un lazo as mismo en la figura 19(b). Con este mismo procedimiento se siguen formando los conjuntos de estados; por ejemplo, a partir de {q2, q4}, con una a se pasa a {q3, q0, q1}. Continuando as, al final se llega al diagrama de la figura 19(c). Un detalle importante a observar en este procedimiento es que en ocasiones no hay estados adonde ir; por ejemplo, a partir del conjunto de estados {q2, q4}, con b no se llega a ningn estado. En casos como este, se considera que habr una transicion con b a un nuevo conjunto de estados vacos, esto es {}, como se aprecia en la figura 19(c). Por supuesto, este estado vaco tendr transiciones con a y con b igualmente.

Figura 19: Transformacin de un AFN a un AFD Si se ven los crculos como estados, se ha construido un AFD. Unicamente falta determinar cuales de los nuevos estados son finales y cuales no. Obviamente, si uno de los conjuntos de estados contiene un estado final del antiguo AFN, esto muestra que es posible que en ese punto el AFN hubiera aceptado la palabra de

entrada, si sta se terminara. Por lo tanto, los estados finales del nuevo autmata sern aquellos conjuntos de estados que contengan algn estado final. As, en el AFD de la figura 19(d) se marcan los estados finales; adems se borran los estados del antiguo AFN de cada uno de los crculos, y se bautizan cada conjunto de estados como un estado. 3.15.2. Una transformacin inofensiva Cuando se quiere aplicar el mtodo descrito en los prrafos precedentes, una dificultad que puede presentarse es que algunas flechas del autmata tienen como etiquetas palabras de varias letras, y desde luego no podemos tomar un pedazo de una transicin. Esta situacin se aprecia en el AFN de la figura 20. En efecto, si a partir del estado inicial se intenta consumir la entrada a, se observa que no hay una transicin que permita hacerlo, an cuando hay una transicin (q0, aa, q1) cuya etiqueta empieza con a. Una solucin a esta dificultad es normalizar a 1 como mximo la longitud de las palabras que aparecen en las flechas. Esto puede hacerse intercalando |w| 1 estados intermedios en cada flecha con etiqueta w. As, por ejemplo, de la transicion (q1, aaa, q1) de la figura 20, se generan las transiciones siguientes: (q1, a, q2), (q2, a, q3), (q3, a, q1), donde los estados q2 y q3 son estados nuevos generados para hacer esta transformacin. Con esta transformacin se puede pasar de un AFN cualquiera M a un AFN M0 equivalente cuyas transiciones tienen como maximo un caracter. Esta transformacin es inofensiva en el sentido de que no altera el lenguaje aceptado por el AFN. Por ejemplo, para el AFN de la figura 20 se tiene el AFN transformado de la figura 18.

Figura 20: AFN Con transicin de varias letras.

3.15.3. Formalizacin del algoritmo de conversin Ahora se va a precisar el mtodo de conversin de AFN a AFD con suficiente detalle como para que la programacin en computador sea relativamente sencilla. Sin embargo, no se va a describir el algoritmo en trminos de ciclos, instrucciones de asignacin, condicionales, etc., que son tpicos de los programas imperativos. Se va a presentar un conjunto de definiciones que capturan los resultados intermedios en el proceso de conversin de AFN a AFD. Estas definiciones permiten programar en forma casi directa el algoritmo de conversin, si se utiliza un lenguaje de programacin adecuado, preferentemente de tipo funcional, como por ejemplo Scheme. Este ejemplo se va a ir presentando con las definiciones partiendo de la ms sencilla, hasta llegar a la ms compleja. Primero introducimos una funcin transicion(q, ), que a partir de un estado q y un caracter dado obtiene el conjunto de estados a los que se puede llegar desde q directamente gastando el caracter . Por ejemplo, tomando el AFN de la figura 21, tenemos que transicion(q0, b) = {q0, q1}. Similarmente, transicion(q1, b) = {q1}, y transicion(q3, a) = {}. Se puede definir matemticamente de la forma siguiente: transicin(q, ) = {p | (q, , p) } Sin embargo, esta definicin no toma en cuenta el hecho de que a veces es posible tener transiciones que no gastan ningn caracter -aquellas marcadas con . As, en la figura 18, se puede pasar de q2 a q0 y luego continuar de q0 a q1, por lo que en realidad se tiene que considerar a q1 como uno de los estados a los que se puede llegar desde {q1, q2} gastando una a. Por lo tanto, hay que modificar la definicin anterior. Se define una funcin auxiliar cerr-(q) que es el conjunto de estados a los que se puede llegar desde el estado q pasando por transiciones vacas. Adems, si con una transicin vaca se llega a otro estado que tambin tiene transiciones vacas, hay que continuar aadiendo a cerr- (q) los estados a los que se llegue, hasta que no sea posible aadir nuevos estados. Por ejemplo, en la figura 21, cerr - (q1) = {q1, q2, q4}, cerr-(q2) = {q2, q4}, y cerr-(q0) = {q0}.

Figura 21: AFN con transiciones vacias cerr - (q) se acostumbra llamar cerradura al vaco porque matemticamente es la cerradura de q con la relacin {(x, y) | (x, , y) }. La funcin cerr-(q) se puede definir como sigue: La cerradura al vaco cerr-(q) de un estado q es el ms pequeo conjunto que contiene: 1. Al estado q; 2. Todo estado r tal que existe una transicion (p, , r) , con p cerr - (q). Es fcil extender la definicin de cerradura al vaco de un estado para definir la cerradura al vaco de un conjunto de estados: La cerradura al vaco de un conjunto de estados CERR- ({q1, ... , qn}) es igual a cerr - (q1), ... , cerr- (qn). Ejemplo. Sea el AFN de la figura 21. Entonces CERR-({q1, q3}) = {q1, q2, q3, q4}. Con la funcin de cerradura al vaco ya estamos en condiciones de proponer una versin de la funcin transicion que tome en cuenta las transiciones vacas. Llamaremos a esta funcin transicion-, y la definimos de forma que transicion- (q, ) sea el conjunto de estados a los que se puede llegar desde q gastando , inclusive pasando por transiciones vacas. El algoritmo es como sigue, para un estado q y un caracter : 1. Calcular Q0 = cerr -(q) 2. Para cada estado de Q0, obtener transicion(q, ), y unir todos los conjuntos obtenidos, dando por resultado un conjunto Q1. 3. transicion- (q, ) = CERR- (Q1).

Por ejemplo, tomando la figura 21, para calcular transicion-(q1, a), los pasos son como sigue: 1. Q0 = {q1, q2, q4} 2. transicion(q1, a) = {q1}, transicion(q2, a) = {q2, q3}, y transicion(q4, a) = {}, por lo que uniendo estos conjuntos, Q1 = {q1, q2, q3}. 3. transicion-(q1, a) = CERR-({q1, q2, q3}) = {q1, q2, q3, q4}. Como ltima definicin, es directo extender la funcin transicion-(q, ), que se aplica a un estado y un caracter, a una funcin que se aplique a un conjunto de estados y un caracter; llamamos a esta funcin TRANSICION-(Q, ), para un conjunto de estados Q y un caracter . Simplemente aplicamos transicion-(q, ) para cada uno de los estados q Q, y juntamos los resultados en un solo conjunto. Por ejemplo, en la figura 21 TRANSICION- ({q0, q2}, a) = {q0, q2, q3, q4}. Finalmente resumimos el proceso global de transformacin de un AFN a un AFD en el siguiente algoritmo. Algoritmo de transformacin AFN AFD: Dado un AFN (K,,, s, F), un AFD equivalente se obtiene por los siguientes pasos: 1. El conjunto de estados inicial es cerr -(s). 2. El alfabeto del AFD es el mismo del AFN. 3. Para cada conjunto de estados Q ya presente, hacer: a) Aadir el conjunto de estados TRANSICION-(Q, ) para cada caracter del alfabeto, si no ha sido creado an. b) Aadir transiciones ((Q, ),Q) para cada conjunto de estados Q creado en el paso anterior. 4. Los conjuntos de estados que contengan un estado en F sern finales. Ms diseo de AFN: Interseccin de lenguajes Los problemas de diseo de AFN en que se combinan dos condiciones que se deben cumplir simultneamente son particularmente difciles de resolver. Un ejemplo de estos problemas es: obtener un AFN que acepte las palabras que contengan la cadena abb un nmero impar de veces y ba un nmero par de veces.

Es mejor contar con un mtodo modular que permita combinar de una manera sistemtica las soluciones parciales para cada una de las condiciones.Esto es posible, si se considera la siguiente propiedad de la interseccin de conjuntos: L1 L2 = (L1C L2 C) C Esta frmula sugiere un procedimiento prctico para obtener un AFN que acepte la interseccin de dos lenguajes dados. Esto se ilustra en el siguiente ejemplo. Ejemplo.- Obtener un AF para el lenguaje en el alfabeto {a, b} en que las palabras son de longitud par y adems contienen un nmero par de as. Este problema parece bastante difcil, pero se vuelve fcil utilizando la frmula de interseccin de lenguajes. En efecto, se inicia calculando los AFD para los lenguajes que cumplen independientemente las dos condiciones. El AFD M1 de la figura 22(a) acepta las palabras de longitud par, mientras que M2 de 2.32(b) acepta las palabras con un nmero par de as. Ahora se obtienen los AFD que aceptan el complemento de los lenguajes de M1 y M2, cambiando los estados finales por no finales y viceversa; sean M1C M2 C Es muy importante notar que slo es posible complementar AFDs y no cualquier AFN. En efecto, si en un AFN simplemente se cambian estados finales por no finales y viceversa, en general se llega a un resultado errneo (esto es, el autmata resultante no es equivalente al original) Combinamos estos autmatas utilizando el procedimiento para la unin de lenguajes, dando un AFN M3 (figura 22(c)), el cual es convertido a un AFD M4. Finalmente, este AFD es simplificado y complementado, dando M4c (figura 22(d)), que es el autmata buscado.

Figura 22: Interseccin de dos AFN

ACTIVIDADES: Ejercicios Propuestos: 1.- Obtener el lenguaje reconocido por el siguiente AFD: A = ({a, b, c}, {q0, q1, q2, q3, q4}, f, q0, {q2}) f(q0, a) = q1 f(q0, b) = q4 f(q0, c) = q4 f(q1, a) = q4 f(q1, b) = q1 f(q1, c) = q2 f(q2, a) = q4 f(q2, b) = q4 f(q2, c) = q2 f(q3, a) = q4 f(q3, b) = q3 f(q3, c) = q2 f(q4, a) = q4 f(q4, b) = q4 f(q4, c) = q4 2.- Determinar el lenguaje que reconoce el siguiente AFD:

3.-Dado el autmata finito siguiente:

Definir la gramtica lineal izquierda que describe el mismo lenguaje reconocido por el autmata. 4.-Decir cules de las siguientes palabras son reconocidas por el siguiente AFND: 110, 01, 100 AFND = ({0, 1}, {q0, q1, q2}, q0, {q1}) f(q0, 0) = f(q0, 1) = {q1, q2} f(q0, ) = f(q1, 0) = {q0} f(q1, 1) = {q0, q1} f(q1, ) = {q0} f(q2, 0) = {q2} f(q2, 1) = f(q2, ) = {q1}

5.- Determinar la pertenencia de las cadenas: aab, aba y ba, al lenguaje reconocido por el siguiente AFND: A = ({a,b}, {q1,q2,q3,q4}, f, q1, {q1}, {(q2,q4), (q3,q4), (q4,q3)}) f(q1,a) = {q2} f(q2,a) = {q1,q3,q4} f(q3,a) = f(q4,a) = f(q1,b) = f(q2,b) = {q1,q3} f(q3,b) = {q1,q4} f(q4,b) = {q3}

MINIMIZACIN DE AUTMATAS FINITOS 6.-Obtener para cada uno de los siguientes autmatas finitos su autmata mnimo Equivalente:

7.- Dada la gramtica lineal derecha: G = (T, N, S, P) T = {0, 1} . N = {S, A} P = { S::= 1A | 1S, A::= 0A | 1A | 1 } encontrar el autmata finito determinista (AFD) mnimo asociado. 8.-Dado el autmata finito:

(a) Construir el AFD mnimo equivalente (b) Deducir el lenguaje que reconoce

9.- Encontrar el autmata mnimo equivalente al siguiente AFD:

10.- Construir el autmata finito determinista mnimo equivalente al siguiente:

11.- Encontrar el AFD mnimo equivalente al siguiente AFND:

Ejercicios Resueltos12: Suponga que permitimos que los autmatas finitos cambien de un estado a otro sin leer un smbolo de sus cintas de entrada. En un diagrama de transiciones, este tipo de transiciones normalmente se representa como un arco con etiqueta en vez de un smbolo del alfabeto; y se le conoce como transicin . Muestre que cualquier diagrama de transiciones que tenga transiciones se puede modificar para que ya no contenga este tipo de transiciones pero que a la vez acepte el mismo lenguaje (el diagrama modificado puede ser no determinista).
Ingenieria Tcnica en Informatica de Sistemas y de Gestin de la UNED Espaa ASIGNATURA: TEORA DE UTMATAS I Tutora del Centro Asociado de Plasencia en: URL http://dac.escet.urjc.es/lrincon/uned/ta1/ProblemasFinalCapitulo.pdf
12

Solucin: Pueden darse estos casos: 1.- La transicin conduce a un estado de cual salen otros arcos. 1.1 El estado al que conduce la transicin no es de aceptacin. Esto significa que desde el estado 1, se puede pasar a cualquiera de los estados E1, ..., Ej, Ek, leyendo respectivamente x1, ..., xj, ...xk. Por lo cual podemos eliminar el estado 2, sacando del 1 los mismos arcos que salan del 2 (si los hubiera). Resulta que ahora, el diagrama que aparentemente era determinista, ya no lo es. Hay dos arcos rotulados con la entrada xk.

1.2 El estado al que conduce la transicin es de aceptacin Esto significa que desde el estado 1, se puede aceptar la cadena sin leer ningn smbolo ms; o pasar a los estados E1, ..., Ej, Ek, leyendo respectivamente x1, ..., xj, ...xk.. En otras palabras, que el estado 1 es de aceptacin. Por lo cual podemos eliminar el estado 2, hacer de aceptacin el 1; y sacar del 1 los mismos arcos que salan del 2. 2.- La transicin conduce a un estado de cual no salen otros arcos. 2.1 El estado al que conduce la transicin no es de aceptacin. Esto significa que sea cual sea la entrada en el estado 1, se puede pasar a un callejn sin salida. Y esta posibilidad podemos representarla sacando un arco con cada entrada posible hacia el callejn sin salida. x1

Es curioso, pero tiene su justificacin. Al fin y al cabo; si vamos a caer en ese callejn sin salida (sin llegar a un estado de aceptacin), para los efectos del

anlisis de la cadena, da igual que leamos otra entrada ms (sea cual sea) o que no la leamos. 2.2 El estado al que conduce la transicin es de aceptacin. El tratamiento es igual que en 1.2

Esto significa que desde el estado 1, se puede aceptar la cadena sin leer ningn smbolo ms. En otras palabras, que el estado 1 es de aceptacin. Por lo cual podemos eliminar el estado 2 y hacer de aceptacin el 1. Muestre que el lenguaje del alfabeto {x, y} que consiste en aquellas cadenas con el mismo nmero de x e y es independiente del contexto determinista: Solucin: Comentarios: El estado inicial es de aceptacin, para permitir cadenas con cero xs y cero ys. Durante el estado X, el nmero de xs es mayor que el de ys. Se introduce una x cada vez que se lee una x; y se saca una x cada vez que se lee una y. Si en algn momento se iguala este nmero (smbolo # en la cima), se vuelve al estado F Durante el estado Y, el nmero de ys es mayor que el de xs. Se introduce una y cada vez que se lee una y; y se saca una y cada vez que se lee una x. Si en algn momento se iguala este nmero (smbolo # en la cima), se vuelve al estado F Si durante el estado F se recibe FDC, la cadena queda aceptada. Muestre que si L es un lenguaje independiente del contexto, entonces el lenguaje que consiste en las cadenas de L escritas a la inversa tambin es independiente del contexto. Solucin: Un lenguaje independiente del contexto se puede caracterizar mediante una gramtica independiente del contexto que casi tiene la forma normal de

Chomsky. Las reglas de dicha gramtica pueden tener estas formas: S (Nuevo smbolo inicial en el lado izquierdo y en el derecho para permitir las cadenas vacas) S x (Nuevo smbolo inicial en el lado izquierdo y un terminal en el lado derecho) S AB (Nuevo smbolo inicial en el lado izquierdo y un par de no terminales en el lado derecho) S x (Antiguo smbolo inicial en el lado izquierdo y un terminal en el lado derecho) S AB (Antiguo smbolo inicial en el lado izquierdo y un par de no terminales en el lado derecho) Si en las reglas cuyo lado derecho son dos no terminales se invierte el orden de dichos no terminales: S S x S BA Sx S BA Resulta que las cadenas aceptadas son exactamente las inversas. Ejercicios Resueltos.13 Ejercicio 1- Define, de manera recursiva, el lenguaje L de las cadenas de parntesis correctas. (Es decir, (())() L, ()(() L) SOLUCIN: 1. () L (aunque L, se puede considerar alternativamente que L para definir con 2 y 3 las dems palabras). 2. Si x L, entonces (x) L . 3. Si x, y L, entonces x y L. 4. No hay ms palabras en L que las formadas por las reglas anteriores. Ejercicio 2- Encuentra una expresin regular correspondiente al lenguaje de las cadenas en {a, b}* que no empiezan por b y no contienen dos as consecutivas. Construye un AFN- reconocedor de este lenguaje. Una ER que describe el lenguaje es +a(b+ba)*. El AFN- se puede construir directamente utilizando el Teorema de Kleene.
13

Ingeniera Superior en Informtica, Grupos A, B y C Teora de Autmatas y Lenguajes formales. Examen Final-19 de Junio de 2003, Solucin Ejercicios

Ejercicio 3 (a) Define, mediante expresiones regulares, las clases de equivalencia respecto a la relacin de distinguibilidad con respecto al lenguaje del ejercicio anterior, utilizando para ello un conjunto distinguible mximo. (b) Define completamente la operacin de concatenacin por la derecha de las clases con las letras del alfabeto. (c) Define a partir de (a) y (b) el AF mnimo. SOLUCIN: (a) Para encontrar un CDM, vamos estudiando las distintas palabras del lenguaje. Empezamos comparando las palabras de longitud 1 con la palabra vaca y entre s. Es fcil ver que {, a} es un conjunto distinguible (z = a). Tambin son distinguibles {, b} (z = a) y {a, b} (z = b). Por tanto, {, a, b} es un conjunto distinguible. (b) En cuanto a las palabras de longitud 2, es fcil ver que aa es indistiguible de b, que ba es indistinguible de b y que bb es indistinguible de b (son palabras que no estn en el lenguaje y que, seguidas de cualquier cola, tampoco), mientras que ab es distinguible de , a y b. Con esto, es sencillo darse cuenta que si w es una palabra de longitud mayor o igual que 3, resulta que: (c) si w empieza por a, acaba por a y no contiene la subcadena aa, entonces es indistinguible de a, (d) si w empieza por a, acaba por b y no contiene la subcadena aa, entonces es indistinguible de ab, y, (e) si w empieza por b o contiene la subcadena aa, entonces es indistinguible de b. Por tanto, un CDM es {, a, b, ab}. Las correspondientes clases de equivalencia vienen dadas por las siguientes ER: [] [a] a(b+a)*. [ab] a(b+a)*b+ [b] b(b + a)* + (b + a)*aa (b + a)* Es sencillo ver que la unin de estas clases es {a, b}* y que la interseccin de cada dos de ellas es vaca. (b) La operacin de concatenacin a la derecha viene dada por []a = [a], []b = [b] [a]a = [b], [a]b = [ab] [b]a = [b], [b]b = [b] [ab]a = [a], [ab]b = [ab] (c) El AFD mnimo viene dado por la siguiente tabla (A-[], B-[a], C-[ab], D-[b]):

*A *B *C

a b B D D C B C D D D
k

Ejercicio 4 Demostrar que el lenguaje L = {a ib jc utilizando el Lema de Bombeo.

: j > i + k} no es regular,

SOLUCIN: Sea n la constante del Lema de Bombeo. Consideramos la palabra x = a nb 2n+1b n y consideramos todas las descomposiciones de x = uvw, con |uv| n y |v| > 0. Por tanto, v est formado slo por as, y contiene al menos una. De esta forma, uv kw L para todo k 2. Ejercicio 5 Consideramos la siguiente tabla de transicin de un AFD: ab q1 q2 q1 q2 q2 q1 donde q1 es el estado inicial y q2 es el nico estado de aceptacin. Calcula una expresin regular para el lenguaje reconocido por el autmata, utilizando el mtodo de la demostracin del teorema de Kleene. SOLUCIN: Utilizando la demostracin del Teorema de Kleene, basta calcular R(2) 1,2 = L(1, 2, 2). Aplicando R(2) 1,2 = R(1) 1,2 + R(1) 1,2(R(1) 2,2)*R(1) 2,2, tenemos que R(0)1,1 = + b, R(0) 1,2 = a, R(0) 2,1 = b, R(0) 2,2 = + a Por tanto, R(1) 1,2 = a + (+ b)( + b)*a = b*a y R(1)2,2 = (+ a) + b(+ b)*a = + b*a. Finalmente R = R(2) 1,2 = b*a + (b*a)( + b*a)*( + b*a) = (b*a)+. Ejercicio 6 Considera la gramtica incontextual G dada por: S SS | | ab Demuestra que es ambigua. Encuentra una expresin regular que describa L(G) y define una gramtica regular equivalente no ambigua. SOLUCIN: Para ver que G es ambigua, mostramos dos derivaciones ms a la izquierda para la palabra w = ab: S SS abS ab S ab Una expresin regular que describe L(G) es (ab)*, y una gramtica incontextual regular no ambigua que describe L(G) es S aB | ; B bS (Es sencillo obtener esta gramtica a partir de un AFD que reconoce el lenguaje).

BIBLIOGRAFA DE LA UNIDAD eBook Automatas y Lenguajes:http://lizt.mty.itesm.mx/%7Erbrena/Libro/form2AyL.php de ramon.brena@itesm.mx IOST F. Hans, Teora de autmatas y lenguajes formales, CAPTULO 2, LENGUAJES REGULARES Y AUTOMATAS FINITOS (2001) en: http://iie.ufro.cl/~hansiost/automatas/Capitulo2.doc

INTRODUCCIN Los lenguajes independientes del contexto que tambien se conocen con el nombre de gramaticas de contexto libre son un mtodo recursivo sencillo de especificacin de reglas gramaticales con las que se pueden generar cadenas de un lenguaje. Es factible producir de esta manera todos los lenguajes regulares, ademas de que existen ejemplos sencillos de gramaticas de contexto libre que generan lenguajes no regulares. Las reglas gramaticales de este tipo permiten que la sintaxis tenga variedad y refinamientos mayores que los realizados con lenguajes regulares, en gran medida sirven para especificar la sintaxis de lenguajes de alto nivel y otros lenguajes formales. OBJETIVO GENERAL Conocer los modelos de computacin que corresponden a los lenguajes independientes del contexto y su aplicacin. OBJETIVOS ESPECIFICOS Generalizar los conceptos de autmatas finitos y gramaticas regulares. Reconocer el potencial de procesamiento del lenguaje del automata con los autmatas de pila.

LECCION 16. GRAMATICAS REGULARES asta ahora, se han visto dos formas de definir lenguajes: a travs de autmatas finitos, y por medio de expresiones regulares. Ahora veremos otra forma, usando el concepto de gramticas. Sea el autmata: a q3 b q5 q4 b Se puede pensar que este autmata es un generador de cadenas a partir de una cadena vaca. As, las cadenas que puede generar el autmata son todas aquellas que perteneces al lenguaje representado por el autmata L(M). Observando el autmata podemos decir que todas las cadenas inician con una a, luego viene una serie de as o bs y finalmente termina con una b. Podemos utilizar la siguiente notacin para representar esto: SaE : partiendo del estado inicial S, vendr una a y luego otra cadena que denotamos genricamente con una E. E A, EB : hay dos posibilidades para E, que venga una exp. tipo A o tipo B. Luego, para expresiones tipo A y B tenemos: A b, A aA B b, B bB Finalmente, tendremos el siguiente conjunto de expresiones (utilizamos para representar o). b a(a*b*)b

q1 a q2

1. S a E 2. E A B 3. A aA b 4. B bB b Estas expresiones pueden ser consideradas como reglas de sustitucin y permiten generar cualquier cadena o palabra vlida dada por el autmata del cual se obtuvieron. Por ejemplo, sea la cadena a3b: S a E a a A a a a A a a a b = a3b 2 ,3 3 3 Una gramtica regular G es una cudrupla G = (, N, S, P), donde: : alfabeto (no vaco) de smbolos terminales. N : es un conjunto (no vaco) de smbolos no terminales. S : es denominado el smbolo inicial y S N. P : es una coleccin o conjunto de reglas de sustitucin llamadas producciones y que son de la forma A w, donde A N y w es una cadena sobre N. Adems, w debe satisfacer las siguientes condiciones: 1. w contiene un no terminal como mximo. 2. si w contiene un no terminal, entonces es el smbolo que est en el extremo derecho de w. b Ejemplo: Dada la gramtica regular dada por: S b A a B AabaS BbabS Genera un lenguaje regular. Podemos obtener entonces el autmata y la expresin regular correspondientes. a a S b Autmata: b Exp. Regular: (baba abab)* a b a

Ejemplo: Obtener una gramtica regular para el lenguaje representado por: a*b a R: = {a, b} N = {S} a S R a b

P: S R a R aR b LECCION 17. - GRAMTICAS REGULARES Y LENGUAJES REGULARES

ea un lenguaje regular, se puede obtener una gramtica regular que genere L a partir de un AFD M = (Q, , s0, F, ) para el cual L = L(M). Se define esta gramtica G = (N, , S, P) de la siguiente manera:

N=Q = S = s0 P = {q a p (q, a) = p} {q q F} Por ejemplo, sea el AFD de la siguiente figura: Q1 b Q2 a, b Q3 a, b

acepta el lenguaje a* b. La correspondiente gramtica regular ser: Q1 a Q1 b Q2 Q2 a Q3 b Q3 Q3 a Q3 b Q3 Es posible probar que cualquier palabra que sea aceptada por el AFD M, puede ser generada por la gramtica regular G. Esto significa que L(G) = L(M). Tambin es posible deducir un AFND a partir de una gramtica regular G. Sea G = (N, , S0, P) una G.R., se define M = (Q, , S, F, ) como sigue:

Q = N {}, donde es un nuevo smbolo. S0 = S F = {} y se construye a partir de las producciones de P, como se indica a continuacin: 1. Si A 1n B es una produccin de P, con A y B como no terminales, entonces se agregan a Q los nuevos estados q1, q2, , qn-1 y las transiciones siguientes: (A, 1n ) = (q1 , 1n ) = = (q n-1, n ) = B 2. Si A 1n es una produccin de P, entonces se aadirn a Q los nuevos estados q1, q2, , q n-1 y a , las transiciones siguientes: (A, 1n ) = (q1 , 1n ) = = (q n-1, n ) = Ejemplo: Sea la gramtica Regular dada por. S aSbBb B cC C aS Obtenemos el AFND correspondiente, utilizando el mtodo anterior: Q = {S, B, C, } S0 = S F = {} i. ii. iii. iv. v. S aS : S bB : Sb: B cC : C aS : (S,a) = S (S,b) = B (S,b) = (B,c) = C (C,a) = S

As, podemos construir el AFND siguiente: a a b c B S b

Para el caso de una produccin de la forma: A abaS, tendremos las siguientes transiciones y nuevos estados: (A, a b a) = S, se descompone en : (A, a) = q1 ; (q1, b) = q2; (q2, a) = S

donde q1 y q2 son nuevos estados que se agregan a Q. LECCION 18. - GRAMTICAS INDEPENDIENTES DEL CONTEXTO.

uando se eliminan las restricciones impuestas al lado derecho de las producciones de una gramtica, se pueden tener producciones como por ejemplo:

S aBbA A aaSbAA B bbSaBB o incluso: S aSb Es decir, no hay ninguna restriccin respecto de la cantidad y posicin de los smbolos no terminales en el lado derecho de las producciones. Una gramtica independiente del contexto (GIC) es una cudrupla G=(N, , S, P), donde: N: es una coleccin finita (no vaca) de smbolos no terminales. : es un alfabeto. S: es un no terminal llamado smbolo inicial. P: un conjunto de producciones tal que P N (N )*. Los lenguajes generados por una GIC son llamados Lenguajes Independientes del Contexto (LIC). Es posible probar que la gramtica independiente del contexto dada por: S aSb genera el lenguaje independiente del contexto {an bn / n 0} y se puede probar que este no es un lenguaje regular. Esto indica que hay LIC que no son lenguajes regulares; y por lo tanto el conjunto de los LIC contienen al conjunto de los lenguajes regulares.

4.18.1. rboles de derivacin y ambigedad. Al derivar una cadena a travs de una GIC, el smbolo inicial se sustituye por alguna cadena. Los no terminales se van sustituyendo uno tras otro por otras cadenas hasta que ya no quedan smbolos no terminales, queda una cadena con slo smbolos terminales. A veces es til realizar un grfico de la derivacin. Tales grficos tienen forma de rbol y se llaman arbol de derivacin o rbol de anlisis. Para una derivacin dada, el smbolo inical S etiqueta la raz del rbol. El nodo raz tienen unos nodos hijos para cada smbolo que aparezca en el lado dereho de la produccin, usada para reemplazar el smbolo inicial. De igual forma, cada smbolo no terminal tienen unos nodos hijos etiquetados con smbolos del lado derecho de la produccin usada para sustituir ese no terminal. Ejemplo: Sea la GIC dada por S AB A aAa B bBb La cadena aabbb tienen la siguiente derivacin: S => AB => AbB => AbbB => Abbb => aAbbb => aabbb Con esto, el rbol de derivacin ser dado por: S A a A b b a b Existen muchas derivaciones posibles para la cadena aabbb, por ejemplo: S => AB => aAB => aaB => aabB => aabbB => aabbb S => AB => aAB => aAbB => aAbbB => aAbbb => aabbb Pero el rbol de derivacin ser siempre el mismo.Sin embargo, esto no siempre se cumple. B B B

Considrese la gramtica: S SbSScSa la cadena abaca se puede derivar: 1. S => SbS => SbScS => SbSca => Sbaca => abaca. 2. S ScS SbScS abScS abacS abaca S S a b S S c S

S S S b S a c S

a Derivacin 1

a
Derivacin 2

En este caso, para una misma cadena, se obtuvieron rboles de derivacin distintos. Entonces, diremos que una gramtica es ambiga cuando hay dos o ms rboles de derivacin distintos para una misma cadena. En algunos casos, si la gramtica es ambigua, se puede encontrar otra gramtica equivalente pero que no sea ambiga. Por ejemplo: SAB Aa Ba ... es ambigua porque tiene rboles de derivacin distintos para la cadena a. Una gramtica equivalente que no es ambiga es: Sa Si todas las GIC para un lenguaje son ambigas, se dice que el lenguaje es un lenguaje independiente del contexto (LIC) inherentemente ambigo. Ejemplo: Considere la gramtica G1 dada por: N = {S,A} ; = {a} ; S ; P: {S AA ; A aSa ; A a}

Se pueden obtener 2 rboles de derivacin para la cadena aaaaa:

S A a S A A a a A
a A

S A a A S a A

La gramtica G1 no es una gramtica regular, pero es relativamente fcil mostrar que L(G1) es el conjunto regular {a2,a5,a8,a11,a14, ...}. La ambigedad no es inherente al lenguaje y puede definirse una gramtica libre de contexto mucho ms simple: G2 = ({T}, {a}, T, {T aaaT, T aa}) Esta gramtica es claramente no ambiga. La ambigedad no es una caracterstica deseable en una gramtica que describe un lenguaje, especialmente en un lenguaje de programacin. No sera claro cul es el rbol de derivacin que tendra que usarse para inferir el significado de una cadena. Para ilustrar lo anterior, considere el siguiente ejemplo: G: A I=E Iabc E E+E E*E (E) I

La cadena: a=b+c*a , es una cadena de este lenguaje y se pueden obtener 2 rboles de derivacin para ella:

A I a = E I b E + E I E a E I E I I

A = E E

*
E I

E I a

c a b c Si se pretende obtener el valor del resultado de la expresin a la derecha del operador de asignacin (=), se obtienen 2 resultados posibles, b+(c*a) o (b+c)*a .En general, estos resultados no son iguales.

LECCION 19. - FORMAS CANNICAS PARA LAS GIC a definicin de una gramtica independiente del contexto es demasiado amplia, y por lo tanto, es deseable establecer una forma cannica que restrinja los tipos de producciones que pueden utilizarse. Una produccin A B en una GIC G = (N, , S, P) es til si esta es parte de una derivacin comenzando con el smbolo incial y terminando con una cadena terminal. Esto es, A B es til si hay una derivacin: S * w1Aw2 *w1Bw2 * x, donde x * Una produccin que no es til es llamada no usada. Un noterminal que no aparece en ninguna produccin til es llamado no usado. Un no terminal que no est entre los terminales no usados, es llamdo til.

Ejemplo: (1) S gAe aYB CY (2) A bBY ooC (3) B dd D (4) C jVB gi (5) D n (6) U kW 1. Para el no terminal W, es imposible encontrar una derivacin que iniciando en S produzca una sentencia que contenga W. Lo mismo ocurre con U. 2. No hay derivaciones que contengan el no terminal Y y que puedan producir

(7) V baXXX oV (8) W c (9) X fV (10) Y Yhm

una cadena terminal. Lo mismo ocurre con X y V. 3. B se utiliza en conjunto con no terminales no usados y por lo tanto es no usado tambin. Con D ocurre lo mismo.

Todo lenguaje independiente del contexto L (no vaco) puede ser generado por una gramtica libre de contexto que contenga slo producciones tiles y no terminales tiles. Una produccin de la forma A B, donde A, B N (no terminales), es llamada una produccin unitaria o produccin no generativa. Ejemplo: AB B w1 C Se puede eliminar A B e incluir la produccin A w1 C. Utilizando todo lo anterior al ejemplo de la pgina anterior, tendremos como resultado la gramtica: S gAe A ooC C gi Una gramtica independiente del contexto esta en la forma normal de Chomsky si no contiene producciones (A ) y si todas las producciones son de la forma A a, para a , o de la forma A BC, donde B, C son no terminales. Esto es, en la forma normal de Chomsky, el lado derecho de cada produccin contiene un nico smbolo terminal o un par de no terminales. Cualquier lenguaje libre de contexto L puede ser generado por una gramtica libre de contexto en la forma normal de Chomsky. A partir de lo anterior se infiere que cualquier gramtica libre de contexto puede ser transformada a la forma normal de Chomsky. La estrategia bsica ser agregar nuevos smbolos no terminales a aquellas producciones no normalizadas tales como por ejemplo A JKcb y reemplazarlas por un conjunto de producciones equivalentes tales como: A JY1 , Y1 KY2 , Y2 XcXb , Xc c , Xb b

Donde Y1, Y2, Xc y Xb son nuevos smbolos no terminales. Ejemplo: G1: (1) S SABC (2) S be (3) S CBh (4) A aaC (5) B Sf (6) B ggg (7) C cA (8) C d G2: S SY11 , Y11 AY12 , Y12 BC S XbXe S CY31 , Y31 BXh A XaY41 , Y41 XaC B SXf B XgY61 , Y61 XgXg C XcA Cd Xb b , Xe e , Xh h , Xa a , Xf f , Xg g

Gramticas Libres de Contexto

Figura 22: Arbol de Derivacin

4.19.1. Simplicacin De Las Gramticas Libres De Contexto Para un mismo lenguaje de tipo 2 existen muchas gramticas libres de contexto que lo generan. Estas ser n de formas muy diversas por lo que, en general se hace muy difcil trabajar con ellas. Por este motivo interesa simplicarlas lo mas posible y denir unas formas normales para las gramticas que las hagan mas homogneas. 4.19.2. Eliminacin de Smbolos y Producciones Intiles Un smbolo X (V T ) se dice til si y solo si existe una cadena de derivaciones en G tal que S X w T

es decir si interviene en la derivacin de alguna palabra del lenguaje generado por la gramtica. Una produccin se dice til si y solo si todos sus smbolos son tiles. Esto es equivalente a que pueda usarse en la derivacin de alguna palabra del lenguaje asociado a la gramtica. Esta claro que eliminando todos los smbolos y producciones intiles el lenguaje generado por la gramtica no cambia. El algoritmo para eliminar los smbolos y producciones intiles consta de dos pasos fundamentales: 1. Eliminar las variables desde las que no se puede llegar a una palabra de T y las producciones en las que aparezcan. 2. Eliminar aquellos smbolos que no sean alcanzables desde el estado inicial, S, y las producciones en las que estos aparezcan. El primer paso se realiza con el siguiente algoritmo (V es un conjunto de variables): 1. V = 0 2. Para cada produccin de la forma A w, A se introduce en V. 3. Mientras Vcambie 4. Para cada produccin B 5. Si todas las variables de pertenecen a V ,B se introduce en V 6. Eliminar las variables que esten en V y no en V 7. Eliminar todas las producciones donde aparezca una variable de las eliminadas en el paso anterior El segundo paso se realiza con el siguiente algoritmo: Vy J son conjuntos de variables. J son las variables por analizar. T es un conjunto de smbolos terminales 1. J = {S} V = {S} T= 0 2. Mientras J 0 3. Extraer un elemento de J : A, (J = J {A}). 4. Para cada produccion de la forma A 5.Para cada variable B en 6. Si B no est en V aadir B a J y a V

7. Poner todos los simbolos terminales de en T 8. Eliminar todas las variables que no esten en V y todos los simbolos terminales que no esten en T . 9. Eliminar todas las producciones donde aparezca un simbolo o variable de los eliminados

Ejemplo: Es importante aplicar los algoritmos anteriores en el orden especicado para que se garantice que se eliminan todos los smbolos y variables intiles. Como ejemplo de lo anterior, supongamos que tenemos la gramtica dada por S AB, S a, A a En el primer algoritmo se elimina B y la produccin S AB. Entonces en el segundo se elimina la variable A y la produccin A a. Sin embargo, si aplicamos primero el segundo algoritmo, entonces no se elimina nada. Al aplicar despues el primero de los algoritmos se elimina B y la produccin S AB. En denitiva, nos queda la gramtica S a, A a donde todava nos queda la variable intil A. Ejemplo: Eliminar smbolos y producciones intiles de la gramtica S gAe, S aY B, S cY, A bBY, A ooC, B dd, B D, C jV B, C gi, D n, U kW, V baX X X , V oV, W c, X f V, Y Y hm se aplica el primer algoritmo. Inicialmente V tiene las variables V = {B, D, C, W }. En la siguiente iteracin aadimos a V las variables que se alcanzan desde estas: A y W . V queda igual a {B, D, C, W, A, U }. En la siguiente V = {B, D, C, W, A, U, S}. En la siguiente V = {B, D, C, W, A, U, S}. Como V no cambia ya se ha terminado el ciclo. Estas son las variables desde las que se alcanza una cadena de smbolos terminales. El restos de las variables: X , Y, V, son intiles y se pueden eliminar. Tambin se eliminan las producciones asociadas. La gramtica resultante es: S gAe, A ooC, B dd, B D, C gi, D n, U kW, W c A esta gramtica le aplicamos el segundo algoritmo J = {S}, V = {S}, T = 0 Tomando S de J y ejecutando las instrucciones del ciclo principal nos queda J = {A}, V = {S, A}, T = {g, e}

Tomando A de J, tenemos J = {C}, V = {S, A, C}, T = {g, e, o} Sacando C de J, obtenemos J = 0, V = {S, A, C}, T = {g, e, o, i} Como J = 0 se acaba el ciclo. Solo nos queda eliminar las variables intiles: B, D, U, W, los smbolos terminales intiles: n, k, c, d, y las producciones donde estos aparecen. La gramtica queda S gAe, A ooC, C gi En esta gramtica solo se puede generar una palabra: googige. Si el lenguaje generado por una gramtica es vaco, esto se detecta en que la variable S resulta intil en el primer algoritmo. En ese caso se pueden eliminar directamente todas las producciones, pero no el smbolo S. Ejemplo eliminar smbolos y producciones intiles de la gramtica S aSb,S ab,S bcD, S cSE,E aDb,F abc,E abF 4.19.3. Producciones Nulas Las producciones nulas son las de la forma A . Vamos a tratar de eliminarlas sin que cambie el lenguaje generado por la gramtica ni la estructura de los rboles de derivacin. Evidentemente si L(G) L(G) no vamos a poder eliminarlas todas sin que la palabra nula deje de generarse. As vamos a dar un algoritmo que dada una gramtica G, construye una gramtica G equivalente a la anterior sin producciones nulas y tal que L(G)= L(G) { }. Es decir, si la palabra nula era generada en la gramtica original entonces no puede generarse en la nueva gramtica. Primero se calcula el conjunto de las variables anulables: H es el conjunto de las variables anulables 1. H = 0 2. Para cada produccion A , se hace H = H {A} 3. Mientras H cambie 4. Para cada produccion B A1A2 ...An, donde Ai H para todo i = 1,...,n, se hace H = H {B} Una vez calculado el conjunto, H, de las variables anulables, se hace lo siguiente:

1. Se eliminan todas las producciones nulas de la gramatica 2. Para cada produccion de la gramatica de la forma A 1 ...n, donde i V T 3. Se elimina la produccion A 1 ...n 4. Se aaden todas las producciones de la forma A 1... :n 5. donde i = i si i H (i = i) (i = ) si H y no todos los i puedan ser nulos al mismo tiempo G es la gramtica resultante despus de aplicar estos dos algoritmos. Si G generaba inicialmente la palabra nula, entonces, a partir de G, podemos construir una gramtica G con una sola produccin nula y que genera el mismo lenguaje que G. para ello se aade una nueva variable, S, que pasa a ser el smbolo inicial de la nueva gramtica, G. Tambin se aaden dos producciones: S S, S Ejemplo: Eliminar las producciones nulas de la siguiente gramtica: S ABb, S ABC, C abC, B bB, B , A aA, A , C AB Las variables anulables despues de ejecutar el paso 2 del primer algoritmo son B y A. Al ejecutar el paso 3, resulta que C y S son tambin anulables, es decir H = {A, B, C, S}. Al ser S anulable la palabra vaca puede generarse mediante esta gramtica. En la gramtica que se construye con el segundo algoritmo esta palabra ya no se podr generar. Al ejecutar los pasos 3 y 4 del segundo algoritmo para las distintas producciones no nulas de la gramtica resulta 3. Se elimina la produccin S ABb 4. Se aade S ABb, S Ab, S Bb 3. Se elimina S ABC 4. Se aade S ABC, S AB, S AC, S BC, S A, S B, S C 3. Se elimina C abC 4. Se aade C abC, C ab 3. Se elimina B bB

4. Se aade B bB, B b 3. Se elimina A aA 4. Se aade A aA, A a 3. Se elimina C AB 4. Se aade C AB, C A, C B En denitiva, la gramtica resultante tiene las siguientes producciones: S ABb, S Ab, S Bb, S ABC, S AB, S AC, S BC, S A, S B, S C, C abC, C ab, B bB, B b, A aA, A a, C AB, C A, C B Ejemplo: Sea la gramtica S aHb, H aHb, H La nica variable anulable es H. Y la gramtica equivalente, que resulta de aplicar el algoritmo 2 es: S aHb, H aHb, S ab, H ab 4.19.4. Producciones Unitarias Las producciones unitarias son las que tienen la forma AB donde A, B V . Veamos como se puede transformar una gramtica G, en la que L(G), en otra gramtica equivalente en la que no existen producciones unitarias. Para ello, hay que partir de una gramtica sin producciones nulas. Entonces, se calcula el conjunto H de parejas (A, B) tales que B se puede derivar a partir de A: A B. Eso se hace con el siguiente algoritmo 1. H = 0 2. Para toda produccion de la forma A B, la pareja (A, B) se introduce en H. 3. Mientras H cambie 4. Para cada dos parejas (A, B), (B, C) 5. Si la pareja (A, C) no est en H (A, C) se introduce en H 6. Se eliman las producciones unitarias 7. Para cada produccion A 8. Para cada pareja (B, A) H 9. Se aade una produccion B

Ejemplo: Consideremos la gramtica resultante de un ejemplo anterior S ABb, S Ab, S Bb, S ABC, S AB, S AC, S BC, S A, S B, S C, C abC, C ab, B bB, B b, A aA, A a, C AB, C A, C B El conjunto H est formado por las parejas {(S, A), (S, B), (S, C), (C, A), (C, B)}. Entonces se eliminan las producciones S A, S B, S C, C A, C B Se aaden a continuacion las producciones (no se consideran las repetidas) S a, S aA, S bB, S b, S abC, S ab, C aA, C a, C bB, C b Ejemplo: El lenguaje L = {a b : n 1} {a ba : n 1} viene generado por la siguiente gramtica de tipo 2: S A, S B, A ab, A aHb H ab, H aHb, B aBa, B b Las parejas resultantes en el conjunto H son {(S, A), (S, B)}. La gramtica sin producciones unitarias equivalente es: Aab, AaHb, Hab, HaHb, BaBa, Bb, Sab, SaHb, SaBa, Sb. LECCION 20. - FORMAS NORMALES 4.20.1. Forma Normal de Chomsky Una gramtica de tipo 2 se dice que est en forma normal de Chomsky si y solo si todas las producciones tienen la forma A BC, A a, donde A,B,C V , a T . Toda gramtica de tipo 2 que no acepte la palabra vaca se puede poner en forma normal de Chomsky. Para ello lo primero que hay que hacer es suprimir las producciones nulas y unitarias. A continuacin se puede ejecutar el siguiente algoritmo: 1. Para cada produccion de la forma A 1 ... n, i (V T ),n 2 2. Para cada i, si i es terminal: i =a T 3. Se aade la produccion Ca a 4. Se cambia i por Ca en A 1 ... n 5. Para cada produccion de la forma A B1,...Bm, m 3
n n n n

6. Se aaden (m 2)variables D1,D2,...,Dm2 (distintas para cada produccion) 7. La produccion A B1 ...Bm se reemplaza por A B1D1, D1 B2D2, ..., Dm2 Bm1Bm Ejemplo Sea la Gramtica G =({S,A,B},{a,b},P,S) dada por las producciones S bA | aB, A bAA | AS | a, B aBB | bS | b Para pasarla a forma normal de Chomsky, en el ciclo asociado al paso 1 se aaden las producciones Ca a, Cb b y las anteriores se transforman en S CbA | CaB, A CbAA | AS | Ca, B CaBB | CbS | Cbb Al aplicar el paso asociado al paso 5, la gramtica queda S CbA | CbB, A CbD1 | AS | a, D1 AA, B CaE1 | CbS | b, E1 B, Ca a, Cb b Con esto la gramtica ya est en forma normal de Chomsky. 4.20.2. Forma Normal de Greibach Una gramtica se dice que est en forma normal de Greibach si y solo si todas las producciones tienen la forma A a donde a T , V*. Toda gramtica de tipo 2 que no acepte la palabra vaca se puede poner en forma normal de Greibach. Para ello hay que partir de una gramtica en forma normal de Chomsky y aplicarle el siguiente algoritmo. En realidad no es necesario que la gramtica est en forma normal de Chomsky. Basta que todas las producciones sean de uno de los tipos siguientes: A a, a T, V* . A , V* . Claro est, en una gramtica en forma normal de Chomsky, todas las producciones son de alguno de estos dos tipos. En este algoritmo se supone que el conjunto de variables inicial de la gramtica est numerado V = {A1,...,Am}. El algoritmo se basa en dos operaciones bsicas. La primera es eliminar una produccin, A B de la gramtica G, donde A B. Esto se hace con los siguientes pasos: 1. Eliminar A B 2. Para cada produccion B 3. Aadir A

La otra operacin bsica consiste en eliminar todas las producciones del tipo A A donde V* . Esto se hace siguiendo los siguiente pasos: 1. Aadir una nueva variable BA 2. Para cada produccion A A 3. Aadir BA y BA BA 4. Eliminar A A 5. Para cada produccion A no empieza por A 6. Aadir A BA Llamemos ELIMINA1(A B) a la funcin que realiza el primer paso y ELIMINA2(A) a la funcin que reliza el segundo paso. Si si llama a ELIMINA2(A j), la variable que aadimos la notaremos como Bj. En estas condiciones vamos a realizar un algoritmo, al nal del cual todas las producciones tengan una forma que corresponda a alguno de los patrones siguientes: A a, a T, V* . Ai A j, j > i, V* . B j Ai, V* El algoritmo es como sigue: 1. Para cada k = 1,...,m 2. Para cada j = 1,...,k 1 3. Para cada produccion Ak Aj 4. ELIMINA1(Ak Aj ) 5. Si existe alguna produccion de la forma Ak Ak 6. ELIMINA2(Ak) A continuacin se puede eliminar denitivamente la recursividad por la izquierda con el siguiente algoritmo pasando a forma normal de Greibach 1. Para cada i = m 1,...,1 2. Para cada produccion de la forma Ai Aj, 3. ELIMINA1(Ai Aj) 4. Para cada i = 1,2,...,m 5. Para cada produccion de la forma Bj Ai. 6. ELIMINA1(Bj Ai)

j>i

El resultado del segundo algoritmo es ya una gramtica en forma normal de Greibach.

Ejemplo: Pasar a forma normal de Greibach la gramtica dada por las producciones A1 A2A3, A2 A3A1, A2 b, A3 A1A2, A3 a Aplicamos ELIMINA1 a A3A1A2. Se elimina esta produccin y se aade: A3A2A3A2 Queda: A1 A2A3, A2 A3A1, A2 b, A3 a, A3 A2A3A2 Aplicamos ELIMINA1 a A3 A2A3A2 Se elimina esta produccin y se aaden: A3 A3A1A3A2, A3 bA3A2 Queda: A1 A2A3, A2 A3A1, A2 b, A3 a, A3 A3A1A3A2, A3 bA3A2 Aplicamos ELIMINA2 a A3 Se aade B3 y las producciones B3 A1A3A2, B3 A1A3A2B3 Se elimina A3 A3A1A3A2. Se aaden las producciones: A3 aB3, A3 bA3A2B3 Queda: A1 A2A3, A2 A3A1, A2 b, A3 a, A3 bA3A2 B3 A1A3A2, B3 A1A3A2B3 A3 aB3, A3 bA3A2B3 Se aplica ELIMINA1 a A2 A3A1. Se elimina esta produccin y se aaden: A2 aA1, A2 aB3A1, A2 bA3A2B3A1, A2 bA3A2A1 Queda: A1 A2A3, A2 b, A2 aA1, A2 aB3A1, A2 bA3A2B3A1, A2 bA3A2A1, A3 a, A3 bA3A2, B3 A1A3A2, B3 A1A3A2B3 A3 aB3, A3 bA3A2B3 Se aplica ELIMINA1 a A1 A2A3. Se elimina esta produccin y se aaden: A1 bA3, A1 aA1A3, A1 aB3A1A3, A1 bA3A2B3A1A3, A1 bA3A2A1A3 Queda:

A2 b, A2 bA3A2B3A1, A3 bA3A2, A3 aB3, A1 aA1A3, A1 bA3A2A1A3

A2 aA1, A2 bA3A2A1, B3 A1A3A2, A3 bA3A2B3, A1 aB3A1A3,

A2 aB3A1, A3 a, B3 A1A3A2B3, A1 bA3, A1 bA3A2B3A1A3,

Se aplica ELIMINA1 a B3 A1A3A2 Se elimina esta produccin y se aaden: B3 aA1A3A3A2, B3 aB3A1A3A3A2, B3 bA3A3A2, B3 bA3A2B3A1A3A3A2, B3 aB3A1A3A3A2, Queda: A2 b, A2 bA3A2B3A1, A3 bA3A2, A3 bA3A2B3, A1 aB3A1A3, B3 bA3A3A2, B3 bA3A2B3A1A3A3A2, A2 aA1 A2 bA3A2A1 B3 A1A3A2B3, A1 bA3, A1 bA3A2B3A1A3, B3 aA1A3A3A2, B3 aB3A1A3A3A2, A2 aB3A1, A3 a, A3 aB3, A1 aA1A3, A1 bA3A2A1A3 B3 aB3A1A3A3A2,

Se aplica ELIMINA1 a B3 A1A3A2B3. Se elimina esta produccin y se aaden: B3bA3A3A2B3, B3aA1A3A3A2B3, B3aB3A1A3A3A2B3, B3bA3A2B3A1A3A3A2B3, B3aB3A1A3A3A2B3, Resultado: A2 b, A2 bA3A2B3A1, A3 bA3A2, A1 bA3, A1 bA3A2B3A1A3, B3 aA1A3A3A2, B3 aB3A1A3A3A2, B3 aB3A1A3A3A2B3, A2 aA1, A2 bA3A2A1 A3 aB3, A1 aA1A3, A1 bA3A2A1A3, B3 aB3A1A3A3A2, B3 bA3A3A2B3, B3 bA3A2B3A1A3A3A2B3, A2 aB3A1, A3 a, A3 bA3A2B3, A1 aB3A1A3, B3 bA3A3A2, B3 bA3A2B3A1A3A3A2, B3 aA1A3A3A2B3, B3 aB3A1A3A3A2B3

LECCION 21. - DEFINICIN DE AUTMATA CON PILA14 or ejemplo el lenguaje de los parntesis bien balanceados, que se sabe es propiamente un LLC (lenguaje Libre de contexto,Qu mquina se requiere para distinguir las palabras de parntesis bien balanceados de las que tienen los parntesis desbalanceados? Una primera idea podra ser la de una mquina que tuviera un registro aritmtico que le permitiera contar los parntesis; dicho registro sera controlado por el control finito, quien le mandara smbolos I para incrementar en uno el contador y D para decrementarlo en uno. A su vez, el registro mandara un smbolo Z para indicar que est en cero, o bien N para indicar que no est en cero. Entonces para analizar una palabra con parntesis lo que haramos sera llevar la cuenta de cantos parntesis han sido abiertos pero no cerrados; en todo momento dicha cuenta debe ser positiva o cero, y al final del clculo debe ser exactamente cero. Por ejemplo, para la palabra (())() el registro tomara sucesivamente los valores 1, 2, 1, 0, 1, 0. Como segundo ejemplo, considrese el lenguaje de los palndromos (palabras que se leen igual al derecho y al revs, como ANITALAVALATINA). Aqu la mquina contadora no va a funcionar, porque se necesita recordar toda la primera mitad de la palabra para poder compararla con la segunda mitad. Ms bien pensaramos en una mquina que tuviera la capacidad de recordar cadenas de caracteres arbitrarias, no nmeros. Siguiendo esta idea, podramos pensar en aadir al AF un almacenamiento auxiliar, que llamaremos pila, donde se podran ir depositando caracter por caracter cadenas arbitrariamente grandes, como se aprecia en la Figura 23. A estos nuevos autmatas con una pila auxiliar los llamaremos autmatas de pila (AP) Figura 23. Automata con Pila Auxiliar

MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En http://decsai.ugr.es/~smc/docencia/mci/automata.pdf

14

5.21.1. Funcionamiento de los Autmatas de Pila15 La pila funciona de manera que el ultimo carcter que se almacena en ella es el primero en salir (LIFO por las siglas en ingls), como si apilramos platos uno encima de otro, y naturalmente el primero que quitaremos es el ltimo que hemos colocado. Un aspecto crucial de la pila es que slo podemos modificar su tope, que es el extremo por donde entran o salen los caracteres. Los caracteres a la mitad de la pila no son accesibles sin quitar antes los que estn encima de ellos. La pila tendr un alfabeto propio, que puede o no coincidir con el alfabeto de la palabra de entrada. Esto se justifica porque puede ser necesario introducir en la pila caracteres especiales usados como separadores, segn las necesidades de diseo del autmata. Al iniciar la operacin de un AP, la pila se encuentra vaca. Durante la operacin del AP, la pila puede ir recibiendo (y almacenando) caracteres, segn lo indiquen las transiciones ejecutadas. Al final de su operacin, para aceptar una palabra, la pila debe estar nuevamente vaca. En los AP las transiciones de un estado a otro indican, adems de los caracteres que se consumen de la entrada, tambin lo que se saca del tope de la pila, as como tambin lo que se mete a la pila. Al igual que los AF, los AP tienen estados finales, que permiten distinguir cuando una palabra de entrada es aceptada. De hecho, para que una palabra de entrada sea aceptada en un AP se deben cumplir todas las condiciones siguientes: 1. La palabra de entrada se debe haber agotado (consumido totalmente). 2. El AP se debe encontrar en un estado final. 3. La pila debe estar vaca. los lenguajes generados por las gramticas libres de contexto tambin tienen un autmata asociado que es capaz de reconocerlos. Estos autmatas son parecidos a los autmatas nitos determinsticos, solo que ahora tendrn un dispositivo de memoria de capacidad ilimitada: una pila. A continuacin daremos la denicin formal de autmata con pila no determinstico (APND). Al contrario que en los autmatas nitos, los autmatas con pila no determinsticos y determinsticos no aceptan las mismas familias de lenguajes. Precisamente son los no determsticos
MARTN C. John (2004). Lenguajes Formales y teora de la computacin Tercera edicin Mcgraw Hill Interamericana BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html
15

los asociados con los lenguajes libres de contexto. Los determinsticos aceptan una familia mas restringida de lenguajes. Un autmata con pila no determinstico(APND) es una septupla (Q,A,B,,q0,Z0 F) en la que Q es un conjunto nito de estados A es un alfabeto de entrada B es un alfabeto para la pila es la funcin de transicin : Q (A { } ) B Q B*) q0 es el estado inicial Z0 es el smbolo inicial de la pila F es el conjunto de estados nales La funcin de transicin aplica cada estado, cada smbolo de entrada (incluyendo la cadena vaca) y cada smbolo tope de la pila en un conjunto de posibles movimientos. Cada movimiento parte de un estado, un smbolo de la cinta de entrada y un smbolo tope de la pila. El movimento en s consiste en un cambio de estado, en la lectura del smbolo de entrada y en la subtitucin del smbolo tope de la pila por una cadena de smbolos. Ejemplo Sea el autmata M =({ q1, q2} , { 0, 1, c} , { R, B, G} , , q1, R, 0)donde (q1, 0, R)={ (q1, BR)} (q1, 0, B)={ (q1, BB)} (q1, 0, G)={ (q1, BG)} (q1, c, R)={ (q2, R)} (q1, c, G)={ (q2, G)} (q2, 1, G)={ (q2, )} (q1, 1, R)={ (q1, GR)} (q1, 1, B)={ (q1, GB)} (q1, 1, G)={ (q1, GG)} (q1, c, B)={ (q2, B)} (q2, 0, B)={ (q2, )} (q2, , R)={ (q2, )}

La interpretacin es que si el autmata est en el estado q1 y lee un 0 entonces permanece en el mismo estado y aade una B a la pila; si lo que lee es un 1, entonces aade una G; si lee una c pasa a q2. En q2 se saca una B por cada 0, y una G por cada 1. Se llama descripcin instantnea o conguracin de un autmata con pila a una tripleta (q,u,) Q A* B* en la que q es el estado en el se encuentra el autmata, u es la parte de la cadena de entrada que queda por leer y el contenido de la pila (el primer smbolo es el tope de la pila). Definicin:Se dice que de la conguracin (q,au,Z) se puede llegar a la conguracin (p,u,)y se escribe (q,au,Z) (p,u, ) si y solo si (p, ) (q,a,Z)

donde a puede ser cualquier smbolo de entrada o la cadena vaca. Definicin:Si C1 y C2 son dos conguraciones, se dice que se puede llegar de C1 a C2 mediante una sucesin de pasos de clculo y se escribe C1 C2 si y solo si existe una sucesin de conguraciones T1,...,Tn tales que C1 =T1 T Tn1 Tn =C2 Teorema: a) Si M es un APND entonces existe otro autmata M, tal que N(M)=L(M) b) Si M es un APND entonces existe otro autmata M, tal que L(M)=N(M). Demostracin: -a) Si M =(Q,A,B,,q0,Z0,F ), entonces el autmata M se construye a partir de M siguiendo los siguientes pasos: Se aaden dos estados nuevos, q0 y qf . El estado inicial de M ser q0 y qf ser estado nal de M . Se aade un nuevo smbolo a B: Zo . Este ser el nuevo smbolo inicial de la pila. Se mantienen todas las transiciones de M, aadindose las siguientes: (q0,,Z0 )={(q0,Z0Z0 )}

(q, , Z0)={(qf ,Z0 )}, q Q

b) Si M =(Q, A, B, , q0, Z0, F ), entonces el autmata M se construye a partir de M siguiendo los siguientes pasos: Se aaden dos estados nuevos, q0 y qs. El estado incial de M ser q0. Se aade un nuevo smbolo a B: Z 0 . Este ser el nuevo smbolo inicial de la pila. Se mantienen todas las transiciones de M, aadindose las siguientes: (q0, , Z0 )={(q0, Z0Z0 )}

(qs, , H)={(qs, )}, H B {Z0 }

(q, , H)={(qs, H)}, q F, H B {Z0 }

LECCION 22. - DISEO DE AUTMATAS DE PILA l problema de diseo de los AP consiste en obtener un AP M que acepte exactamente un lenguaje L dado. Por exactamente queremos decir, como en el caso de los autmatas finitos, que, por una parte, todas las palabras que acepta

efectivamente pertenecen a L, y por otra parte, que M es capaz de aceptar todas las palabras de L. Aunque en el caso de los AP no hay metodologas tan generalmente aplicables como era el caso de los autmatas finitos, siguen siendo vlidas las ideas bsicas del diseo sistemtico, en particular establecer claramente qu es lo que recuerda cada estado del AP antes de ponerse a trazar transiciones a diestra y siniestra. Para los AP, adicionalmente tenemos que establecer una estrategia clara para el manejo de la pila. En resumen, a la hora de disear un AP tenemos que repartir lo que requiere ser recordado entre los estados y la pila. Distintos diseos para un mismo problema pueden tomar decisiones diferentes en cuanto a que recuerda cada cual. Ejemplo:.- Disear un AP que acepte exactamente el lenguaje con palabras de la forma anbn, para cualquier nmero natural n. Una idea que surge inmediatamente es la de utilizar la pila como contador para recordar la cantidad de as que se consumen, y luego confrontar con la cantidad de bs. Una primera versin de este diseo utiliza un slo estado q, con transiciones a//a y b/a/ de q a s mismo, como en la figura 24(a).

Figura 24:. Automata de pila para el lenguaje anbn Para verificar el funcionamiento del autmata, podemos simular su ejecucin, listando las situaciones sucesivas en que se encuentra, mediante una tabla que llamaremos traza de ejecucin. Las columnas de una traza de ejecucin para un AP son: el estado en que se encuentra el autmata, lo que falta por leer de la palabra de entrada, y el contenido de la pila. Por ejemplo, la traza de ejecucin del AP del ejemplo, para la palabra aabb, se muestra a continuacin:

Estado q q q q q

Por leer Pila aabb abb a bb aa b a

Conclumos que el AP efectivamente puede aceptar palabras como anbn. Sin embargo, hay un problema: el AP tambin acepta palabras como abab, que no tienen la forma deseada (es fcil construir la traza de ejecucin correspondiente para convencerse de ello). El problema viene porque no hemos recordado cuando se terminan las a y comienzan las b, por eso ha sido posible mezclarlas en abab. Una solucin es utilizar los estados para memorizar las situaciones de estar consumiendo a o estar consumiendo b. El diagrama de estados correspondiente se muestra en la figura 24(b). Ejemplo:.- Proponer un AP que acepte el lenguaje de los palndromos con un nmero par de smbolos, esto es, palabras que se leen igual de izquierda a derecha y de derecha a izquierda, y que tienen por tanto la forma wwR, donde wR es el reverso de w (esto es, invertir el orden), en el alfabeto {a, b}. Por ejemplo, las palabras abba, aa y bbbbbb pertenecen a este lenguaje, mientras que aab y aabaa no. Una estrategia de solucin para disear este AP sera almacenar en la pila la primera mitad de la palabra, y luego irla comparando letra por letra contra la segunda mitad. Tendramos dos estados s y f, para recordar que estamos en la primera o segunda mitad de la palabra. En la figura 25 se detalla este AP.

Figura 25: Autmata de pila para el lenguaje { wwR } Se puede apreciar en el AP de dicha figura la presencia de una transicin de s a f, en que ni se consumen caracteres de la entrada, ni se manipula la pila. Esta transicin parece muy peligrosa, porque se puede disparar en cualquier

momento, y si no lo hace exactamente cuando hemos recorrido ya la mitad de la palabra, el AP podr llegar al final a un estado que no sea final, rechazando en consecuencia la palabra de entrada. Entonces, cmo saber que estamos exactamente a la mitad de la palabra? Conviene en este punto recordar que en un autmata no determinista una palabra es aceptada cuando existe un clculo que permite aceptarla, independientemente de que un clculo en particular se vaya por un camino errneo. Lo importante es, pues, que exista un clculo que acepte la palabra en cuestin. Por ejemplo, la siguiente tabla muestra un clculo que permite aceptar la palabra w = abba: Estado s s s f f f Falta leer abba bba ba ba a Pila A ba ba A Transicin 1 2 3 5 4

LECCION 23. - COMBINACIN MODULAR DE AUTMATAS DE PILA n los AP tambin es posible aplicar mtodos de combinacin modular de autmatas, como se hizo con los autmatas finitos. En particular, es posible obtener AP que acepten la unin y concatenacin de los lenguajes aceptados por dos AP dados. En el caso de la unin, dados dos AP M1 y M2 que aceptan respectivamente los lenguajes L1 y L2, podemos obtener un AP que acepte la unin L1 L2, itroduciendo un nuevo estado inicial s0 con transiciones // a los dos antiguos estados iniciales s1 y s2, como se ilustra en la figura 26.

Figura 26: Unin de Autmatas de Pila Ejemplo:- Obtener un AP que acepte el lenguaje {anbm |n m}. Claramente este lenguaje es la unin de anbm |n > m} con { anbm |n < m}, por lo que basta obtener

los AP de cada uno de ellos, y combinarlos con el mtodo descrito. Ejemplo.- Disear un AP que acepte el lenguaje L = {aibjck|(i = j = k)}. Nos damos cuenta de que L es la unin de dos lenguajes, que son: L = {aibjck | i j} [ {aibjck | j k} Para cada uno de estos dos lenguajes es fcil obtener su AP. Para el primero de ellos, el AP almacenara primero las as en la pila, para luego ir descontando una b por cada a de la pila; las as deben acabarse antes de terminar con las bs o bien deben sobrar as al terminar con las bs; las cs no modifican la pila y simplemente se verifica que no haya a o b despus de la primera c. Tambin es posible obtener modularmente un AP que acepte la concatenacin de los lenguajes aceptados por dos AP dados. Sin embargo, la construccin de un AP que acepte la concatenacin de dos lenguajes a partir de sus respectivos AP M1 y M2, es ligeramente ms complicada que para el caso de la unin. La idea bsica sera poner transiciones vacas que vayan de los estados finales de M1 al estado inicial de M2. Sin embargo, existe el problema que hay que garantizar que la pila se encuentre vaca al pasar de M1 a M2, pues de otro modo podra resultar un AP incorrecto. Para esto, es posible utilizar un caracter especial, por ejemplo @, que se mete a la pila antes de iniciar la operacin de M1, el cual se saca de la pila antes de iniciar la operacin M2. LECCCION 24. - AUTMATAS CON PILA Y LENGUAJES LIBRES DE CONTEXTO.

eorema Si un lenguaje es generado por una gramtica libre del contexto, entonces es aceptado por un Autmata con Pila No-Determinstico.

Demostracin.-Supongamos que la gramtica no acepta la palabra vaca. En caso de que acepte la palabra vaca se le eliminara y despues se podra transformar el autmata para aadir la palabra vaca al lenguaje aceptado por el autmata. Transformemos entonces la gramtica a forma normal de Greibach. El autmata con pila correspondiente es M =({q}, T, V, , q, S, 0)donde la funcin de transicin viene dada por (q, )(q, a, A)A a P Este autmata acepta por pila vaca el mismo lenguaje que genera la gramtica.

Ejemplo: Para la gramtica en forma normal de Greibach: S aAA A aS | bS | a el autmata es M =({q}, {a, b}, {A, S}, , q, S, 0) donde (q, a, S)={(q, AA)} (q,a,A)={(q,S),(q,)} (q,b,A)={(q,S)} Teorema Si L =N(M)donde M es un APND, existe una gramtica libre del contexto G, tal que L(G)=L. Demostracin.Sea M =(Q,A,B, ,q0,Z0,0), tal que L =N(M). La gramtica G =(V,A,P,S)se construye de la siguiente forma: V ser el conjunto de los objetos de la forma [q,C, p], donde p,q Q y C B, adems de la variable S que ser la variable inicial. P ser el conjunto de las producciones de la forma 1. 2. S [q0,Z,q]para cada q Q. [q,C,qm] a[p,D1,q1][q1,D2,q2]...[qm1,Dm,qm]

donde a A , y C,D1,...,Dm B tales que (p,D1D2...Dm) (q,a,C) (si m =0, entonces la produccin es [q,A, p] a). Esta gramtica genera precisamente el lenguaje N(M). La idea de la demostracin es que la generacin de una palabra en esta gramtica simula el funcionamiento del autmata no determinstico. En particular, se verica que [q,C, p] genera la palabra x si y solo si el autmata partiendo del estado q y llegando al estado p, puede leer la palabra x eliminando el smbolo C de la pila. Ejemplo Si partimos del autmata M =({q0,q1},{0,1},{X ,Z},,q0,Z0,0), donde (q0,0,Z0)={(q0,X Z0)}, (q1,1,X )={(q1,)} (q0,0,X )={(q0,X X )}, (q1, ,X )={(q1, )} (q0,1,X )={(q1, )}, (q1, ,Z0)={(q1, )} las producciones de la gramtica asociada son: S [q0, Z0, q0]

S [q0, Z0, q1] [q0, Z0, q0] 0[q0, X , q0][q0, Z0, q0] [q0, Z0, q1] 0[q0, X , q0][q0, Z0, q1] [q0, Z0, q0] 0[q0, X , q1][q1, Z0, q0] [q0, Z0, q1] 0[q0, X , q1][q1, Z0, q1] [q0, X , q0] 0[q0, X , q0][q0, X , q0] [q0, X , q1] 0[q0, X , q0][q0, X , q1] [q0, X , q0] 0[q0, X , q1][q1, X , q0] [q0, X , q1] 0[q0, X , q1][q1, X , q1] [q0, X , q1] 1 [q1, X , q1] 1 [q1, X , q1] [q1, Z0, q1] Elimando smbolos y producciones intiles queda S [q0, Z0, q1] [q0, Z0, q1] 0[q0, X , q1][q1, Z0, q1] [q0, X , q1] 0[q0, X , q1][q1, X , q1] [q1, X , q1] 1 [q1, X , q1] [q1, Z0, q1] LECCION 25. - RELACIN ENTRE LOS AUTMATAS DE PILA Y LENGUAJES LIBRES DE CONTEXTO

hora vamos a establecer el resultado por el que iniciamos el estudio de los AP, es decir, verificar si son efectivamente capaces de aceptar los LLC.

Teorema.- Los autmatas de pila aceptan exactamente los LLC. Vamos a examinar la prueba de esta afirmacin, no solamente por el inters por la rigurosidad matemtica, sino sobre todo porque provee un mtodo de utilidad prctica para transformar una GLC en un AP. La prueba de este teorema se puede dividir en dos partes: 1. Si M es un AP, entonces L(M) es un LLC 2. Si L es un LLC, entonces hay un AP M tal que L(M) = L Vamos a presentar nicamente la prueba con la parte 2, que consideramos de mayor relevancia prctica.

Sea una gramtica G = (V,,R, S). Entonces un Automata de Pila M que acepta exactamente el lenguaje generado por G se define como sigue: M = ({p, q},, V ,, p, {q}) donde contiene las siguientes transiciones: 1. Una transicin ((p, , ), (q, S)) 2. Una transicin ((q, ,A), (q, x)) para cada A x R 3. Una transicin ((q, , ), (q, )) para cada 2 Ejemplo.- Obtener un AP que acepte el LLC generado por la gramtica con reglas: 1. S aSa 2. S bSb 3. S c Las transiciones del AP correspondiente estn dadas en la tabla siguiente: 1 2 3 4 5 6 7 (p, ,) (q, ,S) (q, ,S) (q, ,S) (q,a, a) (q,b, b) (q,c, c) (q,S) (q,aSa) (q,bSb) (q,c) (q, ) (q, ) (q, )

El funcionamiento de este AP ante la palabra abcba aparece en la siguiente tabla: Estado P Q Q q q q q q q q Falta leer abcba abcba abcba bcba bcba cba cba ba a Pila S aSa Sa bSba Sba cba ba a

Se justifica intuitivamente el mtodo que se introdujo para obtener un AP equivalente a una gramtica dada. Si se observa las transiciones del AP, veremos que solamente tiene dos estados, p y q, y que el primero de ellos desaparece del clculo en el primer paso; de esto conclumos que el AP no utiliza los estados para recordar caractersticas de la entrada, y por lo tanto reposa exclusivamente en el almacenamiento de caracteres en la pila. En efecto, podemos ver que las transiciones del tipo 2, lo que hacen es reemplazar en la pila una variable por la

cadena que aparece en el lado derecho de la regla correspondiente. Dado que la (nica) transicin de tipo 1 (transicin 1 del ejemplo) coloca el smbolo inicial en la pila, a continuacin lo que hacen las reglas de tipo 2 es realmente efectuar toda la derivacin dentro de la pila de la palabra de entrada, reemplazando un lado izquierdo de una regla por su lado derecho. Una vez hecha la derivacin de la palabra de entrada, la cual estara dentro de la pila, sin haber an gastado un solo caracter de la entrada podemos compararla caracter por caracter con la entrada, por medio de las transiciones de tipo 3. Existe sin embargo un problema tcnico: si observamos la corrida para la palabra abcba, nos daremos cuenta de que no estamos aplicando las reglas en el orden descrito en el prrafo anterior, esto es, primero la transicin del grupo 1, luego las del grupo 2 y finalmente las del grupo 3, sino que ms bien en la cuarta lnea de la tabla se consume un caracter a (aplicacin de una transicin del grupo 3) seguida de la aplicacin de una transicin del grupo 2. Esto no es casualidad; lo que ocurre es que las variables no pueden ser reemplazadas por el lado derecho de una regla si dichas variables no se encuentran en el tope de la pila. En efecto, recurdese que los AP solo pueden accesar el caracter que se encuentra en el tope de la pila. Por esto, se hace necesario, antes de reemplazar una variable por la cadena del lado derecho de una regla, desenterrar dicha variable hasta que aparezca en el tope de la pila, lo cual puede hacerse consumiendo caracteres de la pila (y de la entrada, desde luego) mediante la aplicacin de transiciones del tipo 3.

LECCION 26. - LEMA DE BOMBEO

omenzamos esta seccin con un lema que nos da una condicin necesaria que deben de cumplir todos los lenguajes libres de contexto. Nos sirve para demostrar que un lenguaje dado no es libre de contexto, comprobando que no cumple esta condicin necesaria.

Lema 2 (Lema de Bombeo para lenguajes libres de contexto) Sea L un lenguaje libre de contexto. Entonces, existe una constante n, que depende solo de L, tal que si z L y |z| n, z se puede escribir de la forma z = uvwxy de manera que 1. |vx| 1 2. |vwx| n, y i i 3. i 0, uv wx y L Demostracin.- Supongamos que la gramtica no tiene producciones nulas ni unitarias (si existiesen siempre se podran eliminar). Supongamos un rbol de derivacin de una palabra u generada por la gramtica. Es fcil ver que si la longitud de u es sucientemente grande, en su rbol de derivacin debe existir un camino de longitud mayor que el nmero de variables. Sea N un nmero que garantice que se verica esta propiedad. En dicho camino, al menos debe de haber una variable repetida. Supongamos que esta variable es A, y que la gura 6.1 representa el rbol de derivacin y dos apariciones consecutivas de A.

Figura 27: Arbol de Derivacin en el lema del Bombeo Ejemplo Vamos a utilizar el lema de bombeo para probar que el lenguaje L = {a b c|i 1} no es libre de contexto.
i i

Supongamos que L fuese libre de contexto y sea n la constante especicada en el Lema de Bombeo. Consideremos la palabra z = a b c L, que tiene una longitud mayor que n. Consideremos que z se puede descomponer de la forma z = uvxy, vericando las condiciones del lema de bombeo. Como |vwx| n, no es posible para vx tener smbolos a y c al mismo tiempo: entre la ltima a y la primera c hay n smbolos. En estas condiciones se pueden dar los siguientes casos: |vx| contiene solamente smbolos a. En este caso para i = 0, uv wx y = uwy debera pertenecer a L por el lema de bombeo. Pero uwy contiene n smbolos b, n smbolos c, menos de n smbolos a, con lo que no podra pertenecer a L y se obtiene una contradiccin. |vx| contiene solamente smbolos b. Se llega a una contradiccin por un procedimiento similar al anterior. |vx| contiene solamente smbolos c. Se llega a una contradiccin por un procedimiento similar. |vx| contiene smbolos a y b. En este caso, uwy tendra ms smbolos c que a o b, con lo que se llegara de nuevo a una contradiccin. |vx| contiene smbolos b y c. En este caso, uwy tendra ms smbolos a que b o c, con lo que se llegara tambin a una contradiccin. En todo caso se llega a una contradiccin y el lema de bombeo no puede cumplirse, con lo que L no puede ser libre de contexto. Es importante sealar que el lema de bombeo no es una condicin suciente. Es solo necesaria. As si un lenguaje verica la condicin del lema de bombeo no podemos garantizar que sea libre de contexto. Un ejemplo de uno de estos lenguajes es L = {aibjckdl | (i = 0) ( j = k = l)} Ejemplo Demostrar que el lenguaje L = {a b c d : i, j 0} no es libre de contexto. Ejemplo Demostrar que el lenguaje L = {a bc : i j k 0} no es libre de contexto.
i k i j i j 0 0 n n n

LECCION 27. - PROPIEDADES DE CLAUSURA DE LOS LENGUAJES LIBRES DE CONTEXTO

Unin Concatenacin Clausura Demostracin Sean G1 =(V1, T1, P1, S1) y G2 =(V2, T2, P2, S2) dos gramticas libres de contexto y L1 y L2 los lenguajes que generan. Supongamos que los conjuntos de variables son disjuntos. Demostraremos que los lenguajes L1 L2, L1L2 y L1* de tipo 2 que los generen. son libres de contexto, encontrando gramticas
1

eorema Los lenguajes libres de contexto son cerrados para las operaciones:

L1 L2. Una gramtica que genera este lenguaje es G3 =(V1 V2 {S3}, T1 T2, P3, S3), donde S3 es una nueva variable, y P3 =P1 P2 ms las producciones S3 S1 y S3 S2. L1L2. Una gramtica que genera este lenguaje es G4 =(V1V2{S4}, T1T2,P4,S4), donde S4 es una nueva variable, y P4 =P1 P2 ms la produccin S4 S1S2. L1* Una gramtica que genera este lenguaje es G5 =(V1{S5}, T1P5,S5 ) donde P5 es P1 ms las producciones S5 S1S5 y S5 . Algunas propiedades de clausura de los lenguajes regulares no se verican en la clase de los lenguajes libres de contexto, como las que expresan el siguiente teorema y corolario. Teorema La clase de los lenguajes libres de contexto no es cerrada para la interseccin. Demostracin.-Sabemos que el lenguaje L ={ aibicj | i 1} no es libre de contexto. Por otra parte los lenguajes L2 ={aibicj | i 1 y j 1} y L3 ={ aibjcj | i 1 y j 1} si lo son. El primero de ellos es generado por la gramtica: S AB A aAb|ab B cB|c y el segundo, por la gramtica: S CD

C aC|a D bDc|bc Como L2 L3 = L1, se deduce que la clase de lenguajes libres de contexto no es cerrada para la interseccin Corolario La clase de lenguajes libres de contexto no es cerrada para el complementario. Demostracin.Es inmediato, ya que como la clase es cerrada para la unin, si lo fuese para el complementario, se podra demostrar, usando las leyes De Morgan que lo es tambin para la interseccin. LECCION 28. - ALGORITMOS DE DECISIN PARA LOS LENGUAJES LIBRES DE CONTEXTO

xisten una serie de problemas interesantes que se pueden resolver en la clase de los lenguajes libres de contexto. Por ejemplo, existen algoritmos que nos dicen si un Lenguaje Libre de Contexto (dado por una gramtica de tipo 2 o un autmata con pila no determinstico) es vaco, nito o innito. Sin embargo, en la clase de lenguajes libres de contexto comienzan a aparecer algunas propiedades indecidibles. A continuacin, veremos algoritmos para las propiedades decidibles y mencionaremos algunas propiedades indecidibles importantes.

Teorema Existen algoritmos para determinar si un lenguaje libre de contexto es a) vaco b) nito c) innito Demostracin. a) En la primera parte del algoritmo para eliminar smbolos y producciones intiles de una gramtica, se determinaban las variables que podan generar una cadena formada exclusivamente por smbolos terminales. El lenguaje generado es vaco si y solo si la variable inicial S es eliminada: no puede generar una palabra de smbolos terminales. b) y c) Para determinar si el lenguaje generado por una gramtica de tipo 2 es nito o innito pasamos la gramtica a forma normal de Chomsky, sin smbolos ni producciones intiles. En estas condiciones todas las producciones son de la forma:

A BC, A a Se construye entonces un grafo dirigido en el que los vrtices son las variables y en el que para cada produccin de la forma A BC se consideran dos arcos: uno de A a B y otro de A a C. Se puede comprobar que el lenguaje generado es nito si y solo si el grafo construido de esta forma no tiene ciclos dirigidos. Ejemplo Consideremos la gramtica con producciones, S AB A BC|a B CC|b Ca El grafo asociado es el de la gura 28(a). No tiene ciclos y el lenguaje es nito. Si aadimos la produccin C AB, el grafo tiene ciclos (gura 28(b)) y el lenguaje generado es innito.

Figura 28: Grafo asociado a una gramatica de tipo 2 con lenguaje finito e Infinito

LECCION 29. - ALGORITMOS DE PERTENENCIA

stos algoritmos tratan de resolver el siguiente problema: dada una gramtica de tipo 2, G =(V, T, P, S)y una palabra u T*, determinar si la palabra puede ser generada por la gramtica. Esta propiedad es indecidible en la clase de lenguajes recursivamente enumerables, pero es posible encontrar algoritmos para la clase de lenguajes libres de contexto. Un algoritmo simple, pero ineciente se aplica a gramticas en forma normal de Greibach (si una gramtica no est en esta forma se pasa, teniendo en cuenta que hemos podido dejar de aceptar la palabra vaca). La pertencencia de una palabra no vaca se puede comprobar en esta forma normal de Greibach de la siguiente forma: Como cada produccin aade un smbolo terminal a la palabra generada, sabemos que una palabra, u, de longitud |u| ha de generarse en |u| pasos. El algoritmo consistira en enumerar todas las generaciones por la izquierda de longitud |u|, tales que los smbolos que se vayan generando coincidan con los de la palabra u, y comprobar si alguna de ellas llega a generar la palabra u en su totalidad. Este algoritmo para, ya que el nmero de derivaciones por la izquierda de una longitud dada es nito. Sin embargo puede ser muy ineciente

(exponencial en la longitud de la palabra). Para comprobar la pertenencia de la palabra vaca se puede seguir el siguiente procedimiento: Si no hay producciones nulas, la palabra vaca no pertenece. Si hay producciones nulas, la palabra vaca pertenece si y solo si al aplicar el algoritmo que elimina las producciones nulas, en algn momento hay qhe eliminar la produccin S . 6.29.1. - El Algoritmo De Cocke-Younger-Kasami
3

Existen algoritmos de pertenencia con una complejidad O(n ), donde n es la longitud de la palabra de la que se quiere comprobar la pertenencia. Nosotros vamos a ver el algoritmo de Cocke-Younger-Kasami (CYK). Este algoritmo se aplica a palabras en forma normal de Chomsky. Este consta de los siguientes pasos (n es la longitud de la palabra). 1. Para i = 1 hasta n 2. Calcular Vi1 = {A | A a es una produccion y el simbolo i-esimo de u es a} 3. Para j = 2 hasta n 4. Para i = 1 hasta n j + 1 5. Vij = 0 6. Para k = 1 hasta j 1 Vij = Vij {A | A BC es una produccion, B Vik y C Vi+k, jk} Este algoritmo calcula para todo i, j(i {1,...,n}, j n - j + 1), el conjunto de variables Vij que generan uij, donde uij es la subcadena de u que comienza en el smbolo que ocupa la posicin i y que contiene j smbolos. La palabra u ser generada por la gramtica si la variable inicial S pertenece al conjunto V1n. Los clculos se pueden organizar en una tabla como la de la siguiente gura (para una palabra de longitud 5):

En ella, cada Vi, j se coloca en una casilla de la tabla. En la parte superior se ponen los smbolos de la palabra para la que queremos comprobar la pertenencia. La ventaja es que es fcil localizar los emparejamientos de variables que hay que comprobar para calcular cada conjunto Vij. Se comienza en la casilla que ocupa la misma columna y est en la parte superior de la tabla, y la casilla que est en la esquina superior derecha, emparejando todas las variables de estas dos casillas.

A continuacin elegimos como primera casilla la que est justo debajo de la primera anterior, y como segunda casilla la que ocupa la esquina superior derecha de la segunda anterior. Este proceso se contina hasta que se eligen como primera casilla todas las que estn encima de la que se est calculando. La siguiente gura ilustra el proceso que se sigue en las emparejamientos (para un elemento de la cuarta la, en una palabra de longitud 5).

Ejemplo Consideremos la gramtica libre de contexto dada por las producciones S AB|BC A BA|a B CC|b C AB|a Comprobar la pertenencia de las palabras baaba, aaaaa, aaaaaa al lenguaje generado por la gramtica. El algoritmo de Early es tambin de complejidad O(n ) en el caso general, pero es lineal para gramticas LR(1), que son las que habitualmente se emplean para especicar la sintaxis de las lenguajes de programacin. Al contrario que el algoritmo de Cocke-Younger-Kasami que trata de obtener las palabras de abajo hacia arriba (desde los smbolos terminales al smbolo inicial, el algoritmo de Early comenzar en el smbolo inicial (funciona de arriba hacia abajo). Sea G una gramtica con smbolo inicial S y que no tenga producciones nulas ni unitarias. Supondremos que u[i.. j] es la subcadena de u que va de la posicin i a la posicin j. El algoritmo producir registros de la forma (i, j, A, , ), donde i y j son enteros y A es una produccin de la gramtica. La existencia de un registro indicar un hecho y un objetivo. El hecho es que u[i +1.. j]es derivable a partir de y el objetivo es encontrar todos los k tales que deriva a u[j +1..k]. Si encontramos
3

uno de estos k sabemos que A deriva u[i +1..k]. Para cada j, REGISTROS[j]contendr todos los registros existentes de la forma (i, j, A, , ). El algoritmo consta de los siguiente pasos: P1 Inicializacin.-Sea REGISTROS[0]={(0, 0, S, , ): S es una produccin} REGISTROS[j]= 0 para j =1, . . . , n. j =0 P2 Clausura.- Para cada registro (i, j, A, , B)en REGISTROS[j] y cada produccin B , crear el registro (j, j, B, , )e insertarlo en REGISTROS[j]. Repetir la operacin recursivamente para los nuevos registros insertados. P3 Avance.-Para cada registro (i, j, A, , c) en REGISTROS[j], donde c es un smbolo terminal que aparece en la posicin j +1 de u, crear (i, j +1, A, , c) e insertarlo en REGISTROS[j + 1]. Hacer j = j +1. P4 Terminacin.-Para cada par de registros de la forma (i, j, A, , ) en REGISTROS[j] y (h, i, B, A, ) en REGISTROS[i], crear el nuevo registro (h, j, B, A, ) e insertarlo en REGISTROS[j]. P5 Si j < n ir a P2. P6 Si en REGISTROS[n] hay un registro de la forma (0, n, S, , ), entonces u es generada. En caso contrario no es generada. Ejemplo Comprobar mediante el algoritmo de Early si la palabra baa es generada por la gramtica con producciones: S AB, B CC, S BC, B b, A BA, C AB, A a, Ca

Despus de aplicar el paso de inicializacin, el contenido de REGISTROS[0] es: REGISTROS[0]:(0,0,S,,AB),(0,0,S,,BC),(0,0,A,,BA),(0,0,A,,a),(0,0,B,,CC),(0,0, B,,b),(0,0,C,,AB),(0,0,C,,a) REGISTROS[1] :(0, 1, B, b, ), (0, 1, S, B, C), (0, 1, A, B, A), (1, 1, C, , AB), (1, 1,

C, , a), (1, 1, A, , BA), (1, 1, A, , a), (1, 1, B, , CC), (1, 1, B, , b) REGISTROS[2] :(1, 2, C, a, ), (1, 2, A, a, ), (0, 2, S, BC, ), (0, 2, A, BA, ), (1, 2, C, A, B), (1, 2, B, C, C), (0, 2, S, A, B), (0, 2, C, A, B), (2, 2, B, , CC), (2, 2, B, , b), (2, 2, C, , AB), (2, 2, C, , a), (2, 2, A, , BA), (2, 2, A, , a) REGISTROS[3] :(2, 3, C, a, ), (2, 3, A, a, ), (1, 3, B, CC, ), (2, 3, B, C, C) (2, 3, C, A, B), (1, 3, A, B, A) Como (0, 3, S, , ) no est en REGISTROS[3], la palabra baa no es generada S T, S S + T, T F, T T * F, F a, F b, F (S) Palabra: (a + b) * a REGISTROS[0] :(0,0,S,,T ), (0,0,S,,S +T), (0,0,T,,F), (0,0,T,,T*F), (0,0,F,,a), (0,0,F,,b),( REGISTROS[1] :(0, 1, F, (, S)), (1, 1, S, , T ), (1, 1, S, , S + T ), (1, 1, T, , F), (1, 1, T, , T * F), (1, 1, F, , a), (1, 1, F, , b), (1, 1, F, , (S)), REGISTROS[2] :(1, 2, F, a, ), (1, 2, T, F, ), (1, 2, S, T, ), (0, 2, F, (S, )), (1, 2, S, S, +T ) REGISTROS[3] :(1, 3, S, S+, T ), (3, 3, T, , F), (3, 3, T, , T *F), (3, 3, F, , a), (3, 3, F, , b), (3, 3, F, , (S)) REGISTROS[4] :(3, 4, F, b, ), (3, 4, T, F, ), (1, 4, S, S + T, ), (3, 4, T, T, * F), (0, 4, F, (S, )), (1, 4, S, S, +T ) REGISTROS[5] :(0, 5, F, (S), ), (0, 5, T, F, ), (0, 5, S, T, ), (0, 5, T, T, * F), (0, 5, S, S, +T ), REGISTROS[6] :(0, 6, T, T *, F), (6, 6, F, , a), (6, 6, F, , b), (6, 6, F, , (S)), REGISTROS[7] :(6, 7, F, a, ), (0, 7, T, T * F, ), (0, 7, S, T, ), (0, 7, T, T, *F), (0, 7, S, S, +T ) Como tenemos (0, 7, S, T, ), entonces la palabra (a + b) * c es generada.

LECCION 30. - PROBLEMAS INDECIDIBLES PARA LENGUAJES LIBRES DE CONTEXTO ara terminar el apartado de algoritmos de decisin para gramticas libres de contexto daremos algunos problemas que son indecidibles, es decir, no hay ningn algoritmo que los resuelva. En ellos se supone que G, G1 y G2 son gramticas libres de contexto dadas y R es un lenguaje regular. Saber si L(G1) L(G2) = 0. Determinar si L(G) = T*, donde T es el conjunto de smbolos terminales. Comprobar si L(G1) = L(G2). Determinar si L(G1) L(G2). Determinar si L(G1) = R. Comprobar si L(G) es regular. Determinar si G es ambigua. Conocer si L(G) es inherentemente ambiguo. Comprobar si L(G) puede ser aceptado por una autmata determinstico con pila.

ACTIVIDADES: Ejercicios Propuestos: EJERCICIOS DE AUTOMATAS CON PILA


CONCEPTOS BSICOS

1.- Dado el siguiente autmata con pila, indicar: (a) Qu lenguaje reconoce (b) Cules de las siguientes palabras son aceptadas por el autmata: aabbc, abbc, bbcc, aabbbcc (mostrando la sucesin de descripciones instantaneas) AP = ({a, b, c}, {A, B, S}, {q, r, s, t}, q, S, f, ) f(q, a, S) = {(r, S)} f(q, a, A) = {(r, A)} f(q, b, S) = {(s, BS)} f(q, b, A) = {(s, )} f(r, a, S) = {(q, AS)} f(r, a, A) = {(q, AA)} f(s, b, S) = {(s, BS)} f(s, b, A) = {(s, )} f(s, b, B) = {(s, BB)} f(s, c, B) = {(t, )} f(t, c, B) = {(t, )} f(t, , S) = {(t, )}

2.- Definir formalmente el lenguaje reconocido por el siguiente autmata con pila: A = ({a,b,c}, {S,A,B}, {q,r,s,p}, q, S, f, ) f(q, a, S) = {(r, S)} f(q, b, S) = {(s, BS)} f(q, a, A) = {(r, A)} f(q, b, A) = {(s, )} f(r, a, S) = {(q, AS)} f(r, a, A) = {(q, AA)} f(s, b, S) = {(s, BS)} f(s, b, A) = {(s, )} f(s, b, B) = {(s, BB)} f(s, c, B) = {(p, )} f(p, c, B) = {(p, )} f(p, , S) = {(p, )}

3.- Dado el siguiente autmata con pila indicar: (a) Qu lenguaje reconoce por vaciado de pila. (b) Cules de las siguientes palabras son aceptadas por el AP: abba, abaaba. AP = ({a,b}, {Z}, {q0, q1, q2, q3}, q0, Z, f, ) f(q0, a, Z) = {(q1, aZ)} f(q0, b, Z) = {(q1, bZ)} f(q1, a, a) = {(q1, aa), (q2, )} f(q1, a, b) = {(q1, ab)} f(q1, b, a) = {(q1, ba)} f(q1, b, b) = {(q1, bb), (q2, )} f(q2, b, b) = {(q2, )} f(q2, a, a) = {(q2, )} f(q2, , Z) = {(q2, )}

CONSTRUCCIN DE AUTMATAS 4.- Construir un autmata con pila que reconozca cada uno de los siguientes lenguajes: (a) L = { anb2n/ n > 0 } (b) L = { anbmcn/ n, m > 0 } Ejercicios de Autmatas con Pila 2 (c) L = { x / x {0,1}+ & n 0s = n 1s } (d) L = { aibjci+j / i, j > 0 } (e) L = { a2ib3i / i >= 0 } (f) L = { anbmc2man+2, m > 0, n >= 0 } (g) L = { xcy / x,y {a, b}+, n de subcadenas ab en x = n de subcadenas ba en y } (h) L = { 0n1n / n > 0 } { 0n12n / n > 0 } (i) L = {anbmcrasbn/ s = m + r, m,n > 0, r 0} (j) L = {a2nbm0ib2man, i = 0 1, m, n > 0} (l) L = {x1n2mx-1 / n, m = 0 1 y x {a, b}+} (m) L = {anbmcp / n,m >= 0, p > n + m} 5.- Construir un autmata con pila que reconozca por vaciado de pila el lenguaje que contiene las palabras formadas por los smbolos 0, 1 y 2 que tienen tantas apariciones de las secuencia 01 como del smbolo 2. 6.- Construir un autmata con pila que reconozca por vaciado de pila las palabras formadas por los smbolos a y b que tengan doble nmero de smbolos a que de smbolos b (incluyendo ). Es decir, el autmata deber reconocer por ejemplo las palabras aabbaa, abbaaa, bababaaaa, bbbaaaaaa, y no debe reconocer palabras como abab, abbabab, a, b, aaa, bbb. 7.- Construir un autmata con pila que reconozca, por vaciado de pila, el lenguaje formado por las cadenas que contienen smbolos de abrir y cerrar parntesis, es decir ( y ), que cumple las siguientes condiciones: - todo parntesis que se abre debe ser cerrado posteriormente - todo parntesis que se cierra debe haber sido abierto anteriormente - se permiten los parntesis anidados. Tnganse en cuenta los siguientes ejemplos de cadenas reconocidas y no reconocidas por el autmata: Cadenas reconocidas Cadenas no reconocidas ()()((()())()) ()()) ((()))() )()( ((())(()))()()(()()) (((()

8.- Dado el siguiente lenguaje: L = { anbcmdmen / n, m > 0 } (a)Construir un autmata con pila que reconozca dicho lenguaje por vaciado de pila. (b)Comprobar mediante el uso de descripciones instantneas que la cadena aabccddee es aceptada por dicho autmata. 9.- Construir un autmata con pila que reconozca por vaciado de pila el lenguaje siguiente: L = { 0n1n / n > 0 } { 0n12n / n > 0 } 10.- Dado el siguiente lenguaje: L= {anbmdm / n, m > 0} {anbmcmdn / n, m > 0} (a) Encontrar un autmata con pila que reconozca L por vaciado de pila. (b) Comprobar mediante el uso de descripciones instantneas que la cadena aacd es aceptada por dicho autmata. Ejercicios Resueltos: 1. Cul es el lenguaje que acepta el autmata de pila cuyo diagrama de transiciones es el siguiente?

Solucin: Acepta la cadena vaca. Segn la rama superior, toda x que se reciba, se registrar en la pila; y el estado siguiente ser de aceptacin. Segn la rama inferior, slo se aceptar la entrada y si se puede sacar una x de la pila. Conclusin: Acepta cualquier cadena que (empezando a contar por la izquierda) contenga un nmero de y menor o igual a que de x. Pueden estar intercaladas Ejemplos: xyx, xxy, xxyxyx, etc. 2.- Modifique el diagrama de transiciones del ejercicio anterior para que el autmata de pila acepte el mismo conjunto de cadenas, pero con su pila vaca.

Solucin:

3.- Muestre que toda cadena derivada por la izquierda de una gramtica independiente del contexto puede derivarse tambin por la derecha. Solucin:

El lado por donde se empieza a construir (por la derecha o por la izquierda) slo tiene relevancia en las etapas intermedias de la construccin del rbol. Pero con la construccin terminada, no es relevante el lado por donde se empez. La cadena es la misma en ambos casos.

INTRODUCCIN En las Unidades precendentes se han estudiado lo que se puede considerar las mquinas abstractas que permiten solucionar ciertos tipos de algoritmos, los algoritmos en los que no puede recordarse ms que una cantidad fija de informacin y otros en los que la informacin desarrollada durante la ejecucin del algoritmo puede recuperararse solo en concordancia con la regla lifo ultimos en entrar primeros en salir, en esta unidad se describe una maquina abstracta, llamada Mquina de turing , que es aceptada de manera amplia como modelo general de computacin, aunque las operaciones bsicas de esta mquina son comparables en su sencillez a las de las mquinas estudiadas en las unidades anteriores, las nuevas maquinas pueden realizar una mplia varidad de operaciones de computo. Ademas de aceptar lenguajes les es posible computar funciones y de conformidad con la tesis de Church-Turing, ejecutar casi cualquier procedemiento algoritmico concebible. OBJETIVO GENERAL Reconocer la importancia y el poder computacional de las maquinas de turing en el contexto de la solucin de problemas computacionales de reconocimiento de lenguajes. OBJETIVOS ESPECIFICOS Estudiar las Mquinas de Turing y sus propiedades bsicas

LECCION 31. - DEFINICIN16 s como en secciones anteriores vimos cmo al aadir al autmata finito bsico una pila de almacenamiento auxiliar, aumentando con ello su poder de clculo, cabra ahora preguntarnos que es lo que habra que aadir a un autmata de pila para que pudiera analizar lenguajes como {anbncn}. Partiendo del AP bsico de la figura siguiente.

Figura (a)Automata de Pila (b) Maquina de Turing Algunas ideas podran ser: 1. Aadir otra pila; 2. Poner varias cabezas lectoras de la entrada; 3. Permitir la escritura en la cinta, adems de la lectura de caracteres. Vamos a enfocar nuestra atencin a una propuesta en particular que ha tenido un gran impacto en el desarrollo terico de la computacin: la Mquina de Turing. A. Turing propuso en los aos 30 un modelo de mquina abstracta, como una extensin de los autmatas finitos, que result ser de una gran simplicidad y podero a la vez. La mquina de Turing es particularmente importante porque es la ms poderosa de todas las mquinas abstractas conocidas (A. Turing.- On computable numbers with an application to the Entscheidungs-problem, Proc. London Math. Soc., v.2, n.42, pp230-265.)
16

VAQUERO SNCHEZ, Antonio Ramon, Calculabilidad y maquinas de turing (2004) En: http://www.fdi.ucm.es/profesor/vaquero/TALF-5-Turing.doc BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html.

LECCION 32. - FUNCIONAMIENTO DE LA MQUINA DE TURING a mquina de Turing (abreviado MT) tiene, como los autmatas que hemos visto antes, un control finito, una cabeza lectora y una cinta donde puede haber caracteres, y donde eventualmente viene la palabra de entrada. La cinta es de longitud infinita hacia la derecha, hacia donde se extiende indefinidamente, llenndose los espacios con el caracter blanco (que representaremos con t). La cinta no es infinita hacia la izquierda, por lo que hay un cuadro de la cinta que es el extremo izquierdo, como en la figura En la MT la cabeza lectora es de lectura y escritura, por lo que la cinta puede ser modificada en curso de ejecucin. Adems, en la MT la cabeza se mueve bidireccionalmente (izquierda y derecha), por lo que puede pasar repetidas veces sobre un mismo segmento de la cinta. La operacin de la MT consta de los siguientes pasos: 1. Lee un caracter en la cinta 2. Efectua una transicin de estado 3. Realiza una accin en la cinta Las acciones que puede ejecutar en la cinta la MT pueden ser: Escribe un smbolo en la cinta, o Mueve la cabeza a la izquierda o a la derecha Estas dos acciones son excluyentes, es decir, se hace una o la otra, pero no ambas a la vez. La palabra de entrada en la MT est escrita inicialmente en la cinta, como es habitual en nuestros autmatas, pero iniciando a partir de la segunda posicin de la cinta, siendo el primer cuadro un caracter blanco. Como la cinta es infinita, inicialmente toda la parte de la cinta a la derecha de la palabra de entrada est llena del caracter blanco (t).

Figura.2: MT que acepta palabras que empiezan con a

Por definicin, al iniciar la operacin de la MT, la cabeza lectora est posicionada en el caracter blanco a la izquierda de la palabra de entrada, el cual es el cuadro ms a la izquierda de la cinta. Decimos que en la MT se llega al final de un clculo cuando se alcanza un estado especial llamado halt en el control finito, como resultado de una transicin. Representaremos al halt por h. Al llegar al halt, se detiene la operacin de la MT, y se acepta la palabra de entrada. As, en la MT no hay estados finales. En cierto sentido el halt sera entonces el nico estado final, slo que adems detiene la ejecucin. Cuando queremos que una palabra no sea aceptada, desde luego debemos evitar que la MT llegue al halt. Podemos asegurarnos de ello haciendo que la MT caiga en un ciclo infinito El lenguaje aceptado por una MT es simplemente el conjunto de palabras aceptadas por ella Al disear una MT que acepte un cierto lenguaje, en realidad diseamos el autmata finito que controla la cabeza y la cinta, el cual es un autmata con salida As, podemos usar la notacin grfica utilizada para aquellos autmatas para indicar su funcionamiento. En particular, cuando trazamos una flecha que va de un estado p a un estado q con etiqueta /L, quiere decir que cuando la entrada al control finito (esto es, el caracter ledo por la cabeza de la MT) es , la cabeza lectora hace un movimiento a la izquierda, indicada por el caracter L (left, en ingls); similarmente cuando se tiene una flecha con /R el movimiento es a la derecha. Cuando la flecha tiene la etiqueta /, donde es un caracter, entonces la accin al recibir el caracter consiste en escribir el caracter en la cinta. Con estos recursos es suficiente para disear algunas MT, como en el siguiente ejemplo. Ejemplo.- Disear (el control finito de) una MT que acepte las palabras en {a, b} que comiencen con a. La solucin se muestra en la figura 29. Si la primera letra es una a, la palabra se acepta, y en caso contrario se hace que la MT caiga en un ciclo infinito, leyendo y escribiendo b. Ntese que la accin inmediatamente antes de caer en el halt es irrelevante; igual se poda haber puesto a/a o a/R como etiqueta de la flecha.

Figura.29: MT que acepta palabras que empiezan con a Ejemplo.- Disear una MT que acepte las palabras en {a, b} que terminen con a. Aunque este ejemplo parece bastante similar al precedente, en realidad es ms complicado, pues para ver cual es la ultima letra, hay que ir hasta el blanco a la derecha de la palabra, luego regresar a la ultima letra y verificar si es una a. Una solucin se muestra en la figura 3.

Figura 30: MT que acepta palabras que terminan con a Ejemplo.- Probar que hay lenguajes que no son libres de contexto, pero que pueden ser aceptados por una maquina de Turing. Proponemos el lenguaje anbncn, que se sabe que no es LLC. Ahora construiremos una MT que lo acepte. La estrategia para el funcionamiento de dicha MT consistira en ir haciendo pasadas por la palabra, descontando en cada una de ellas una a, una b y una c; para descontar esos caracteres simplemente los reemplazaremos por un caracter *. Cuando ya no encontremos ninguna a, b o c en alguna pasada, si queda alguna de las otras dos letras la palabra no es aceptada; en caso contrario se llega a halt. Es til, antes de emprender el diseo de una MT, tener una idea muy clara de cmo se quiere que funcione. Para eso se puede detallar el funcionamiento con algn ejemplo representativo, como en la tabla siguiente, para la palabra aabbcc. La posicin de la cabeza se indica por el smbolo .

Operatividad Formalmente: La mquina de Turing opera cclicamente. Al comienzo de un ciclo se parte de una determinada configuracin. El smbolo contenido en la celda explorada por la cabeza L/E ms el estado de la MT determinan las acciones a realizar en un ciclo. Estas acciones son: 1) Sustituir un smbolo por otro (puede ser el mismo) 2) Desplazar la cabeza L/E: a la derecha (D), a la izquierda (I) o dejarla en la misma casilla (N). 3) Pasar la UC a otro estado (el mismo como caso particular). Una vez realizadas esas tres acciones, el ciclo ha terminado y puede comenzar otro ciclo nuevo. En cada ciclo se realiza una instruccin. As pues, una instruccin viene representada por una quntupla: ai sk aj m sl; ai, aj ; sk, sl S y m {D, I, N} Los dos primeros smbolos de la quntupla son el carcter al que apunta la cabeza L/E al comienzo del ciclo y el estado de la mquina en ese instante; los tres smbolos finales son el carcter que sustituye al que haba en la casilla, el movimiento de la cabeza L/E y el estado de la mquina al final del ciclo. Consiguientemente una MT queda completamente definida por , S , I , Q : alfabeto, S: conjunto de estados, I: configuracin inicial, Q: conjunto de quntuplas (repertorio de instrucciones).

Una instruccin importante es la de Parada, equivalente a una quntupla ai sj ai N sj. La mquina ha de ser no ambigua. Es decir, no debe haber, ante las mismas condiciones iniciales, reacciones diferentes de la mquina. Ello implica que no debe haber dos quntuplas distintas con los dos primeros smbolos iguales. S puede haber, obviamente, dos quntuplas diferentes con los tres ltimos smbolos iguales. LECCION 33. - DIFERENCIAS ENTRE LAS COMPUTADORAS Y LAS MQUINAS DE TURING

parte de la capacidad de memoria, las diferencias entre una MT y una computadora de estructura Von Neuman son:

En cuanto a estados: En una MT el n de estados depende del algoritmo. En una computadora, un estado viene representado por el contenido de la memoria, y una situacin por un estado y un puntero a una direccin (la que contiene a la instruccin que va a ejecutarse). La ejecucin de la instruccin pasa a la mquina a otro estado y la variable de enlace adopta otro argumento (la direccin siguiente si la instruccin no era de bifurcacin y la mquina es secuencial natural). En cuanto a memoria: En una MT la memoria es la cinta de E/S ms el "soporte fsico" de los estados de la UC. Y ya sabemos cmo se pasa de una situacin a otra: ai sr aj m sl. Programa en una MT es la secuencia de quntuplas que hay que seguir para hacer el clculo. El mismo algoritmo, expresado en lenguajemquina "tipo" para una computadora "tipo", o sea, programa en lenguaje mquina, es algo distinto que la secuencia de quntuplas. Y se debe a la marcada diferencia entre n-upla e instruccin. Para formalizar el concepto de programa en lenguaje mquina no es, pues, buen modelo una MT. En cuanto al orden de ejecucin de las instrucciones: En la estructura Von Neumann el secuenciamiento lo marca el orden de colocacin de las instrucciones en la memoria interna y viene asegurado por el contador de programa. En una MT el orden de ejecucin lo marca en todo instante el estado de la mquina y el carcter de la cinta apuntado, que son los dos datos que determinan la quntupla que ha de ser ejecutada. Estrategia de trabajo: Desplazar el puntero hacia la derecha hasta que se encuentre un blanco, haciendo los retoques necesarios para que queden tantos 1s como requiere el resultado correcto.

En esta situacin son suficientes dos estados. En el estado inicial la mquina puede permanecer desplazando la cabeza hacia la derecha hasta que encuentra un b. Esa es la idea central para la construccin de la mquina. Paso a paso se ha de ir definiendo cada instruccin necesaria para seguir la estrategia de trabajo. Y slo se introducir un nuevo estado cuando se necesite. En este caso se llega a:

M 0 1/1D b/bI s0 0/1D s1 b b/bN 1/bN 1

so 1 D s0 1 D s0 b I s1

s1

b N s1 b N s1 = Parada

Matriz de Turing Diagrama de estados o Esquema funcional Comprobacin: Se debe tener seguridad de la correccin de la mquina construida. Para ello se debe probar el procesamiento a mano de ejemplos significativos. As: Secuencia de descripciones instantneas: s0 ... b 1 1 1 0 1 1 b b . . . configuracin inicial s0 ... b 1 1 1 0 1 1 b b . . . -----------------------------s0 ... b 1 1 1 0 1 1 b . . . s0 ... b 1 1 1 1 1 1 b . . . -----------------------------s0 ... b 1 1 1 1 1 1 b . . . b111111b... pasa de s0 a s1 S1 b11111bb... Configuracin final S1 Tambin hay que comprobar para el 1er sumando = 0 y/o 2 sumando = 0. Hacindolo, se ve que se cumple en este ejemplo. Podemos confiar en la mquina construida slo si ha salido airosa de las comprobaciones. Es conveniente aplicar sistemticamente el mtodo de construccin seguido, que consta de las siguientes etapas: 1.- Representacin de los objetos: Datos y resultados. 2.- Alfabeto de la cinta y codificacin de los objetos en el alfabeto. Y de ah la configuracin inicial. 3.-Definicin del resultado para todos los ejemplares de entrada. Y de ah la configuracin final, excepto el estado final y la celda apuntada en esa situacin. 4.-Estrategia de trabajo que ha de seguir la mquina para pasar de la configuracin inicial a la final.

5.- Estados e instrucciones de la mquina. 6.- Comprobacin. Siempre que la mquina no sea muy simple se debe seguir este mtodo. Mquinas equivalentes Veamos que puede haber diversas mquinas de Turing para resolver el mismo problema. Otra MT para el mismo problema del ejemplo 1: El retoque (borrar un 1) se hace al principio. La mquina equivalente es: Q = {0 s0 0 D s1, 0 s1 1 D s1 ,1 s0 b D s1, 1 s1 1 D s1, b s1 b N s1} Explicacin de la quntupla <0 s0 0 D s1>: Es el caso de 1er sumando nulo. Como el resultado ha de ser el 2 sumando, ste ha de quedar intacto, as como el separador. Comprobacin: Configuracin inicial: s0 s1 s1 s1 s1 s1 Configuracin final: s1 bb11..1011..1b bbb1..1011..1b .................. bbb1..1011..1b bbb1..1111..1b . . . . . . . . . . . . . . . ..... bbb1..1111..1b

Tambin hay que comprobar para 1er sumando = 0 y/o 2 sumando = 0. Para una descripcin instantnea inicial distinta, la MT sera algo distinta. Por ejemplo, si se partiese de la configuracin inicial s0 ... b b b ... b 1 1 ... 1 0 1 1 ... 1 b b ..., la MT correspondiente sera (borrando el 1er "1" del 1er n): M2 s0 s1 b b D s0 b N s1 1 b D s1 1 D s1 0 0 D s1 1 D s1

Hay que hacer notar que si se partiese de la 1 MT (borrando el ltimo "1" del 2 n) habra que introducir un estado ms, porque habra que distinguir 3 tipos de b: Los que se recorren hacia la derecha al principio, el primero que se encuentra cuando ha terminado de barrerse el 2 n y el b que se encuentra al volver a la izquierda (por transformacin del ltimo "1" del 2 n).

Observacin sobre la Parada: En el ejemplo 1 hay una casilla (0, s1) vaca. Si la mquina se encontrara en esa situacin, quedara parada (bloqueada) por no existir instruccin para operar en ese caso. Eso no debe suceder si la mquina est bien construida. No debe haber otras instrucciones que lleven a la mquina a una tal situacin (situacin equivalente a una mquina de Von Neuman en un estado tal que el contenido del "contador del programa" apunta a una celda de memoria que no contiene ninguna instruccin). Datos incorrectos: Ahora bien en el caso de la MT puede llegarse a una situacin, estando bien construida la mquina, de buena Parada aun cuando los datos estn incorrectamente representados (con errores). P.ej. supongamos en el Ejemplo 1 que queremos sumar 3 + 3 y nos hemos equivocado al escribir el 2 sumando: Configuracin inicial: ... b b 1 1 1 0 1 0 1 b b ... La mquina trabajara hasta llegar a la configuracin final ...b b 1 1 1 1 1 1 b ..., que es la solucin. Sin embargo esta situacin no es deseable. Una elemental reflexin nos lleva a la conclusin de que esta mquina no distingue un smbolo separador de un error en un dato. Lo que podra hacerse en este caso es que la mquina distinguiera entre un primer smbolo y otros ms, pues se supone que slo debe haber uno. En la situacin de encontrarse con un segundo 0 debe llegarse a una situacin de Parada, pero esta Parada es debida a la deteccin de un error por la propia mquina. Es decir, todo programa debera contener una parte de reconocimiento y validacin de la configuracin inicial. En el caso que estamos tratando habran de crearse un estado ms y quntuplas nuevas, al mero efecto de reconocimiento de un error en algn dato y consiguiente parada de aviso. En s0, cuando se encuentra el primer 0, lo cambia a "1" y hay una transicin a s1, de forma que, si se encuentra otro "0" en estado s1, pueda parar: s1 0 0 N s1. Ver Me. Entonces se necesita un nuevo estado s2, para encargarse de lo que antes se encargaba a s1. Por qu no hace bien el resultado M? Qu es lo que hace en realidad M?. M (igual que M1 y M2) calcula la funcin: n f(x1, x2,...,xn) = x1 + 1 + x2 + 1 + ... + xn - 1 = xi + n - 2

i=1 Para n = 2, f (x1,x2) = x1 + x2 Me s0 s1 s2 1 1 D s0 1 D s1 b N s2 parada error 0 1 D s1 0 N s1 b I s2 b N s2 parada buena b

Consideraciones similares pueden hacerse sobre todas las posibles clases de errores (b en los datos, p.e.). Las cosas pueden adquirir una complejidad grande en funcin de las clases de errores que admitamos como posibles. Mientras no digamos lo contrario supondremos que la configuracin inicial es correcta. Pero debemos tener en cuenta que "un algoritmo solo debe hacer aquella funcin para la que ha sido construido", y nada ms. En el caso del Ej. 1, la mquina suma dos nmeros y, adems, hace otras cosas (considera que los 0, a partir del 1, son "1"). Relacin entre la cardinalidad del alfabeto y el n de estados: Los datos se pueden codificar con uno u otro alfabeto, con ms o menos smbolos. Las MT correspondientes son diferentes en uno u otro caso. Vemoslo con un ejemplo: Ejemplo : Sumar dos nmeros, con la misma representacin del ej. 1. = {b, 1} Configuracin inicial: . . . b 1 1 1 b 1 1 b . . . Necesitamos distinguir entre el b separador de los 2 nmeros y el b que sigue al 2 nmero. Las acciones a realizar, en cada uno de esos dos casos, son diferentes. Con el mismo smbolo de entrada, la primera vez hay que sustituirlo por "1" y continuar moviendo el cursor a la derecha, pero en el 2 caso hay que dejarlo todo tal cual y desplazar el cursor a la izquierda. Teniendo en cuenta que no puede haber dos quntuplas distintas con los mismos dos primeros smbolos y, adems, que el smbolo de entrada (b) es el mismo en los dos casos, es preciso introducir otro estado ms. Tendremos entonces tres estados, caracterizados por: s0 : el carcter (1) que se lee es del 1er sumando. s1 : el carcter que se lee es del 2 sumando. Cuando llega un b se ha terminado de explorar el 2 sumando. s2 : Se han terminado los sumandos.

Esquema funcional s0 b 1 1 D s1 1 D s0 s1 b I s2 1 D s1 s2 b N s2 b N s2

Vemos que, para el mismo problema, se necesita un estado ms. Y no es posible hacerlo con menos estados. Es sta un regla general: "Cuanto menor es el n de smbolos para representar la misma informacin, mayor es el n de estados de la Mquina de Turing necesarios para resolver un problema dado". LECCION 34. - LA MAQUINA UNIVERSAL DE TURING asta aqu hemos considerado cada esquema funcional asociado a su MT propia. Pero es posible concebir una M T capaz de ejecutar cualquier algoritmo; es decir capaz de realizar los clculos que realizara cualquier otra MT, o sea, capaz de simular (tener el mismo comportamiento) cualquier MT particular. Esta mquina Universal no debe ser diseada para realizar un clculo especfico, sino para procesar cualquier informacin (realizar cualquier clculo especfico -MT particular- sobre cualquier configuracin inicial de entrada correcta para esa MT particular). La MUT ha de tomar como informacin de entrada la MT particular ms la C.I. . El algoritmo universal ha de ser un intrprete de esa informacin de entrada. La cinta de entrada ha de tener una C.I. tal como: ... bb quntupla b quntupla b... C I (MT) b b ... El trabajo de interpretacin del esquema universal ha de consistir en: 1) sk = s0 (Inicializacin: Suponer que la MT particular empieza estando en s0). 2) Acceder al carcter de la Configuracin apuntado por la Cabeza L/E de la MT (ai). 3) Encontrar en la cinta una quntupla que empiece por ai sk (ai sk aj m s1). 4) Reemplazar ai por aj en la casilla donde se accedi a ai. 5) Realizar el desplazamiento m desde la casilla donde estaba ai. O sea, marcar la nueva casilla a la que apunta la cabeza L/E de la MT particular. 6) sk = s1 (actualizar el estado de la MT particular). 7) Volver a 2). Observaciones sobre el esquema universal: - La M U T parar cuando el clculo est terminado, o sea, cuando la quntupla a aplicar sea del tipo ai sk ai sk N sk. As pues, en el ciclo que es el algoritmo universal,

hay que incluir dentro de la fase 3 una exploracin de la quntupla, una vez encontrada, para decidir si hay que parar o continuar. -Es complicado explicitar detalladamente las instrucciones que componen cada fase del Algoritmo Universal, debido al carcter unidimensional de la cinta y a la exploracin casilla a casilla. - Es obligada una codificacin de la informacin. El n de alfabetos y de caracteres distintos de todas las posibles M T particulares que puedan pensarse es arbitrariamente grande y, sin embargo, la M U T slo puede disponer de un alfabeto finito determinado. Esto obliga a definir procedimientos para codificar la informacin de cualquier alfabeto finito al alfabeto que definamos para la M U T. Por el mismo motivo ha de haber una normalizacin en la notacin de los estados (el estado inicial de cualquier M T debe ser designado con el mismo smbolo, y as para los sucesivos). Una metodologa para la aplicacin de este concepto de normalizacin de la informacin es la numeracin de Gdel, que se ve en Funciones Recursivas.

LECCION 35. - CODIFICACIN DE MTS:

a codificacin debe permitir a la MUT un reconocimiento preciso de cada componente sintctico registrado en la cinta.

Para las letras del alfabeto: c (b) = b (cdigo del carcter blanco) c (ai) = 1i+1; ai (indeterminadamente grande); i = 0,1,2, Para los estados: c (h) = 1; h = estado de parada. c( si) = 1i+1; Si Q S (indeterminadamente grande). Para los desplazamientos del cursor, m { N, I, D}: c (N) = 1; c ( I) = 1 1; c (D) = 1 1 1. El cdigo de una quntupla p a q d m est representado por una palabra {0, 1}*, definida as: c(p) b c(a) b c (q) b c(d) b c(m) b. Una MT que tiene n quntuplas (el orden no importa): u1, u2, , un tiene un cdigo: c(qj) b c(u1) b c(u2) b .. b c(un) b, siendo qj: estado inicial de T.

Codificacin de palabras Sean las letras del alfabeto Zi A y Z una palabra Z = Z1 Z2Zn Z tiene un cdigo c(Z) = b b c ( Z1) b c (Z2) b b c (Zn) b Sobre el trabajo de la MUT (continuacin) La entrada a la MUT est dada por una MT y una palabra Z. La entrada codificada es: c(T) c(Z). Obsrvese que entre el final del cdigo de la ltima quntupla y el comienzo del cdigo de Z hay tres blancos. Es fcil construir la MT que transforma T en c(T) y Z * en c(Z). Para simular el trabajo de T con una entrada Z, la entrada a la MUT es c(T) c(Z). El trabajo ha de ser: a) Cuando la funcin parcial que calcula T est definida para Z, T se detiene y da s como resultado. En este caso la MUT debe parar y dar c(s) como resultado. z T s c(T) c(Z) MUT c(T) c(s)

b) Cuando la funcin que calcula T no est definida para Z, T no se detiene y la MUT tampoco debe parar. En este caso la MUT se mete en un ciclo infinito.

BIBLIOGRAFIA M. Alfonseca, J. Sancho, M. Martnez Orga, (1990). Teora de Gramticas y Autmatas,Espaa,Ediciones Universidad y Cultura. Lenguajes,

Brokshear J, Blend (1993), Teoria de la computacin, Lenguajes formales, Autmatas y complejidad Mxico edicin, Addison-Wesley iberoamericana. Dean Kelley, (1995), Teora de autmatas y lenguajes formales, Espaa Prentice Hall. Pedro Isasi, Paola Martnez, Daniel. Borrajo (1997). Lenguajes, gramticas y autmatas Un enfoque prctico Espaa, 2 edicin, Addison-Wesley J.E. Hopcroft, R. Motwani, J.D. Ullman, (2002) Introduccin a la Teora de Autmatas, Lenguajes y Computacin, Espaa 2 edicin, Addison-Wesley iberoamericana. Martn John, (2004), Lenguajes formales y teora de la computacin, Mxico, 3 Edicin, Mc Graw Hill. SITIOS WEB Pgina web de la asignatura universidad rey Juan carlos: http://www.ia.escet.urjc.es/grupo/docencia/automatas Foro: http://www.ia.escet.urjc.es/foros/automatas http://luisguillermo.com/castellano/default.htm#supra http://www.ing.puc.cl/jabaier/iic2222 aula virtual http://www.upseros.com/ Software Software para el aprendizaje de lenguajes y autmatas: JFLAP http://www.cs.duke.edu/%7Erodger/tools/jflap/ Excelente paquete en Java, por lo que es multiplataforma. Incluye edicin grfica de autmatas, conversiones, minimizacin, gramticas, mquinas de Turing, y mucho ms. Chalchalero http://www.ucse.edu.ar/fma/sepa/chalchalero.htm Extenso paquete hecho en Argentina para PC con Windows, incluye editor de autmatas, conversiones, minimizacin, asi como numerosas herramientas para aprendizaje de compiladores.

REFERENCIAS MORAL CALLEJN Serafn Teora de autmatas y lenguajes formales, En http://decsai.ugr.es/~smc/docencia/mci/automata.pdf NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales En: http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf MORAL CALLEJN, Serafn Modelos de Computacin I, Departamento de ciencias de la computacin Universidad de Granada En: http://decsai.ugr.es/%7Esmc/docencia/mci/automata.pdf. NAVARRETE SNCHEZ, Isabel y otros Teora de autmatas y lenguajes formales En: http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf. Wikipedia, En http://es.wikipedia.org/wiki/Lenguaje_formal BRENA PIERO, Ramon F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM, En: http://lizt.mty.itesm.mx/~rbrena/AyL.html. MARIN MORALES, Roque y otros, Teora de autmatas y lenguajes formales En: Univ. de Murcia http://perseo.dif.um.es/%7Eroque/talf/Material/apuntes.pdf IOST F. Hans, Teora de autmatas y lenguajes formales, CAPTULO 2, LENGUAJES REGULARES Y AUTOMATAS FINITOS (2001) en: http://iie.ufro.cl/~hansiost/automatas/Capitulo2.doc Ingeniera Tcnica en Informtica de Sistemas y de Gestin de la UNED Espaa TEORA DE AUTMATAS I Tutora del Centro Asociado de Plasencia en: URL http://dac.escet.urjc.es/lrincon/uned/ta1/ProblemasFinalCapitulo.pdf. Departamento de Ingeniera de Sistemas Facultad de Ingeniera Ciencias y Administracin Universidad de La Frontera IIS340 TEORA DE AUTOMATAS Y LENGUAJES FORMALES APUNTES DEL CURSO Temuco, 1999 2001 CUEVAS LOVALLE, Juan Manuel LENGUAJES, GRAMTICAS Y AUTMATAS. Segunda Edicin, (Espaa), 2001. Ingeniera Superior en Informtica, Grupos A, B y C Teora de Autmatas y Lenguajes formales. Examen Final-19 de Junio de 2003, Solucin Ejercicios

AUTOEVALUACION FORMATO EVALUACION ACTIVIDAD INDIVIDUAL Cada tarea individual ser revisada y evaluada segn esta pauta de carcter formativo, se considerarn los siguientes aspectos:
Actividad N _____ Nota : Formativa Nombre: ________________________________________________________ Fecha: Aspectos considerados en la revisin Fecha recepcin Envo archivo Presentacin de los contenidos Respuesta a lo solicitado Nivel de profundidad y/o anlisis Observaciones

Fecha :

PAUTA EVALUACION PRESENTACIN FINAL PROYECTO Nombre de los integrantes en orden de presentacin:

1._____________________________________________________________________ 2._____________________________________________________________________ 3._____________________________________________________________________ 4._____________________________________________________________________ 5. ASPECTOS A EVALUAR Dominio del contenido de persona que expone en representacin del grupo Exposicin complementada con el uso del recurso tecnolgico (presentacin en PPT) Defensa del proyecto con calidad y precisin de las respuestas del expositor y/o grupo Habilidad para motivar y mantener la atencin de la audiencia por parte del expositor. Coordinacin grupal para antes, durante y despus de la presentacin. Exposicin dentro del tiempo estipulado (15 minutos por grupo). Puntaje mximo 14 puntos Nota 10%
Puntaje por aspecto para cada integrante (1 a 3 puntos y 1 a 2 puntos)

1 1/ 2 / 3 1/2/3 1/2 1/2 1/2 1/2

2 1/ 2 / 3 1/2/3 1/2 1/2 1/2 1/2

3 1/ 2 / 3 1/2/3 1/2 1/2 1/2 1/2

4 1/ 2 / 3 1/2/3 1/2 1/2 1/2 1/2

5 1/ 2 / 3 1/2/3 1/2 1/2 1/2 1/2

Nombre del Tutor: ________________________________________________________

AUTOEVALUACION
Evaluacin individual de cada integrante del grupo Nombre: _______________________________________ Fecha: _____________ A continuacin se presenta una serie de aspectos relacionadas con la participacin en el desarrollo del curso acadmico Para autoevaluar la participacin individual y grupal, asignar para cada aspecto un puntaje de 1 a 5. Aquellos aspectos o afirmaciones aseveraciones que no pueda calificar, asignar 0 (cero) y justificar por escrito. Puntaje y su descripcin: 1 2 Insuficiente Menos que regular

3 Regular

4 Bueno

5 Muy Bueno Puntaje

Aspectos o afirmaciones Estuve en permanente contacto con mi grupo colaborativo. Me comuniqu con mi tutor frente a alguna emergencia, duda, etc. Acus recibo de las comunicaciones realizadas por e-mail. Realic las tareas que me compromet en forma oportuna Colabor oportunamente en la fases del desarrollo de las guas didcticas Tom en cuenta las observaciones y sugerencias hechas por el tutor en la planificacin de las actividades. Busqu otras fuentes de informacin (textos, URL, etc.) para el desarrollo del sitio web. Particip activamente en el desarrollo de los contenidos de la gua didctica Particip activamente en las reuniones grupales para la realizacin de las actividades. Los aportes realizados a mi grupo de trabajo fueron oportunos. Mantuve una interaccin respetuosa con mis compaeros de grupo y tutor. Asist puntualmente a todas las reuniones fijadas por el grupo Qu aspectos ha mejorado en sus procesos de aprendizaje

Justificacin para afirmaciones o aspectos no calificadas con puntaje de 1 a 5:

COEVALUACION
Evaluacin del coordinador a su grupo o de cada integrante del grupo a un compaero

Nombre del Evaluador:___________________________Fecha: ____________ El trabajo grupal colaborativo relacionado con la participacin y aporte de cada integrante en las actividades grupales solicitadas, en aspectos como son la discusin, anlisis y generacin conjunta de los contenidos requeridos en los mismos, al igual que la participacin activa y colaborativa en el proceso de aprendizaje. Como Integrante del grupo de trabajo y coordinador, se le solicita evaluar el grado de participacin de cada uno de los participantes, asignando un puntaje de 1 a 5 para cada una de los siguientes aspectos. Aunque esta evaluacin implica apreciacin personal, la solicitud es que asigne el puntaje de manera objetiva. Puntaje y su descripcin:
1 Insuficiente 2 Menos que regular 3 Regular 4 Bueno 5 Muy Bueno

NOMBRE DEL PARTICIPANTE AFIRMACIONES aspectos


Asisti a las reuniones de trabajo de grupo. Mantuvo permanente comunicacin con el resto de los participantes del grupo. Ayud a aclarar dudas o confusiones en torno a los temas tratados en las actividades. Intercambi informacin, datos, ideas, etc. con sus compaeros de grupo durante el desarrollo de las actividades. Hizo algn aporte en el desarrollo de las actividades. Particip en la solucin de problemas durante el trabajo grupal. Ayud a organizar el trabajo grupal. Fue responsable con las acciones asumidas dentro del grupo de trabajo. Fue puntual en las reuniones convocadas para el trabajo grupal. Mantuvo una interaccin respetuosa con todos los integrantes del grupo. Consider las ideas y aportes del resto del grupo de trabajo. Colabor en la bsqueda de informacin y recursos para la fase del desarrollo de las unidades didcticas. En su rol de Coordinador del grupo de trabajo o de integrante se le solicita sealar cmo se sinti respecto al trabajo en equipo, adems de las debilidades y fortalezas percibidas en su grupo de trabajo. _______________________________________________________________________________ _______________________________________________________________________________

Vous aimerez peut-être aussi