Você está na página 1de 19

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

Você também pode gostar