301405-Modulo-Automatas y Lenguajes Formales

download 301405-Modulo-Automatas y Lenguajes Formales

of 143

Transcript of 301405-Modulo-Automatas y Lenguajes Formales

MODULO AUTMATAS Y LENGUAJES FORMALES

Edgar Alberto Quiroga Rojas

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

MODULO AUTMATAS Y LENGUAJES FORMALES

@Copyright Universidad Nacional Abierta y a Distancia

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

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

3. Expresiones Regulares

Segunda Unidad

Captulos

6. Propiedades de Lenguajes Independientes de Contexto

Tercera Unidad III. LENGUAJES ESTRUCTURADOS POR FRASES

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

35. Codificacin de Mquinas de Turing

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

INTRODUCCINLos 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 GENERALReconocer los lenguajes regulares, autmatas finitos y su aplicacin.

OBJETIVOS ESPECIFICOSEstudiar 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 HISTORIA1oy 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 y1

H

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

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

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

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

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

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

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

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

C

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

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

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

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

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

3

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

LECCION 3. - AUTOMATAS Y LENGUAJESl 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

E

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

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

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

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

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

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

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

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

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

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

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

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

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

L

5

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

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

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

LECCION 5. - AUTOMATA6a 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

L

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

A

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

7

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

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

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

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

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

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

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

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

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

LECCION 7. - AUTOMATAS FINITOS DETERMINISTICOS8 (AFD)

U

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

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

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

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

Tabla de transicin

Diagrama de transicin

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

q1

y el diagrama de transicin correspondiente se muestra a continuacin.

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

Figura 7: Autmata finito que acepta L3

LECCION 8. AUTOMATAS FINITOS NO DETERMINISTICOS (AFND)

U

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

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

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

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

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

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

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

Figura 11: Automata finito y automata finito no deterministico

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

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

U

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

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

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

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

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

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

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

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

LECCION 11. - EXPRESIONES REGULARES9

L

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

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

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.

L

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

H10

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

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

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

r(a)

a

s(b)

r

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:

r

a

b s b t u a

b v

AFND que acepta ab*

AFND que acepta (ab)*

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

So

r

a

b s b b t

u a

v

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:

r

a

s

t

b

u

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

r

a

s

t

b

u

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 aM:

b

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

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

a

b

q0

a b

q1 a b q3

b q5 a a,b a,b

q2

q4

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

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

{wAj qj (qi,w)}

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

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

a q0 A0 = a A0 b A1 ;

bA1 =

q1

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

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

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

b b q4

q3

A3 = aA3 bA4

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

A3 = aA3 bb* = aA3 b+ = a*( b+) = a*b* A2 = aa*b* bb* = a+b* b+ A1 = a(a+b* b+) bb* = aa+b* ab+ b+ A0 = aA1 = a(aa+b* ab+ b+) A0 = a2a+b* a2b+ ab+ Lema: Sea M un autmata finito. Entonces existe una expresin r para la cual: L(r) = L(M) Teorema de anlisis de Kleene: Si