Está en la página 1de 157

MODULO AUTMATAS Y LENGUAJES FORMALES

Edgar Alberto Quiroga Rojas Actualizacin: Carlos Alberto Amaya Tarazona

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

MODULO AUTMATAS Y LENGUAJES FORMALES

@Copyright Universidad Nacional Abierta y a Distancia

Autor: Edgar Alberto Quiroga Rojas Actualizacin: Carlos Alberto Amaya Tarazona Diseo Portada Carlos Alberto Amaya Tarazona 2011 - 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 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 17. Gramticas Regulares y Lenguajes Regulares 18. Gramticas Independientes del Contexto 19. Formas Cannicas para las Gramticas Independientes del Contexto 20. Formas Norlmales

2. Autmatas Finitos

3. Expresiones Regulares

Segunda Unidad

Captulos 4. Conceptos Generales

II. LENGUAJES INDEPENDIENTES DEL CONTEXTO

5. Autmatas a Pila

6. Propiedades de Lenguajes Independientes de 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 31. Definicin. 32. Funcionamiento de la Mquina de Turing. 33. Diferencias entre un Computador y una Mquina de Turing 34. La Mquina Universal de Turing

Tercera Unidad III. LENGUAJES ESTRUCTURADOS POR FRASES

Captulos 7. Mquinas de Turing.

35. Codificacin de Mquinas de Turing 8. Mquina de Turing y Computacin 36. Tesis de Church/Turing 37. Lenguajes Aceptados por la Maquina de Turing. 38. Variantes de Una Mquina de Turing 39. Problemas de Hilbert 40. Problemas Insolubles para la Teora de 41.Lenguajes Decidibles 42. Problemas de Halting 43. Decibilidad de Teoras Lgicas 44. Funciones Computables 45. Reducibilidad de Turing

9. Funciones Recursivas

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
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
1

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 influencia 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 definido 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 codificacin. 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 finita de frmulas bien formadas, de tal modo que la fbf o sucesin finita 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 codificar 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 -definible 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 definirse por un conjunto de ecuaciones entre trminos que incluian a la funcin f y a smbolos para funciones previamente definidas, 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 define la clase de las funciones recursivas de Herbrand-Gdel. En 1936, Church hace un esquema de la demostracin de la equivalencia entre las funciones -definibles 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 -definible, 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 -definible y funciones recursivas de HerbrandGdel, 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 definido 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 -definible 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 finitas de smbolos como consecuencia de otras sucesiones finitas de smbolos por medio de un tipo normalizado de reglas y a partir de un conjunto de axiomas. As pues, dada una sucesin finita de smbolos como entrada, las reglas permiten convertirla en una sucesin finita de salida. En su artculo, Post demostr resultados de incompletitud e indecibilidad en estos sistemas. Los resultados hasta ahora citados, se refieren 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 codificacin 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 codificara el algoritmo solucin del problema y la propia entrada del problema, de tal forma, que la mquina aplicara el algoritmo codificado 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 verificacin?) 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 identificar 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 coeficientes 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 definidas 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 definiciones: a) La ACM (Asociation Computing Machinering): la disciplina Ciencias de la Computacin es el estudio sistemtico de los procesos algortmicos que
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
2

describen y transforman informacin: teora, anlisis, diseo, eficiencia, 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, especficamente 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) Cunto 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 suficiente 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 afirm: "Todo problema matemtico bien definido 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 significa 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 clasificarse ampliamente del siguiente modo: (a) mquinas computadoras abstractas (definidas de modo preciso), (b) construcciones formales de procedimientos de cmputo, y (c) construcciones formales productoras de clases de funciones.

Las dos primeras caracterizaciones se refieren a la propia nocin de algoritmo (en principio no hay gran diferencia entre ambas). La ltima da 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 afirma la equivalencia de ambas clases. Se clasifican 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 especificado 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 fue 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 flexibilidad 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 reconocer el lxico y la sintaxis 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 verificacin 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 especificaciones. En cualquier caso y cuando la prueba formal resulte muy complicada, podemos aumentar la confianza 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 definitiva, el estudio de la eficiencia 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 clasificados en dos tipos: problemas eficientemente computables, para los que exista un algoritmo eficiente; y problemas intratables, para los que no existen algoritmos eficientes. La existencia de problemas intratables no ha sido probada, si bien se han encontrado muchas evidencias a su favor. Otra clase de problemas a considerar es la clase NP3 de los problemas para los que exista 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 reflejan esta forma (o comportamiento). Estas mquinas llamadas Redes Neuronales Artificiales 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 dificultad 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 definida como el tiempo de computacin sobre una mquina de Turing multicinta. Despus surge la definicin 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 algoritmos 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 algoritmos 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 sintaxis de los lenguajes naturales. Backus y Naur desarrollaron una notacin formal para describir la sintaxis 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: cadenas producidas por una gramtica formal (ver Jerarqua de Chomsky) cadenas producidas por una expresin regular
4

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 REGULARES 5 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 ababc, . . .} = {abc, cc, abab, abccc,

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 A B, A B 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 finito es una quintupla M =(Q, A, , q0, F) en que: Q es un conjunto finito llamado conjunto de estados A es un alfabeto llamado alfabeto de entrada es una aplicacin llamada funcin de transicin : Q A Q q0 es un elemento de Q, llamado estado inicial F es un subconjunto de Q, llamado conjunto de estado finales.

Figura 3: Autmata Finito Desde el punto de vista intuitivo, podemos ver un autmata finito 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 final, se dice que el autmata acepta la cadena. Si no est en un estado final, 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; :Kx 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 } ;
Funcin de transicin: : Q x Q
ENTRADAS 0 1 E S T A D O S 0 0 1 NO NO 0 NO 1 1 1 NO

= {0,1} q0 =

A ={ 1 }

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 finitos 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 finitos se utilizan generalmente para verificar 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 manifiesto 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 definitiva, 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 figura 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 finito de estados. Se pasa de unos a otros leyendo smbolos del alfabeto de entrada. Este autmata representa una versin simplificada 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 definida 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 DETERMINISTICOS (AFD)

n autmata finito determinstico (AFD) se define 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 ms 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.
8

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

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.

Tabla 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) est el estado que determine (q, a)

Diagrama de transicin

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

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 solucin del ejercicio luego de los anlisis 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 finitos 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 final.

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} 0 Q1 {q2} #Q2 {q2} {q2} 0 Q3 {q4} #q4 {q4} {q4} Tabla de transicin Diagrama de transicin

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 flechas con la misma etiqueta.

Figura 9: Autmata Finito no Deterministico Este es un autmata no-determinstico ya que hay transiciones no definidas. En general, los autmatas no-determinsticos son ms simples que los determinsticos. (Reconocimiento de Patrones).-Supongamos un ejemplo de transmisin 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 ruido 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 finito. La idea es que este no pueda llegar a un estado no final mientras no se reciba la cadena inicial. En ese momento el autmata pasa a un estado final. A partir de ah todo lo que llegue se registra. el propsito es hacer un autmata que llegue a un estado final tan pronto como se reconozca 010010. Intentar hacer un autmata finito 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 fin de la trasmisin.

Figura 10: Autmata No-Deterministico que reconoce la cadena 010010. Ejemplo: Usando los autmatas No-Determinsticos 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: Autmata finito y autmata finito no deterministico

LECCION 9. - AUTOMATA FINITO CON

-TRANSICIONES.

Un autmata finito 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 define como: : QV U { } P(Q) La tabla de transicin de un AFND- es como la de un AFND excepto que se le aade una columna correspondiente a Ejemplo AFND- cuyo diagrama de transicin 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 autmata 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 ver 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. As 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, a b, 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,


9

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

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 ltimo . es: Primero *; luego y por

Por ejemplo, una expresin dada por ({a}*{b}) {c} se reduce a a*b c. 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 REGULARES 10

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:

a
(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)* :

r 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 a b

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 q5 a,b a,b

q2
4

b q3
A5 = A2 = A4 = A1 = b A3 = a A0 = ab ba Del autmata anterior se deduce:

q4

(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
b

bq q0

q1

A0 = a A0 b A1 ; A1 = Resolviendo y sustituyendo resulta que A0 = a A0 b,, y no es posible simplificarlo ms. El siguiente lema muestra cmo 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 ; A2 = aA3 bA4 A3 = aA3 bA4 ; A4 = 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+

b b q4

q3

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 es as como 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
11

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

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: Concatenacin 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 concluye 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 transicin 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. nicamente falta determinar cules de los nuevos estados son finales y cules 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 mximo un carcter. 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 transicin(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 transicin(q0, b) = {q0, q1}. Similarmente, transicin(q1, b) = {q1}, y transicin(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 vacas 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 transicin (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 - (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 transicin(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 transicin- (q1, a), los pasos son como sigue: 1. Q0 = {q1, q2, q4} 2. transicin (q1, a) = {q1}, transicin(q2, a) = {q2, q3}, y transicin(q4, a) = {}, por lo que uniendo estos conjuntos, Q1 = {q1, q2, q3}. 3. transicin-(q1, a) = CERR-({q1, q2, q3}) = {q1, q2, q3, q4}. Como ltima definicin, es directo extender la funcin transicin-(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 transicin-(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 L2C) 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 C M2, cambiando los estados finales por no finales y viceversa; sean M1C 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(q1, 0) = {q0} f(q2, 0) = {q2} f(q0, 1) = {q1, q2} f(q1, 1) = {q0, q1} f(q2, 1) = f(q0, ) = f(q1, ) = {q0} 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 AFNdirectamente utilizando el Teorema de Kleene.
13

se puede construir

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

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) R(0)1,1 = + b, R(0)
1,2 1,2

+ R(1) 1,2(R(1) 2,2)*R(1) 2,2, tenemos que

= a, R(0)

2,1

= b, R(0) 2,2 = + a + b)*a = b*a y R(1)2,2 = ( + a) + b( + b)*a =+ b*a.

Por tanto, R(1) 1,2 = a + ( + b)(

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 q1 a q2 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: S SaE : partiendo del estado inicial S, vendr una a y luego otra cadena que denotamos genricamente con una E. E A, E B : 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 q5 a(a*b*)b

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 A B b A a B abaS babS S Genera un lenguaje regular. Podemos obtener entonces el autmata y la expresin regular correspondientes. b Exp. Regular: (baba abab)* a a a b a b Autmata:

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 Q2 a Q3 Q3 a Q3 b Q2 b 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 1 n 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 S S B C aS : bB : b: cC : 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 S B b

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

abaS, tendremos las siguientes

(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 SbS ScS a 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 b S a a Derivacin 1 a a a Derivacin 2 S c S

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: S A B A B a a

... 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

a 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

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 inicial 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 llamado til. Ejemplo: (1) S (2) A (3) B (4) C (5) D (6) U gAe Ayb CY bBY ooC dd D jVB gi n 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 est 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 ABC, 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. Simplificacin 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 simplificarlas lo mas posible y definir 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 produccin 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 smbolos terminales de en T 8. Eliminar todas las variables que no estn en V y todos los smbolos terminales que no estn 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 especificado 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 despus el primero de los algoritmos se elimina B y la produccin S AB. En definitiva, 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} {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 gramtica 2. Para cada produccin de la gramtica de la forma A 1 ...n, donde i V T 3. Se elimina la produccin 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 despus 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 definitiva, 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 A B donde A, B V . Veamos cmo 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 produccin 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 estn H (A, C) se introduce en H 6. Se eliminan las producciones unitarias 7. Para cada produccin A 8. Para cada pareja (B, A) H 9. Se aade una produccin 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 continuacin 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
n n

Ejemplo: El lenguaje L = {a b : n siguiente gramtica de tipo 2: S A, S B, A ab, A aHb H ab, H aHb, B aBa, B b

1}

{a ba : n

1} viene generado por la

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 produccin 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 produccin Ca a 4. Se cambia i por Ca en A 1 ... n 5. 5. Para cada produccin de la forma A B1,...Bm, m 3

6. Se aaden (m 2)variables D1,D2,...,Dm2 (distintas para cada produccin) 7. La produccin 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 produccin B 3. Aadir A

La otra operacin bsica consiste en eliminar todas las producciones del tipo A donde V* . Esto se hace siguiendo los siguiente pasos: 1. Aadir una nueva variable BA 2. Para cada produccin A A 3. Aadir BA y BA BA 4. Eliminar A A 5. Para cada produccin 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 final 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 produccin Ak Aj 4. ELIMINA1(Ak Aj ) 5. Si existe alguna produccin de la forma Ak Ak 6. ELIMINA2(Ak) A continuacin se puede eliminar definitivamente 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, j > i 3. ELIMINA1(Ai Aj) 4. Para cada i = 1,2,...,m 5. Para cada produccion de la forma Bj Ai. 6. ELIMINA1(Bj Ai) 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 bA3A3A2, B3 aA1A3A3A2, B3 aB3A1A3A3A2, B3 bA3A2 B3A1A3A3A2, 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 aB3A1, A2 bA3A2A1 A3 a, A3 aB3, A3 bA3A2B3, A1 aA1A3, A1 aB3A1A3, A1 bA3A2A1A3, B3 bA3A3A2, B3 aB3A1A3A3A2, B3 bA3A2B3A1A3A3A2, B3 bA3A3A2B3, B3 aA1A3A3A2B3, B3 bA3A2B3A1A3A3A2B3, 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

14

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

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 finitos determinsticos, solo que ahora tendrn un dispositivo de memoria de capacidad ilimitada: una pila. A continuacin daremos la definicin formal de autmata con pila no determinstico (APND). Al contrario que en los autmatas finitos, los autmatas con pila no determinsticos y determinsticos no aceptan las mismas familias de lenguajes. Precisamente son los no determsticos
15

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

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 finito 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 finales 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 substitucin 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 configuracin 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 configuracin (q,au,Z) se puede llegar a la configuracin (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 configuraciones, 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 configuraciones 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 final 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 inicial 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 )} (q, , H)={(qs, H)}, q F, H B {Z0 } (qs, , H)={(qs, )}, 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:. Autmata 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

Concluimos 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, iintroduciendo 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 despus 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. S [q0,Z,q]para cada q Q. 2. [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 verifica 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]

[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]

S [q0, 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] Eliminando 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 Autmata 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 concluimos 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 suficientemente 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 verifica esta propiedad. En dicho camino, al menos debe de haber una variable repetida. Supongamos que esta variable es A, y que la figura 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.

Supongamos que L fuese libre de contexto y sea n la constante especificada 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, verificando 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:
0 0 n n n

|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 suficiente. Es solo necesaria. As si un lenguaje verifica 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

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

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

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 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 verifican en la clase de los lenguajes libres de contexto, como las que expresan el siguiente teorema y corolario. Algunas propiedades de clausura de los lenguajes regulares no se verifican 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, finito o infinito. 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) finito c) infinito 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 finito o infinito 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 finito 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 figura 28(a). No tiene ciclos y el lenguaje es finito. Si aadimos la produccin C AB, el grafo tiene ciclos (figura 28(b)) y el lenguaje generado es infinito.

Figura 28: Grafo asociado a una gramtica 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 ineficiente 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 finito. Sin embargo puede ser muy ineficiente

(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 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 produccin y el smbolo 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 produccin, 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 figura (para una palabra de longitud 5):
3

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 figura ilustra el proceso que se sigue en los emparejamientos (para un elemento de la cuarta fila, 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.
3

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 especificar 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

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, S BC, A BA, A a, B CC, B b, C AB, C a 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

Para c o n t i n u a r e l 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.

Los lenguajes libres de contexto tienen una aplicacin a los compiladores, aunque existen otras aplicaciones como la comparticin de informacin. Es aqu donde se presentan interrogantes a las denominadas gramticas sensibles al contexto. Para gramticas sensibles al contexto, el problema de decidir si el lenguaje que genera es vaco o no tambin es un problema indecidible.

LMITE DE LOS COMPUTADORES ACTUALES

Se ha demostrado que hay infinitos problemas para los que no se va a tener una MT que los resuelva (ni siquiera los reconozca). Tambin se ha formulado la tesis de Church-Turing, que determina el lmite de los computadores actuales. Si esto es as, llegamos al caso de formular la pregunta: Qu tipo de mquina es un computador actual? Como ya se habr supuesto, es una mquina programable en el sentido de la Mquina Universal de Turing. Para demostrar esta afirmacin, se proceder como siempre: primero simular una MT con un computador y segundo simular un computador con una MT.

Para el primer paso, si tenemos una MT con cinta semi-infinita, la unidad de control se simula por el procesador, cada uno de los smbolos de cinta se codifican como la informacin que se permiten guardar en la memoria del computador. Los estados, al ser finitos, se pueden guardar en una tabla (en realidad sera el estado del procesador, que incluye el contador de programa) y las transiciones se simulan mediante un programa. La cinta se simulara con la memoria. El inconveniente de que un computador tiene una memoria finita se soluciona suponiendo que siempre es posible aadirle, de forma indefinida, ms memoria. De esta forma un computador simulara el funcionamiento de una MT cualquiera.

El segundo paso, pasar de un computador a una MT de varias cintas, es tambin casi inmediato. El programa y los datos de entrada al programa que se introducen en la memoria antes de ejecutarse en el computador se pueden

codificar como un par (M, ), donde M es la secuencia de instrucciones que hay que computar y son los datos de entrada al programa, almacenndose en la primera cinta. En la segunda cinta almacenaremos las posiciones de memoria a las que va a acceder el programa para su lectura/escritura. En la tercera cinta almacenaremos el contador de programa (el estado), que es el que determina la direccin de la computacin. De esta forma la MT simulara el funcionamiento de un computador muy bsico. La memoria cach, los registros, la UAL son ampliaciones que se han hecho para mejorar la eficiencia.

Sin embargo, un computador admitir solo un subconjunto de Lu, exactamente el conjunto de aquellas para las que el par (M, ) sea la codificacin de la MT que acepta un lenguaje recursivo, esto es, solo aquellos problemas para los que pueda existir un algoritmo.

UN PROBLEMA REAL: La verificacin formal de un programa es decidible?. Podemos enunciar este problema de otra manera existe alguna MT que decida si su propia definicin es vlida o no? Por la demostracin de la indecidibilidad de Lu, podemos decir que no. Otro problema que corrobora esta afirmacin es que la lgica de predicados, en la que se basa la verificacin formal, tampoco es decidible.

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 ltimos 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. Adems 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) Autmata de Pila (b) Mquina 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. _____________________
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.

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.) 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 cul es la ltima 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 mquina 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 MQUINAS DE TURING LAS

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 Diagrama de estados 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 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 . . . b 1 1 1 1 1 1 b ... 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 bb11..1011..1b bbb1..1011..1b .................. bbb1..1011..1b bbb1..1111..1b . . . . . . . . . . . . . . . .....

Configuracin final: s1 b b b 1 . . 1 1 1 1 . . 1 b 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: 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 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.

0,1,2,

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.

LECCION 36. TESIS DE CHURCH /TURING Teora de la Computabilidad se ocupa de dividir el universo de todos los lenguajes sobre , en aquellos lenguajes que pueden ser reconocidos por algoritmos efectivos y los que no. Ello conduce a las funciones no computables, es decir, a los problemas no resolubles.

La

Alan Turing

Alonzo Church

La Teora de la Computabilidad est compuesta por los siguientes niveles: Primer nivel: divide los problemas en tres clases: Primer tipo: Problemas imposibles, no tienen solucin. Segundo tipo: Problemas ejecutables solo si disponemos de recursos ilimitados. Tercer tipo: Problemas que se pueden ejecutarse sin necesidad de recursos ilimitados Segundo nivel: se clasifican en funcin del tiempo que tardan en ejecutarse. Se conocen con el nombre de problemas indecidibles, impracticables o solucionables. Tercer nivel: comprende aquellos problemas que por ejemplo requiere un tiempo linealmente proporcional a su tamao. PRINCIPIO DE CHURCH-TURING: Todo proceso fsico puede ser simulado por un dispositivo universal de computacin." ENUNCIADOS: CHURCH

"La clase de las funciones que pueden ser calculadas mediante un algoritmo coincide con la clase de las funciones recursivas." (Tesis de Church).

Apoyado en esta tesis junto a la definicin de funcin definible, encontr varios ejemplos de problemas cuya resolucin era irresoluble llegando a manifestar que el Entscheidungsproblem era uno de estos problemas. "Una funcin es recursiva si y slo si es total y efectivamente computable. Una funcin es parcialmente recursiva si y slo si es efectivamente computable." Es decir, una funcin de enteros positivos es efectivamente calculable slo si es recursiva

ENUNCIADOS: TURING "Una funcin es efectivamente computable si y slo si la funcin es Turingcomputable." Es decir, si una funcin es computable entonces puede ser computada por una mquina de Turing.

El objetivo de Turing era el de enfrentarse al problema planteado por Hilbert (el Entscheidumgsproblem) utilizando para ello el concepto abstracto de una mquina, una mquina terica. Turing describa en su artculo que a travs de su mquina haba conseguido caracterizar de un modo matemtico el nmero de funciones calculables, usando para ello un algoritmo, este hecho se conoce como:

CHURCH Y TURING "Todos los modelos computacionales efectivos son equivalentes a una mquina de Turing "Todo lo que es computable por un humano es computable por una mquina de Turing" "Toda funcin que pueda ser considerada naturalmente como computable, puede ser computada por una mquina de Turing

TESIS FISICA DE CHURCH-TURING "Toda funcin que pueda ser fsicamente computable, puede ser computada por una mquina de Turing"

ORIGEN El origen de la tesis de Church-Turing se encuentra en el hecho de que Turing deseaba demostrar que el problema de la decisin (Entscheidungsproblem), para el clculo de predicados, careca de solucin, es decir, era insoluble. Se usa la palabra "tesis" en lugar de "teorema" ya que el concepto de ser computable es algo informal, sin embargo que el concepto de mquina de Turing es formal y preciso. Aqu nos encontramos con un gran problema, puesto que la idea de la Mquina de Turing no es equivalente a cada una de las definiciones de "computabilidad" existentes.

TESIS EXTENDIDA DE CHURCH-TURING "La mquina de Turing es tan eficiente como cualquier dispositivo de computar. Es decir, si una funcin es calculable por un dispositivo hardware en tiempo para una funcin de entrada de tamao n, entonces es computable por una mquina de Turing en tiempo para un k fijo y dependiente del problema"

XITO DE LA TESIS La tesis de Church-Turing ha sido tan exitosa que la mayora la supone verdadera. Los trminos derivados de ella, como mtodo efectivo y computable son comnmente utilizados, cuando en realidad computable se refiere a Turingcomputable, en el salto entre uno y otro se encuentra la tesis de Church, y entre muchos otros conceptos y trminos comnmente utilizados en la teora de la computabilidad o funciones recursivas.

LECCION 37. LENGUAJES ACEPTADOS POR LA MAQUINA DE TURING

Una mquina de Turing se puede comportar como un aceptador de un lenguaje. Si colocamos una cadena w en la cinta, situamos la cabeza de lectura/escritura sobre el smbolo del extremo izquierdo de la cadena w y ponemos en marcha la mquina a partir de su estado inicial. Entonces w es aceptada si, despus de una secuencia de movimientos, la mquina de Turing llega a un estado final y para. Por tanto w es aceptada. Si qw * w1pw2 para algn estado final p y unas cadenas w1 y w2. Entonces, se obtiene la siguiente definicin: Sea M = (Q, S , G, q0=q1, B, F, d) una mquina de Turing. Entonces el lenguaje aceptado por M es: L(M) = {w S*q1w * w1pw2 para pF y wiG*}.

Los lenguajes formales que son aceptados por una mquina de Turing son exactamente aquellos que pueden ser generados por una gramtica formal. El clculo Lambda es una forma de definir funciones. Las funciones que pueden se computadas con el clculo Lambda son exactamente aquellas que pueden ser computadas con una mquina de Turing. Estos tres formalismos, las mquinas de Turing, los lenguajes formales y el clculo Lambda son formalismos muy dismiles y fueron desarrollados por diferentes personas. Sin embargo, ellos son todos equivalentes y tienen el mismo poder de expresin. Generalmente se toma esta notable coincidencia como evidencia de que la tesis de Church-Turing es cierta, que la afirmacin de que la nocin intuitiva de algoritmo o procedimiento efectivo de cmputo corresponde a la nocin de cmputo en una mquina de Turing. Los computadores electrnicos, basados en la arquitectura Von Neumann as como las mquinas cunticas tendran exactamente el mismo poder de expresin que el de una mquina de Turing si dispusieran de recursos ilimitados de tiempo y espacio. Como consecuencia, los lenguajes de programacin tienen a lo sumo el mismo poder de expresin que el de los programas para una mquina de Turing y en la prctica no todos lo alcanzan. Los lenguajes con poder de expresin equivalente al de una mquina de Turing se denominan Turing completos.

Gramticas estructuradas por frases:


Parte izquierda de las reglas: combinacin de smbolos terminales y no terminales, con al menos un no terminal. Parte derecha de las reglas: combinacin de smbolos terminales y no terminales de cualquier longitud (incluso 0).

Las mquinas de Turing aceptan lenguajes estructurados por frases.

Configuracin de una mquina de Turing: o Contenido de la cinta: entre corchetes. o A la izquierda del smbolo actual se incluye el estado.

-Aceptacin: secuencia de configuraciones de la mquina que empieza con ].Y] y termina con [hw[i

Teorema: Todo lenguaje estructurado por frases es aceptado por una mquina de Turing. Demostracin: Para cada gramtica G existe una mquina de Turing no determinista M de 2 cintas que aceptas el lenguaje generado por G. Construccin de la mquina: 1. Se copia la cadena de entrada en la primera cinta. 2. Se escribe S (smbolo inicial) en la cinta 2. 3. Se aplican las reglas de reescritura de forma no determinista a la cadena de la cinta 2. 4. Si la cinta 2 contiene slo smbolos terminales, se compara con la cadena de la cinta 1. Si son iguales, el proceso ha terminado. Si no, provocar una terminacin anormal.

LECCION 38. VARIANTES DE UNA MAQUINA DE TURING

Hay otras definiciones de las mquinas de Turing que son equivalentes. Algunos de
esos modelos alternativos son mucho ms complicados aunque todos tienen la misma potencia computacional (o de clculo). Muchas de ellas dotan de mayor flexibilidad al diseo de una mquina de Turing que resuelva un problema en particular. Mquina de Turing con Directiva de Permanecer Recurdese que la mquina de Turing sencilla sita la cabeza de lectura/escritura sobre el primer B que haya a la izquierda de la posicin actual. Para hacerlo, busca fuera de la celda actual y retrocede. Esto es debido a la definicin original que requiere que por cada transicin se mueva la cabeza de la cinta. La funcin de transicin estaba definida como: d: Q x G Q x G x {R, L} y puede ser modificada como: d: Q x G Q x G x {R, L, S} donde S significa permanecer, es decir no mover la cabeza de lectura/escritura. Por tanto d(q, s)=(p, s, S) significa que se pasa del estado q al p, se escribe s en la celda actual y la cabeza se queda sobre la celda actual.

Mquina de Turing Multipista:

En el modelo multipista, la cinta est dividida en un numero finito de k pistas, la funcin de transicin tiene la siguiente forma:

Mquina de Turing de Cinta infinita en una Direccin: Mquina de Turing que usa una cinta que se extiende infinitamente en una nica direccin. Generalmente, se tiene una cinta que se extiende infinitamente hacia la derecha. No est permitido realizar ningn movimiento hacia la izquierda a partir de la celda del extremo izquierdo. Desde luego, cualquier mquina de Turing de esta forma puede ser simulada por una de las que responden a la definicin original. Para cada computacin, simplemente se marca una de las celdas de la cinta infinita por los dos lados, como la celda que se encuentra en el lmite izquierdo. Mquina de Turing en Dos Direcciones: Una mquina de Turing con una cinta infinita en un sentido puede simular una mquina de Turing con la cinta infinita en los dos sentidos pero con dos pistas. Sea M una mquina de Turing con una cinta infinita en los dos sentidos. La mquina de Turing M, que tiene una cinta infinita en un sentido, puede simular a M si tiene una cinta con dos pistas. La cinta superior contiene la informacin correspondiente a la parte derecha de la cinta M, a partir de un punto de referencia dado. La pista inferior contiene la parte izquierda de la cinta M (en orden inverso).

Mquina de Turing Multicinta: En el modelo de multicintas, hay n cintas diferentes y n cabezas de L/E. La funcin de transicin para mquinas de Turing con n cintas:

Mquina de Turing No determinista La mquina de Turing No determinista es aquella que para un estado actual y el smbolo actual de la cinta, puede haber un nmero finito de movimientos a elegir. Por lo tanto, la regla de transicin d de dicha mquina, satisface d(q, s) Q x G x {R, L}. Por ejemplo, si la mquina de Turing tiene una transicin d(q1, a) = {(q1, b, R), (q2, a, L)} entonces los movimientos: {abbq1ab - abbbq1b y abbq1ab - abq2bab} son posibles. Ya que cualquier mquina de Turing determinista es tambin no determinista, lgico que una mquina de Turing determinista se pueda simular mediante una determinista. Tambin una mquina de Turing determinista puede simular una determinista. Por tanto, no se gana ninguna potencia adicional a causa del determinismo. es no no no

LECCION 39. PROBLEMAS DE HILBERT: Entscheidungsproblem

En

1928 durante un congreso internacional D. Hilbert plante las siguientes cuestiones: Las matemticas son 'completas', esto es, cada afirmacin matemtica se puede probar? Las matemticas son 'consistentes', esto es, es posible probar paralelamente una afirmacin y su negacin? Las matemticas son 'decidibles', esto es, se puede encontrar un mtodo definido aplicable a cualquier afirmacin matemtica, que nos de cmo resultado si es o no cierta la aseveracin evaluada? La intencin de Hilbert era conseguir un modelo matemtico formal, completo y consistente, en el que a travs de un algoritmo, se pudiese determinar la veracidad o falsedad de cualquier proposicin formal. Este problema recibi el nombre de Entscheidungsproblem, resolverlo significara que para cualquier problema bien definido existira un algoritmo capaz de resolverlo.

Los problemas de Hilbert son una lista de 23 problemas matemticos compilados por el matemtico alemn David Hilbert para la conferencia en Pars del Congreso Internacional de Matemticos de 1900. Los problemas estaban todos por resolver en aquel momento, y varios resultaron ser muy influyentes en la matemtica del siglo XX. Hilbert present diez de los problemas (1, 2, 6, 7, 8, 13, 16, 19, 21 y 22) en la conferencia, en un acto el 8 de agosto en La Sorbona.

Naturaleza e influencia de los problemas Aunque se han producido intentos de repetir el xito de la lista de Hilbert, ningn otro conjunto tan variado de problemas o conjeturas ha tenido un efecto comparable en el desarrollo del tema y obtenido una fraccin importante de su celebridad. Por ejemplo, las conjeturas de Weil son famosas pero fueron poco publicitadas. Quiz el propio temperamento de Andr Weil evit que intentase ponerse en posicin de competir con Hilbert. John von Neumann produjo una lista, pero no obtuvo reconocimiento universal. A primera vista, este xito podra atribuirse a la eminencia del autor de los problemas. Hilbert estaba en la cspide de su poder y reputacin en aquel momento y continu dirigiendo la sobresaliente escuela de matemtica en la Universidad de Gttingen. Un examen ms cuidadoso revela que el asunto no es tan simple. La matemtica de aquel tiempo era an discursiva: la tendencia a sustituir palabras por smbolos y apelaciones a la intuicin y conceptos mediante axiomtica pura segua subyugada, aunque se volvera fuerte durante la siguiente generacin. En 1900, Hilbert no pudo acudir a la teora axiomtica de conjuntos, la integral de Lebesgue, los espacios topolgicos o la tesis de Church, que cambiaran sus respectivos campos de forma permanente. el anlisis funcional, fundado en cierto modo por el propio Hilbert como nocin central de los testigos del espacio de Hilbert, no se haba diferenciado an del clculo de variaciones; hay en la lista dos problemas de matemtica variacional, pero nada, como podra asumirse inocentemente, sobre teora espectral (el problema 19 tiene una conexin con la hipoelipticidad). La lista no fue predictiva en ese sentido: no consigui plasmar o anticipar el fulgurante ascenso que experimentaran la topologa, la teora de grupos y la teora de la medida en el siglo XX, as como no previ la manera en que iba a avanzar la lgica matemtica. Por tanto, su valor documental es el de ensayo: una visin parcial, personal. Sugiere algunos programas de investigacin y algunas direcciones a seguir sin fin concreto. De hecho, muchas de las preguntas daban una falsa idea del matemtico profesional del siglo XXI, o incluso de 1950, en que la forma de una solucin a una buena pregunta tomara la forma de un artculo publicado en una publicacin matemtica. Si este fuera el caso de todos los veintitrs problemas, se hubiera simplificado el comentario hasta el punto de poder dar una referencia a una revista, o considera la pregunta como abierta todava. En algunos casos el lenguaje usado por Hilbert se sigue considerando un tanto "negociable", en cuanto al significado real de la formulacin del problema (en ausencia, repetimos, de fundamentos axiomticos, basados en matemtica pura, empezando con el propio trabajo de Hilbert sobre geometra euclidiana, pasando por el Principia Mathematica, y terminando con el grupo Bourbaki y el "terrorismo intelectual" para terminar el trabajo). Los problemas Primero y Quinto se encuentran, quiz sorprendentemente, en un estado de formulacin de una claridad menos que total (vanse las notas). En casos como el Vigsimo, el problema se podra leer de forma razonable en una versin "interna", relativamente accesible, en la que el lector puede saber a qu estaba apuntando Hilbert; o como una penumbra "externa" y especulativa. Dicho todo esto, por tanto, la razn ms importante es la gran rapidez con la que acept la lista de Hilbert la comunidad matemtica de aquel momento (lo cual es una frmula menos convencional que ahora, ya que por entonces haban pocos lderes investigadores, que generalmente se encontraban en unos pocos pases Europeos y se conocan todos entre ellos). Los problemas se estudiaron con gran atencin; resolver uno labr reputaciones.

El estilo fue al menos tan influyente como el contenido de los problemas. Hilbert solicitaba clarificaciones. Pidi soluciones en principio a preguntas algortmicas, no a algoritmos prcticos. Pidi un fortalecimiento de los cimientos de partes de la matemtica que a los no practicantes an se antojaban guiadas por intuiciones opacas (el clculo de Schubert y la geometra enumerativa). Estas actitudes fueron adoptadas por muchos seguidores, aunque tambin fueron discutidas, y continan sindolo. Treinta aos despus, Hilbert haba endurecido su postura: vase ignorabimus. Los veintitrs problemas de Hilbert son: Problema 1. La hiptesis del continuo (esto es, no existe conjunto cuyo tamao est estrictamente entre el de los enteros y el de los nmeros reales) Se ha probado la imposibilidad de probarlo como cierto o falso mediante los axiomas de ZermeloFraenkel. No hay consenso al respecto de considerar esto como solucin al problema. Problema 2. Probar que los axiomas de la aritmtica son consistentes (esto es, que la aritmtica es un sistema formal que no supone una contradiccin). Parcialmente resuelto: hay quienes sostienen que se ha demostrado imposible de establecer en un sistema consistente, finitista y axiomtico Sin embargo, Gentzen prob en 1936 que la consistencia de la aritmtica se deriva del buen fundamento del ordinal 0, un hecho sujeto a la intuicin combinatoria. Problema 3. Se puede probar que dos tetraedros tienen igual volumen (bajo ciertas asunciones)? Resuelto. Resultado: no, probado usando invariantes de Dehn Problema 4. Construir todas las mtricas cuyas rectas sean geodsicas. Demasiado vago para decidir si se ha resuelto o no. Problema 5. Son los grupos continuos grupos diferenciales de forma automtica?. Resuelto por Andrew Gleason Problema 6. Axiomatizar toda la fsica. Sin resolver. No matemtico Problema 7. Es a b trascendental, siendo a 0,1 algebraico y b irracional algebraico?. Resuelto. Resultado: s, ilustrado por el teorema de Gelfond o el teorema de Gelfond-Schneider Problema 8. La hiptesis de Riemann (la parte real de cualquier cero no trivial de la funcin zeta de Riemann es ) y la conjetura de Goldbach (cada nmero par mayor que 2 se puede escribir como la suma de dos nmeros primos). Abierto Problema 9. Encontrar la ley ms general del teorema de reciprocidad en cualquier cuerpo numrico algebraico. Parcialmente resuelto Problema 10. Encontrar un algoritmo que determine si una ecuacin diofntica polinmica dada con coeficientes enteros tiene solucin entera. Resuelto. Resultado: no, el teorema de Matiyasevich implica que no existe tal algoritmo. Problema 11. Resolver las formas cuadrticas con coeficientes numricos algebraicos. Parcialmente resuelto Problema 12. Extender el teorema de Kronecker sobre extensiones abelianas de los nmeros racionales a cualquier cuerpo numrico de base. Abierto

Problema 13. Resolver todas las ecuaciones de 7 grado usando funciones de dos parmetros. Resuelto. Lo prob posible Vladimir Arnold. Problema 14. Probar la finitud de ciertos sistemas completos de funciones. Resuelto. Resultado: no, en general, debido a un contraejemplo Problema 15. Fundamento riguroso del clculo enumerativo de Schubert. Parcialmente resuelto Problema 16. Topologa de las curvas y superficies algebraicas. Abierto Problema 17. Expresin de una funcin definida racional como cociente de sumas de cuadrados. Resuelto. Resultado: se estableci un lmite superior para el nmero de trminos cuadrados necesarios Problema 18. Existe un poliedro irregular y que construya otros poliedros? Cual es el apilamiento compacto ms denso?. Resuelto. Problema 19. Son siempre analticas las soluciones de los Lagrangianos? Resuelto. Resultado: s Problema 20. Tienen solucin todos los problemas variacionales con ciertas condiciones de contorno?. Resuelto. Ha supuesto un rea importante de investigacin durante el siglo XX, culminando con las soluciones al caso no lineal. Problema 21. Probar la existencia de ecuaciones lineales diferenciales que tengan un grupo monodrmico prescrito Resuelto. Resultado: s o no, dependiendo de una formulacin ms exacta del problema. Problema 22. Uniformizacin de las relaciones analticas por medio de funciones automrficas. Resuelto Problema 23. Extensin de los mtodos del clculo de variaciones Resuelto

LECCION 40. PROBLEMAS INSOLUBLES PARA LA TEORIA DE LENGUAJES Problemas de decisin: Un problema de decisin (PD) es aquel formulado por una pregunta (referida a alguna propiedad) que requiere una respuesta de tipo si/no. Problemas de decisin. Un problema de decisin es:

Soluble si existe un algoritmo total para determinar si la propiedad es verdadera (Existe una MT que siempre para al resolver el problema). Parcialmente soluble si existe un algoritmo parcial para determinar si la propiedad es verdadera (existe una MT que resuelve el problema, pero puede no parar). Insoluble si no existe un procedimiento efectivo para determinar si la propiedad es verdadera (no existe una MT).

Ejemplos de problemas de decisin:

Existe un algoritmo para decidir si un nmero natural cualquiera es par?

Si es soluble. Existe un algoritmo para decidir si dos autmatas finitos cualesquiera son equivalentes?

Si es un problema soluble. Existe un algoritmo para determinar si una gramtica es ambigua o no?

No es insoluble.

LECCION 41. LENGUAJES DECIDIBLES

Un lenguaje decidible es aquel lenguaje L para el cual existe una maquina de Turing
que le puede aceptar cualquier cadena {w L}. Hay lenguajes formados por cadenas tales que una maquina de Turing logra un estado final con las cadenas que reconoce y acepta, solamente. En este caso se dice que la maquina de Turing semidecide al lenguaje. Los lenguajes semidecididos por una MT se llaman recursivos numerables. Las gramticas sin restricciones son las que generan los lenguajes recursivos numerables. De aqu en adelante ser suficiente referirse a los lenguajes recursivos numerables, pues estos generalizan a los lenguajes recursivos, los cuales generalizan a los lenguajes libres de contexto, y estos a los lenguajes regulares. Lo anterior tiene relacin directa con que los autmatas de Turing generalizan a los de la pila y estos a su vez a los autmatas finitos. Por otro lado, pese a que lenguajes formales ms generales que los recursivos numerables no son reconocidos por un automata de Turing, no existe hasta el momento ningn autmata ms poderoso capaz de reconocerlos. En terminos de procedimientos, las cadenas de un lenguaje decidible corresponden a procedimientos que terminan, ya sea realizando lo que indica la palabra sealando que no tienen la capacidad de realizarlo. Para un lenguaje semidecidible, las cadenas decididas por la MT son instrucciones realizadas por la MT. De manera complementaria, las cadenas no decidibles por la MT corresponden a procedimientos que no terminan utilizando una maquina de Turing. A partir de lo dicho aqu tenemos la definicin de algoritmo:

Un algoritmo es una implementacin de una maquina de Turing tal que el conjunto de sus entradas es el lenguaje decidible.

Es decir, si un dado un conjunto de entradas bajo las cuales una MT logra un estado de parada para cada entrada, la maquina corresponde a la implementacin de un algoritmo. Esta es la Tesis de Church Turing. No es un teorema pues no se puede demostrar matemticamente, de manera general y categrica. Es solo la afirmacin de que el concepto informal del algoritmo corresponde a un objeto matemtico. Al ser solo una afirmacin no demostrable, puede suceder que luego fuera refudada. Para que esto ocurra, se necesitara encontrar un autmata ms potente que uno de Turing tal que fuese la implementacin de un algoritmo. Si bien hay algunas propuestas interesantes que pretende generalizar a la MT, hasta la fecha ninguna de ellas ha sido aceptada para sustituir nuestro actual concepto de procedimiento comprable. Por otro lado, mientras que los lenguajes computables son una infinidad numerable, los lenguajes no computables son una infinidad no numerable. Por ello, son ms los lenguajes no computables o indecidibles. Una teora lgica (TL) se define a partir de un conjunto de enunciados dados llamados axiomas, unas reglas de inferencia y un esquema de derivacin. A partir de los axiomas y aplicando la regla de inferencia y el esquema de derivacin se infieren los teoremas de la teora. El conjunto de teoremas de la teora forma un lenguaje formal. Si es posible definir una maquina de Turing tal que reconozca al lenguaje de los teoremas, este lenguaje es decidible y la teora tambin lo es en consecuencia. Dicho en otras palabras, si el conjunto de teoremas visto como un lenguaje es reconocido por una maquina de Turing, entonces la TL es decidible. Y viceversa. Puede hablarse entonces de manera indistinta de teoras lgicas o de lenguajes decididles, como aquellos para los que existe una maquina de Turiong capaz de reconocerlos. Luego la correspondencia entre la sintaxis de una teora lgica (lenguaje formal) y reconocimiento simblico del mismo por parte de un autmata queda establecida. Ejemplo: Muestre que la coleccin de lenguajes decidibles por maquina de Turing para un alfabeto cualquiera es infinita, pero contable. Solucin: {Lenguajes independientes de contexto} es infinito {Lenguajes independientes de contexto} {Lenguajes decidibles por Turing} {Lenguajes decidibles por Turing} {Lenguajes estructurados por frases} es contable {Lenguajes decidibles por Turing} {Lenguajes estructurados por frases} {Lenguajes decidibles por Turing} es contable

La coleccin de lenguajes decidibles es contable por ser un subconjunto de los lenguajes estructurados por frases (que son contables). Es infinita por que contiene a los lenguajes independientes de contexto, que son infinitos.

Los lenguajes decidibles en tiempo polinomico son aquellos lenguajes para los que una maquina de Turing puede determinar si una cadena pertence al lenguaje. Implica reconocer el complemento del lenguaje.

LECCION 42. PROBLEMAS DE HALTING

El problema de Halting es el primer problema indecidible mediante maquinas de Turing. Equivale a construir un programa que te diga si un problema de ordenador finaliza alguna vez o no (entrando a un bucle infinito, por ejemplo) Bsicamente, Turing defini las bases de las computadoras modernas y planteo un problema sobre ellas, llegando a la conclusin de que no hay ningn algoritmo que lo resuelva. Es el problema de la detencin (Halting problem); el problema de saber si un problema se cuelga cuando corre en la computadora. Turing demostr que el problema de la detencin es indicidible, es decir, demostr que haba problemas que una maquina no poda resolver. Es meritorio el hecho que gracias a la equivalencias de maquinas de Turing y computadoras, se haya determinado que existen clculos que no pueden ser detenidos en un tiempo razonable en ninguna computadora imaginable, o incluso, que no puede resolverse en lo absoluto, por ejemplo el problema de correspondencia de Post o el problema de predecir si una maquina de Turing cualquiera va a llegar a un estado final (conocido como el problema de Halting en ingles, o problema de la parada). Por todo esto el problema de Halting es un diagnostico que indica que un problema de decisin no es decidible. El problema de la parada o problema de la detencin para mquinas de Turing es el ejemplo de problema irresoluble ms conocido. Consiste en determinar si una mquina de Turing se detendr con cierta entrada, o bien quedar en un ciclo infinito. Este fue el primer problema que se demostr formalmente que no tena solucin. El concepto de problema indecidible o irresoluble se aplica a problemas de decisin, es decir, problemas a los que podemos decir si tienen solucin o no. Dentro de estos problemas, existe un conjunto al que no le podemos asignar una respuesta, ni afirmativa ni negativa: no existe un algoritmo que nos permita determinar si el problema tiene solucin. Una de las razones por la que es importante conocer que el problema de la parada no tiene solucin, es que nos permite decidir si otros problemas son resolubles o no. El razonamiento a seguir sera: si suponiendo que un problema es decidible, podemos demostrar que el problema de la parada tiene solucin, entonces podemos llegar a la conclusin de que el problema en cuestin no la tiene, por reduccin al absurdo. Definicin: Sea M una mquina de Turing arbitraria con un alfabeto de entrada . decidirse si la mquina M se detendr con la entrada w?

Puede

Solucin: La respuesta a esta pregunta es negativa. No se puede determinar si una mquina de Turing se detiene con una entrada arbitraria.

Demostracin: Para demostrarlo, supongamos que el problema de la parada tiene solucin, es decir, supondremos que existe una mquina de Turing que es capaz de determinar si otra mquina de Turing para con una entrada determinada.

Consideremos una mquina de Turing P, que recibe como entrada una mquina de Turing M y una cadena w codificada en la cinta y una a continuacin de la otra (Mw), y que se encarga de ejecutar M sobre la cadena w. La mquina P parar y aceptar la entrada si M para con w, y parar y rechazar la entrada si M no para con w.

Modificamos la mquina P, creando una mquina P' equivalente. Esta mquina no parar si M para con w, y parar si M no para con w.

Ahora crearemos una mquina D, cuya funcin es la siguiente. Recibe una mquina M, la pasa por una mquina que se encarga de copiar la mquina M a continuacin. Por lo tanto, a la salida de la mquina copia, la cinta contendr MM (la codificacin de la mquina repetida). A continuacin, D coge este resultado y lo pasa a travs de P'. Con esto intentamos decidir si la mquina M para con la entrada M. Es decir, si M para con la entrada M, entonces D no para, y si M no para con la entrada M, entonces D para.

Por ltimo, tomaremos una mquina D (denominaremos SD), y le aplicaremos como entrada una mquina D. SD aplica como entrada a la mquina que recibe, la misma mquina. Por lo tanto, esta mquina en principio parar si D no para con entrada D, y no parar si D para con entrada D. Pero si SD no para y si D para con entrada D, sabiendo que D=SD, llegamos a una contradiccin, por que aplicar D a SD debera dar como resultado lo mismo que aplicar D sobre D. Del mismo modo para el otro caso. Por lo tanto, el problema de la parada no tiene solucin.

LECCION 43. DECIBILIDAD DE TEORIAS LOGICAS

Decibilidad de las teoras lgicas. El desarrollo de la teora de la computabilidad ha


ido ntimamente ligado al desarrollo de la lgica matemtica. Esto ha sido as porque la decibilidad de los distintos sistemas lgicos es una cuestin fundamental. Es bastante fcil ver que el clculo proposicional es decidible. Church y Turing demostraron en 1936 que el clculo de predicados no era decidible. Por otro lado, para cada una de las distintas teoras se ha ido estudiando su posible decibilidad. Como ejemplo ms ilustrativo, Tarski demostr que la teora de los nmeros reales era decidible. 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 definidas tambin son computables, siendo el resultado ms significativo en relacin con esta cuestin el dado por el siguiente teorema: Primer teorema de Recursin. Todo operador entre funciones calculables que sea recursivo (esto es que se defina la imagen de f mediante una funcin calculable en trminos de una parte finita de f), tiene una funcin parcial computable que es el menor punto fijo, es decir, esta funcin es un punto fijo y cualquier otro punto fijo del operador es una extensin de esa funcin. Este teorema recibe su nombre porque podemos definir una funcin mediante una ecuacin recursiva ms general que la permitida por la recursividad primitiva, a saber donde es un operador recursivo. El primer teorema de recursin nos dice que esta definicin es posible; hay una funcin recursiva que satisface esta ecuacin. Como en matemticas se requiere que la definicin sea unvoca, se dice que dicha ecuacin define el menor punto fijo del operador . As, y de acuerdo al primer teorema de recursin, la clase de las funciones calculables es cerrada bajo una muy general forma de definicin por recursin.

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 misma tcnica es muy empleada en el campo de la complejidad algortmica. Para asegurarse de que un problema est en una clase de complejidad, basta reducir el problema a otro de dicha clase sin ms que asegurarse que la reduccin se realiza en la correspondiente clase de complejidad.

LECCION 44. FUNCIONES COMPUTABLES

Las llamadas mquinas de Turing no constituyen ni el primero ni el nico formalismo para expresar cmputos, pero s el que ms ha perdurado. Su creador, el matemtico ingls Alan Turing (1912-1954) estaba convencido de que no exista un algoritmo para el problema de decisin planteado por Hilbert y su intencin era demostrar dicha no existencia. El modelo en el que se inspir fue el de una persona real llevando a cabo un clculo mecnico, por ejemplo una multiplicacin de dos grandes nmeros en el sistema decimal. Las funciones computables son usadas para discutir computabilidad sin referirse a ningn modelo de computacin concreto, como el de la mquina de Turing o el de la mquina de registros. Segn la Tesis de Church-Turing, la clase de funciones computables es equivalente a la clase de funciones definidas por funciones recursivas, clculo lambda, o algoritmos de Markov. Alternativamente se pueden definir como los algoritmos que pueden ser calculados por una mquina de Turing, una mquina de Post, o una mquina de registros. En teora de la complejidad computacional, el problema de determinar la complejidad de una funcin computable esta conocido como un problema de funciones. LECCION 45. REDUCIBILIDAD DE TURING La reducibilidad ha permitido llegar a determinar la indecibilidad en algunos problemas computacionales: Una manera ms simple de determinar la indecibilidad es utilizando el mtodo de reduccin, el cual est implcito en nuestra manera de pensar a la hora de solucionar ciertos problemas: dado un problema P1, este se reduce a solucionar P2. Es decir, si solucionamos P2, tenemos solucionado P1. De esta manera hemos convertido un problema en otro. N los apartados siguientes de este mdulo encontramos un ejemplo que explica la solucin de estos problemas indecidibles mediante Reducibilidad

Se cita un ejemplo: P1.- Hay hambre en el mundo. P2.- Hay que redistribuir parte de la riqueza El problema del hambre en el mundo se reduce a redistribuir riqueza. P2 es un problema mucho ms general, pues adems de solucionar el hambre tambin solucionara otros ms. Hay que hacer notar que este mtodo no hace referencia a la manera en la que se soluciona P1 o P2, sino que determina como la solucin de P2 conduce a solucionar P1. Tambin se puede ver que P2 es un problema ms general que P1. De hecho este mtodo no funcionara en el sentido inverso: siempre se reduce un problema a otro ms general.

Otro ejemplo ms tpico: El jefe al fin se ha decidido a dar las vacaciones, pero estamos a 30 de julio y queremos ir con la familia, que resulta que est en Australia. El problema entonces se reduce a encontrar un billete de avin a este destino.

En trminos de mquinas de Turing, dado un lenguaje L1, que define un problema, su decisin se reduce a otro lenguaje L2 que es decidible. Para ello se debe encontrar un algoritmo que convierta una cadena de L1 en otra cadena de L2 (L2 puede tener ms cadenas aceptables, pero nos interesan las que se pueden obtener por el algoritmo desde L1), decidindose entonces si pertenece a L2. Para demostrar la indecidibilidad de un lenguaje L, se va a utilizar la reduccin ante dos situaciones distintas:

Que P1 sea RE, el problema se reduce a otro P2 que tambin es RE. Que P1 no sea RE, el problema se reduce a otro P2 que tampoco es RE. Demostrar que un lenguaje L2 es recursivamente enumerable / noRE, se har por reduccin al absurdo. Para ello partimos de un lenguaje L1 del que conoceremos de antemano su no decidibilidad (normalmente se utilizarn Lu o Ld, aunque puede ser cualquier otro del que se haya demostrado su indecidibilidad). Tenemos, en las dos situaciones antes descritas:

Que haya que demostrar que L2 es RE. Para ello partimos de la certeza de que L1 es RE (por ejemplo Lu) y lo reducimos a L2. Se supondr que este ltimo es decidible, es decir, que se puede encontrar una MT que, siendo la entrada una cadena de L1, esta se puede convertir en una cadena de L2, y decidir si esta ltima pertenece a L2 o no. Si se encuentra al algoritmo de conversin, se habr encontrado una MT que es capaz de reducir L1 a L2, y por tanto, la manera de decidir L1. Pero esto es una contradiccin, pues sabemos de antemano que L1 es RE, por lo que, forzosamente, L2 no puede ser decidible. Se llega a la conclusin de que L2 tambin es RE.

Que haya que demostrar que L2 no es RE. Para ello partimos de la certeza de que

L1 no es RE (por ejemplo Ld) y lo reducimos a L2. Se supondr que este ltimo es RE, es decir, que se puede encontrar una MT que, siendo la entrada una cadena de L1, esta se puede convertir en una cadena de L2, y aceptarla si esta ltima pertenece a L2. Si se encuentra un algoritmo de conversin, se habr encontrado una MT que es capaz de reducir L1 a L2, y por tanto la manera de aceptar L1. Pero esto es una contradiccin, pues sabemos de antemano que L1 no es RE (ninguna MT puede aceptarlo), por lo que, forzosamente, L2 no puede ser RE. Se llega a la conclusin de que L2 tampoco es RE.

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.

BIBLIOGRAFIA
RODRIGUEZ COSTA Sergio, (1996,2009). Las Mquinas de Turing. Extrado el 19 Febrero de 2009 desde http://www.rastersoft.com/articulo/turing.html RODRIGUEZ COSTA Sergio, (1996,2009). Las Mquinas de Turing. Extrado el 19 Febrero de 2009 desde http://www.rastersoft.com/articulo/turing.html BRENA PIERO, Ramn F. Autmatas y lenguajes un enfoque de diseo (2003) ITESM. Extrado el 23 de Marzo de 2011 desde http://lizt.mty.itesm.mx/~rbrena/AyL.html

AUTOMATAS, (2004, 2008) Web de la asignatura Universidad Rey Juan Carlos. Autmatas, Lenguajes regulares, Mquina de Turing,Pilas: (Extrado el 15 de Abril de 2011 desde http://www.ia.escet.urjc.es/grupo/docencia/automatas WIKIPEDIA, (1995,2011). Mquinas de Turing. Extrado el 24 de Mayo de 2011 desde http://es.wikipedia.org/wiki/M%C3%A1quina_de_Turing AUTOMATAS, (2000,2006). Autmatas Industriales. Extrado el 03 de Febrero de 2006 desde http://www.automatas.org/ BOVET JEAN, (2004, 2006) Visual Autmata Simulator. Extrado el 25 de Marzo de 2011 desde http://www.automatas.org/ JFLAP, (2004, 2008) JFLAP Version 7.0 Release August 28, 2009. Extrado el 30 de Mayo de 2011 desde http://www.jflap.org/ PROYECTO SEPA, Software para la enseanza de Parsing. (n.d.). Extrado el 18 de Marzo de 2011 desde http://www.ucse.edu.ar/fma/sepa/

MARIN MORALES, Teora de Autmatas y lenguajes Formales. (n.d.). Extrado el 15 de Diciembre de 2010 desde http://perseo.dif.um.es/~roque/talf/Material/apuntes.pdf MORAL. SERAFIN, Teora de Autmatas y lenguajes Formales. (n.d.). Extrado el 2 Noviembre de 2010 desde http://decsai.ugr.es/~smc/docencia/mci/automata.pdf de

Cuevas, O, (1999, 2001), Teora de Autmatas y Lenguajes Formales. Segunda Edicin, Espaa 2001. Facultad de ingeniera, Ciencias y Administracin. Universidad de la Frontera. Alfonseca, J; Sancho, M (1990), Teora de Lenguajes, Gramticas y Autmatas. Segunda Edicin, Espaa 2001. Ediciones universidad y Cultura Isasi, P, (1997), Lenguajes, gramticas y autmatas. Un Enfoque prctico. Segunda Edicin, Espaa 2004. Addison- Wesley.

Hopcroft, J, (2002), Introduccin a la Teora de Autmatas y lenguajes Computacin. Segunda Edicin, Espaa 2002. Addison Wesley Iberoamericana

de

Kelley, D, (1995), Teora de autmatas y Lenguajes Formales. Prentice Hall Brokshear, J; (1993), Teora de la computacin, Lenguajes Formales, Autmatas y complejidad. Primera Edicin, Mxico 1993. Ediciones Addison-Wesley Iberoamericana. John, M; (2004), Lenguajes formales y teora de la computacin. Tercera Edicin, Mxico 2004. Ediciones Mc Graw Hill.

También podría gustarte