Sunteți pe pagina 1din 176

y Lenguajes Formales

Teoras de Autmatas

Coleccin manuales uex - 55


(E.E.E.S.)

Elena Jurado Mlaga

55

TEORA DE AUtMAtAS Y LENGUAJES FORMALES

MANUALES UEX

55
(E.E.E.S.) Espacio Europeo Educacin Superior

ELENA JURADO MLAGA

tEORA DE AUtMAtAS Y LENGUAJES FORMALES

2008

La publicacin del presente manual fue subvencionada por el Vicerrectorado de Calidad y Formacin Continua de la Universidad de Extremadura en la Convocatoria de Acciones para la Mejora de la Calidad Docente del curso 2007/08 dentro de la modalidad B.2: Diseo y desarrollo de materiales docentes adaptados a la metodologa derivada del E.E.E.S. Esta convocatoria de acciones forma parte del Plan de Adaptacin de la UEX al Espacio Europeo de Educacin Superior.

FSE

Fo n d o S o c i a l E u ro p e o

Edita Universidad de Extremadura. Servicio de Publicaciones C./ Caldereros, 2 - Planta 2 - 10071 Cceres (Espaa) Telf. 927 257 041 - Fax 927 257 046 publicac@unex.es www.unex.es/publicaciones

ISSN 1135-870-X ISBN 978-84-691-6345-0 Depsito Legal M-45.211-2008 Edicin electrnica: Pedro Cid, S.A. Telf.: 914 786 125

A Juan

Pr ologo
El estudio de la teor a de aut omatas y de los lenguajes formales se puede ubicar en el campo cient co de la Inform atica Te orica, un campo cl asico y multidisciplinar dentro de los estudios universitarios de Inform atica. Es un campo cl asico debido no s olo a su antig uedad (anterior a la construcci on de los primeros ordenadores) sino, sobre todo, a que sus contenidos principales no dependen de los r apidos avances tecnol ogicos que han hecho que otras ramas de la Inform atica deban adaptarse a los nuevos tiempos a un ritmo vertiginoso. Es multidisciplinar porque en sus cimientos encontramos campos tan aparentemente dispares como la ling u stica, las matem aticas o la electr onica. El hecho de que esta materia no haya sufrido grandes cambios en las u ltimas d ecadas no le resta un apice de inter es. El estudio de las m aquinas secuenciales que abarca la teor a de aut omatas, por una parte, sienta las bases de la algoritmia y permite modelar y dise nar soluciones para un gran n umero de problemas. Por otra parte, permite abordar cuestiones de gran inter es para un inform atico como qu e tipo de problemas pueden ser resueltos por un computador o, caso de existir una soluci on computable para un problema, c omo podemos medir la calidad (en t erminos de ecacia) de dicha soluci on. Es decir, la teor a de aut omatas es la puerta que nos permite la entrada hacia campos tan interesantes como la computabilidad y la complejidad algor tmica. Adem as, una de las principales aportaciones del estudio de los lenguajes formales, sobre todo desde un punto de vista pr actico, es su contribuci on al dise no de lenguajes de programaci on y a la construcci on de sus correspondientes traductores. En este sentido la asignatura ayudar a a conocer con mayor profundidad la estructura de los lenguajes de programaci on y el funcionamiento de los compiladores. Este manual es el resultado del trabajo que durante varios a nos he realizado impartiendo la asignatura de Teor a de Aut omatas y Lenguajes Formales en las titulaciones de Inform atica de la Universidad de Extremadura. Dicha asignatura es troncal para los alumnos de Ingenier a Inform atica y de Ingenier a T ecnica en Inform atica de Sistemas pero tambi en puede ser cursada como materia optativa por los alumnos de Ingenier a T ecnica en Inform atica de Gesti on. Se imparte en el tercer curso de estas titulaciones. La asignatura se ha dise nado teniendo en cuenta las diferentes circunstancias de los alumnos de las tres titulaciones, as como el tiempo disponible a lo largo del

MANUALES UEX IX

ELENA JURADO MLAGA

curso para impartirla. Por tanto, y teniendo en cuenta sobre todo esto u ltimo, los contenidos han sido seleccionados de forma realista con la intenci on de que puedan ser abarcados por completo a lo largo del curso acad emico. Por este motivo, la alta carga formal que suele acompa nar a los libros de esta materia ha sido aligerada, procurando no incluir, siempre que ha sido posible, demostraciones complejas y otras cuestiones formales que har an el texto inabordable en una u nica asignatura. Como contrapartida se han intentado presentar los conceptos e ideas b asicos de una manera intuitiva y clara. Otro de los aspectos que se ha tenido en cuenta al dise nar los contenidos del manual ha sido destacar una de las aplicaciones pr acticas m as interesantes de esta materia: el dise no de lenguajes de programaci on y de compiladores. Esto ha motivado que, al cl asico estudio de la jerarqu a para las gram aticas formales de Chomsky, de los Aut omatas Finitos, de los Aut omatas de Pila y de las M aquinas de Turing, se hayan a nadido temas como el de las gram aticas atribuidas, los reconocedores LR o un anexo sobre la generaci on autom atica de analizadores l exicos y sint acticos. Si bien est as u ltimas cuestiones pueden considerarse al margen de la asignatura, tienen un claro inter es desde el punto de vista pr actico. Considerando la pr oxima implantaci on de los nuevos planes de estudio dentro del espacio europeo de educaci on superior, se ha incluido un apartado en el que se describe el plan docente de la asignatura, indicando la metodolog a docente, el plan de trabajo del estudiante, as como las competencias espec cas de la materia y de la titulaci on. En este sentido, y teniendo en cuenta que el trabajo no presencial del estudiante tiene cada vez m as relevancia en el nuevo marco de las ense nanzas universitarias, consideramos que este manual puede convertirse en una herramienta de gran utilidad para los estudiantes, como complemento a los apuntes y como material de ayuda en la preparaci on previa de los temas. Quisiera terminar este pr ologo agradeciendo la colaboraci on de los estudiantes que han cursado esta asignatura durante los u ltimos a nos. Sus comentarios y sugerencias han resultado imprescindibles para mejorar los contenidos y el dise no de las primeras versiones de este manual. Elena Jurado M alaga

MANUALES UEX X

TEORA DE AUTMATASY LENGUAJES FORMALES

Plan Docente
I. Descripci on y contextualizaci on
Identicaci on y caracter sticas de la materia
Denominaci on: Teor a de Aut omatas y Lenguajes Formales Curso y Titulaciones: 3o Ingenier a Inform atica, 3o Ingenier a T ecnica en Inform atica de Sistemas, 3o Ingenier a T ecnica en Inform atica de Gesti on Area: Lenguajes y Sistemas Inform aticos Departamento: Ingenier a de Sistemas Inform aticos y Telem aticos Tipo: Troncal en Ingenier a Inform atica, Troncal en Ingenier a T ecnica en Inform atica de Sistemas, Optativa en Ingenier a T ecnica en Inform atica de Gesti on Coecientes: Practicidad: 3 (Medio) Agrupamiento: 3 (Medio) Duraci on: Anual, 8.18 cr editos ECTS (204.5 horas) Distribuci on ECTS: Grupo Grande: 62 horas (30.31 %) Seminario-Laboratorio: 20 horas (9.77 %) Tutor a ECTS: 10 horas (4.88 %) No presencial: 112.5 horas (55.01 %) Descriptores (seg un BOE): Teor a de Aut omatas y Lenguajes Formales

I. Perl Profesional de Desarrollo Software II. Perl Profesional de Sistemas III. Perl Profesional de Gesti on y Explotaci on de Tecnolog as de la Informaci on

MANUALES UEX XI

Perles (y subperles) profesionales de la titulaci on

ELENA JURADO MLAGA

Competencias Espec cas de la Titulaci on (y perles relacionados)


1. Aprender de manera aut onoma nuevos conocimientos y t ecnicas adecuados para la concepci on, el desarrollo o la explotaci on de sistemas inform aticos.(Todos) 2. Comunicar de forma efectiva, tanto por escrito como oral, conocimientos, procedimientos, resultados e ideas relacionadas con las TIC y, concretamente de la Inform atica, conociendo su impacto socioecon omico.(Todos) 3. Comprender la responsabilidad social, etica y profesional, y civil en su caso, de la actividad del Ingeniero en Inform atica y su papel en el ambito de las TIC y de la Sociedad de la Informaci on y del Conocimiento.(Todos) 4. Concebir y llevar a cabo proyectos inform aticos utilizando los principios y metodolog as propios de la ingenier a.(I,II) 5. Dise nar, desarrollar, evaluar y asegurar la accesibilidad, ergonom a, usabilidad y seguridad de los sistemas, aplicaciones y servicios inform aticos, as como de la informaci on que proporcionan, conforme a la legislaci on y normativa vigentes.(I) 6. Denir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecuci on de aplicaciones y servicios inform aticos de diversa complejidad.(I,II) 7. Disponer de los fundamentos matem aticos, f sicos, econ omicos y sociol ogicos necesarios para interpretar, seleccionar, valorar, y crear nuevos conceptos, teor as, usos y desarrollos tecnol ogicos relacionados con la inform atica, y su aplicaci on.(Todos) 8. Concebir, desarrollar y mantener sistemas y aplicaciones software empleando diversos m etodos de ingenier a del software y lenguajes de programaci on adecuados al tipo de aplicaci on a desarrollar manteniendo los niveles de calidad exigidos.(I) 9. Concebir y desarrollar sistemas o arquitecturas inform aticas centralizadas o distribuidas integrando hardware, software y redes.(II) 10. Proponer, analizar, validar, interpretar, instalar y mantener soluciones inform aticas en situaciones reales en diversas areas de aplicaci on dentro de una organizaci on.(Todos)

MANUALES UEX

11. Concebir, desplegar, organizar y gestionar sistemas y servicios inform aticos en contextos empresariales o institucionales para mejorar sus procesos de negocio, responsabiliz andose y liderando su puesta en marcha y mejora continua, as como valorar su impacto econ omico y social.(III)

XII

TEORA DE AUTMATASY LENGUAJES FORMALES

II. Objetivos. Competencias Espec cas de la Materia (y relaci on con CET)


1. Ser capaz de realizar operaciones b asicas con cadenas y con lenguajes.(7) 2. Conocer los diferentes tipos de gram aticas y de lenguajes que forman la jerarqu a de Chomsky y su utilidad en el dise no de los lenguajes de programaci on y sus traductores.(7) 3. Saber c omo reconocer de que tipo es una determinada gram atica o lenguaje.(7) 4. Ser capaz de construir aut omatas para resolver diferentes tipos de problemas y para reconocer diferentes lenguajes.(7,11) 5. Conocer el funcionamiento de diferentes tipos de aut omatas y entender el tipo de problemas que cada uno puede resolver.(7,11) 6. Conocer y ser capaz de utilizar m etodos que permitan construir, dado un lenguaje regular: gram aticas que los generan, expresiones regulares que los representan y aut omatas nitos que los reconocen.(7) 7. Conocer el esquema funcional de un traductor.(4) 8. Conocer los diferentes aspectos l exicos, sint acticos y sem anticos que hay que tener en cuenta a la hora de dise nar lenguajes formales y traductores para esos lenguajes.(4,8) 9. Ser capaz de construir un traductor.(1,2,4,8,10) 10. Ser capaz de dise nar una gram atica para un lenguaje de programaci on sencillo.(4,7) 11. Conocer metalenguajes que permitan describir lenguajes regulares y lenguajes independientes del contexto.(1,8) 12. Saber utilizar herramientas que permitan generar autom aticamente analizadores l exicos y sint acticos.(1,8) 13. Ser capaz de calcular la complejidad espacial y temporal de m aquinas de Turing sencillas.(5,6,10,11) 14. Entender el concepto de recursividad y de calculabilidad.(5,6,7,10,11) 15. Ser capaz de demostrar que algunas funciones son recursivas primitivas o recursivas.(5,6,7) 16. Entender el concepto y conocer ejemplos de problemas de la clase P, NP o NP-completo.(5,6,7)

XIII

MANUALES UEX

ELENA JURADO MLAGA

III. Contenidos
Los contenidos de la asignatura son los que se describen a lo largo de este docu mento (ver Indice General ).

Interrelaciones
1. Las asignaturas de 1o curso, Elementos de Programaci on y Laboratorio de Programaci on I, y de 2o curso, Estructuras de Datos y Algoritmos y Laboratorio de Programaci on II, son requisitos para esta asignatura ya que proporcionan los conocimientos sobre programaci on necesarios para abordar la tarea de la construcci on de un compilador. Tambi en permiten que el alumno conozca con antelaci on conceptos b asicos para la asignatura como el de lenguaje de programaci on y el de compilador. 2. El concepto de complejidad algor tmica se ha tratado en asignaturas como Elementos de Programaci on y Estructuras de Datos y Algoritmos. En nuestra asignatura este se relaciona con el concepto de Maquina de Turing. 3. La asignatura de Teor a de Aut omatas y Lenguajes Formales debe sentar las bases para que los alumnos de Ingenier a Inform atica puedan abordar con garant as la asignatura de 5o curso Procesadores de Lenguajes

IV. Metodolog a docente y plan de trabajo del estudiante


En esta secci on se describe la metodolog a utilizada para cada uno de los temas que aparecen en este manual. A cada una de las actividades programadas se le asigna un determinado tipo y el n umero de horas estimadas de dedicaci on del estudiante. A continuaci on se indican las siglas utilizadas para representar los diferentes tipos de actividades: GG Grupo grande S Seminario-Laboratorio Tut Tutor a ECTS NO No Presencial. Tema 1. Preliminares (Objetivos: 1,7)

MANUALES UEX

Lectura y estudio (previo y/o posterior)(NP): 1h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 3h. Realizaci on de ejercicios propuestos (NP): 3h. Tema 2. Lenguajes y Gram aticas Formales (Objetivos: 1,2)

XIV

TEORA DE AUTMATASY LENGUAJES FORMALES

Lectura y estudio (previo y/o posterior)(NP): 2h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 6h. Explicaci on de cuestiones y ejercicios relacionados con la teor a(GG): 2h. Realizaci on de ejercicios propuestos (NP): 10h. Tema 3. Expresiones y gram aticas regulares (Objetivos: 1,3,8,10,12,11) Lectura y estudio (previo y/o posterior)(NP): 2h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 1h. Explicaci on de cuestiones y ejercicios relacionados con la teor a(GG): 2h. Pr acticas (S): 2h. Revisi on de las actividades pr acticas (Tut): 2h. Realizaci on de ejercicios propuestos (NP): 4h. Tema 4. Aut omatas Finitos (Objetivos: 3,4,5,8,6,12,11) Lectura y estudio (previo y/o posterior)(NP): 10h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 10h. Explicaci on de cuestiones y ejercicios relacionados con la teor a(GG): 7h. Pr acticas (S): 6h. Revisi on de las actividades pr acticas (Tut): 2h. Realizaci on de ejercicios propuestos (NP): 20h. Evaluaci on del primer bloque tem atico Tema 5. Gram aticas Independientes del Contexto (GIC) y Aut omatas de Pila (Objetivos: 3,4,5,8,9,10,12,11) Lectura y estudio (previo y/o posterior)(NP): 10h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 6h. Explicaci on de cuestiones y ejercicios relacionados con la teor a(GG): 5h. Pr acticas (S): 10h. Revisi on de las actividades pr acticas (Tut): 3h. Realizaci on de ejercicios propuestos (NP): 12h. Tema 6. Gram aticas Atribuidas (Objetivos: 7,8,10,12,11) Lectura y estudio (previo y/o posterior)(NP): 3h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 2h.

XV

MANUALES UEX

ELENA JURADO MLAGA

Explicaci on de cuestiones y ejercicios relacionados con la teor a(GG): 2h. Pr acticas (S): 2h. Revisi on de las actividades pr acticas (Tut): 3h. Realizaci on de ejercicios propuestos (NP): 5h. Tema 7. M aquinas de Turing(MT) (Objetivos: 4,5) Lectura y estudio (previo y/o posterior)(NP): 4h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 5h. Explicaci on de cuestiones y ejercicios relacionados con la teor a(GG): 4h. Realizaci on de ejercicios propuestos (NP): 14h. Tema 8. Gram aticas de tipo 0 y 1 (Objetivos: 3) Lectura y estudio (previo y/o posterior)(NP): 2h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 2h. Realizaci on de ejercicios propuestos (NP): 2h. Tema 9. Computabilidad y M aquinas de Turing (Objetivos: 13,14,15) Lectura y estudio (previo y/o posterior)(NP): 2h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 2h. Explicaci on de cuestiones y ejercicios relacionados con la teor a(GG): 1h. Realizaci on de ejercicios propuestos (NP): 4h. Tema 10. Introducci on a la Complejidad Computacional (Objetivos: 16) Lectura y estudio (previo y/o posterior)(NP): 2h. Explicaci on, discusi on y ejemplicaci on en clase(GG): 2h. Realizaci on de ejercicios propuestos (NP): 2h.

V. Evaluaci on
Criterios de Evaluaci on
1. Aplicar los conceptos y m etodos estudiados para la resoluci on de problemas relacionados con el dise no de aut omatas y gram aticas. En este aspecto, las principales habilidades a tener en cuenta son: a ) Denir formalmente un lenguaje.

XVI

MANUALES UEX

TEORA DE AUTMATASY LENGUAJES FORMALES

b ) Ser capaz de determinar el tipo al que pertenece un lenguaje. c ) Ser capaz de convertir un Aut omata Finito No Determinista en Aut omata Finito Determinista. d ) Dise nar una gram atica a partir del aut omata que reconoce al lenguaje que esta genera. e ) Construir el aut omata que reconoce a un determinado lenguaje. f ) Dise nar una m aquina de Turing que resuelva un problema dado o que reconozca o genere un lenguaje determinado. g ) Ser capaz de probar que una funci on es recursiva primitiva o -recursiva. 2. Dise nar un lenguaje formal y construir, utilizando las herramientas adecuadas, un traductor para dicho lenguaje.

Actividades e instrumentos de evaluaci on


Examen parcial Prueba de desarrollo escrito con 1 pregunta dirigida a la comprensi on de conceptos y 4 o 5 a la aplicaci on los m etodos para resolver problemas relacionados con el dise no de lenguajes y aut omatas (Temas 1-4). (20 %) Examen nal Prueba de desarrollo escrito con 1 pregunta dirigida a la comprensi on de conceptos y 4 o 5 a la aplicaci on los m etodos para resolver problemas relacionados con el dise no de lenguajes y aut omatas. (55 %) Seminarios y Tutor as ECTS Revisi on y an alisis del trabajo no presencial del alumno as como del trabajo desarrollado en los Seminarios. 1. Revisi on de ejercicios pr acticos a realizar por el alumno durante los Seminarios. (5 %) 2. Revisi on del lenguaje y del traductor construido por el alumno, haciendo especial hincapi e en un correcto dise no de ambos. Prueba en la que el alumno debe realizar una sencilla ampliaci on de su trabajo pr actico con el objetivo de valorar el control que tiene sobre su trabajo. (20 %)

XVII

MANUALES UEX

Indice General
1. Preliminares 1.1. Antecedentes hist oricos y conceptos b asicos . 1.2. Desarrollo de la asignatura . . . . . . . . . . 1.3. Conceptos b asicos sobre compiladores . . . . 1.3.1. Componentes de un compilador . . . 5 5 8 10 11 15 15 16 17 19 19 20 21 22 24 24 25 25 26 26 26 29 33 33 34 35 36 38

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

2. Lenguajes y Gram aticas Formales 2.1. Deniciones b asicas . . . . . . . . . . . . . . . . . . 2.2. Operaciones con palabras . . . . . . . . . . . . . . . 2.3. Lenguajes y operaciones con lenguajes . . . . . . . 2.4. Concepto de gram atica formal . . . . . . . . . . . . 2.4.1. Deniciones previas . . . . . . . . . . . . . . 2.4.2. Ejemplo con un lenguaje natural(castellano) 2.4.3. Ejemplo en un lenguaje articial . . . . . . 2.4.4. Denici on de gram atica formal . . . . . . . 2.5. Clasicaci on de las gr. formales . . . . . . . . . . . 2.5.1. Gram aticas de tipo 0 . . . . . . . . . . . . . 2.5.2. Gram aticas de tipo 1 . . . . . . . . . . . . . 2.5.3. Gram aticas de tipo 2 . . . . . . . . . . . . . 2.5.4. Gram aticas de tipo 3 . . . . . . . . . . . . . 2.6. Gram aticas equivalentes . . . . . . . . . . . . . . . 2.6.1. Simplicaci on de gram aticas . . . . . . . . . 2.7. Problemas y cuestiones . . . . . . . . . . . . . . . . 3. Expresiones y gram aticas regulares 3.1. Denici on de expresi on regular . . . 3.2. Algebra de las expresiones regulares 3.3. Denici on de gram atica regular . . 3.4. Ejemplos . . . . . . . . . . . . . . . 3.5. Problemas . . . . . . . . . . . . . . 1

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

MANUALES UEX 1

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

ELENA JURADO MLAGA


INDICE GENERAL 39 39 40 40 43 43 47 50 51 52 55 55 58 62 65 65 66 70 73 74 74 77 78 80 81 83 87 89 93 94 95 97 97 99 100 100 101 104

4. Aut omatas Finitos 4.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Denici on de Aut omata Finito Determinista . . . . . . . . . . . . 4.3. Representaci on de Aut omatas . . . . . . . . . . . . . . . . . . . . 4.4. Los AFD como reconocedores de lenguajes . . . . . . . . . . . . . 4.5. Minimizaci on de un AFD . . . . . . . . . . . . . . . . . . . . . . . 4.6. Aut omatas Finitos No Deterministas(AFND) . . . . . . . . . . . 4.7. Lenguaje aceptado por un AFND . . . . . . . . . . . . . . . . . . 4.8. Simulaci on de un AFD y AFND . . . . . . . . . . . . . . . . . . . 4.9. Paso de un AFND a AFD . . . . . . . . . . . . . . . . . . . . . . 4.10. Relaci on entre AF, gr. y exp. reg. . . . . . . . . . . . . . . . . . . 4.10.1. Construcci on de la expresi on regular reconocida por un AF 4.10.2. Construcci on del AF que reconoce una expresi on regular . 4.10.3. Relaci on entre A.F. y gram aticas regulares . . . . . . . . . 4.11. L mites para los leng. regulares . . . . . . . . . . . . . . . . . . . 4.11.1. El lema del bombeo(pumping lemma ) . . . . . . . . . . . . 4.11.2. El teorema de Myhill-Nerode . . . . . . . . . . . . . . . . 4.12. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. G.I.C y Aut omatas de Pila 5.1. Denici on de G.I.C. . . . . . . . . . . . . . . . . . . . . 5.2. Aut omatas de Pila . . . . . . . . . . . . . . . . . . . . 5.3. Arboles de derivaci on . . . . . . . . . . . . . . . . . . . 5.3.1. Ambig uedad. . . . . . . . . . . . . . . . . . . . 5.4. Reconocimiento descendente . . . . . . . . . . . . . . . 5.4.1. Simplicaci on de las GIC . . . . . . . . . . . . . 5.4.2. Reconocedores LL(1) . . . . . . . . . . . . . . . 5.5. Reconocimiento ascendente . . . . . . . . . . . . . . . . 5.5.1. Construcci on de la Tabla de Acciones . . . . . . 5.6. Propiedades de los L.I.C. . . . . . . . . . . . . . . . . . 5.6.1. El lema del bombeo para LIC(pumping lemma ) 5.7. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . 6. Gram aticas Atribuidas 6.1. Concepto de Sem antica y de Gram atica 6.2. Atributos heredados y sintetizados . . 6.3. Gram aticas S-atribuidas y L-Atribuidas 6.3.1. Gram aticas S-atribuidas . . . . 6.3.2. Gram aticas L-atribuidas . . . . 6.4. Problemas . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

MANUALES UEX

Atribuida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

TEORA DE AUTMATAS Y LENGUAJES FORMALES


INDICE GENERAL 7. M aquinas de Turing 7.1. Introducci on. Antecedentes hist oricos . . . . . . . . . . . . . . . . . . 7.2. Denici on y ejemplos de M.T.s . . . . . . . . . . . . . . . . . . . . . 7.3. Restricciones a la M.T. . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.1. M.T. con alfabeto binario . . . . . . . . . . . . . . . . . . . . 7.3.2. M.T. con la cinta limitada en un sentido . . . . . . . . . . . . 7.3.3. M.T. con restricciones en cuanto a las operaciones que realiza simult aneamente . . . . . . . . . . . . . . . . . . . . . . . . . 7.4. Modicaciones de la M.T. . . . . . . . . . . . . . . . . . . . . . . . . 7.4.1. Almacenamiento de informaci on en el control nito . . . . . . 7.4.2. Pistas m ultiples . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.3. S mbolos de chequeo . . . . . . . . . . . . . . . . . . . . . . . 7.4.4. M aquinas multicinta . . . . . . . . . . . . . . . . . . . . . . . 7.4.5. M.T. no determinista . . . . . . . . . . . . . . . . . . . . . . . 7.5. T ecnicas para la construcci on de M.T. . . . . . . . . . . . . . . . . . 7.6. La M.T. Universal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.7. La M.T. como generadora de lenguajes . . . . . . . . . . . . . . . . . 7.8. La tesis de Church-Turing . . . . . . . . . . . . . . . . . . . . . . . . 7.9. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. Gram aticas de tipo 0 y 1 8.1. Gram aticas de tipo 0 . . . . . . . 8.2. Lenguajes de tipo 0 . . . . . . . . 8.3. El problema de la parada . . . . . 8.4. Lenguajes y gram aticas de tipo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 105 105 107 110 111 112 112 113 113 114 114 115 116 116 118 119 120 120 123 123 124 126 126 129 129 131 132 134 134 137 137 138 141

9. Computabilidad y M aquinas de Turing 9.1. Funciones calculables . . . . . . . . . . 9.2. Funciones recursivas . . . . . . . . . . 9.2.1. Funciones recursivas primitivas 9.2.2. Funciones -recursivas . . . . . 9.3. Problemas . . . . . . . . . . . . . . . .

10.Introducci on a la Complejidad Computacional 10.1. Complejidad y M aquinas de Turing . . . . . . . . . . . . . . . . . . . 10.2. Medidas de complejidad algor tmica . . . . . . . . . . . . . . . . . . . 10.3. Problemas P, NP y NP-completos . . . . . . . . . . . . . . . . . . . .

A. Generaci on autom atica de analizadores 143 A.1. Generador de analizadores l exicos . . . . . . . . . . . . . . . . . . . . 143 A.1.1. C omo utilizar PCLEX . . . . . . . . . . . . . . . . . . . . . . 144 A.1.2. Estructura de un programa Lex . . . . . . . . . . . . . . . . . 144

MANUALES UEX 3

ELENA JURADO MLAGA


INDICE GENERAL A.1.3. C omo representar una expresi on regular A.1.4. Variables y procedimientos predenidos . A.1.5. Condiciones de comienzo . . . . . . . . . A.1.6. Acciones . . . . . . . . . . . . . . . . . . A.2. Generador de analizadores sint acticos . . . . . . A.2.1. C omo utilizar PCYACC . . . . . . . . . A.2.2. Estructura de un programa para YACC . A.2.3. Gram aticas atribuidas . . . . . . . . . . A.2.4. Prioridad y asociatividad de operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 147 148 148 149 150 151 152 152

MANUALES UEX 4

Tema 1 Preliminares
Contenido
1.1. Antecedentes hist oricos y conceptos b asicos . . . . . . . 1.2. Desarrollo de la asignatura . . . . . . . . . . . . . . . . . . 1.3. Conceptos b asicos sobre compiladores . . . . . . . . . . . 5 8 10

En este primer tema de la asignatura pretendemos sentar las bases de la misma y explicar cu al va a ser su estructura. En la secci on 1.1 explicaremos cuales son los temas centrales sobre los que va a girar la asignatura, as como los antecedentes hist oricos sobre los que se han desarrollado estos temas, mencionando los personajes que m as han inuido en su nacimiento. La estructura de la asignatura es el contenido fundamental de la secci on 1.2 en la que tambi en se detallan algunas de las aplicaciones m as interesantes de los conceptos te oricos que estudiaremos. Teniendo en cuenta que probablemente la aplicaci on pr actica m as interesante de esta asignatura es el dise no de lenguajes de computaci on y la construcci on de sus correspondientes traductores, en la secci on 1.3 se sentar an las bases que permitir an entender la estructura de un compilador y las tareas que debe llevar a cabo.

1.1.

Antecedentes hist oricos y conceptos b asicos

MANUALES UEX 5

La mayor parte del conocimiento cient co es el resultado de muchos a nos de investigaci on, con frecuencia sobre temas que aparentemente no tienen una relaci on directa. Como veremos, esto sucede tambi en con un campo como la Inform atica Te orica ( ambito en el que se enmarca la asignatura de Teor a de Aut omatas y Lenguajes Formales). Esta materia se ha desarrollado gracias a la conuencia de campos muy diferentes, como son: las matem aticas, la teor a de m aquinas, la ling u stica, etc. Podemos considerarla, por tanto, como una materia multidisciplinar. En este apartado pretendemos explicar de manera intuitiva los conceptos b asicos que constituyen las

ELENA JURADO MLAGA

TEMA 1. PRELIMINARES

MANUALES UEX 6

bases de la asignatura as como los campos cient cos que han inuido fundamentalmente en el desarrollo de esta materia y que nos ayudar an a entender sus aplicaciones m as importantes. Veamos, en primer lugar, la relaci on entre conceptos que trataremos a lo largo de todo el temario: lenguaje, gram atica y aut omata. Toda comunicaci on conlleva la utilizaci on de un lenguaje, que podemos denir como un conjunto de palabras (tambi en llamadas cadenas ) formadas por s mbolos de un alfabeto. Las gram aticas permitir an denir la estructura de los lenguajes, es decir, proporcionar an las formas v alidas en las que se pueden combinar los s mbolos del alfabeto para construir cadenas correctas. Una m aquina abstracta o aut omata es un dispositivo te orico que recibe como entrada una cadena de s mbolos y los procesa, cambiando de estado, de manera que genera una determinada salida. Los aut omatas pueden servir, entre otras cosas, para determinar si una palabra pertenece o no a un determinado lenguaje. Por lo tanto, las gram aticas nos permitir an denir lenguajes y los aut omatas podr an reconocer las palabras de dichos lenguajes. A pesar de la conexi on que existe entre estos conceptos, los trabajos iniciales sobre aut omatas y lenguajes tienen, como veremos a continuaci on, un origen diferente. Para encontrar los principios de la Inform atica Te orica debemos remontarnos a los a nos 30, d ecada en la que el mundo de las matem aticas se hallaba ocupado, sobre todo, en temas como la l ogica y la denici on de sistemas axiom aticos. El m etodo axiom atico requiere una colecci on de enunciados b asicos, llamados axiomas, que describen las propiedades fundamentales del sistema que se estudia. A partir de estos axiomas, se derivan enunciados adicionales, llamados teoremas, aplicando secuencias nitas de reglas de inferencia. Una ventaja del m etodo axiom atico es que ofrece un modelo de razonamiento deductivo en el cual todas las suposiciones est an aisladas en los axiomas iniciales y las reglas de inferencia. Cualquier enunciado que se derive posteriormente ser a una consecuencia de estas suposiciones. A principios del siglo XX, muchos matem aticos cre an que era posible encontrar un u nico sistema axiom atico en el que podr an basarse todas las matem aticas. Su meta era encontrar un conjunto de axiomas y reglas de inferencia correctos de manera que las matem aticas pudieran reducirse a un sistema computacional con el cual pudiera deducirse la veracidad o falsedad de cualquier enunciado matem atico. Uno de los principales defensores de esta idea era el conocido matem atico alem an Hilbert. Sin embargo, en 1931, el austriaco Kurt G odel public o el Teorema de la incompletitud , en el que demostraba que era imposible la completa axiomatizaci on de las matem aticas. Este teorema increment o el debate por el poder de los m etodos axiom aticos y los procesos computacionales. En 1937, el matem atico ingl es Alan Turing, en su art culo Sobre los n umeros computables , present o la conocida M aquina de Turing(M.T.), una entidad matem atica

TEORA DE AUTMATAS Y LENGUAJES FORMALES


1.1. ANTECEDENTES HISTORICOS Y CONCEPTOS BASICOS

as demostr o que abstracta con la que se formaliz o el concepto de algoritmo1 , adem muchos problemas perfectamente denidos no pueden ser resueltos mediante una M.T., es decir, no son computables y de esta manera ratic o la teor a de G odel. Esta m aquina ser a la precursora, desde un punto de vista te orico, de los computadores que se construyeron durante la siguiente d ecada. La M aquina de Turing tiene el poder computacional m as alto conocido hasta el momento, es decir, es capaz de resolver cualquier problema que tenga una soluci on computacional. Podemos considerar todo esto como el primer eslab on dentro del campo de la Inform atica Te orica. El segundo eslab on se ubicar a en un campo muy cercano a la Electr onica en el que el matem atico Shannon estableci o las bases para la aplicaci on de la l ogica matem atica al dise no de los circuitos combinatorios y secuenciales. Las ideas de Shannon derivar an en la formalizaci on de una teor a de m aquinas secuenciales y aut omatas, cuyo principal objetivo era representar de manera formal el comportamiento de un determinado dispositivo electr onico o mec anico. Los aut omatas son, en un sentido amplio, sistemas que aceptan se nales del medio que les rodea, cambian de estado como consecuencia de estas se nales y trasmiten otras se nales al medio. En este sentido, un electrodom estico com un, una central telef onica, un ordenador, e incluso ciertas facetas del comportamiento de los seres vivos pueden modelarse mediante aut omatas. A nales de los a nos 50 se comenz o a estudiar la utilidad de los aut omatas en relaci on con los lenguajes de programaci on y su proceso de traducci on. La Teor a de Aut omatas estudia diferentes niveles de aut omatas entre los que podemos destacar, de una parte, los Aut omatas Finitos por constituir el grupo m as sencillo de aut omatas y, de otra, las M aquinas de Turing que, por el contrario, son los aut omatas m as complejos y con mayor poder computacional. Estos dos tipos de aut omatas representan los dos extremos de la jerarqu a, otros niveles intermedios los encontramos en los Aut omatas de Pila y en los Aut omatas Linealmente Acotados. B asicamente, la diferencia principal entre estos aut omatas estriba en la utilizaci on o no de memoria auxiliar y en la forma de acceso a dicha memoria. Para llegar al tercer eslab on de la Inform atica Te orica hay que saltar al campo de la ling u stica. En la d ecada de los a nos 50, el ling uista y pensador Noam Chomsky, en un intento de formalizar los lenguajes naturales, estableci o las bases de la ling u stica matem atica o formal y con ello proporcion o una poderosa herramienta que facilit o la denici on de los primeros lenguajes de programaci on, que empezaban a surgir en esa epoca.

1 Un algoritmo puede considerarse como un m etodo gen erico que, en un n umero nito de pasos o computaciones, permite resolver un determinado problema. Recordemos que la palabra algoritmo debe su nombre a un matem atico persa Abu Jafar Mohamed ibn Musa al-Jow aizm , autor de un tratado de aritm etica publicado en el a no 825.

MANUALES UEX 7

ELENA JURADO MLAGA

TEMA 1. PRELIMINARES

1.2.

Desarrollo de la asignatura

Chomsky clasic o las gram aticas formales (y los lenguajes que estas generan) de acuerdo a una jerarqu a de cuatro niveles representada en la tabla 1.1. Sorprendentemente, es posible establecer una relaci on biun voca entre los diferentes niveles de la jerarqu a de Chomsky y cuatro niveles de una jerarqu a denida entre los diferentes tipos de aut omatas. A cada nivel de gram atica se le puede asociar de forma natural un conjunto de lenguajes que ser an los que esas gram aticas generan, pero adem as, se le puede asociar una clase de aut omatas formada por aquellos que podr an reconocer a dichos lenguajes. La siguiente gura describe la relaci on que hay entre los diferentes niveles de gram aticas de la jerarqu a de Chomsky, los lenguajes que generan y las m aquinas que reconocen estos lenguajes.
Lenguajes
Lenguajes recursivamente enumerables Lenguajes recursivos Lenguajes Dependientes del Contexto Lenguajes Independientes del Contexto Leng. LR(k) Leng. LR(1) Leng. LL(k) Leng. LL(1) Leng. (expresiones) regulares Gr. tipo 3 Autmatas Finitos Gr. tipo 2 Autmatas de Pila

Gramticas

Autmatas

Gr. tipo 0 Gr. tipo 1

Mquinas de Turing Autmatas Linealmente Acotados

Figura 1.1: Jerarqu a de gram aticas, lenguajes y aut omatas Cada nivel de lenguaje se corresponde con un tipo de aut omata. Por ejemplo, dado un lenguaje de tipo 3 siempre ser a posible encontrar un Aut omata Finito que reconozca dicho lenguaje, es decir, que permita determinar si una determinada palabra pertenece o no al lenguaje. Si el lenguaje es de tipo 2 ser a necesario utilizar un aut omata m as complejo, concretamente un Aut omata de Pila. La gura 1.1, adem as de sintetizar la Jerarqu a de Chomsky, presenta un sencillo esquema de los temas a abordar durante el curso. Comenzaremos con el estudio de los lenguajes m as sencillos

MANUALES UEX 8

TEORA DE AUTMATAS Y LENGUAJES FORMALES

1.2. DESARROLLO DE LA ASIGNATURA

(los de tipo 3) y de los aut omatas asociados a ellos, para acabar con el estudio de los lenguajes de tipo 0 y de las M.T. Los nombres de los lenguajes de la jerarqu a de Chomsky aparecen destacados en esta gura, pero tambi en aparecen otros conjuntos de lenguajes que representan niveles intermedios de esta jerarqu a y que por su inter es ser an tambi en estudiados en la asignatura. Concretamente, los lenguajes LL(1) y LR(1), incluidos en el conjunto de los lenguajes independientes del contexto se estudiar an en el tema 5 y los lenguajes recursivos ser an tratados en el tema 8. Como muestra la gura 1.1, en los tres conceptos estudiados (gram aticas, lenguajes y aut omatas) cada nivel contiene al anterior. Por ejemplo, cualquier lenguaje de tipo 3 es a su vez un lenguaje de tipo2 (sin embargo, comprobaremos que lo contrario no es cierto), es decir (L3L2L1L0). De la misma forma, un Aut omata Finito puede considerarse como un caso particular de Aut omata de Pila y este como un caso particular de M aquina de Turing. A continuaci on comentaremos cu ales son las principales aplicaciones de los temas que se estudiar an en esta asignatura. El estudio de las gram aticas formales ser a una herramienta muy u til para el dise no de los lenguajes de programaci on. El estudio de determinados aut omatas (concretamente los aut omatas nitos y los de pila) permitir a construir de manera sistem atica algunos de los componentes b asicos de los compiladores. Los aut omatas nitos se pueden aplicar con exito en el procesamiento del lenguaje natural, por ejemplo, en la categorizaci on gramatical de las palabras en una oraci on o en la extracci on de informaci on a partir de grandes vol umenes de texto. Tambi en pueden ser utilizados para manipular cheros de texto que almacenan una informaci on estructurada, por ejemplo, con objeto de modicar dicha estructura. Los aut omatas, en general, tienen una gran aplicaci on en el mundo industrial, ya que permiten modelar el comportamiento de cualquier dispositivo electromec anico: una cadena de montaje, un robot, un electrodom estico, etc. Tambi en pueden ser utilizados para el reconocimiento de patrones y para el dise no de redes neuronales. Los Aut omatas Finitos ayudan a dise nar software que compruebe la correcci on de cualquier sistema que tenga un n umero nito de estados: protocolos de comunicaci on, protocolos para el intercambio seguro de informaci on, etc. Tambi en se utilizan en el dise no y la vericaci on del comportamiento de circuitos digitales. Los lenguajes regulares se pueden utilizar para especicar argumentos en determinados comandos de un sistema operativo o de un sistema de b usqueda de informaci on.

MANUALES UEX 9

ELENA JURADO MLAGA

10

TEMA 1. PRELIMINARES Los aut omatas son tambi en esenciales para el estudio de los l mites de la computaci on. En este terreno, existen dos cuestiones importantes que nos podemos plantear y que se estudiar an en los u ltimos temas de la asignatura: 1. Qu e puede hacer un computador? Utilizaremos el concepto de computabilidad para aplicarlo a los problemas que puede resolver un computador. 2. Qu e puede hacer un computador ecientemente? Diremos que un problema es tratable, si un computador puede resolverlo en un tiempo que crezca lentamente al aumentar el tama no de los datos de entrada.

1.3.

Conceptos b asicos sobre compiladores

MANUALES UEX

Salvo los dos u ltimos temas que se centrar an en la teor a de la computaci on, el planteamiento del resto de los temas estar a, en general, enfocado al dise no de lenguajes de programaci on y a la construcci on de compiladores, teniendo en cuenta que es esta una de las aplicaciones m as interesantes de los conceptos te oricos tratados en esta asignatura. Por este motivo, en esta secci on se introducen conceptos muy elementales sobre el proceso de traducci on de los lenguajes de programaci on. Un traductor es un programa que recibe como entrada un texto escrito en un lenguaje, llamado fuente, y genera como salida otro texto equivalente pero escrito en un lenguaje diferente denominado objeto. En el caso de que el lenguaje fuente sea un lenguaje de programaci on de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o c odigo m aquina), a dicho traductor se le denomina compilador. An alogamente, un ensamblador es un traductor cuyo lenguaje fuente es el lenguaje ensamblador. A diferencia de los programas mencionados anteriormente, un int erprete es un traductor que no genera un programa en c odigo objeto, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel, la traduce y la ejecuta directamente. En los primeros lenguajes, y debido a la escasez de memoria de los ordenadores de la epoca, se impuso la utilizaci on de int erpretes frente a la de compiladores, pues el programa fuente y el int erprete juntos requer an menos memoria que la que era necesaria para el proceso de compilaci on. Por ello, los primero ordenadores personales ten an instalado habitualmente un int erprete para el lenguaje BASIC. Sin embargo, con el tiempo se impusieron los compiladores debido, sobre todo, a la informaci on que ofrec an sobre los errores cometidos por el programador, y a una mayor velocidad de ejecuci on del c odigo resultante. A modo de resumen, los siguientes p arrafos indican las ventajas que pueden tener un m etodo de traducci on frente al otro. Ventajas del compilador frente al int erprete El programa se compila una sola vez, pero se puede ejecutar muchas.

10

TEORA DE AUTMATAS Y LENGUAJES FORMALES


1.3. CONCEPTOS BASICOS SOBRE COMPILADORES

11

La ejecuci on del programa objeto es mucho m as r apida que la interpretaci on del fuente. El compilador tiene una visi on completa del programa, por lo que puede dar una informaci on m as detallada de los errores cometidos por el programador. Ventajas del int erprete El int erprete necesita menos memoria que el compilador. Permite una mayor interactividad con el c odigo en tiempo de desarrollo. Un compilador no suele funcionar de manera aislada sino que se apoya en otros programas para conseguir su objetivo. Algunos de estos programas de apoyo se describen a continuaci on. El preprocesador se ocupa de incluir cheros, expandir macros, eliminar comentarios, etc. El enlazador (linker ) construye el chero ejecutable a nadiendo al chero objeto las cabeceras necesarias y las funciones de librer a utilizadas por el programa fuente. El depurador permite seguir paso a paso la ejecuci on del programa. Finalmente, muchos compiladores generan un programa en lenguaje ensamblador que debe despu es convertirse en un ejecutable mediante la utilizaci on de un ensamblador.

1.3.1.

Componentes de un compilador

Un compilador es un programa complejo en el que no es f acil distinguir claramente unas partes de otras. Sin embargo, se ha conseguido establecer una divisi on l ogica del compilador en fases, lo que permite formalizar y estudiar por separado cada una de ellas. En la pr actica, estas fases no siempre se ejecutan secuencialmente sino que lo hacen simult aneamente, pudiendo ser unas fases tratadas como subrutinas de otras. An alisis l exico El analizador l exico, tambi en conocido como scanner, lee los caracteres del programa fuente, uno a uno, desde el chero de entrada y va formando grupos de caracteres con alguna relaci on entre s (tokens ). Cada token es tratado como una u nica entidad, constituyendo la entrada de la siguiente fase del compilador. Existen diferentes tipos de tokens y a cada uno se le puede asociar un tipo y, en algunos casos, un valor. Los tokens se pueden agrupar en dos categor as: Cadenas espec cas, como las palabras reservadas (if, while, . . .), signos de puntuaci on (., ,, =, . . .), operadores aritm eticos (+,*, . . .) y l ogicos (AND, OR, . . .), etc. Habitualmente, las cadenas espec cas no tienen asociado ning un valor, s olo su tipo.

MANUALES UEX 11

ELENA JURADO MLAGA

12

TEMA 1. PRELIMINARES

Cadenas no espec cas, como los identicadores o las constantes num ericas o de texto. Las cadenas no espec cas siempre tienen tipo y valor. Por ejemplo, si dato es el nombre de una variable, el tipo del token ser a identicador y su valor ser a dato. Frecuentemente el analizador l exico funciona como una subrutina del analizador sint actico. Para el dise no del analizadores l exicos se utilizan los Aut omatas Finitos. An alisis sint actico El analizador sint actico, tambi en llamado parser, recibe como entrada los tokens que genera el analizador l exico y comprueba si estos tokens van llegando en el orden correcto. Siempre que no se hayan producido errores, la salida te orica de esta fase del compilador ser a un a rbol sint actico. Si el programa es incorrecto se generar an los mensajes de error correspondientes. Para el dise no de los analizadores sint acticos se utilizan los Aut omatas de Pila. An alisis sem antico El analizador sem antico trata de determinar si el signicado de las diferentes instrucciones del programa es v alido. Para conseguirlo tendr a que calcular y analizar informaci on asociada a las sentencias del programa, por ejemplo, deber a determinar el tipo de los resultados intermedios de la expresiones, comprobar que los argumentos de un operador pertenecen al conjunto de los operandos posibles, comprobar que los operandos son compatibles entre si, etc. La salida te orica de esta fase ser a un arbol sem antico. Este es una ampliaci on de un arbol sint actico en el que cada rama del arbol ha adquirido, adem as, el signicado que debe tener el fragmento de programa que representa. Esta fase del an alisis es m as dif cil de formalizar que las dos anteriores y se utilizar an para ello las gram aticas atribuidas. Generaci on de c odigo intermedio Cuando una empresa se dedica a la generaci on de compiladores, normalmente trabaja con muchos lenguajes fuentes (m) y con muchos lenguajes objetos (n) diferentes. Para evitar el tener que construir m*n compiladores, se utiliza un lenguaje intermedio. De esta forma s olo hay que construir m programas que traduzcan cada lenguaje fuente al c odigo intermedio (front ends) y n programas que traduzcan del lenguaje intermedio a cada lenguaje objeto (back ends). La utilizaci on del lenguaje intermedio permite construir en menos tiempo compiladores para nuevos lenguajes y para nuevas m aquinas. Desgraciadamente, no existe consenso para utilizar un u nico lenguaje intermedio.

MANUALES UEX 12

Optimizaci on de c odigo La mayor a de los compiladores suelen tener una fase de optimizaci on de c odigo intermedio (independiente de los lenguajes fuente y objeto), y una fase de optimizaci on de c odigo objeto (no aplicable a otras m aquinas).

TEORA DE AUTMATAS Y LENGUAJES FORMALES


1.3. CONCEPTOS BASICOS SOBRE COMPILADORES

13

Estas fases se a naden al compilador para conseguir que el programa objeto sea m as r apido y necesite menos memoria para ejecutarse. Veamos en los siguientes p arrafos algunos ejemplos de optimizaci on: Eliminar expresiones comunes. Por ejemplo: A := B+C+D E := (B+C)*F se convierte en Aux := B+C A := Aux + D E := Aux * F

Optimizar los bucles. Se trata de sacar de los bucles aquellas expresiones que sean invariantes. REPEAT B := 1 A := A-B UNTIL A = 0 La asignaci on B := 1 se puede sacar del bucle Generaci on de c odigo objeto En esta fase, el c odigo intermedio optimizado es traducido a una secuencia de instrucciones en ensamblador o en c odigo m aquina. Por ejemplo, la sentencia A := B+C se convertir a en una colecci on de instrucciones que podr an representarse as : LOAD B ADD C STORE A Tabla de s mbolos El compilador necesita gestionar la informaci on de los elementos que se va encontrando en el programa fuente: variables, tipos, funciones, clases, etc. Esta informaci on se almacena en una estructura de datos interna conocida como tabla de s mbolos. Para que la compilaci on sea eciente la tabla debe ser dise nada cuidadosamente de manera que contenga toda la informaci on que el compilador necesita. Adem as, hay que prestar especial atenci on a la velocidad de acceso a la informaci on con objeto de no ralentizar el proceso. Control de errores Informar adecuadamente al programador de los errores que hay en su programa es una de las misiones m as importantes y complejas de un compilador. Es una tarea dif cil porque a veces unos errores ocultan a otros, o porque un error desencadena una avalancha de errores asociados. El control de errores se lleva a cabo, sobre todo, en las etapas de an alisis sint actico y sem antico.

MANUALES UEX 13

TEORA DE AUTMATAS Y LENGUAJES FORMALES

Tema 2 Lenguajes y Gram aticas Formales


Contenido
2.1. Deniciones b asicas . . . . . . . . . . . . . . . . . . . . . . 2.2. Operaciones con palabras . . . . . . . . . . . . . . . . . . . 2.3. Lenguajes y operaciones con lenguajes . . . . . . . . . . . 2.4. Concepto de gram atica formal . . . . . . . . . . . . . . . . 2.5. Clasicaci on de las gr. formales . . . . . . . . . . . . . . . 2.6. Gram aticas equivalentes . . . . . . . . . . . . . . . . . . . 2.7. Problemas y cuestiones . . . . . . . . . . . . . . . . . . . . 15 16 17 19 24 26 29

En este tema se abordan los conceptos de gram atica y lenguaje formal. El tema comienza con la denici on de una serie de conceptos b asicos, seguidamente, se estudian las diferentes operaciones que se pueden llevar a cabo con palabras y con lenguajes, y las propiedades que estas operaciones tienen. Probablemente el punto central de este tema es la introducci on del concepto de gram atica formal, que se har a en primer lugar de forma intuitiva, hasta llegar a una denici on formal. El tema acaba con la presentaci on de una taxonom a de las gram aticas formales realizada por Noam Chomsky y con el estudio de algunos m etodos para simplicar ciertas gram aticas.

2.1.

Deniciones b asicas

Alfabeto: conjunto no vac o y nito de s mbolos. A estos s mbolos tambi en se les suele llamar letras del alfabeto. Se denota con la letra griega . Ejemplos: 15

MANUALES UEX 15

A continuaci on se incluyen las deniciones de conceptos elementales que se utilizar an a lo largo de toda la asignatura.

ELENA JURADO MLAGA


TEMA 2. LENGUAJES Y GRAMATICAS FORMALES 1 = {a,b,c,...,z} 2 = {0,1}

16

Palabra: secuencia nita de s mbolos de un alfabeto. Lo correcto es hablar de palabras denidas sobre un alfabeto . Habitualmente utilizaremos en nuestros ejemplos las u ltimas letras min usculas de nuestro alfabeto (x, y, z) para denotar a las palabras. Ejemplos: x = casa es una palabra denida sobre el alfabeto 1 y = 010100 es una palabra denida sobre el alfabeto 2 Palabra vac a: es una palabra que no tiene ning un s mbolo y se representa como . Longitud de una palabra: es el n umero de s mbolos que componen la palabra. Se representa utilizando dos barras verticales(||). Ejemplos: |x| = 4 |y | = 6 | | = 0 Lenguaje Universal denido sobre un alfabeto es el conjunto de todas las palabras que se pueden construir con las letras de dicho alfabeto. Se denota por (). El lenguaje universal de cualquier alfabeto es innito, y siempre pertenece a el la palabra vac a. Ejemplo: si = {a} entonces () = {, a, aa, aaa, ...}

Lenguaje L denido sobre un alfabeto , es un conjunto cualquiera de palabras denidas sobre dicho alfabeto, por lo tanto, L ().

2.2.

Operaciones con palabras

En este apartado se presenta una colecci on de operaciones que se pueden realizar con palabras y las propiedades que cumplen estas operaciones. 1. Concatenaci on Sean x e y dos palabras, se concatenan para formar otra palabra que se denota xy y que est a formada por todas las letras de x seguidas por las letras de y. Ejemplo: x= casa y=blanca xy = casablanca Propiedades: Operaci on cerrada. Si x e y est an denidas sobre el mismo alfabeto, xy tambi en lo estar a. Asociativa. (xy )z = x(yz ) x = x = x

MANUALES UEX

Elemento neutro ().

16

TEORA DE AUTMATAS Y LENGUAJES FORMALES

2.3. LENGUAJES Y OPERACIONES CON LENGUAJES |xy | = |x| + |y | No es una operaci on conmutativa

17

2. Potencia i-esima de una palabra (xi ) Consiste en concatenar una palabra x consigo misma, i veces. xi = x . . .i x Ejemplo: x = la x4 = lalalala Propiedades: xi+j = xi xj |xi | = i|x| x0 = 3. Reexi on (o inversa) de una palabra (x1 ) Es otra palabra denida sobre el mismo alfabeto y formada por los mismos s mbolos que x, dispuestos en orden inverso. Ejemplo: x = casa x1 = asac Propiedad: |x| = |x1 |

2.3.

Lenguajes y operaciones con lenguajes

Como hemos visto anteriormente un lenguaje denido sobre un alfabeto no es m as que un subconjunto del lenguaje universal de ese alfabeto. Por ejemplo, si = {0,1}, podemos denir diferentes lenguajes sobre ese alfabeto: L1 = {x/|x| = 4} L2 = {0n 1n /n > 0} L3 = {x/x no contenga un n umero par de 0s } Sobre cualquier alfabeto se pueden denir lenguajes especiales como el lenguaje vac o, que se representa como L = y que no tiene ninguna palabra. Tambi en existe el lenguaje que contiene solamente la palabra vac a L = {} Se presentan, a continuaci on, diferentes operaciones que se pueden denir sobre los lenguajes. Casi todas est an basadas en las operaciones sobre palabras que se explicaron en la secci on anterior. 1. Uni on de lenguajes La uni on de dos lenguajes L1 y L2 denidos sobre el mismo alfabeto es otro lenguaje, tambi en denido sobre ese alfabeto, que contiene todas las palabras de L1 y todas las de L2 . L = L1 L2 = {x/x L1 x L2 } Propiedades:

MANUALES UEX 17

ELENA JURADO MLAGA


TEMA 2. LENGUAJES Y GRAMATICAS FORMALES Operaci on cerrada. El lenguaje resultante est a denido sobre el mismo alfabeto que L1 y L2 . Asociativa. (L1 L2 ) L3 = L1 (L2 L3 ) Conmutativa. L1 L2 = L2 L1 Elemento Neutro (). Idempotencia. L L = L 2. Concatenaci on Sean dos lenguajes L1 y L2 denidos sobre el mismo alfabeto , la concatenaci on de ambos lenguajes estar a formada por todas las palabras obtenidas al concatenar una palabra cualquiera de L1 con otra de L2 . L = L1 L2 = {xy/x L1 y L2 } Propiedades: Operaci on cerrada. El lenguaje resultante est a denido sobre el mismo alfabeto que L1 y L2 . Asociativa. (L1 L2 ) L3 = L1 (L2 L3 ) Elemento Neutro (L = {}). No es conmutativa. 3. Potencia i-esima n umero i de veces. Propiedades: Li+j = Li Lj L0 = L = {} 4. Clausura (o cierre de Kleene) La clausura de un lenguaje (L ) es el resultado de unir todas las potencias de dicho lenguaje, es decir, L =

18

L = L=L

L L = LL = L

Es el resultado de concatenar un lenguaje consigo mismo un Li = L . . .i L

MANUALES UEX

Li

i=0

18

TEORA DE AUTMATAS Y LENGUAJES FORMALES


2.4. CONCEPTO DE GRAMATICA FORMAL

19

on de 5. Clausura positiva La clausura positiva de un lenguaje (L+ ) es la uni todas las potencias de ese lenguaje, exceptuando la potencia cero. L+ = Propiedades: L = L+ {} L+ = L L = LL () = En este caso el alfabeto es considerado como un lenguaje, concretamente el formado por todas las cadenas de longitud 1. + = \ {} 6. Reexi on La reexi on de un lenguaje (L1 ) est a formada por las inversas de todas las palabras de ese lenguaje. L1 = {x1 /x L}

Li

i=1

2.4.

Concepto de gram atica formal

Si nos referimos a los lenguajes naturales el concepto de gram atica es muy antiguo. Los primeros trabajos aparecen en la India durante los comienzos del primer milenio antes de Cristo, alcanz andose el m aximo apogeo con Panini (siglos VII y VI a. C.). Al mismo tiempo en Grecia se desarrollaba una corriente de investigaci on gramatical, cuyo m aximo representante ser a Pit agoras. Sin embargo, el concepto de gram atica desde un punto de vista formal tiene su origen en los trabajos de Chomsky a mediados del siglo XX.

2.4.1.

Deniciones previas

Comenzaremos este apartado con una serie de deniciones cuyo inter es pr actico quedar a de maniesto con los ejemplos que aparecen a continuaci on.

MANUALES UEX 19

Denici on 2.1 (Producci on) Sea un alfabeto, llamamos producci on (o regla) denida sobre ese alfabeto a un par ordenado de palabras (x, y ) donde x, y . Se dice que x es la parte izquierda de la producci on y que y es la parte derecha. A las producciones tambi en se las llama reglas de derivaci on. Se representa x ::= y .

ELENA JURADO MLAGA


TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

20

Denici on 2.2 (Producci on compresora) Se dice que una producci on es compresora si la longitud de su parte derecha es menor que la de la parte izquierda. Denici on 2.3 (Derivaci on directa) Sea un alfabeto, P un conjunto de producciones denidas sobre ese alfabeto x1 x2 P = xn ::= y1 ::= y2 ::= yn

y v, w . Decimos que v produce directamente a w , o que w deriva directamente de v , si z, u y una producci on xi ::= yi tal que v = zxi u y w = zyi u La notaci on utilizada para representar una derivaci on directa es v w Denici on 2.4 (Derivaci on) Sea un alfabeto, P un conjunto de producciones denidas sobre ese alfabeto y v, w . Decimos que v produce a w , o que w deriva de v , si w0 , w1, . . . , wm tales que v = w0 w1 w1 w2 ... wm1 wm = w
La notaci on utilizada en este caso es v w

2.4.2.

Ejemplo con un lenguaje natural(castellano)

MANUALES UEX 20

Estamos familiarizados con el concepto tradicional de gram atica que, de forma intuitiva, podr amos considerar como un conjunto de reglas que nos indican qu e es correcto y qu e no lo es en un lenguaje natural. Con el n de acercarnos a una denici on m as formal comenzaremos con un ejemplo en lengua castellana. La gram atica debe describir la estructura de las frases y de las palabras de un lenguaje. Veamos una serie de reglas muy sencillas que nos permitir an comprobar que la frase el perro corre deprisa es correcta.

TEORA DE AUTMATAS Y LENGUAJES FORMALES


2.4. CONCEPTO DE GRAMATICA FORMAL Reglas gramaticales: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. < sentencia >::=< sujeto >< predicado > < sujeto >::=< articulo >< nombre > < predicado >::=< verbo >< complemento > < predicado >::=< verbo > < articulo > ::= el < articulo > ::= la < nombre > ::= perro < nombre > ::= gata < verbo > ::= corre < verbo > ::= come < complemento > ::= deprisa < complemento > ::= mucho

21

Estas reglas pueden ser consideradas como un conjunto de producciones. Si utilizamos algunas de estas producciones para llevar a cabo derivaciones a partir del item < sentencia > podemos llegar a obtener frases como: el perro corre deprisa , la gata come mucho o la gata corre . Sin embargo, nunca podr amos llegar a construir la frase mucho deprisa perro . Veamos, paso a paso, como se podr a generar la frase la gata corre a partir del s mbolo < sentencia >. En cada fase del proceso hemos destacado en negrita el s mbolo que se transforma. < sentencia > < sujeto > < predicado > < sentencia > < articulo >< nombre > < predicado > < sentencia > < articulo > < nombre >< verbo > < sentencia > la< nombre > < verbo > < sentencia > la gata< verbo > < sentencia > la gata corre

Aplicando la pr. Aplicando la pr. Aplicando la pr. Aplicando la pr. Aplicando la pr. Aplicando la pr.

1 2 4 6 8 9

Sin embargo, la forma m as habitual de representar este mismo proceso de generaci on de una cadena de s mbolos es mediante un arbol de derivaciones (o arbol parser ) como el que se muestra en la gura 2.1.

Aplicaremos el mismo m etodo para denir un fragmento de un lenguaje de programaci on. Pretendemos describir c omo son las instrucciones que permiten asignar el valor de una expresi on a una variable en un lenguaje como C.

MANUALES UEX 21

2.4.3.

Ejemplo en un lenguaje articial

ELENA JURADO MLAGA


TEMA 2. LENGUAJES Y GRAMATICAS FORMALES
<oracion> <sujeto> <articulo> la <nombre> gata <predicado> <verbo> corre

22

Figura 2.1: Arbol de derivaci on

1. 2. 3. 4. 5.

< asignacion > ::= < variable > = < expresion > < expresion > ::= < numero > < expresion > ::= < variable > < expresion > ::= < expresion > + < expresion > < expresion > ::= < expresion > < expresion >

Si consideramos que A, B y C pueden ser considerados como < variable > y que 2 y 4 pueden ser considerados como < numero >, es f acil comprobar que a partir del s mbolo < asignacion > y utilizando diferentes producciones podemos llegar a construir instrucciones como: A=B+C B=B*2 C=C+4 Sin embargo, no podr amos construir sentencias como A = + 2 * / + 4 o 4=A Es decir, en los ejemplos anteriores podemos ver que hay construcciones gramaticalmente correctas y otras que no lo son.

2.4.4.

Denici on de gram atica formal

MANUALES UEX 22

Analizando los ejemplos anteriores podemos observar como el objetivo es llegar a tener una secuencia correcta de s mbolos (en el primer ejemplo, estos s mbolos son: el, la, perro, gata, etc. y en el segundo, los s mbolos son: A, B, *,+, 2, etc.) partiendo de un determinado s mbolo, que llamaremos inicial, (< oracion > en el primer caso o < asignacion > en el segundo), y utilizando algunas de las producciones denidas. A partir de estas ideas intuitivas, formalizaremos la denici on de gram atica. Denici on 2.5 (Gram atica Formal) Se llama gram atica formal denida sobre un alfabeto a una tupla de la forma G = {T , N , S, P } donde:

TEORA DE AUTMATAS Y LENGUAJES FORMALES


2.4. CONCEPTO DE GRAMATICA FORMAL

23

mbolos terminales T es el alfabeto de s mbolos no terminales (aparecen en los ejemplos encerrados N es el alfabeto de s entre <>) S es el s mbolo inicial de la gram atica P es un conjunto de producciones gramaticales Hay que tener en cuenta que: S N T N = = T N Ejemplo 2.1 T = {+, , 0, 1, 2, . . . , 9} N = {< Signo >, < Digitos >, < Numero >, < Caracter >} S =< Numero > < Numero >::=< Signo >< Digito > < Signo >::= + < Signo >::= < Digito >::=< Caracter >< Digito > < Digito >::=< Caracter > < Caracter >::= 0 < Caracter >::= 1 < Caracter >::= 9

P =

Con esta gram atica, y a partir del s mbolo < Numero >, podemos generar cualquier n umero natural, siempre que vaya precedido por un signo. Por ejemplo: -57, +5, -4999. Hasta este momento hemos distinguido los s mbolos no terminales de los terminales encerrando a los primeros entre <>. Sin embargo, en los ejemplos que veremos a partir de ahora y por simplicidad, utilizaremos las letras may usculas para representar a los s mbolos no terminales y las min usculas para los terminales. Adem as, utilizaremos la notaci on BNF (Backus Normal Form). Con esta notaci on se utilizan los s mbolos ::= para separar la parte izquierda de una producci on de la derecha y adem as, se emplea el s mbolo | para indicar que la parte izquierda de una producci on coincide con la de la anterior, as no se repite la parte izquierda de determinadas producciones. Por tanto, en el ejemplo anterior la descripci on de las producciones quedar a as :

MANUALES UEX 23

ELENA JURADO MLAGA


TEMA 2. LENGUAJES Y GRAMATICAS FORMALES < Numero >::=< Signo >< Digito > < Signo >::= + | < Digito >::=< Caracter >< Digito > | < Caracter > P = < Caracter >::= 0 |1 | |9

24

Denici on 2.6 (Lenguaje generado por una gram atica) Sea una gram atica denida como G = {T , N , S, P } llamamos lenguaje generado por dicha gram atica a L = {x T /S x} Por lo tanto, las palabras del lenguaje estar an formadas por cadenas de s mbolos terminales generadas a partir del s mbolo inicial de la gram atica, utilizando las producciones que la denen. Denici on 2.7 (Recursividad) Una gram atica es recursiva si tiene alguna derivaci on recursiva, es decir, si A xAy donde A N , x, y . Si x = se dice que la gram atica es recursiva por la izquierda, y si y = se dice que es recursiva por la derecha. Es evidente que si una gram atica tiene producciones recursivas, es decir producciones con la forma A ::= xAy , entonces es recursiva. Teorema 2.1 Un lenguaje es innito si y s olo si existe una gram atica recursiva que lo genera.

2.5.

Clasicaci on de las gr. formales

Noam Chomsky clasic o las gram aticas en cuatro grupos (G0 , G1 , G2 , G3 ), donde cada uno contiene al siguiente. La diferencia entre cada grupo se centra en la forma de las producciones. La misma clasicaci on puede ser aplicada a los lenguajes, es decir, los lenguajes de tipo 0 son los generados por las gram aticas de tipo 0 y as sucesivamente.

MANUALES UEX

2.5.1.

Gram aticas de tipo 0

Tambi en se las llama gram aticas sin restricciones o gram aticas recursivamente enumerables. Las producciones de las gram aticas de tipo 0 tienen la forma:

24

TEORA DE AUTMATAS Y LENGUAJES FORMALES


DE LAS GR. FORMALES 2.5. CLASIFICACION xAy ::= v donde A N , x, y, v Sin embargo, es posible demostrar que cualquier lenguaje de tipo 0 puede ser tambi en generado por una gram atica que pertenece a un grupo algo m as restringido, las gram aticas con estructura de frase. Podemos decir, por tanto, que las gr. de tipo 0 y las gr. con estructura de frase tienen el mismo poder generativo. Las producciones de las gram aticas con estructura de frase tienen la forma: xAy ::= xvy donde A N , x, y, v

25

2.5.2.

Gram aticas de tipo 1

A este tipo de gram aticas tambi en se las llama gram aticas dependientes del contexto. Las producciones deben tener la siguiente forma: xAy ::= xvy donde A N , v + x, y Es obvio que todas las gram aticas de tipo 1 son tambi en gram aticas con estructura de frase, pero en este caso hay una restricci on a nadida y es que la longitud de la parte derecha de las producciones es siempre mayor o igual que la de la parte izquierda, es decir, no hay producciones compresoras. El nombre de gram aticas dependientes del contexto se debe a que las producciones se pueden interpretar como que A se convierte en v, siempre que se encuentre en un determinado contexto, es decir, precedida por x y seguida por y . Por lo tanto, es necesario conocer el contexto en el que se encuentra A para poder aplicar la producci on.

2.5.3.

Gram aticas de tipo 2

Son tambi en llamadas gram aticas independientes del contexto. Sus producciones son a un m as restrictivas. En este caso, la parte izquierda de la producci on est a formada por un u nico s mbolo no terminal. Por lo tanto, las producciones son de la forma: A ::= v donde A N v

En este tipo de gram aticas, la conversi on de A en v se realiza independientemente del contexto en el que se encuentre A, de ah su nombre. Son especialmente adecuadas para representar los aspectos sint acticos de cualquier lenguaje de programaci on.

MANUALES UEX 25

ELENA JURADO MLAGA


TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

26

2.5.4.

Gram aticas de tipo 3

Es el grupo m as restringido de gram aticas y tambi en son llamadas regulares. En este caso tambi en se le imponen restricciones a la parte derecha de las producciones, que tendr an como m aximo dos s mbolos. Hay dos tipos de gram aticas regulares y sus producciones pueden ser de la siguiente forma: 1. Para las gram aticas lineales por la derecha (GLD) a ) A ::= a b ) A ::= aV c ) S ::= y S es el s mbolo inicial de la gram atica. donde A, V N , a T

2. Para las gram aticas lineales por la izquierda (GLI) a ) A ::= a b ) A ::= V a c ) S ::= y S es el s mbolo inicial de la gram atica. donde A, V N , a T

Cualquier lenguaje de tipo 3 puede ser generado tanto por una gram atica lineal por la derecha como por una lineal por la izquierda. Es decir, estos dos grupos de gram aticas tienen el mismo poder generativo.

2.6.

Gram aticas equivalentes

A continuaci on veremos como, en ocasiones, es recomendable simplicar ciertas gram aticas, eliminando s mbolos o producciones no deseadas. En estos casos, el objetivo ser a llegar a denir una gram atica equivalente a la primera pero que no tenga esos elementos indeseables. En este apartado trabajaremos exclusivamente con gram aticas independientes del contexto. Denici on 2.8 (Gram aticas equivalentes) Dos gram aticas son equivalentes cuando generan el mismo lenguaje. Es evidente que, para que esto suceda, deben estar denidas sobre el mismo T .

MANUALES UEX

2.6.1.

Simplicaci on de gram aticas

Comenzaremos deniendo los elementos indeseables de los que habl abamos anteriormente.

26

TEORA DE AUTMATAS Y LENGUAJES FORMALES


2.6. GRAMATICAS EQUIVALENTES

27

Denici on 2.9 (Reglas innecesarias) Son produciones de la forma A ::= A. Evidentemente no aportan informaci on a la gram atica. Denici on 2.10 (S mbolos inaccesibles) Son s mbolos no terminales que no aparecen en ninguna cadena de s mbolos que pueda derivarse a partir del s mbolo inicial de la gram atica. Denici on 2.11 (S mbolos no generativos) Son s mbolos no terminales a partir de los cuales no puede derivarse ninguna cadena de s mbolos terminales. Veamos a continuaci on m etodos para localizar los s mbolos inaccesibles y los no generativos. M etodo para localizar los s mbolos inaccesibles de una gram atica En realidad, el m etodo trata de identicar los s mbolos accesibles, as el resto ser an s mbolos inaccesibles. Para conseguirlo se puede dise nar un algoritmo que construya de forma incremental este conjunto de s mbolos accesibles. Inicialmente cualquier s mbolo que aparezca en la parte derecha de una producci on que tiene a S en la parte izquierda, es un s mbolo accesible. A partir de aqu , si un s mbolo est a en la parte derecha de una producci on que tiene a un s mbolo accesible en la parte izquierda es tambi en accesible. Veamos un algoritmo para llevar a cabo esta tarea: Algoritmo 2.1 B usqueda S mbolos inaccesibles Output: SimInacc N Begin SimAccesibles = {V N / S ::= xV y, x, y } Auxiliar = while Auxiliar = SimAccesibles do Auxiliar = SimAccesibles SimAccesibles = SimAccesibles {V N / A ::= xV y, x, y A SimAccesibles} end while SimInacc = N \ SimAccesibles. End

M etodo para localizar los s mbolos no generativos El m etodo es an alogo al anterior, es decir, tiene como objetivo localizar, en primer lugar, los s mbolos generativos. Inicialmente son s mbolos generativos aquellos que aparecen en la parte

MANUALES UEX 27

ELENA JURADO MLAGA


TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

28

izquierda de una producci on que tiene s olo s mbolos terminales o la cadena nula en la parte derecha. Veamos el algoritmo: Algoritmo 2.2 B usqueda S mbolos No Generativos Output: SimNoGen N Begin SimGenerativos = {V N / V ::= , T} Auxiliar = while Auxiliar = SimGenerativos do Auxiliar = SimGenerativos SimGenerativos = SimGenerativos {V N / V ::= , (T SimGenerativos) } end while SimNoGen = N \ SimGenerativos End Tanto las reglas innecesarias como los s mbolos no generativos o los inaccesibles pueden eliminarse de cualquier gram atica, ya que no aportan informaci on relevante a la misma. Denici on 2.12 (Gram atica Limpia) Decimos que una gram atica es limpia si no tiene reglas innecesarias, ni s mbolos no generativos, ni s mbolos inaccesibles. Denici on 2.13 (Reglas de redenominaci on) Son reglas en las que hay un u nico s mbolo no terminal tanto en la parte izquierda de la producci on como en la derecha. Es decir, tienen la forma: A ::= B, A, B N Para eliminar las reglas de redenominaci on de una gram atica es necesario sustituirlas por otras producciones que sean equivalentes. Por ejemplo, si tenemos las producciones A::=B B::=x B::=y donde x,y y deseamos eliminar A::=B, las producciones anteriores deben ser sustituidas por las siguientes producciones: A::=x A::=y B::=x B::=y Denici on 2.14 (Reglas no generativas) Son aquellas en las que s olo aparece en la parte derecha de la producci on.

MANUALES UEX 28

TEORA DE AUTMATAS Y LENGUAJES FORMALES

2.7. PROBLEMAS Y CUESTIONES

29

Para eliminar estas reglas tambi en es necesario a nadir otras a la gram atica. Si queremos eliminar la producci on A ::= es necesario localizar las producciones que tiene a A en la parte derecha (por ejemplo: B ::= xAy ) y a nadir para cada producci on de este tipo otra equivalente en la que no aparece A (en este caso, B ::= xy ). La producci on S ::= no puede eliminarse de ninguna gram atica ya que es imprescindible si se pretende que el lenguaje generado contenga la palabra nula. Denici on 2.15 (Gram atica bien formada) Decimos que una gram atica est a bien formada si no tiene reglas de redenominaci on ni reglas no generativas.

2.7.

Problemas y cuestiones

2.1 Dado el alfabeto = {a, b}, cu antas palabras hay en el lenguaje An B y c omo son dichas palabras?, considerando los siguientes casos: 1. A = {a} 2. A = {a} 3. A = {a, } 4. A = {a, } B = {b} B = {b, } B = {b, } B = {b}

2.2 Dado el alfabeto = {a, b}, y el lenguaje denido sobre el, L = {aa, bb} c omo son las palabras del lenguaje L4 ? 2.3 En qu e situaci on se cumple que L = L+ ? 2.4 Dadas las siguientes gram aticas, indicar de qu e tipo son y c omo es el lenguaje que generan: 1. T = {a, b, c, 0, 1} N = {S } S ::= a |b |c |Sa P = |Sb |Sc |S 0 |S 1

MANUALES UEX 29

ELENA JURADO MLAGA


TEMA 2. LENGUAJES Y GRAMATICAS FORMALES 2. T = {a, b} N = {S, A}

30

3. T = {a, b} N = {S, A}

S ::= A | P = A ::= aAb |ab S ::= A | A ::= aA P = |Ab |a |b

4. T = {a} N = {S, A}

2.5 Dados los siguientes lenguajes, dise nar una gram atica que los genere 1. L1 = {abn a/ n = 0, 1, . . .} 2. L2 = {am bn / m n 0} 3. L3 = {ak bm an / n = k + m} 4. L4 = {waw 1/ w es una cadena binaria denida en el alfabeto {0, 1}} 2.6 Dadas las siguientes gram aticas, obtener gram aticas equivalentes a ellas que sean limpias y bien formadas 1. T = {a, b} N = {S, A, B, C, D, E } S ::= Aa |Ca |a B ::= Aa |Ca P = |a C ::= Bb D ::= Ca E ::= Cb

S ::= A | P = A ::= AaA |a

MANUALES UEX 30

TEORA DE AUTMATAS Y LENGUAJES FORMALES

2.7. PROBLEMAS Y CUESTIONES 2. T = {x, y, z } N = {S, P, Q}

31

S ::= zP zQz P ::= xP x |Q P = Q ::= yP y |

MANUALES UEX 31

Tema 3 Expresiones y gram aticas regulares


Contenido
3.1. Denici on de expresi on regular . . . . . . . . . . . . . . . 3.2. Algebra de las expresiones regulares . . . . . . . . . . . . 3.3. Denici on de gram atica regular . . . . . . . . . . . . . . . 3.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 35 36 38

En este tema se van a estudiar las gram aticas regulares, tambi en llamadas de tipo 3 atendiendo a la clasicaci on de Chomsky. Tambi en se aborda el estudio de las expresiones regulares que permiten denir de forma precisa los lenguajes generados por estas gram aticas (lenguajes regulares).

3.1.

Denici on de expresi on regular

Una expresi on regular es una notaci on normalizada para representar lenguajes regulares, es decir, lenguajes generados por gram aticas de tipo 3. Como veremos, las expresiones regulares permiten describir con exactitud y sencillez cualquier lenguaje regular. Para denir una expresi on regular(e.r.) se pueden utilizar todos los s mbolos del alfabeto y, adem as, y . Los operadores que tambi en se pueden utilizar son: + representa la uni on

* representa el cierre de Kleene ( ) modican las prioridades de los dem as operadores 33

MANUALES UEX 33

. representa la concatenaci on (este s mbolo no se suele escribir)

ELENA JURADO MLAGA


TEMA 3. EXPRESIONES Y GRAMATICAS REGULARES Una expresi on regular se puede denir de acuerdo a los siguientes criterios: 1. es una e.r. que representa al lenguaje vac o (no tiene palabras) L = 2. es una e.r. que representa al lenguaje L = {} 3. a es una e.r. que representa al lenguaje La = {a} 4. Si y son e.r. entonces + tambi en lo es y representa al lenguaje L+ = L L 5. Si y son e.r. entonces tambi en lo es y representa al lenguaje L = L L 6. Si es una e.r. entonces tambi en lo es y representa al lenguaje i i L = L que tambi e n se puede representar = i=0 i=0

34

S olo son e.r. aquellas que puedan ser denidas utilizando los 6 puntos vistos anteriormente. La prioridad de las operaciones, que puede modicarse utilizando par entesis, es de mayor a menor: . + Ejemplos Sea = {0, 1} 1. 01 + 001 es una e.r. que representa al lenguaje L = {01, 001} 2. 0 10 es una e.r. que representa a cualquier cadena binaria en la que hay un solo 1, L = {0n 10m /n, m 0} Sea = {a, b, c} 3. a(a + b + c) representa a cualquier cadena que empiece por a 4. (a + b + c) representa al lenguaje universal denido sobre el alfabeto

3.2.

Algebra de las expresiones regulares


( + ) + = + ( + ) + =+ +=

Propiedades de la uni on (+) 1. Asociativa

MANUALES UEX

2. Conmutativa

3. Elemento neutro () 4. Idempotencia

+=

34

TEORA DE AUTMATAS Y LENGUAJES FORMALES


DE GRAMATICA 3.3. DEFINICION REGULAR Propiedades de la concatenaci on (.) 1. Asociativa ( ) = ( ) ( + ) = +

35

2. Distributiva respecto de la uni on 3. Elemento neutro () 4. = 5. No es conmutativa Propiedades del cierre de Kleene (*) 1. = 2. = 3. = 4. = 5. ( ) = 6. = + 7. = + + 2 + . . . + n + n+1

= =

n Si tenemos una funci on f : E E (por ejemplo f (, ) = ), donde E representa al conjunto de las expresiones regulares denidas sobre , entonces:

8. f (, , , . . .) + ( + + + . . .) = ( + + + . . .) 9. (f ( , , , . . .)) = ( + + + . . .)

3.3.

Denici on de gram atica regular

Como vimos en el tema anterior existen dos tipos de gram aticas de tipo 3: las gram aticas lineales por la derecha y las lineales por la izquierda. Las producciones de las gram aticas lineales por la derecha pueden ser de la forma:

2. A ::= aV 3. S ::=

donde A, V N , a T y S es el s mbolo inicial de la gram atica.

MANUALES UEX 35

1. A ::= a

ELENA JURADO MLAGA


TEMA 3. EXPRESIONES Y GRAMATICAS REGULARES

36

Las producciones de las gram aticas lineales por la izquierda pueden ser de la forma: 1. A ::= a 2. A ::= V a 3. S ::= donde A, V N , a T y S es el s mbolo inicial de la gram atica.

Estos dos tipos de gram aticas tienen el mismo poder generativo, es decir, dada una gram atica lineal por la izquierda siempre existe una gram atica lineal por la derecha que es equivalente a ella y viceversa. Adem as, dado un lenguaje regular siempre existen, al menos, una gram atica lineal por la izquierda y una gram atica lineal por la derecha que lo generan. Todo lenguaje de tipo 3 puede representarse mediante una e.r. y una e.r. siempre representa a un lenguaje de tipo 3.

3.4.

Ejemplos

1. El lenguaje L1 = {, a, aa, aaa, . . .} puede representarse con la e.r. a y puede ser generado por la gr. lineal por la izquierda P = {S ::= |Sa} y por la gr. lineal por la derecha P = {S ::= |aS } 2. El lenguaje de todas las palabras que empiezan por a puede representarse con la e.r. a(a + b + . . . + z ) y puede ser generado por la gr. lineal por la izquierda S ::= a |Sa |Sb P = |Sz y por la gr. lineal por la derecha S ::= aA A ::= aA |bA P = |zA |

Supongamos que 1 = {a, b, . . . , z }

MANUALES UEX 36

TEORA DE AUTMATAS Y LENGUAJES FORMALES

3.4. EJEMPLOS

37

3. El lenguaje de las palabras que empiezan por a, terminan por c y adem as de estas dos letras s olo pueden tener bs (tantas como se quieran) puede representarse con la e.r. ab c y puede ser generado por la gr. lineal por la izquierda S ::= Ac A ::= Ab P = |a

y por la gr. lineal por la derecha

Los lenguajes regulares son especialmente adecuados para representar las caracter sticas l exicas de un lenguaje de programaci on, como veremos en los siguientes ejemplos en los que consideraremos un lenguaje de programaci on similar a C. 4. Las cadenas que pueden ser consideradas como un identicador del lenguaje (nombres inventados por el programador para denir variables, funciones, etc.) est an formadas por letras (may usculas y min usculas), d gitos y el gui on bajo ( ), pero no pueden comenzar por un d gito. Este lenguaje denido sobre el alfabeto 2 = {a, . . . , z, A, . . . , Z, 0, . . . , 9, } se puede representar por la e.r. (a + . . . + z + A + . . . + Z + )(a + . . . + z + A + . . . + Z + + 0 + . . . + 9) Esta e.r. representa palabras como Suma o T otal1 pero no representar a a 1Ab mbolo de la suma Si trabajamos con el alfabeto 3 = {0, . . . , 9, .,+ , , e, E } (el s ha sido representado en un tama no menor del habitual para distinguirlo con claridad del operador uni on (+))
+

S ::= aA A ::= bA P = |c

5. La e.r. = (0 + . . . + 9)(0 + . . . + 9) permite representar a cualquier n umero natural (por ejemplo: 4, 27 o 256). 6. La e.r. = .(0 + . . . + 9) representa n umeros reales no negativos con una notaci on cl asica (por ejemplo: 55.7, 854.95 o 5.). 7. La e.r. = ( (e + E )) + ( (e + E )+ ) + ( (e + E ) ) representa n umeros reales no negativos con una notaci on cient ca (por ejemplo: 5.5e+10).

MANUALES UEX 37

ELENA JURADO MLAGA


TEMA 3. EXPRESIONES Y GRAMATICAS REGULARES

38

3.5.

Problemas

3.1 Describir los lenguajes representados por las siguientes expresiones regulares denidas sobre el alfabeto = {a, b, c} 1. (a + b) c 2. (aa+ )(bb ) 3. (aa+ ) + (bb ) 4. a b c 3.2 Representar, mediante una expresi on regular, los siguientes lenguajes 1. Considerando que = {a}, a ) el lenguaje formado por cadenas de as de longitud par b ) el lenguaje formado por cadenas de as de longitud impar 2. Considerando que = {a, b}, el lenguaje formado por cadenas de as y bs, de longitud impar, en las que se van alternando los dos s mbolos, es decir, nunca aparece el mismo s mbolo dos veces seguidas. Por ejemplo: abababa o bab 3.3 Dadas las siguientes expresiones regulares escribir, para cada una de ellas, una palabra que pertenezca al lenguaje que la expresi on representa y otra que no pertenezca a dicho lenguaje 1. (1 + 0 )(1 + 0 )(1 + 0 ) 2. (1 + 0) 10(1 + 0) 3.4 Simplicar las siguientes expresiones regulares 1. (a + b + ab + ba) 2. (a + ) 3. a(a a + a ) + a 4. (a + b) ba(a + b) + a b 3. 1 (0 + 10 )1 4. 10 + 01

3.5 Dadas dos expresiones regulares = 0 + 1 = 01 + 10 + 1 0 + (0 1) encontrar 1. una palabra que pertenezca a pero no a

MANUALES UEX

2. una palabra que pertenezca a pero no a 3. una palabra que pertenezca a y a 4. una palabra que no pertenezca a ni a

38

Tema 4 Aut omatas Finitos


Contenido
4.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Denici on de Aut omata Finito Determinista . . . . . . . 4.3. Representaci on de Aut omatas . . . . . . . . . . . . . . . . 4.4. Los AFD como reconocedores de lenguajes . . . . . . . . 4.5. Minimizaci on de un AFD . . . . . . . . . . . . . . . . . . . 4.6. Aut omatas Finitos No Deterministas(AFND) . . . . . . 4.7. Lenguaje aceptado por un AFND . . . . . . . . . . . . . . 4.8. Simulaci on de un AFD y AFND . . . . . . . . . . . . . . 4.9. Paso de un AFND a AFD . . . . . . . . . . . . . . . . . . 4.10. Relaci on entre AF, gr. y exp. reg. . . . . . . . . . . . . . 4.11. L mites para los leng. regulares . . . . . . . . . . . . . . . 4.12. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 40 40 43 43 47 50 51 52 55 65 70

4.1.

Introducci on

39

MANUALES UEX 39

Aunque no se puede considerar como una denici on correcta de aut omata, est a muy extendida una idea que confunde el concepto de aut omata con el de robot. Por lo tanto, se considera err oneamente que un aut omata es una m aquina que imita funciones t picas de los seres vivos, sobre todo relacionadas con el movimiento, pudiendo incluso ejecutar ciertas ordenes. En realidad el concepto de aut omata es mucho m as gen erico, ya que podemos considerarlo como un dispositivo que procesa cadenas de s mbolos que recibe como entrada, cambiando de estado y produciendo una salida que, en algunos casos, puede estar formada por otra cadena de s mbolos.

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

40

La teor a de aut omatas se ocupa de clasicar y estudiar de modo sistem atico diferentes tipos de m aquinas abstractas que llevan a cabo un procesamiento secuencial de la informaci on. Dentro del conjunto de las m aquinas abstractas que estudiaremos en esta asignatura, los Aut omatas Finitos constituyen el grupo de m aquinas m as sencillas y que, por tanto, tienen un menor poder funcional. El estudio de los aut omatas nitos se utiliza para modelar el comportamiento de dispositivos mec anicos y tambi en de sistemas naturales. Concretamente, permite estudiar procesos que dependen de una historia, es decir, sistemas cuyo comportamiento actual depende del pasado. Tambi en se aplican en el procesamiento del lenguaje natural, pero en el contexto de esta asignatura su principal aplicaci on ser a el reconocimiento de lenguajes regulares (de tipo 3).

4.2.

Denici on de Aut omata Finito Determinista

Los Aut omatas Finitos son m aquinas te oricas que van cambiando de estado dependiendo de la entrada que reciban. La salida de estos Aut omatas est a limitada a dos valores: aceptado y no aceptado, que pueden indicar si la cadena que se ha recibido como entrada es o no v alida. Generalmente utilizaremos los Aut omatas Finitos para reconocer lenguajes regulares, es decir, una palabra se considerar a v alida s olo si pertenece a un determinado lenguaje. Formalmente, un Aut omata Finito Determinista (AFD) se dene como una tupla AF D = (, Q, f, q0 , F ), donde es el alfabeto de entrada Q es el conjunto nito y no vac o de los estados del Aut omata f es la funci on de transici on que indica en qu e situaciones el Aut omata pasa de un estado a otro, se dene f : Q Q q0 Q es el estado inicial F Q es el conjunto de estados nales de aceptaci on (F = )

4.3.

Representaci on de Aut omatas

MANUALES UEX 40

Existen dos formas de representar un AFD, mediante tablas de transici on o mediante diagramas de transici on. Introduciremos estas dos representaciones con un ejemplo. Sea el siguiente AFD: = {a, b} Q = {p, q, r } q0 = p F = {q } donde f se dene de la siguiente forma: f (p, a) = q f (p, b) = r f (q, a) = q f (q, b) = r f (r, a) = r f (r, b) = r

TEORA DE AUTMATAS Y LENGUAJES FORMALES


DE AUTOMATAS 4.3. REPRESENTACION

41

Tabla de transici on El AFD se representar a mediante la siguiente tabla que representa los valores de la funci on de transici on. a b p q r q q r r r r La echa indica que p es el estado inicial, y el asterisco indica que q es un estado nal de aceptaci on (en general, pueden aparecer muchos asteriscos aunque s olo puede aparecer una echa ya que s olo hay un estado inicial). Diagrama de transici on La gura 4.1 representa de forma gr aca las transia q a

b r

a,b

Figura 4.1: Ejemplo de AFD ciones del aut omata. Los estados nales de aceptaci on se identican por estar encerrados en un doble circulo. El estado inicial se destaca con una echa arrugada. Al analizar el aut omata del ejemplo es evidente que s olo considera como cadenas aceptadas aquellas que est an formadas solamente por as. Cualquier cadena que contenga una b har a que el aut omata acabe en el estado r , que es un estado muerto. Diremos que un estado est a muerto si no es un estado nal de aceptaci on y no parte de el ninguna transici on hacia otro estado. Es evidente que si durante el an alisis de una cadena se llega a un estado muerto, como ya no es posible salir de dicho estado, la cadena no ser a aceptada por el aut omata. Aut omatas Incompletos A menudo nos encontramos con aut omatas para los que no est an denidas todas las transiciones. Las situaciones que no est an denidas deben ser consideradas como situaciones de error, es decir, si una cadena hace llegar al aut omata hasta una situaci on no denida, consideraremos que la cadena no ha sido reconocida por dicho aut omata.

MANUALES UEX 41

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

42

Si deseamos completar un aut omata (no es imprescindible) bastar a con a nadir un estado muerto que reciba todas las transiciones que le faltan al aut omata incompleto. En la gura 4.2 podemos ver un ejemplo de esta situaci on. El aut omata de la izquierda est a incompleto, pero podemos completarlo trasform andolo en el de la derecha, al que hemos a nadido el estado r, que es un estado muerto.
p a q p a q a,b b s b a a,b r

b s

Figura 4.2: Ejemplo de AF incompleto y completo

Estados accesibles y aut omatas conexos Denici on 4.1 (Aut omata Conexo) Un aut omata es conexo si todos sus estados son accesibles desde el estado inicial. Denici on 4.2 (Parte conexa de un aut omata) Si un aut omata no es conexo, se llama parte conexa del aut omata al conjunto de estados accesibles desde el estado inicial. Ejemplo 4.1 El aut omata representado en la gura 4.3 no es conexo y su parte conexa es la formada por los estados p y q y por las transiciones que hay entre ellos.
a b q a

MANUALES UEX

Figura 4.3: AF no conexo

42

TEORA DE AUTMATAS Y LENGUAJES FORMALES

4.4. LOS AFD COMO RECONOCEDORES DE LENGUAJES

43

4.4.

Los AFD como reconocedores de lenguajes

Como se ha visto en secciones anteriores, la funci on de transici on f ha sido denida de manera que depende de un u nico s mbolo del alfabeto de entrada. A continuaci on, se ampliar a esta denici on de forma que dicha funci on pueda actuar sobre cadenas de s mbolos, es decir, la funci on indicar a a qu e estado pasa el aut omata ante la llegada de una cadena de s mbolos (y no solamente de un u nico s mbolo). Por tanto, consideraremos que f : Q Q. Para conseguir esta ampliaci on, f se redene de forma recursiva: f (q, ) = q q Q a , x , q Q

f (q, ax) = f (f (q, a), x)

Ejemplo 4.2 Considerando el aut omata que aparece en la gura 4.1 la funci on de transici on extendida devolver a los siguientes valores: f (p, a) = q f (p, aa) = q f (p, ab) = r f (p, aabbb) = r f (p, baba) = r f (r, abb) = r Con esta nueva denici on de la funci on de transici on es posible denir formalmente cu al es el lenguaje aceptado por un AFD. Denici on 4.3 (Leng. aceptado por un AFD) El lenguaje que acepta un AFD es el conjunto de palabras denidas sobre que hacen que el aut omata llegue a un estado nal de aceptaci on L = {x / f (q0 , x) F }

4.5.

Minimizaci on de un AFD

MANUALES UEX 43

En ocasiones nos encontramos con aut omatas que tienen algunos estados equivalentes, en estos casos esos estados se pueden agrupar de manera que se consigue un aut omata, equivalente al primero, pero con un menor n umero de estados. Se dice que el aut omata ha sido minimizado. Un concepto diferente al de minimizar un aut omata es el de simplicar un aut omata que consiste en eliminar estados muertos o inaccesibles. A continuaci on se presenta un algoritmo para minimizar un AFD. El objetivo principal de este algoritmo consiste en agrupar estados equivalentes. Consideraremos que dos estados son equivalentes cuando las transiciones que parten de ellos, para cada uno de los s mbolos del alfabeto, llevan al mismo estado o a estados que tambi en son

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

44

equivalentes entre s . Todos los estados que sean equivalentes entre s se fundir an en un u nico estado en el aut omata resultante. Para conseguir este objetivo se construir a una partici on de Q, que se ir a renando paulatinamente, de manera que nalmente cada elemento de la partici on agrupar a estados equivalentes. Inicialmente, se construye una partici on de Q formada por dos u nicos elementos: los estados de aceptaci on y los que no lo son. Dicha partici on se ir a renando todo lo posible, separando en diferentes elementos a los estados que no son equivalentes. Recordemos que una partici on de Q consiste en dividir Q en varios subconjuntos {Gi }1in de tal forma que: Gi Gj = i = j y
1in

Gi = Q

Algoritmo 4.1 Minimizaci on de un AFD Input: AF D A = (, Q, f, q0 , F ) Output: AF D A = (, Q , f , q0 , F ) Begin Partici on = {G1 , G2 } donde G1 = F y G2 = Q \ F Auxiliar = while Auxiliar = Partici on do Auxiliar = Partici on Gi Partici on y a separar en diferentes grupos a los estados s y t Gi siempre que f (s, a) Gj , f (t, a) Gk siendo j = k end while Cada elemento Gi de Partici on se convierte en un estado de Q , las transiciones ser an las mismas que dene f End

Ejemplo 4.3 Se minimizar a el Aut omata representado en la gura 4.4. Inicialmente, Partici on = {G1 , G2 } G1 = {E } G2 = {A, B, C, D} omo Evidentemente no es posible renar el grupo G1 . Pero hay que comprobar c se comportan los estados de G2 con los s mbolos a y b. s mbolo a G2 s mbolo b G2 A B G2 A C G2 B B G2 B D G2 C B G2 C C G2 D B G2 D E G1 Analizando el comportamiento de los cuatro estados con el s mbolo b, es evidente que D no es equivalente a los otros tres estados. Por tanto, es necesario dividir G2 en dos nuevos elementos.

MANUALES UEX 44

TEORA DE AUTMATAS Y LENGUAJES FORMALES


DE UN AFD 4.5. MINIMIZACION

45

b C b A a B a b a a b E a

Figura 4.4: Aut omata a minimizar

Partici on = {G1 , G2 , G3 } G1 = {E } G2 = {A, B, C } G3 = {D } Veamos como se comporta G2 con los s mbolos a y b. G2 A B C s mbolo a B G2 B G2 B G2 G2 A B C s mbolo b C G2 D G3 C G2

De nuevo es evidente que el estado B no es equivalente a los otros dos. Es necesario dividir G2 . Ahora, Partici on = {G1 , G 2 , G3 , G4 } donde G1 = {E } G2 = {A, C } G3 = {D} G4 = {B } Volvemos a comprobar el comportamiento de G nico grupo que es posible 2 , el u renar. G 2 A C s mbolo a B G4 B G4 G 2 A C s mbolo b C G 2 C G 2

Denici on 4.4 (AFD equivalentes) Dos AFD son equivalentes si reconocen el mismo lenguaje. Es evidente que para que esto ocurra deben estar denidos sobre el mismo alfabeto.

MANUALES UEX 45

No es posible renar m as la partici on. Es evidente que A y C son equivalentes y, por tanto, deben formar parte del mismo grupo. A continuaci on aparece el nuevo aut omata (gura 4.5), equivalente al anterior, que tiene un estado menos, debido al agrupamiento entre A y C (representado por G 2 ).

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

46

b a G2 a b a G4 b a

G1

G3

Figura 4.5: Aut omata minimizado

A veces es f acil comprobar de manera intuitiva si dos AFD son equivalentes, pero esto no siempre ocurre. Un m etodo para comprobar si dos AFD son equivalentes consiste en unirlos de manera que formen un u nico AFD que, por supuesto, no es conexo. Formalmente, la uni on de los dos aut omatas se llevar a a cabo as : Sean A1 = {, Q1 , f1 , q01 , F1 } A2 = {, Q2 , f2 , q02 , F2 } El aut omata resultante tras la uni on ser a A = A1 + A2 = {, Q1 Q2 , f, q0 , F1 F2 } donde f1 (q, a) si q Q1 f (q, a) = f2 (q, a) si q Q2 El nuevo estado inicial q0 puede ser tanto q01 como q02 . Una vez construido el aut omata uni on, este se minimiza. Si al concluir el proceso de minimizaci on, los dos estados iniciales q01 y q02 forman parte del mismo elemento de la partici on, los aut omatas originales son equivalentes y el AFD que hemos obtenido es el aut omata m nimo equivalente a ambos. Ejemplo 4.4 Dados los aut omatas de la gura 4.6, aplicaremos el m etodo anterior para decidir si son equivalentes o no. Como hemos visto inicialmente, Partici o n = { G1 , G 2 } donde G1 = {q, r, w } G2 = {p, s, v, u} mbolos Hay que comprobar c omo se comportan los elementos de G1 y G2 con los s a y b.

MANUALES UEX

G1 q r w

s mbolo a r G1 q G1 w G1

G1 q r w

s mbolo b p G2 p G2 v G2

46

TEORA DE AUTMATAS Y LENGUAJES FORMALES


4.6. AUTOMATAS FINITOS NO DETERMINISTAS(AFND)
b p a b a,b s b a r q a b v a b b u Autmata 2 w

47

Autmata 1

Figura 4.6: Aut omatas equivalentes?

G2 s mbolo a G2 s mbolo b p q G1 p p G2 s p G2 s p G2 v w G1 v v G2 u w G1 u v G2 En principio, parece que los estados del elemento G1 son equivalentes, sin embargo, analizando el comportamiento de los estados del elemento G2 con el s mbolo a, es evidente que s no es equivalente a los otros tres estados. Por tanto, es necesario dividir G2 en dos subgrupos. Partici on = {G1 , G2 , G3 } G1 = {q, r, w } G2 = {p, v, u} G3 = {s} mbolos a y b. Veamos c omo se comporta G2 con los s G2 s mbolo a G2 s mbolo b p q G1 p p G2 v w G1 v v G2 u w G1 u v G2 Es evidente que todos los estados de G2 son equivalentes. Por tanto, no es posible renar m as la partici on. Podemos determinar que los Aut omatas 1 y 2 son equivalentes ya que los estados iniciales p y v son equivalentes. Adem as, el aut omata que se muestra en la gura 4.7 es equivalente a ambos y es m nimo. Como el estado G3 es inaccesible se puede eliminar. As el aut omata quedar a como muestra la gura 4.8.

En los aut omatas deterministas sabemos exactamente cu al es la transici on que debemos llevar a cabo ante una determinada situaci on. Sin embargo, en los no deterministas podemos encontrarnos con varias opciones e, incluso, con -transiciones

MANUALES UEX 47

4.6.

Aut omatas Finitos No Deterministas(AFND)

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS
a a a, b G1

48

G2

G3

G1 = {q, r, w} G2 = {p, u, v} G3 = {s}

Figura 4.7: Aut omata m nimo

G2

b a G1

G1 = {q, r, w} G2 = {p, u, v}

Figura 4.8: Aut omata simplicado

que se realizan sin considerar el correspondiente s mbolo de la cadena de entrada. Para tener en cuenta estas consideraciones, los AFND se denen como una tupla: AF ND = (, Q, f, q0 , F, T ), f : Q 2Q donde 2Q es el conjunto formado por los subconjuntos de Q, incluyendo a T es una relaci on binaria denida sobre Q que indica las -transiciones del aut omata (si pT q existe una -transici on desde p hasta q ) El resto de los s mbolos tiene el mismo signicado que en la denici on de AFD.

MANUALES UEX 48

Ejemplo 4.5 Representaci on de un AFND utilizando un diagrama de transiciones: ver gura 4.9 Descripci on del mismo aut omata mediante una tabla de transiciones:

TEORA DE AUTMATAS Y LENGUAJES FORMALES


4.6. AUTOMATAS FINITOS NO DETERMINISTAS(AFND) a {q } {p, s} b {r, p} {s, p} { s} {r, s} {r }

49

p q r s

a p b a,b a, ,b

q b

Figura 4.9: A.F. no determinista

Es evidente que un AFD no es m as que un caso particular de AFND, es decir, AFD AFND. En realidad, un AFD es un AFND que cumple T = Id y |f (q, a)| = 1 q Q, a

Es u til conocer el cierre transitivo de la relaci on T , que se denota T . Si pT q , entonces q es accesible desde p utilizando exclusivamente -transiciones. Para calcular T podemos utilizar una matriz booleana (BT ) que permita representar a T y calcular despu es todas las potencias de dicha matriz (llega un momento en que las potencias se repiten y no es necesario calcular m as). As BT 2 = (BT )2 representa las parejas de estados que est an conectadas por dos -transiciones, BT 3 las que est an conectadas por tres, y as sucesivamente. Por lo tanto Id + BT + BT 2 + BT 3 + . . . es una matriz booleana que representa la relaci on que deseamos calcular T . En nuestro ejemplo: 0 0 p 0 0 q BT = r 0 0 0 0 s 0 0 1 1 0 0 1 (BT )2 = BT 2 = 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1

MANUALES UEX 49

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

50

BT 3 = BT 4

0 0 = ... = 0 0

0 0 0 0

0 1 1 1

0 1 0 0 1 1 B = BId + BT + BT 2 + BT 3 = 0 0 1 T 1 0 0

0 1 1 1

0 1 1 1

Denici on 4.5 (-clausura) Sea q Q, se llama -clausura(q ) al conjunto de estados de Q que son accesibles desde q mediante -transiciones. Por lo tanto, clausura(q ) = {p Q/qT p} Esta denici on se puede ampliar a conjuntos de estados de manera natural. Si R Q, entonces clausura(R) = qR clausura(q ) Aunque para calcular la -clausura de un estado se pueden utilizar las matrices booleanas que acabamos de ver, a continuaci on se describe un algoritmo que tambi en nos permite calcular la -clausura. Algoritmo 4.2 C alculo de la -clausura(q ) Output: Clausura Q Begin Clausura = {q } Auxiliar = while Auxiliar = Clausura do Auxiliar = Clausura Clausura = Clausura {s Q/ -transici on desde p hasta s, siendo p Auxiliar} end while -clausura(q ) = Clausura End

4.7.

Lenguaje aceptado por un AFND

MANUALES UEX 50

El lenguaje aceptado por un AFND es el conjunto de todas las cadenas de s mbolos terminales que pueden hacer que el AFND llegue a un estado nal de aceptaci on. Para llegar a una denici on formal de este lenguaje ampliaremos la denici on de la funci on de transici on con objeto de que acepte cadenas de caracteres. Es decir, si la funci on de transici on de un AFND de dene as : f : Q 2Q . Deniremos una funci on de transici on ampliada, de la siguiente forma f : Q 2Q , donde

TEORA DE AUTMATAS Y LENGUAJES FORMALES


DE UN AFD Y AFND 4.8. SIMULACION f (q, ) = clausura(q ) f (q, ax) = {p f (r, x)/r f (q, a)} = = {p Q/ r f (q, a) y p f (r, x)} siendo a , x Una vez ampliada la denici on de la funci on de transici on, el lenguaje aceptado por el AFND es: L(AF ND) = {x /f (q0 , x) F = }

51

4.8.

Simulaci on de un AFD y AFND

En esta secci on veremos sendos algoritmos que nos permitir an simular el comportamiento de un AFD y de un AFND. Por tanto, permitir an determinar si una cadena pertenece o no al lenguaje que reconoce el aut omata. Algoritmo 4.3 Simulaci on de un AFD Input: x Begin c es el primer car acter de x q = q0 while c = Fin do q = f (q, c) c es el siguiente car acter de x end while if q F then la palabra x ha sido reconocida por el AFD else la palabra x no ha sido reconocida por el AFD end if End Para detallar el algoritmo de simulaci on de un AFND, supondremos que tenemos implementadas las siguientes funciones: f (R, a) = qR f (q, a), siendo R Q y a clausura(R), siendo R Q La diferencia fundamental entre ambos algoritmos est a en el signicado de q y S . En el algoritmo 4.3, q representa el estado que el aut omata tiene en cada instante. Sin embargo, en el algoritmo 4.4, q es sustituido por S que representa al conjunto de los estados en los que puede estar el aut omata.

MANUALES UEX 51

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

52

Algoritmo 4.4 Simulaci on de un AFND Input: x Begin c es el primer car acter de x S = clausura(q0 ) while c = Fin do S = clausura(f (S, c)) c es el siguiente car acter de x end while if S F = then la palabra x ha sido reconocida por el AFND else la palabra x no ha sido reconocida por el AFND end if End

4.9.

Paso de un AFND a AFD

Los AFND y los AFD tienen el mismo poder computacional (esto no ocurre en otros niveles de la jerarqu a de los aut omatas), es decir, pueden resolver los mismos problemas. Por lo tanto, dado un AFND siempre es posible encontrar un AFD que sea equivalente a el. En esta secci on estudiaremos un m etodo para resolver este problema. En primer lugar explicaremos de manera gen erica el paso de un aut omata a otro, para despu es ilustrar con un ejemplo este mecanismo de trasformaci on. Partimos de un AFND = (, Q, f, q0 , F, T ) y queremos construir un , F ) que sea equivalente, donde: AFD = (, Q , f , q0 1. Q = 2Q
2. q0 = clausura(q0 )

El aut omata que se obtiene por este m etodo no tiene porqu e ser m nimo y podr a llegar a tener, como m aximo, 2|Q| estados.

3. F = {C Q/C F = } 4. f (C, a) = {C Q/C = qC clausura(f (q, a))}, siendo C Q

MANUALES UEX 52

Ejemplo 4.6 Calcularemos el AFD equivalente al AFND que se muestra en la gura 4.10. Comenzamos calculando el estado inicial q0 que es la -clausura del estado inicial del AFND. q0 =-clausura(A) = {A,C} A continuaci on hay que calcular la funci on de transici on para el estado q0

TEORA DE AUTMATAS Y LENGUAJES FORMALES

4.9. PASO DE UN AFND A AFD


b a,b A a C E b a, b a a B b D a

53

Figura 4.10: Ejemplo

f (q0 , a) = -clausura(f (A, a) f (C, a)) = -clausura(B, A) = {A, B, C, D} = q1 f (q0 , b) = -clausura(f (A, b) f (C, b)) = -clausura(B, E ) = {B, D, E } = q2 Es necesario seguir calculando la funci on de transici on para los nuevos estados que van apareciendo. f (q1 , a) = = f (q1 , b) = = f (q2 , a) = = f (q2 , b) = = f (q3 , a) = = f (q3 , b) = = f (q4 , a) = f (q4 , b) = f (q5 , a) = = f (q5 , b) = = f (q6 , a) = f (q6 , b) = -clausura(f (A, a) f (B, a) f (C, a) f (D, a)) -clausura(B, C, A, E ) = {A, B, C, D, E } = q3 -clausura(f (A, b) f (B, b) f (C, b) f (D, b)) -clausura(B, E ) = {B, D, E } = q2 -clausura(f (B, a) f (D, a) f (E, a)) -clausura(C, E ) = {C, E } = q4 -clausura(f (B, b) f (D, b) f (E, b)) -clausura(B, E ) = {B, D, E } = q2 -clausura(f (A, a) f (B, a) f (C, a) f (D, a) f (D, a)) -clausura(B, C, A, E ) = {A, B, C, D, E } = q3 -clausura(f (A, b) f (B, b) f (C, b) f (D, b) f (D, b)) -clausura(B, E ) = {B, D, E } = q2 -clausura(f (C, a) f (E, a)) = -clausura(A, E ) = {A, C, E } = q5 -clausura(f (C, b) f (E, b)) = -clausura(E ) = {E } = q6 -clausura(f (A, a) f (C, a) f (E, a)) -clausura(B, A, E ) = {A, B, C, D, E } = q3 -clausura(f (A, b) f (C, b) f (E, b)) -clausura(B, E ) = {B, D, E } = q2 -clausura(f (E, a)) = -clausura(E ) = q6 -clausura(f (E, b)) = -clausura(E ) = q6

MANUALES UEX 53

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

54

El AFD resultante aparece en la siguiente gura.

a q0 b b

q1

a a q3 b a

q2 a

q5

a, b q6 b

a q4

Figura 4.11: AFD equivalente al de la gura 4.10

Una vez obtenido el AFD, intentaremos minimizarlo. Inicialmente, Partici on = {G1 , G2 } G1 = {q2 , q3 , q4 , q5 , q6 } G2 = {q0 , q1 } Analizaremos el comportamiento de todos los estados con a y b. G1 q2 q3 q4 q5 q6 G2 q0 q1 s mbolo a q4 G1 q3 G1 q5 G1 q3 G1 q6 G1 G1 q2 q3 q4 q5 q6 G2 q0 q1 s mbolo b q2 G1 q2 G1 q6 G1 q2 G1 q6 G1

s mbolo a q1 G2 q3 G1

s mbolo b q2 G1 q2 G1

MANUALES UEX 54

Todos los estados de G1 son equivalentes, sin embargo, esto no ocurre con los de G2 , por lo que es necesario separarlos en dos elementos diferentes. La nueva y denitiva partici on ser a: {G1 , G2 , G3 } G1 = {q2 , q3 , q4 , q5 , q6 } G2 = {q0 } G3 = {q1 }. A continuaci on se representa el nuevo aut omata (gura 4.12) que es determinista, m nimo y equivalente al AFND del que partimos.

TEORA DE AUTMATAS Y LENGUAJES FORMALES


ENTRE AF, GR. Y EXP. REG. 4.10. RELACION
a, b G1 a G3 G1 = {q2, q3, q4, q5, q6} G2 = { q0} G3 = { q1} a, b

55

G2

Figura 4.12: AFD m nimo equivalente al del gura 4.11

4.10.

Relaci on entre Aut omatas Finitos, gram aticas y expresiones regulares

Como sabemos las gram aticas regulares generan lenguajes regulares que pueden ser representados mediante expresiones regulares. A su vez, estos lenguajes pueden ser reconocidos por Aut omatas Finitos. En esta secci on estudiaremos diferentes m etodos que nos permitir an construir unos elementos a partir de otros.

4.10.1.

Construcci on de la expresi on regular reconocida por un AF

Estudiaremos dos m etodos diferentes. El m etodo del sistema de ecuaciones El m etodo de las funciones recursivas Previamente se dene y demuestra la Regla de Inferencia que se aplicar a en el primer m etodo como un mecanismo para despejar inc ognitas. Teorema 4.1 (Regla de Inferencia) Sean R, S, T tres expresiones regulares de manera que / S. Se cumple que R = SR + T R = S T Demostraci on: Suponemos que R = S T y queremos demostrar que R = SR + T R = S T = ( + S + )T = ( + SS )T = T + SS T = T + S (S T ) = T + SR

MANUALES UEX 55

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS Suponemos que R = SR + T y queremos demostrar que R = S T , para ello comenzaremos demostrando que S T R

56

Si S y T (como R = SR + T entonces T R y por tanto R) SR R An alogamente y aplicando n veces el mismo razonamiento, si 1 , . . . , n S y T 1 . . . n R S T R (consideramos que C S T = ) Supongamos que S T = R, entonces R = S T + C

R = SR + T = S (S T + C ) + T = SS T + SC + T = (SS + )T + SC = S T + C = S T + SC

Eso signica que cualquier palabra de C debe pertenecer a SC (ya que no puede pertenecer a S T ) y esto es absurdo ya que / S por lo tanto C = y se cumple que S T = R El m etodo del sistema de ecuaciones Este m etodo se basa en la denici on de una serie de e.r. que inicialmente ser an las inc ognitas de un sistema de ecuaciones. Partimos de un AF D = (, Q, f, q0 , F ) y para cada uno de los estados qi Q denimos una e.r. Xi que representa a todas las cadenas que permiten llegar desde el estado i hasta alg un estado nal de aceptaci on. Xi = si F es inaccesible desde qi a Xi , a tal que f (qi , a) F

Todas las cadenas de la forma aXj pertenecen a Xi , si f (qi , a) = qj Teniendo en cuenta estas consideraciones, Xi se dene de la siguiente forma: Xi = n j =1 aij Xj + af 1 + af 2 + . . . + af m donde f (qi , aij ) = qj y f (qi , af k ) F . Adem as, hay que a nadir si qi F . Si aplicamos esta denici on para todos los estados del AF, conseguimos construir un sistema de n ecuaciones con n inc ognitas, donde n es el n umero de estados del AF. El sistema de ecuaciones se resolver a sustituyendo unas ecuaciones en otras y aplicando la regla de inferencia para despejar dichas inc ognitas. En realidad, no es necesario resolver el sistema completo ya que la u nica inc ognita que nos interesa es X0 (considerando que q0 es el estado inicial) que es la e.r. buscada. Ejemplo 4.7 Sea el siguiente AF

MANUALES UEX 56

TEORA DE AUTMATAS Y LENGUAJES FORMALES


ENTRE AF, GR. Y EXP. REG. 4.10. RELACION

57

b q0

a a q1

Denimos el sistema de ecuaciones: X0 = bX0 + aX1 + a X1 = aX0 + bX1 + b + Aplicamos la regla de inferencia en la 2 ecuaci on. (considerando que R = X1 , S = b y T = aX0 + b + ) X1 = aX0 + bX1 + b + = b (aX0 + b + ) Sustituimos X1 en la primera ecuaci on. X0 = bX0 + aX1 + a = bX0 + a(b (aX0 + b + )) + a = bX0 + ab aX0 + ab b + ab + a = (b + ab a)X0 + ab Aplicamos de nuevo la regla de inferencia, esta vez en la primera ecuaci on. (ahora, R = X0 , S = b + ab a y T = ab ) X0 = (b + ab a)X0 + ab = (b + ab a) ab El m etodo de las funciones recursivas Para que este m etodo pueda llevarse a cabo sin ambig uedades es necesario numerar los estados a partir del 1, es decir, Q = {q1 , . . . , qn }. Tambi en en este caso deniremos una serie de e.r.(en este caso, de forma recursiva) que inicialmente ser an inc ognitas que es necesario calcular. k Cada e.r. Rij representar a a las cadenas que permiten llegar del estado qi al 0 estado qj pasando exclusivamente por los estados q1 , . . . , qk . Deniremos Rij como el conjunto de cadenas (en este caso, s mbolos) que nos llevar an directamente del estado 0 qi al estado qj . Las e.r del tipo Rij se denen de forma directa, mientras que las e.r. k Rij , k 1 se denen de forma recursiva. si i = j {a /f (qi , a) = qj } 0 Rij = {a /f (qi , a) = qj } si i = j
k k 1 k 1 k 1 k 1 = Rij + Rik (Rkk ) Rkj , Rij

Una vez calculadas las e.r. estado inicial y qfi F

k , Rij

la e.r. buscada es:

n R1 f1

k1

n + R1 f2 + . . . donde q1 es el

MANUALES UEX 57

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

58

k Ejemplo 4.8 Dado el siguiente AFD, calculamos las e.r. Rij

q1

a q2

R11 R12 R21 R22

k=0 a b+

k=1 a b+

k=2 ab b

Las dos u ltimas columnas se han calculado mediante la f ormula recursiva vista anteriormente. 1 0 0 0 0 R11 = R11 + R11 (R11 ) R11 = + = 1 0 0 0 0 R12 = R12 + R11 (R11 ) R12 = a + a = a 1 0 0 0 0 = R21 + R21 (R11 ) R11 = + = R21 1 0 0 0 0 R22 = R22 + R21 (R11 ) R12 = (b + ) + a = b + 2 1 1 1 1 = R11 + R12 (R22 ) R21 = + a(b + ) = R11 2 1 1 1 1 = R12 + R12 (R22 ) R22 = a + a(b + ) (b + ) = a + ab = ab R12 2 1 1 1 1 R21 = R21 + R22 (R22 ) R21 = + (b + )(b + ) = 2 1 1 1 1 = R22 + R22 (R22 ) R22 = (b + ) + (b + )(b + ) (b + ) = b R22 Teniendo en cuenta que s olo hay un estado nal de aceptaci on q2 , la e.r. que 2 estamos buscando ser a R12 = ab

4.10.2.

Construcci on del AF que reconoce una expresi on regular

Estudiaremos dos m etodos que nos ayudar an a construir un aut omata que reconoce el lenguaje que representa una e.r. dada. El primero construye un AFND mientras que el segundo permite construir un AFD. Paso de expresi on regular a AFND De la misma forma que las e.r. se denieron de forma recursiva, este m etodo para construir el AFND, que est a basado en la denici on de las e.r., tambi en puede considerarse recursivo. Para cada tipo de e.r. construiremos un AFND, de esta manera diferentes aut omatas pueden ensamblarse para construir otro m as complejo.

MANUALES UEX 58

TEORA DE AUTMATAS Y LENGUAJES FORMALES


ENTRE AF, GR. Y EXP. REG. 4.10. RELACION

59

1 - e.r. =

q1

qf

2 - e.r. =

q1

3 e.r. = a

q1

a qf

q1 4 e.r. = + q0 q2

qf1

qf

qf2

5 e.r. =

q1

qf1

q2

qf

q1 6 e.r. = q0

qf1

qf

Figura 4.13: Paso de e.r. a AFND

En la gura anterior se detallan los esquemas asociados a cada una de las operaciones que podemos encontrar en una e.r., M y M representan a los aut omatas que reconocen a las e.r. y respectivamente. Paso de expresi on regular a AFD Introduciremos este m etodo mediante un ejemplo con la e.r. (a + b)*abb. Para desarrollar este m etodo es necesario etiquetar con un n umero a cada uno de los s mbolos que componen la e.r. A estas etiquetas las llamaremos posiciones. Adem as, a nadiremos el s mbolo # a la derecha de la e.r. para indicar el nal de las

MANUALES UEX 59

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

60 palabras del lenguaje representado. ( a + b 1 2 ) * a 3

b b 4 5

# 6

Para cada una de las posiciones es necesario denir su conjunto siguiente que estar a formado por las posiciones que pueden seguir a una dada en cualquier palabra que pertenezca al lenguaje representado por la e.r. Para calcular estos conjuntos es necesario analizar cada una de las operaciones que intervienen en la e.r. y estudiar c omo afectan a las diferentes posiciones. Para este ejemplo, los valores de estos conjuntos ser an: sig (1) = {1, 2, 3} sig (2) = {1, 2, 3} sig (3) = {4} sig (4) = {5} sig (5) = {6} sig (6) =

Cada estado de nuestro AFD ser a un conjunto de posiciones. Los estados nales de aceptaci on ser an aquellos que contienen a la posici on asociada al s mbolo # (en el ejemplo, la posici on 6). Se calculan simult aneamente estos estados y las transiciones correspondientes mediante el algoritmo 4.5. En este algoritmo hay que tener en cuenta que simb(i) indica el s mbolo del alfabeto asociado a la posici on i. En nuestro caso: simb(1) = {a} simb(2) = {b} simb(3) = {a} simb(4) = {b} simb(5) = {b} simb(6) =

Adem as, pp representa a las primeras posiciones de la e.r., es decir, las posiciones por las que puede comenzar cualquier palabra representada por la e.r. En este ejemplo, pp = {1, 2, 3} Las siglas EM y ENM signican Estados Marcados y Estados No Marcados respectivamente, y representan a dos conjuntos de estados del aut omata que se est a construyendo. Estos conjuntos se utilizan para saber si un estado ha sido marcado o no. Marcar un estado signica procesarlo, es decir, calcular las transiciones que parten de dicho estado. Cuando un estado se procesa pasa del conjunto ENM al conjunto EM. La construcci on del aut omata terminar a cuando no quede ning un estado sin marcar. Veamos como se aplicar a el algoritmo 4.5 al ejemplo con el que estamos trabajando. Comenzamos deniendo el estado inicial q0 = pp = {1, 2, 3}. Inicialmente, EM = y ENM = {q0 } A continuaci on hay que calcular la funci on de transici on para el estado q0

MANUALES UEX 60

f (q0 , a) = sig (1) sig (3) = {1, 2, 3, 4} = q1 f (q0 , b) = sig (2) = {1, 2, 3} = q0 Ahora: EM = {q0 } y ENM = {q1 } Es necesario seguir calculando la funci on de transici on para los nuevos estados que van apareciendo.

TEORA DE AUTMATAS Y LENGUAJES FORMALES


ENTRE AF, GR. Y EXP. REG. 4.10. RELACION Algoritmo 4.5 Construcci on del AFD a partir de la e.r. Input: x Begin ENM = pp EM = while ENM = do Pasar T desde ENM hasta EM for all a do R = iT sig (i) tal que simb(i) = a if R = and R / (EM ENM ) then a nadir R a ENM f (T, a) = R end if end for end while End f (q1 , a) = sig (1) sig (3) = {1, 2, 3, 4} = q1 f (q1 , b) = sig (2) sig (4) = {1, 2, 3, 5} = q2 EM = {q0 , q1 } y ENM = {q2 } f (q2 , a) = sig (1) sig (3) = {1, 2, 3, 4} = q1 f (q2 , b) = sig (2) sig (5) = {1, 2, 3, 6} = q3 EM = {q0 , q1 , q2 }, ENM = {q3 } f (q3 , a) = sig (1) sig (3) = {1, 2, 3, 4} = q1 f (q3 , b) = sig (2) = {1, 2, 3} = q0 EM = {q0 , q1 , q2 , q3 } y ENM = La gura 4.14 representa gr acamente al aut omata construido. Como se puede observar, el u nico estado nal de aceptaci on es q3 .
a q1 a b q0 q2 a b b b a q3

61

Figura 4.14: AFD correspondiente a la e.r. (a + b) abb

MANUALES UEX 61

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

62

4.10.3.

Relaci on entre A.F. y gram aticas regulares

En este apartado, se estudiar an m etodos, similares entre si, para construir el AF que reconoce al lenguaje generado por una gram atica regular (distinguiendo si es lineal por la izquierda o por la derecha). De forma an aloga se estudiar an m etodos para construir gram aticas que generen el lenguaje que reconoce un AF dado. Para poder denir una relaci on entre los AFs y las gr. regulares estableceremos, en primer lugar, las siguientes correspondencias: Cada estado del aut omata se corresponder a con un s mbolo no terminal de la gram atica. Cada transici on del aut omata se corresponder a con una producci on de la gram atica. Paso de GLD a AFND En este caso: 1. El estado inicial del aut omata se corresponder a con el s mbolo inicial de la gram atica. 2. Deniremos un estado nal de aceptaci on P que no se corresponde con ning un s mbolo no terminal de la gram atica. 3. A cada producci on de la gram atica le corresponde una transici on en el aut omata seg un el siguiente esquema:

A ::= a

a P

A ::= aB

S ::=

MANUALES UEX 62

Ejemplo 4.9 En la gura 4.15 se muestra la obtenci on de un aut omata nito a partir de una gram atica lineal por la derecha.

TEORA DE AUTMATAS Y LENGUAJES FORMALES


ENTRE AF, GR. Y EXP. REG. 4.10. RELACION

63

S ::= 1A | 0B |1 A ::= 0S | 1B B ::= 0B | 1B

1 S 0

A 1 1 B 0, 1 P

Figura 4.15: Ejemplo de paso de GLD a AFND

Paso de AFND a GLD En este caso debemos tener en cuenta las mismas relaciones que hemos visto en el caso anterior. Sin embargo, las transiciones que llevan a un estado nal dan lugar a dos producciones diferentes como indica la siguiente gura.
A a B Obtenemos dos producciones: A ::= aB y A ::= a

Ejemplo 4.10 En la gura 4.16 se muestra la obtenci on de una gram atica lineal por la derecha a partir de un aut omata nito. La gram atica ha sido posteriormente simplicada ya que el s mbolo P no es un estado generativo.
S 1 0 1 P A S ::= 1A | 1P |1 A ::= 0S S ::= 1A |1 A ::= 0S

Figura 4.16: Ejemplo de paso de AFND a GLD

Paso de GLI a AFND Si trabajamos con GLIs, debemos tener en cuenta que: 1. El estado nal del aut omata se corresponder a con el s mbolo inicial de la gram atica.

MANUALES UEX 63

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS 2. Deniremos un estado inicial llamado P que no se corresponde con ning un s mbolo no terminal de la gram atica. 3. A cada producci on de la gram atica le corresponde una transici on en el Aut omata seg un el siguiente esquema:
a

64

A ::= a

A ::= Ba

S ::=

Ejemplo 4.11 En la gura 4.17 se muestra el aut omata obtenido a partir de una gram atica lineal por la izquierda.
A 1 S 0 B 0 1 0

1 S ::= A0 | B1 A ::= S1 |1 B ::= S0 |0 P

Figura 4.17: Ejemplo de paso de GLI a AFND

Paso de AFND a GLI En este caso debemos tener en cuenta las mismas relaciones que hemos visto en el caso anterior. Sin embargo, hay que tener en cuenta que puede haber varios estados nales, en ese caso las transiciones que llevan a un estado nal dan lugar a dos producciones seg un se indica en el siguiente esquema.

MANUALES UEX

a A

Si A es el nico estado final, obtenemos la produccin S ::= Ba Si hay varios estados finales, obtenemos las producciones A ::= Ba y S ::= Ba

64

TEORA DE AUTMATAS Y LENGUAJES FORMALES


4.11. L IMITES PARA LOS LENG. REGULARES

65

Ejemplo 4.12 En la gura 4.18 se muestra la gram atica lineal por la izquierda obtenida a partir de un aut omata nito.
1 0 D 1 1 0 1 F 0

0 A 1

G 0

B ::= A0 | D0 |0 C ::= A1 | E1 |1

D ::= B1 E ::= C0 F ::= D1 | C1

G ::= E0 |G0 S ::= B1 | C0

A es no generativo F y G son B ::= D0 inaccesibles |0 C ::= E1 |1

D ::= B1 E ::= C0 S ::= B1 | C0

Figura 4.18: Ejemplo de paso de AFND a GLI

4.11.

L mites para los leng. regulares

En esta secci on estudiaremos dos resultados, el lema del bombeo y el teorema de Myhill-Nerode que nos permitir an establecer l mites para determinar si un lenguaje es o no regular.

4.11.1.

El lema del bombeo(pumping lemma )

El lema del bombeo enuncia una propiedad que deben cumplir todos los lenguajes regulares. El hecho de comprobar que un lenguaje no cumple dicha propiedad es suciente para demostrar que no es regular. Sin embargo, en ning un caso este lema servir a para demostrar que un lenguaje es regular. Lema 4.1 (El lema del bombeo para leng. regulares) Sea L un lenguaje regular, entonces existe una constante asociada al lenguaje n > 0, de manera que z L tal que |z | n, se cumple que z se puede descomponer en tres partes z = uvw que verican:

2. |uv | n 3. i 0 uv i w L

MANUALES UEX 65

1. |v | 1

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

66

Ejemplo 4.13 Utilizaremos el lema del bombeo para demostrar que el lenguaje L = {ak bk /k 0} no es regular. La demostraci on se realizar a por el m etodo de reducci on al absurdo. Es decir, supondremos que L es regular, si partiendo de esta hip otesis llegamos a una situaci on absurda habremos comprobado que nuestra suposici on inicial era falsa. Supongamos que L es regular y que n 0 es la constante asociada a L que menciona el lema del bombeo. Evidentemente sea cual sea el valor de n siempre es posible encontrar una palabra en L cuya longitud sea mayor que n, por ejemplo, sea z = an bn , en este caso |z | = 2n > n. Veamos diferentes formas de dividir z en tres partes: 1. z = uvw = a . . . |a . . . a| . . . ab . . . b 2. z = uvw = a . . . ab . . . |b . . . b| . . . b 3. z = uvw = a . . . |a . . . ab . . . b| . . . b En el primer caso s olo se bombear an as con los que conseguir amos cadenas con m as as que bs, que no pertenecer an a L. En el segundo caso ocurrir a lo contrario ya que s olo bombear amos bs. En el tercer caso bombeamos as y bs simult aneamente, por tanto ser a posible obtener el mismo n umero de as que de bs. Sin embargo, las cadenas obtenidas contendr an subcadenas del tipo ababab o aabbaabbaabb, de cualquier forma estas palabras nunca pertenecer an a L. No existe ninguna otra forma de dividir la cadena en tres partes; por tanto, hemos comprobado que el lema no se cumple y podemos asegurar que el lenguaje no es regular.

4.11.2.

El teorema de Myhill-Nerode

Este teorema nos permitir a saber si un lenguaje es o no regular. Adem as y en el caso de que el lenguaje sea regular, la demostraci on del teorema nos muestra un m etodo para construir el AFD m nimo que reconoce a dicho lenguaje. Antes de enunciar el teorema ser a necesario conocer algunas deniciones acerca de las relaciones binarias. Consideraremos que R es una relaci on de equivalencia denida sobre el conjunto X . Denici on 4.6 (Relaci on invariante por la derecha) Se dice que R es invariante por la derecha respecto a una operaci on denida sobre X , si se cumple que:

MANUALES UEX

si xRy z X, x zRy z Denici on 4.7 (Relaci on de ndice nito) Se dice que R es de ndice nito si el cardinal de su conjunto cociente es nito, es decir, si el n umero de clases de equivalencia que dene R es nito.

66

TEORA DE AUTMATAS Y LENGUAJES FORMALES


4.11. L IMITES PARA LOS LENG. REGULARES

67

Teorema 4.2 (Teorema de Myhill-Nerode) Dado un lenguaje L denido sobre un alfabeto , las siguientes armaciones son equivalentes: 1. L es regular 2. L es la uni on de algunas clases de equivalencia de una relaci on de equivalencia RM denida sobre que es de ndice nito e invariante por la derecha respecto a la concatenaci on. 3. A partir de L se puede denir una relaci on binaria RL sobre , de la siguiente forma: xRL y z xz L yz L

Es decir, o ambas cadenas (xz e yz ) pertenecen a L, o ninguna de las dos pertenece a L. on de equivalencia, de ndice nito e Se cumple que la relaci on RL es una relaci invariante por la derecha respecto a la concatenaci on. Demostraci on. Para demostrar este teorema comprobaremos en primer lugar que 1 2, despu es que 2 3 y nalmente que 3 1. 1 = 2 Suponemos que L es regular, entonces existe un AF D = (, Q, f, q0 , F ) que lo reconoce. A partir de este aut omata podemos denir una relaci on binaria sobre a la que llamaremos RM : x, y xRM y f (q0 , x) = f (q0 , y )

MANUALES UEX 67

Es evidente que esta relaci on es de equivalencia y adem as tendremos tantas clases de equivalencia como estados tenga el aut omata, por tanto, ser a una relaci on de ndice nito. Veamos que RM es de invariante por la derecha respecto a la concatenaci on. Si xRM y f (q0 , x) = f (q0 , y ) f (q0 , xz ) = f (q0 , yz ) z xzRM yz c.q.d. Si x entonces [x] representa a la clase de equivalencia de x, es decir, [x] es el conjunto de todas las cadenas que est an relacionadas con x. Utilizando esta notaci on y teniendo en cuenta la denici on de RM es evidente que L = {[x]/f (q0 , x) F }. Es decir, L es la uni on de varias clases de equivalencia de RM , concretamente, tantas como estados nales tenga el aut omata.

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

68

2 = 3 Suponemos que L es la uni on de varias clases de equivalencia denidas por una relaci on a la que llamaremos RM que es de ndice nito e invariante por la derecha. Por otra parte, se ha denido la relaci on RL de la siguiente forma: xRL y z xz L yz L

on de equivalencia. Veamos que es invariante por Es evidente que RL es una relaci la derecha: xRL y = z xz L yz L = z, z xzz L yzz L = z xzRL yz Comprobaremos a continuaci on que xRM y xRL y . Si esto ocurre el n umero de clases de equivalencia que genera RM ser a mayor o igual que el n umero de clases de RL , lo que permitir a armar que RL es de ndice nito. si [xz ] L xz L, yz L xRM y = z xzRM yz = como[xz ] = [yz ] si [xz ] L xz / L, yz /L = xz L yz L = xzRL yz c.q.d. ndice nito e invariante por la derecha. Para 3 = 1 Suponemos que RL es de demostrar que L es un lenguaje regular, vamos a construir un AF D = (, Q, f, q0 , F ) que lo reconozca. Q = /RL q0 = [] f ([x], a) = [xa] F = {[x]/x L}

Q es un conjunto nito porque RL es de ndice nito. f est a bien denido porque si [x] = [y ] [xa] = [ya]a ya que RL es invariante por la derecha respecto a la concatenaci on f ([x], a) = f ([y ], a) Este aut omata nito que se ha denido reconoce a L ya que x L [x] F f (q0 , x) = f ([], x) = [x] F Como hemos demostrado que L es reconocido por un Aut omata Finito, podemos asegurar que L es un lenguaje regular. Ejemplo 4.14 Utilizando el teorema de Myhill-Nerode construiremos el AFD m nimo que reconozca el lenguaje 0 10 . q0 = [] = f (q0 , 0) = [0] = [0] f (q0 , 1) = [1] = [1] [0] = []? z 0z L z L? Cierto = f (q0 , 0) = [0] = q0

MANUALES UEX 68

TEORA DE AUTMATAS Y LENGUAJES FORMALES


4.11. L IMITES PARA LOS LENG. REGULARES [1] = []? z f (q1 , 0) = [10] [10] = []? z [10] = [1]? z [11] = []? z [11] = [1]? z f (q2 , 0) = [110] 1z L z L? Falso = f (q0 , 1) = [1] = q1 f (q1 , 1) = [11] 10z L z L? Falso 10z L 1z L? Cierto = f (q1 , 0) = [10] = q1 11z L z L? Falso 11z L 1z L? Falso = f (q1 , 1) = [11] = q2 f (q2 , 1) = [111] 110z L 11z L? Cierto = f (q2 , 0) = q2 111z L 11z L? Cierto = f (q2 , 1) = q2

69

[110] = [11]? z [111] = [11]? z

La siguiente gura muestra el aut omata que se acaba de construir.


0 q0 1 q1 q1 =[1]=[01] 0 1 q2 0,1

q0 = []=[0]=[00]

q2=[11]=[110]=[111]

Es importante destacar que el estado q0 = [] = [0] representa a todas las cadenas binarias que no tienen ning un 1, el estado q1 = [1] = [10] representa a las cadenas binarias que tienen un solo 1 y, por tanto, pertenecen al lenguaje (por ese motivo es el u nico estado nal de aceptaci on), y el estado q2 = [11] representa a las cadenas que tienen m as de un 1. Es evidente que q0 , q1 y q2 o, lo que es lo mismo, las clases de equivalencia [], [1] y [11] constituyen una partici on del lenguaje universal (0 + 1) . Ejemplo 4.15 Utilizando el teorema de Myhill-Nerode es posible demostrar que el lenguaje L = {an bn / n 0} no es regular. Comprobaremos que existe un n umero innito de clases de equivalencia para la relaci on RL , concretamente [a] = [a2 ] = [a3 ] = . . . Bastar a demostrar que [ai ] = [aj ] cuando i = j , o lo que es lo mismo, que i j / L a cuando i = j . aR / L = ai R / L aj Sea z = bj entonces aj z L y sin embargo ai z

MANUALES UEX 69

ELENA JURADO MLAGA


TEMA 4. AUTOMATAS FINITOS

70

4.12.

Problemas

4.1 Minimizar el siguiente aut omata a b q0 q1 q2 q1 q3 q2 q2 q4 q1 q3 q4 q3 q4 q3 q4 4.2 Construir un AFD m nimo a partir del siguiente AFND: 0 1 p {q, s} q q q s p 4.3 Qu e lenguajes reconocen los siguientes aut omatas?
A 0 1 1 0 0,1

B 0 1 1 0 1

1 C 1 0 1 0 0 0,1

0 0 1 1 0 1 0,1

0,1

MANUALES UEX 70

4.4 A partir de los siguiente Aut omatas Finitos:

TEORA DE AUTMATAS Y LENGUAJES FORMALES

4.12. PROBLEMAS a b {B, D} C A A

71

0 1 A B C B D C E D B E C construir una GLD y una GLI, limpias y bien formadas, para generar los lenguajes que reconocen dichos aut omatas. Calcular las expresiones regulares que describen dichos lenguajes utilizando el m etodo del sistema de ecuaciones. A B C D 4.5 Utilizando el m etodo de los conjuntos siguientes calcular el AFD que reconoce a cada uno de los siguientes lenguajes: 1. ab c + a c 2. b (a + bc) 3. a(bc) + ab(cb) cd 4.6 Utilizando el teorema de Myhill-Nerode construir un AFD m nimo que reconozca los lenguajes L1 = (ab) y L2 = ab

MANUALES UEX 71

TEORA DE AUTMATAS Y LENGUAJES FORMALES

Tema 5 Gram aticas Independientes del Contexto y Aut omatas de Pila


Contenido
5.1. Denici on de G.I.C. . . . . . . . . . . . . . . . . . . . . . . 5.2. Aut omatas de Pila . . . . . . . . . . . . . . . . . . . . . . . 5.3. Arboles de derivaci on . . . . . . . . . . . . . . . . . . . . . 5.4. Reconocimiento descendente . . . . . . . . . . . . . . . . . 5.5. Reconocimiento ascendente . . . . . . . . . . . . . . . . . 5.6. Propiedades de los L.I.C. . . . . . . . . . . . . . . . . . . . 5.7. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 74 77 80 87 93 95

73

MANUALES UEX 73

En este tema se estudiar an las Gram aticas Independientes del Contexto (GIC), los lenguajes que estas denen, llamados lenguajes independientes del contexto (LIC), y los aut omatas que reconocen a estos u ltimos, los Aut omatas de Pila (AP). Considerando la jerarqu a de Chomsky, tambi en se les llama respectivamente gram aticas y lenguajes de tipo 2. Estas gram aticas, igual que ocurre con las regulares, tienen una gran importancia pr actica en la denici on de lenguajes de programaci on, ya que nos permiten formalizar el concepto de sintaxis, de la misma forma que los Aut omatas de Pila nos permitir an modelar el funcionamiento del analizador sint actico, una de las partes fundamentales de un compilador. An alogamente, los lenguajes regulares y los Aut omatas Finitos permiten representar los aspectos l exicos y el an alisis l exico, respectivamente, de los lenguajes de programaci on.

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA

74

5.1.

Denici on de G.I.C.

En las Gram aticas Independientes del Contexto las producciones son menos restrictivas que en las gram aticas regulares. En este caso, la parte izquierda de la producci on tambi en est a formada por un u nico s mbolo no terminal, pero no hay restricciones respecto a la parte derecha de la producci on. Por lo tanto, las producciones son de la forma: A ::= v donde A N , v

En este tipo de gram aticas, la conversi on de A en v se realiza independientemente del contexto en el que se encuentre A, de ah su nombre.

5.2.

Aut omatas de Pila

De la misma forma que cualquier lenguaje regular puede ser reconocido por un Aut omata Finito, cualquier lenguaje independiente del contexto puede ser reconocido por un Aut omata de Pila. Sin embargo, en este caso la equivalencia es menos satisfactoria ya que los Aut omatas de Pila no son dispositivos deterministas y el conjunto de los Aut omatas de Pila Deterministas s olo permite reconocer a un subconjunto de los lenguajes de tipo 2. Afortunadamente, este subconjunto suele ser suciente para denir los aspectos m as comunes de cualquier lenguaje de programaci on. En esencia, un Aut omata de Pila es un Aut omata Finito al que se le ha incorporado memoria que se gestiona como una pila, con lo que se aumenta su poder funcional. El dispositivo ser a no determinista y tendr a un n umero nito de movimientos (o transiciones) a elegir en cada situaci on. Hay dos tipos de movimientos: 1. Dependiendo del estado actual del Aut omata, del s mbolo que hay en la cima de la pila y del que hay en la cadena de entrada, habr a que elegir entre un conjunto de posibles transiciones. Cada transici on est a formada por un posible cambio de estado y por una cadena (puede ser ) que reemplazar a al s mbolo que ocupa la cima de la pila. Despu es de realizar un movimiento se avanza en el an alisis de la cinta de entrada. 2. Se le llama -movimiento y es similar al anterior salvo que el s mbolo de la cadena de entrada no se tiene en cuenta y, por tanto, el an alisis de dicha cadena no avanza.

MANUALES UEX

Deniremos formalmente un Aut omata de Pila de la siguiente forma: AP = {Q, , f, , q0 , z0 , F } Q es el conjunto nito de estados

74

TEORA DE AUTMATAS Y LENGUAJES FORMALES


5.2. AUTOMATAS DE PILA es el alfabeto de la cinta de entrada es el alfabeto de la pila q0 Q es el estado inicial z0 es el s mbolo inicial del la pila F Q es el conjunto de estados nales f (q, a, z ) = {(p1 , 1 ), (p2 , 2 ), . . . , (pn , n )} Estas transiciones indican que si el Aut omata de Pila se encuentra en el estado q , recibe como entrada el s mbolo a y z es el s mbolo que se encuentra en la cima de la pila, el Aut omata puede pasar al estado p1 y reemplazar en la pila el car acter z por la cadena 1 , o bien elegir cualquiera de las otras posibilidades. Para describir formalmente la conguraci on de un Aut omata de Pila en un instante dado, utilizamos la Descripci on Instant anea(DI). La DI estar a denida por una tupla (q, w, ) donde q es el estado actual del Aut omata, w es la cadena de s mbolos de entrada que a un queda por procesar, y es la cadena de los s mbolos almacenados en la pila (el car acter m as a la izquierda de ser a la cima de la pila). Utilizaremos la notaci on (q, aw, z ) (p, w, ) cuando (p, ) f (q, a, z ). La notaci on (q, w, ) (p, w , ) indica que se ha pasado de la primera situaci on a la segunda en un n umero indeterminado de transiciones. Lenguaje aceptado por un Aut omata de Pila El lenguaje aceptado por un Aut omata de Pila se puede denir de dos formas diferentes y equivalentes: 1. De forma an aloga a los Aut omatas Finitos, es decir, el lenguaje aceptado es el conjunto de entradas que hacen que el Aut omata llegue a un estado nal. L(M ) = {w /(q0 , w, z0 ) (p, , ), p F } 2. El lenguaje est a formado por el conjunto de entradas que vac an la pila. En este caso decimos que es un Aut omata de Pila Vac a. Para esta denici on el conjunto F es irrelevante y podemos considerar que F = . f : Q ( ) P (Q )

75

Dado un lenguaje independiente del contexto siempre es posible encontrar un Aut omata de Pila con estados nales y un Aut omata de Pila Vac a que reconozcan a dicho lenguaje.

MANUALES UEX 75

N (M ) = {w /(q0 , w, z0) (p, , )}.

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA

76

La estrategia ser a la siguiente: mientras se procesan los primeros caracteres de la cadena (que deber an ser 0s), estos se almacenan en la pila. Cuando se llega a la segunda mitad de la cadena y comienzan a llegar 1s, se pasa a otro estado cuya misi on ser a eliminar un 0 de la pila por cada 1 que se procese. Cuando se termine de procesar la cadena, la pila deber a estar vac a (en realidad, s olo almacenar a el s mbolo inicial de la pila z0 ). Y la funci on de transici on se dene de la siguiente forma: f (q0 , 0, z0) = (q1 , 0z0 ) f (q1 , 0, 0) = (q1 , 00) f (q1 , 1, 0) = (q2 , ) f (q2 , 1, 0) = (q2 , ) f (q2 , , z0 ) = (q0 , ) El AP se dene: Q = {q0 , q1 , q2 } = {0, 1} = {z0 , 0} F = {q0 }

Ejemplo 5.1 Construiremos un Aut omata de Pila con estados nales para el lenguaje L = {0n 1n /n 0}, generado por la GIC S ::= 0S 1|

en el estado q1 se a naden caracteres a la pila en el estado q2 se eliminan caracteres de la pila

En este caso el estado inicial tambi en es estado nal debido a que L. Cualquier situaci on que no haya sido denida indicar a un error. Por ejemplo, si la cadena comienza con 1 el aut omata detectar a el error, n otese que la funci on de transici on no est a denida para la situaci on (q0 , 1, z0 ).

Ejemplo 5.2 Construiremos un Aut omata de Pila Vac a para el lenguaje atica L = {w 2w 1/w (0 + 1) } generado por la gram S ::= 0S 0 | 1S 1 | 2 La estrategia ser a la siguiente: cuando se est a procesando la primera mitad de la cadena (antes de recibir el 2), los caracteres se almacenan en la pila. Cuando comienza a llegar la segunda mitad de la cadena, cada car acter debe coincidir con el que est a en la cima de la pila, si es as se borra la cima y se continua el proceso. Cuando se termine de procesar la cadena, la pila debe estar vac a. El AP se dene Q = {q0 , q1 } La funci on de transici on ser a: = {0, 1, 2} = {z0 , 0, 1}

MANUALES UEX 76

TEORA DE AUTMATAS Y LENGUAJES FORMALES


5.3. ARBOLES DE DERIVACION f (q0 , 0, z0) = (q0 , 0z0 ) f (q0 , 1, z0) = (q0 , 1z0 ) f (q0 , 0, 0) = (q0 , 00) f (q0 , 1, 0) = (q0 , 10) f (q0 , 0, 1) = (q0 , 01) f (q0 , 1, 1) = (q0 , 11) f (q0 , 2, z0) = (q1 , z0 ) f (q0 , 2, 0) = (q1 , 0) f (q0 , 2, 1) = (q1 , 1) f (q1 , 0, 0) = (q1 , ) f (q1 , 1, 1) = (q1 , ) f (q1 , , z0 ) = (q1 , )

77

esta funci on se puede simplicar utilizando como comod n * que representa a {z0 , 0, 1} f (q0 , 0, ) = (q0 , 0) f (q0 , 1, ) = (q0 , 1) f (q0 , 2, ) = (q1 , ) f (q1 , 0, 0) = (q1 , ) f (q1 , 1, 1) = (q1 , ) f (q1 , , z0 ) = (q1 , )

Ejemplo 5.3 Construiremos un Aut omata de Pila Vac a para el lenguaje L = {ww 1/w (0 + 1) } generado por la GIC S ::= 0S 0|1S 1|. En este caso no podremos construir un AP determinista ya que no es posible conocer cu al es el punto medio de la cadena, momento en el que ser a necesario cambiar de estado. Cada vez que lleguen dos s mbolos iguales seguidos cabe la posibilidad de que estemos en el centro de la cadena por lo que hay que considerar el hecho de que el aut omata pueda cambiar de estado. La estrategia ser a similar a la del ejemplo anterior. El AP se dene Q = {q0 , q1 } = {0, 1} = {z0 , 0, 1} La funci on de transici on ser a: f (q0 , 0, z0) = (q0 , 0z0 ) f (q0 , 1, z0) = (q0 , 1z0 ) f (q0 , 0, 0) = {(q0 , 00), (q1 , )} f (q0 , 0, 1) = (q0 , 01) f (q0 , 1, 0) = (q0 , 10) f (q0 , 1, 1) = {(q0 , 11), (q1 , )} f (q1 , 0, 0) = (q1 , ) f (q1 , 1, 1) = (q1 , ) f (q1 , , z0 ) = (q1 , )

hay dos posibilidades, considerando o no el haber llegado al centro de la cadena idem

la pila queda vac a

5.3.

Arboles de derivaci on

MANUALES UEX 77

El a rbol de derivaci on, al representar las producciones utilizadas para generar una palabra, est a indicando adem as su estructura, lo que resulta determinante para entender su signicado. Por esa raz on, en los mecanismos para reconocer lenguajes independientes del contexto no es suciente con indicar si una cadena determinada pertenece o no al lenguaje, tambi en es muy importante que el reconocedor construya el arbol de derivaci on de dicha cadena.

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA

78

Cada nodo interno del arbol ser a un s mbolo no terminal de la gram atica mientras que las hojas ser an los s mbolos terminales. Una producci on como A ::= X1 . . . Xn se representar a como un sub arbol cuyo nodo padre es A siendo sus hijos los s mbolos X1 , . . . , Xn . Si en un paso de la construcci on del arbol, se aplica una producci on al s mbolo no terminal que est a situado m as a la izquierda del arbol, se dice que es una derivaci on por la izquierda. La misma denici on se aplica a derivaci on por la derecha.

5.3.1.

Ambig uedad.

Una gram atica es ambigua cuando es posible construir dos o m as arboles de derivaci on diferentes para una misma palabra. El problema de la ambig uedad es muy complejo ya que no existe ning un algoritmo que permita reconocer si una gram atica es o no ambigua y, en el caso de que lo sea, tampoco existe ning un algoritmo que permita eliminar dicha ambig uedad (ni siquiera es posible eliminarla en todos los casos). Los lenguajes independientes del contexto para los cuales todas las GIC que los generan son ambiguas, se dice que tienen una ambig uedad inherente. Ejemplo 5.4 (Gram atica ambigua) Un ejemplo cl asico de gram atica ambigua se presenta en la denici on de las expresiones aritm eticas que aparecen com unmente en los lenguajes de programaci on. El siguiente ejemplo simplicado permite denir expresiones en las que intervienen las cuatro operaciones aritm eticas b asicas con operandos que pueden ser identicadores (id) o constantes (cte). Llamaremos a esta gram atica G Exp 0. T = {id, cte, (, ), +, , , /} N = {< expre >, < op >} S =< expre > < expre >::=< expre >< op >< expre > |(< expre >) |id |cte P = < op >::= + | | |/

MANUALES UEX 78

Es f acil demostrar que esta gram atica es ambigua construyendo dos arboles diferentes para generar la misma expresi on, concretamente id + cte * id

TEORA DE AUTMATAS Y LENGUAJES FORMALES


5.3. ARBOLES DE DERIVACION

79

<expre> <expre> <expre> id <op> + <expre> cte <op> <expre> <expre> <op>

<expre> <expre> <expre> <op> <expre> id

id

id

cte

Figura 5.1: Ejemplo de ambig uedad

Analizando la gura 5.1 es f acil comprobar que la ambig uedad est a provocada por la ausencia de una jerarqu a entre los operadores. En el arbol de la izquierda la operaci on suma, entre los dos primeros operandos, se lleva a cabo antes que la multiplicaci on. Sin embargo, en el arbol de la derecha se comenzar a multiplicando los dos u ltimos operandos y al resultado de esta operaci on se le sumar a el valor del primer operando. Es evidente que a pesar de que la expresi on es correcta, la utilizaci on de cada arbol generar a en cada caso resultados diferentes. Para resolver este caso de ambig uedad hay que imponer una jerarqu a entre los operadores. Como suele ser habitual consideraremos que la multiplicaci on y la divisi on tienen una prioridad m as alta que la suma y la resta. Si aparecen varias operaciones con la misma prioridad se ejecutar an de izquierda a derecha, aunque en este caso el resultado de la expresi on siempre ser a el mismo. Para denir la jerarqu a se van a introducir en la gram atica nuevos s mbolos no terminales: < termino > y < op adt > estar an asociados a los operadores aditivos suma y resta. < f actor > y < op mult > estar an asociados a los operadores multiplicaci on y divisi on.

N = {< expre >, < termino >, < f actor >, < op adt >, < op mult >} S =< expre >

MANUALES UEX 79

As llegamos a la siguiente gram atica, equivalente a G Exp 0:

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA < expre >::=< expre >< op adt >< termino > | < termino > < termino > ::= < termino >< op mult >< f actor > | < f actor > < f actor >::= (< expre >) |id P = |cte < op adt > ::= + | < op mult > ::= |/

80

Con esta nueva gram atica, a la que llamaremos G Exp 1, la expresi on anterior tendr a un u nico a rbol de derivaci on que se representa en la gura 5.2.

<expre> <expre> <termino> <factor> id + <op_adt> <termino> <termino> <op_mult> <factor> <factor> cte

id

Figura 5.2: Nuevo arbol de derivaci on

Este a rbol representa la estructura de la expresi on id + cte * id, obligando a que la multiplicaci on se realice antes que la suma.

5.4.

Reconocimiento descendente

MANUALES UEX 80

En general, un reconocedor es un algoritmo que recibe como entrada una palabra w + mbolos de izquierda a derecha e intenta construir un a rbol T , examina sus s de derivaci on para dicha palabra. Con el proceso de construcci on del arbol se obtiene adem as la estructura de la palabra, las producciones gramaticales que han de aplicarse y el orden en el que deben utilizarse.

TEORA DE AUTMATAS Y LENGUAJES FORMALES

5.4. RECONOCIMIENTO DESCENDENTE

81

Un reconocedor descendente o analizador sint actico descendente es un m etodo de reconocimiento de palabras de un LIC que se caracteriza porque construye el arbol de derivaci on de cada palabra de manera descendente, es decir, desde la ra z hasta las hojas. A continuaci on se describir a un reconocedor descendente llamado LL(1) (LeftLeft(1)). De su nombre, la primera L indica que la cadena se analiza de izquierda a derecha, la segunda L indica que en cada paso se construye la derivaci on por la izquierda, y el 1 indica que s olo es necesario un car acter para que el reconocedor decida qu e producci on debe utilizar en la construcci on del arbol. Como paso previo a la descripci on de los reconocedores LL(1) estudiaremos algunos aspectos de las GIC que es importante detectar y evitar para el correcto funcionamiento del m etodo.

5.4.1.

Simplicaci on de las GIC

Hay diferentes formas de restringir el formato de las producciones sin mermar por ello el poder generativo de una GIC. En determinadas situaciones nos interesar a trasformar una gram atica en otra equivalente de forma que las producciones cumplan ciertos requisitos que faciliten la construcci on de un reconocedor para dicha gram atica. Podemos encontrar en las GIC tres defectos que es conveniente eliminar: los prejos comunes, la recursividad por la izquierda y la ambig uedad. 1. Eliminaci on de los prejos comunes. Una gram atica tiene prejos comunes cuando hay dos o m as producciones que, teniendo la misma parte izquierda, tienen algunos s mbolos coincidentes en el comienzo de la parte derecha de la producci on. La forma de eliminar los prejos comunes es muy sencilla, se pretende sacar factor com un de los s mbolos que constituyen el prejo com un. A esta operaci on se la llama factorizar por la izquierda. En general, si nos encontramos con la siguiente situaci on: Estas producciones se pueden sustituir por las siguientes, en las que ha sido necesario a nadir un nuevo s mbolo no terminal A . A ::= A |1 | . . . |m A ::= 1 |2 | . . . |n A ::= 1 |2 | . . . |n |1 | . . . |m considerando que n 2 y que | | > 0

La recursividad por la izquierda resulta perjudicial a la hora de construir reconocedores LL(1), por lo que la eliminaremos sustituy endola por recursividad por la derecha.

MANUALES UEX 81

2. Eliminaci on de la recursividad por la izquierda. En una gram atica es muy frecuente encontrar producciones recursivas. Estas tienen la forma X ::= X . Ser an recursivas por la izquierda cuando su forma sea X ::= X , y recursivas por la derecha si son de la forma X ::= X

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA Considerando la siguiente situaci on: A ::= A1 |A2 | . . . |An |1 | . . . |m

82

Estas producciones se pueden sustituir por las siguientes, en las que ha sido necesario a nadir un nuevo s mbolo no terminal A : A ::= 1 A | . . . |m A A ::= 1 A |2 A | . . . |n A |

Ejemplo 5.5 Utilizaremos la gram atica de las expresiones aritm eticas presentada en la p agina 78. Para representar de forma m as compacta dicha gram atica utilizaremos letras may usculas para indicar cuales son los s mbolos no terminales de acuerdo al siguiente criterio: < expre >= E < op adt >= A < f actor >= F < termino >= T

< op mult >= M

De esta forma, representamos a continuaci on la gram atica no ambigua original a la izquierda y la nueva versi on, a la que llamaremos G Exp 2, a la derecha. En esta u ltima versi on de la gram atica se ha eliminado la recursividad por la izquierda. Como la recursividad por la izquierda aparece en las producciones que tienen a E y a T en la parte izquierda, ser a necesario a nadir dos nuevos s mbolos no terminales a los que llamaremos E y T. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. G Exp 1 E::=E A T |T T::=T M F |F F::=(E) |id |cte A::=+ |M::=* |/ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. G Exp 2 E::=T E E::=A T E | T::=F T T ::= M F T | F::=(E) |id |cte A::=+ |M::=* |/

MANUALES UEX

3. Ambig uedad. No existe ning un algoritmo que nos permite eliminar la ambig uedad de forma sistem atica. Sin embargo, y como vimos en el ejemplo de la p agina 78, en ocasiones es posible resolver este problema analizando cuales son sus causas.

82

TEORA DE AUTMATAS Y LENGUAJES FORMALES

5.4. RECONOCIMIENTO DESCENDENTE

83

5.4.2.

Reconocedores LL(1)

En la construcci on de los reconocedores LL(1) es muy importante el papel que juegan los s mbolos directores de las producciones que, como su nombre indica, dirigir an el an alisis de la cadena, es decir, indicar an cu al es la producci on que ha de utilizarse en cada paso de la construcci on del arbol. Para llegar a la denici on de s mbolos directores de una producci on ser a necesario conocer otras deniciones previas, todas ellas relativas a una GIC. Los ejemplos que aparecen en esta secci on est an basados en la gram atica G Exp 2. Denici on 5.1 (Cadena o palabra anulable) Una cadena w N es anulable si, a partir de ella, y utilizando algunas producciones gramaticales se puede generar la palabra nula (). Es evidente que no puede haber s mbolos terminales en una cadena anulable. Ejemplos de cadenas anulables en G Exp 2: E E T T E Denici on 5.2 (Producci on anulable) Una producci on X ::= es anulable si es una cadena anulable. Una producci on anulable en modo alguno puede considerarse eliminable. Esto se debe a que aunque a partir de una producci on anulable es posible llegar a , tambi en es posible generar otras cadenas utilizando derivaciones diferentes. Las producciones no generativas son, obviamente, anulables. Ejemplos de producciones anulables en G Exp 2: Las producciones no 3 y 6. Denici on 5.3 (S mbolos Iniciales) Los s mbolos iniciales de una cadena w (N T ) son los s mbolos terminales por los que pueden comenzar todas las palabras que podamos obtener a partir de ella.
INIC (w ) = {a T / w a, }

M etodo para calcular los S mbolos Iniciales Hay que tener en cuenta las siguientes consideraciones: 1. Si w comienza por un s mbolo terminal es trivial: INIC (w ) = {a} w = a, a T =

INIC (w ) =

INIC (X ) INIC ( ) si X es anulable INIC (X ) si X no es anulable

MANUALES UEX 83

2. Si w comienza por un s mbolo no terminal, hay que considerar la posibilidad de que el s mbolo por el que comienza sea anulable y aplicar esta consideraci on reiteradamente. w = X, X N =

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA 3. Si X ::= 1 |2 | . . . |n entonces INIC (X ) = INIC (1 ) . . . INIC (n ) Ejemplos de s mbolos iniciales: INIC (AT E ) = {+, } INIC ((E )) = {(} INIC (F T ) = {(, id, cte} INIC (MF T ) = {, /} Denici on 5.4 (Forma sentencial) Es una cadena w (N T ) que puede generarse a partir del s mbolo inicial de una GIC utilizando un n umero indeterminado de producciones. Denici on 5.5 (S mbolos Seguidores) Los s mbolos seguidores de un s mbolo no terminal X , son los s mbolos terminales que pueden aparecer inmediatamente a la derecha de X en una forma sentencial cualquiera. SEG(X ) = {a T / S Xa , } Ejemplos de s mbolos seguidores: E T E F T E (E )T E =) SEG(E ) E T E F T idMF T idMcteT = cte SEG(M ) M etodo para calcular los S mbolos Seguidores de X. Este m etodo se basa en el examen de las producciones de la gram atica. El m etodo se divide en dos fases y es necesario calcular simult aneamente los s mbolos seguidores de todos los s mbolos no terminales. Fase 1. En la primera fase examinaremos aquellas producciones en las que X aparece en la parte derecha seguido por alg un s mbolo gramatical. Situaci on A. Si hay una producci on de la forma: Y ::= Xa donde a T , = a SEG(X )

84

Situaci on C. Si hay una producci on de la forma: Y ::= X donde + es anulable , = INIC ( ) SEG(X ) N

Situaci on B. Si hay una producci on de la forma: Y ::= XZ donde Z N , = INIC (Z ) SEG(X )

Una vez que han sido consideradas estas tres situaciones se obtiene una lista provisional de s mbolos seguidores que es necesario ampliar con la segunda fase. Fase 2. En esta segunda fase buscaremos producciones en las que X se encuentre al nal de la parte derecha.

MANUALES UEX

Situaci on E. Si hay una producci on de la forma: Y ::= X donde + N es anulable y = SEG(Y ) SEG(X )

Situaci on D. Si hay una producci on de la forma: Y ::= X donde = SEG(Y ) SEG(X )

84

TEORA DE AUTMATAS Y LENGUAJES FORMALES

5.4. RECONOCIMIENTO DESCENDENTE

85

Tras considerar las situaciones D y E con todas las producciones, se obtiene una colecci on de relaciones de inclusi on entre los conjuntos de s mbolos seguidores previamente calculados. Si se consideran ordenadamente todas estas inclusiones, tomando como punto de partida la lista provisional calculada en la fase 1, se consigue la lista denitiva. Si consideramos que el s mbolo $ aparece al nal de cualquier cadena, hay que tener en cuenta siempre que $ SEG(S ) Ejemplo 5.6 Los seguidores de los s mbolos no terminales para la gram atica G Exp 2 son los siguientes: E E T T F A M Fase 1 )$ +*/ ( id cte ( id cte Fase 2 )$ )$ +-)$ +-)$

Para llevar a cabo la segunda fase del m etodo se han considerado las siguientes relaciones de inclusi on: SEG(E ) SEG(E ) SEG(T ) SEG(T ) SEG(F ) Denici on 5.6 (S mbolos directores de una producci on) El c alculo de los s mbolos directores de una producci on (X ::= ) es inmediato. Sabiendo calcular los S mbolos Iniciales, los Seguidores y sabiendo identicar las Cadenas anulables, basta con aplicar la siguiente f ormula: INIC () si no es anulable DIR(X ::= ) = INIC () SEG(X ) si es anulable Cuando se est a construyendo el arbol de derivaci on correspondiente a una palabra, se analizan de izquierda a derecha los caracteres de dicha palabra y se decide cu al es la producci on que se va a utilizar. Para tomar esa decisi on hay que considerar que, en cada momento, se debe llevar a cabo la derivaci on por la izquierda siempre y cuando el car acter que se est a procesando en ese momento forme parte de los S mbolos Directores de la producci on a utilizar. Gram aticas LL(1) Una gram atica ser a LL(1) si es posible construir para ella un reconocedor LL(1) determinista. Para que esto ocurra es necesario que la consulta del siguiente s mbolo

MANUALES UEX 85

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA

86

de la palabra que se est a analizando permita determinar sin incertidumbre la producci on que se debe utilizar para proseguir con el an alisis. Por lo tanto, para que una gram atica sea LL(1) es necesario que todas las producciones que tienen el mismo s mbolo en la parte izquierda no tengan ning un S mbolo Director en com un. Es decir, considerando que: X ::= 1 |2 | . . . |n y que D1 = DIR(X ::= 1 ) D2 = DIR(X ::= 2 ) ... Dn = DIR(X ::= n )

La gram atica ser a LL(1) si Di Dj = , i = j i, j {1, . . . , n} Para que una GIC sea LL(1) es imprescindible que no sea ambigua, que no tenga prejos comunes, ni recursividad por la izquierda. Ejemplo 5.7 Los s mbolos directores para las producciones de la gram atica G Exp 2 son los siguientes: DIR1 = DIR(E ::= T E ) = {(, cte, id} DIR2 = DIR(E ::= AT E ) = {+, } DIR3 = DIR(E ::= ) = SEG(E ) = {), $} DIR4 = DIR(T ::= F T ) = {(, cte, id} DIR5 = DIR(T ::= MF T ) = {, /} DIR6 = DIR(T ::= ) = SEG(T ) = {+, , ), $} DIR7 = DIR(F ::= (E )) = {(} DIR8 = DIR(F ::= id) = {id} DIR9 = DIR(F ::= cte) = {cte} DIR10 = DIR(A ::= +) = {+} DIR11 = DIR(A ::= ) = {} DIR12 = DIR(M ::= ) = {} DIR13 = DIR(M ::= /) = {/} Es f acil comprobar que es una gram atica LL(1) ya que: DIR2 DIR3 = DIR5 DIR6 = DIR7 DIR8 DIR9 = DIR10 DIR11 = DIR12 DIR13 = Ejemplo 5.8 Gram atica que no es LL(1). La gram atica que se describe a continuaci on permitir a representar la cl asica estructura alternativa de cualquier lenguaje de programaci on. Es una gram atica ambigua y por ese motivo no es LL(1) como comprobaremos a continuaci on. N = {S, E, R} T = {i, t, a, e, b} Los s mbolos gramaticales tienen el siguiente signicado: S = Sentencia E = Expresi on R = Resto de la sentencia

MANUALES UEX 86

TEORA DE AUTMATAS Y LENGUAJES FORMALES

5.5. RECONOCIMIENTO ASCENDENTE i = if t = then a = accion e = else S ::= iEtSR |a R ::= eS P = | E ::= b S R E Fase 1 e$ t Fase 2 e$ b = boolean

87

S mbolos seguidores:

S mbolos directores de las producciones: DIR1 DIR2 DIR3 DIR4 DIR5 = DIR(S ::= iEtSR) = {i} = DIR(S ::= a) = {a} = DIR(R ::= eS ) = {e} = DIR(R ::= ) = SEG(R) = {e, $} = DIR(E ::= b) = {b}

Como DIR3 DIR4 = {e} podemos armar que la gram atica no es LL(1)

5.5.

Reconocimiento ascendente

El reconocimiento ascendente o an alisis sint actico ascendente se caracteriza por construir el arbol de derivaci on de manera ascendente, es decir, desde las hojas hasta la ra z. A continuaci on se describir a un reconocedor ascendente llamado LR(1) (LeftRight(1)). En este nombre, L indica que la cadena se analiza de izquierda a derecha, R indica que en cada paso se construye la derivaci on por la derecha en orden inverso, y el 1 indica que s olo es necesario un car acter para que el reconocedor decida qu e acci on se debe realizar. Una gram atica es LR(1) si es posible construir para ella un reconocedor LR(1) determinista. Algunas de las ventajas de los reconocedores LR(1):

Un analizador LR(1) detecta un error en una cadena tan pronto como sea posible.

MANUALES UEX 87

Son m as potentes que los reconocedores LL(1). Es decir, el conjunto de los lenguajes LL(1) est a contenido en el conjunto de los LR(1).

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA Pr acticamente todas las gram aticas que denen los lenguajes de programaci on son LR(1). La desventaja de los reconocedores LR(1) es que su construcci on a mano es m as compleja. Sin embargo, existen herramientas (YACC) que permiten la construcci on autom atica de este tipo de reconocedores. El funcionamiento de un reconocedor LR(1) depende de su Tabla de Acciones. En esta tabla encontraremos dos tipos de procesos: 1. Desplazamientos. Indican la transici on de un estado a otro. Se representan como Di , donde i identica el estado al que se va a pasar. 2. Reducciones. Esta acci on se lleva a cabo cuando en el arbol aparece la parte derecha de una producci on y se a nade la parte izquierda, subiendo un nivel en la construcci on del arbol. Se representa como Ri , donde i permite identicar la producci on utilizada en el proceso de reducci on. Los analizadores LR(1) tambi en utilizan una pila en la que se van almacenando los caracteres que se van procesando as como los estados por los que el reconocedor ha pasado. Veamos con un sencillo ejemplo como funcionar a un reconocedor LR(1), conociendo su Tabla de Acciones. Posteriormente estudiaremos c omo construir dicha tabla. Ejemplo 5.9 Sea la gram atica denida con los siguientes s mbolos: T = {a, (, )} N = {S, A} y las producciones: 1. S ::= A 2. A ::= a 3. A ::= (a) Las acciones se denen en funci on del estado del aut omata y del s mbolo de la cadena de entrada que se procesa en cada momento. Hay que tener en cuenta que las situaciones no denidas se consideran situaciones de error. La Tabla de Acciones asociada a este ejemplo se muestra a continuaci on. En la tabla aparece el s mbolo $, que indica el nal de la cadena de entrada. $ q0 q1 q2 q3 q4 q5 R1 R2 D4 D5 R3 a D2 ( D3 ) A D1

88

MANUALES UEX

Utilizando esta tabla veamos como se procesar a la cadena (a):

88

TEORA DE AUTMATAS Y LENGUAJES FORMALES

5.5. RECONOCIMIENTO ASCENDENTE Entrada (a)$ a)$ )$ $ $ $ Pila q0 q0 (q3 q0 (q3 aq4 q0 (q3 aq4 )q5 q0 A q0 Aq1 Acci on Desplazar a q3 Desplazar a q4 Desplazar a q5 Reducir por la 3a producci on A ::= (a) Desplazar a q1 Reducir por S ::= A (el proceso termina)

89

Veamos c omo se procesar a una cadena incorrecta como a) Entrada Pila a)$ q0 )$ q0 aq2 Se produce un error ya que en s mbolo ). Acci on Desplazar a q2 Error el estado q2 no hay ninguna acci on asociada al

5.5.1.

Construcci on de la Tabla de Acciones

La Tabla de Acciones se construye al mismo tiempo que se denen los estados. Para llevar este trabajo a cabo es necesario introducir el concepto de LR-item que indicar a el progreso del an alisis de la cadena. Denominamos LR-item a una producci on a la que se le coloca una marca (un punto) en alg un lugar de la parte derecha. Esta marca indica qu e parte de la cadena ha sido ya procesada y cu al es la que queda por analizar. Adem as, en los LR-items hay un conjunto de s mbolos terminales (separados por una coma de la producci on) a los que se llama s mbolos directores del LR-item. Ejemplo de un LR-item: [A ::= x.By, w1 , w2 ] (suponemos que A ::= xBy es una producci on de la gram atica y w1 , w2 T ) Los estados del analizador LR(1) ser an conjuntos de LR-items y cada LR-item, seg un la posici on en la que se encuentre el punto, indicar a la acci on que se debe llevar a cabo. Si detr as de la marca hay alg un s mbolo, la acci on que se realizar a ser a un desplazamiento al estado que contenga un LR-item similar pero con la marca desplazada en una posici on a la derecha. Acci on(p,B)= Desplazamiento a q Es decir, si [A ::= x.By, w] p y [A ::= xB.y, w] q entonces

Si la marca est a situada al nal de la producci on, la acci on a realizar ser a una reducci on por la producci on que representa el LR-item, siempre y cuando el car acter analizado sea uno de sus s mbolos directores.

MANUALES UEX 89

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA Por ejemplo, si [A ::= xBy., w] p entonces

90

Acci on(p,w)= Reducir por la producci on A ::= xBy En cada instante, el analizador va a tener una conguraci on (descripci on instant anea) determinada que viene dada por el contenido de la pila y por el fragmento de la cadena de entrada que a un no ha sido procesado. En la pila se almacenan los estados por los que ha ido pasando el analizador as como los s mbolos (terminales y no terminales) que est an ubicados en las zonas superiores del arbol de derivaci on. Por ejemplo: (q0 X1 q1 . . . Xm qm , aj aj +1 . . . an $) qi Q Xi ai T Veamos como var a la conguraci on del analizador en funci on de la acci on que se realice: Desplazamiento Si Accion(qm , aj ) = Dr La nueva conguraci on ser a: (q0 X1 q1 . . . Xm qm aj qr , aj +1 . . . an $) Se a nade a la pila el car acter procesado y el estado actual. on i es A ::= donde | | = r Reducci on Si Accion(qm , aj ) = Ri y la producci supondremos que los u ltimos r s mbolos almacenados en la pila coinciden con . Es decir, = Xmr+1 . . . Xm . En este caso, se sustituyen los u ltimos r s mbolos de la pila (y los estados que les acompa nan) por A. La nueva conguraci on ser a: (q0 X1 q1 . . . Xmr qmr Aqp , aj aj +1 . . . an ) Accion(qmr , A) = Dp donde

En este caso no ha sufrido ninguna modicaci on el fragmento de cadena que a un queda por procesar. Aunque aj ha sido tenido en cuenta para decidir la operaci on a realizar, no podemos considerar que haya sido procesado, es decir, no forma parte de la pila ni tampoco del arbol de derivaci on. M etodo para la construcci on de los LR-items Los estados se van creando en dos fases: en primer lugar se construye lo que podemos denominar el n ucleo del estado, posteriormente, y siempre que sea necesario, se a naden otros LR-items hasta cerrar el estado. Determinaci on del n ucleo de q0 . Para cada una de las producciones que tienen al s mbolo inicial en la parte izquierda (S::=x), a nadir al estado q0 el LR-item [S::= .x, $] Cierre de un estado. Si [A::=x.By,w] q y B N hay que a nadir al estado q LR-items construidos a partir de todas las producciones de la gram atica que tienen a B en la parte izquierda.

MANUALES UEX 90

TEORA DE AUTMATAS Y LENGUAJES FORMALES

5.5. RECONOCIMIENTO ASCENDENTE Para la producci on B::=z, hay que a nadir el LR-item [B::= .z, u] donde u = INIC(yw).

91

Creaci on del n ucleo de un nuevo estado. Si existe un LR-item de la forma [A::=x.Yz,w], se crea un nuevo estado con el LR-item [A::=xY.z,w] Ejemplo 5.10 Veamos c omo se crea la Tabla de S mbolos para el ejemplo anterior: 1. Crear el n ucleo del estado q0 [S::=.A, $] q0 2. Cerrar q0 q0 = {[S::=.A, $], [A::=.(a), $], [A::=.a, $]} Analizando estos tres LR-items y los que se construyen despu es, es evidente que: Accion(q0 , A) = D1 Accion(q0 , () = D3 Accion(q0 , a) = D2

3. Crear nuevos estados (en este caso est an ya cerrados) q1 q2 q3 q4 q5 = = = = = {[S::=A., $]} {[A::=a., $]} {[A::=(.a), $]} {[A::=(a.), $]} {[A::=(a)., $]} Accion(q1 , $) = R1 Accion(q2 , $) = R2 Accion(q3 , a) = D4 Accion(q4 , )) = D5 Accion(q5 , $) = R3

Ejemplo 5.11 C alculo del reconocedor LR(1) para la siguiente gram atica: T = {a, b} N = {S, A, B } y las producciones: 1. S ::= A 2. A ::= BA 4. B ::= aB 3. | 5. |b Esta gram atica genera el lenguaje (a b) Denici on de los estados: q0 q1 q2 q3 q4 q5 q6 = = = = = = = {[S::=.A, $],[A::=.BA, $],[A::=., $],[B::=.aB, a, b, $],[B::=.b, a, b,$]} {[S::=A., $]} {[A::=B.A,$], [A::=.BA,$], [A::=.,$], [B::=.aB,a,b,$], [B::=.b,a,b,$]} {[B::=a.B, a, b, $], [B::=.aB, a, b, $], [B::=.b, a, b,$]} {[B::=b., a, b,$]} {[A::=BA., $]} {[B::=aB., a, b, $]}

Analizando los LR-items de los estados se construye la siguiente tabla de acciones:

MANUALES UEX 91

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA $ R3 R1 R3 R5 R2 R4 a D3 D3 D3 R5 R4 b D4 D4 D4 R5 R4 A D1 D5 B D2 D2 D6

92

q0 q1 q2 q3 q4 q5 q6

Utilizando esta tabla, veamos como se procesar a la cadena ab: Entrada ab$ b$ $ $ $ $ $ Entrada a$ $ Gram aticas LR(1) Una gram atica es LR(1) siempre que sea posible construir un reconocedor LR(1) que sea determinista. Para que esto pueda ocurrir deben cumplirse las siguientes condiciones: 1. La gram atica debe ser aumentada, es decir, el s mbolo inicial no debe aparecer nunca en la parte derecha de ninguna producci on. Si no es as , basta con a nadir una producci on como S ::= S, en la que S se convierte en el nuevo s mbolo inicial de la gram atica. 2. No deben aparecer conictos a la hora de construir la tabla de acciones. Hay tres tipos de conicto: Pila q0 q0 aq3 q0 aq3 bq4 q0 aq3 Bq6 q0 Bq2 q0 Bq2 Aq5 q0 Aq1 Pila q0 q0 aq3 Acci on Desplazar a q3 Desplazar a q4 Reducir por la Reducir por la Reducir por la Reducir por la Reducir por la

5a 4a 3a 2a 1a

producci on producci on producci on producci on producci on

B ::= b (desp. q6 ) B ::= aB (desp. q2 ) A ::= (desp. q5 ) A ::= BA (desp. q1 ) S ::= A (naliza el proceso)

Veamos c omo se procesar a una cadena incorrecta como a Acci on Desplazar a q3 Error

MANUALES UEX

a ) Conicto desplazamiento/desplazamiento. Aparece cuando en un estado q hay dos items del siguiente tipo: [A ::= .a, u1] y [B ::= .a, u2 ]. La acci on asociada al estado q ante la llegada del s mbolo a podr a ser un desplazamiento al estado que contiene al LR-item [A ::= a., u1] o un desplazamiento al que contiene a [B ::= a., u2 ].

92

TEORA DE AUTMATAS Y LENGUAJES FORMALES

5.6. PROPIEDADES DE LOS L.I.C.

93

b ) Conicto reducci on/reducci on. Aparece cuando en un estado q hay dos items del siguiente tipo: [A ::= ., u] y [B ::= ., u]. La acci on asociada al estado q ante la llegada del s mbolo u podr a ser una reducci on utilizando la producci on A ::= o una reducci on utilizando la producci on B ::= . c ) Conicto desplazamiento/reducci on. Aparece cuando en un estado q hay dos items del siguiente tipo: [A ::= .a, u1 ] y [B ::= ., a]. La acci on asociada al estado q ante la llegada del s mbolo a podr a ser un desplazamiento al estado que contiene al LR-item [A ::= a., u1] o una reducci on utilizando la producci on B ::= . Ejemplo 5.12 Gram atica que no es LR(1). T = {a, b, c} N = {S, A, B } y las producciones: 1. S ::= cAB 3. A ::= Aa 5. B ::= Bb 2. |c 4. |a 6. |b Esta gram atica genera el lenguaje c + ca+ b+ Comenzamos la denici on de los estados: q0 = {[S::=.cAB, $], [S::=.c, $]} q1 = {[S::=c.AB,$],[A::=.Aa, b],[A::=.a, b]} q2 = {[S::=c., $]} No es necesario continuar ya que con esta informaci on el conicto es evidente: qu e acci on hay que realizar si estando en el estado q0 llega el s mbolo c? Si atendemos al primer LR-item deber amos desplazarnos a q1 pero si atendemos al segundo el desplazamiento deber a hacerse a q2 , por lo tanto es imposible construir un reconocedor LR(1) determinista.

5.6.

Propiedades de los L.I.C.

Teorema 5.1 El conjunto de los LIC est a cerrado para la uni on, la concatenaci on y el cierre de Kleene. Teorema 5.2 El conjunto de los LIC no est a cerrado para la intersecci on ni para la complementaci on. Ejemplo 5.13 Sean L1 = {an bn cn , n 0}, L2 = {an bn cm , n, m 0} y L3 = {an bm cm , n, m 0}. L2 y L3 son independientes del contexto, sin embargo, L1 = L2 L3 no lo es (se puede comprobar utilizando el lema del bombeo).

MANUALES UEX 93

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA

94

Como L1 L2 = L1 L2 , si los LIC fueran cerrados para la complementaci on tambi en lo ser an para la intersecci on y hemos comprobado en el ejemplo anterior que esto no es cierto. Teorema 5.3 Si L es un LIC y R es un Lenguaje regular, entonces L R es un LIC. Ejemplo 5.14 Sea L1 = {an bm an bm , n, m 0}, L2 = {ww, w (0 + 1) } y L3 = a+ b+ a+ b+ . Tenemos que L1 = L2 L3 . Como L1 no es un LIC (se puede demostrar con el lema del bombeo) y L3 es un lenguaje regular entonces, aplicando el teorema anterior, se deduce que L2 tampoco es un LIC. Denici on 5.7 (Sustituci on) Sean y dos alfabetos, se dene una sustituci on como una funci on s : P ( ) tal que a s(a) es un LIC. Esta funci on se puede extender a cadenas de caracteres y a lenguajes de forma natural. Denici on 5.8 (Homomorsmo) Un homomorsmo es un caso particular de sustituci on en el que h : Teorema 5.4 El conjunto de los LIC est a cerrado para las sustituciones y (como caso particular) para los homomorsmos.

5.6.1.

El lema del bombeo para LIC(pumping lemma )

El lema del bombeo enuncia una propiedad que deben cumplir todos los lenguajes independientes del contexto. El hecho de comprobar que un lenguaje no cumple dicha propiedad es suciente para demostrar que no es independiente del contexto. Sin embargo, en ning un caso este lema servir a para demostrar que un lenguaje es LIC. Lema 5.1 (El lema del bombeo para LIC) Sea L un lenguaje independiente del contexto, entonces existe una constante asociada al lenguaje n > 0, de manera que z L tal que |z | n, se cumple que z se puede descomponer en cinco partes z = uvwxy que verican:

MANUALES UEX

1. |vx| 1 2. |vwx| n 3. i 0 se cumple que uv iwxi y L

94

TEORA DE AUTMATAS Y LENGUAJES FORMALES

5.7. PROBLEMAS

95

5.7.

Problemas

5.1 Construir un Aut omata de Pila Vac a para los siguientes lenguajes denidos sobre el alfabeto = {a, b, c, 0, 1} 1. L1 = {a2n bn , n 0} 2. L2 = {awbw 1 c, w (0 + 1) } 3. L3 = {ab c} 4. L4 = {abn cdn , n 0} 5.2 Demuestra que cada una de las siguientes gram aticas de tipo 2 es ambigua y encuentra otra gram atica equivalente que no lo sea 1. S ::= A 2. S ::= A|B 3. S ::= aB |Ab A ::= AA|a|b A ::= aAb|ab A ::= aA| B ::= abB | B ::= bB |

5.3 Para cada una de las siguientes gram aticas de tipo 2 hay que comprobar si son LL(1) y/o LR(1). Si lo son hay que construir el correspondiente reconocedor y si no lo son hay que explicar el motivo 1. S ::= aA 2. S ::= aA 3. S ::= S 4. S ::= A 5. S ::= E 6. S ::= cAb A ::= bA| A ::= Ab|b S ::= 0S 0|A A ::= AB | E ::= E + T |T A ::= aA| A ::= 1A| B ::= aB |b T ::= a|(E )

5.4 Utliza el lema del bombeo para demostrar que los siguientes lenguajes no son independientes del contexto 1. L1 = {an bn cn , n 0} 3. L3 = {an bm cn dm , n, m 0} 4. L4 = {an bn cm , n = m n, m 0}

MANUALES UEX 95

2. L2 = {an bn cm , m n 0}

ELENA JURADO MLAGA


TEMA 5. G.I.C Y AUTOMATAS DE PILA 5. L5 = {an bn cm , 0 n m 2n} 5.5 Demuestra que la gram atica que aparece en el ejemplo 5.8 (p agina 86) es ambigua y no es LR(1) 5.6 Demuestra que una gram atica LR(1) no puede ser ambigua 5.7 Demuestra que el lenguaje L = {an bm cm dn , n, m 0} es independiente del contexto 5.8 Dise na una gram atica que genere par entesis anidados y demuestra que es LR(1) 5.9 Modica la siguiente gram atica de manera que sea LL(1) y demuestra que realmente lo es N = {D, T, L} S=D T = {entero, real, id, ,} D ::= T L T ::= entero|real L ::= L, id|id

96

MANUALES UEX 96

Tema 6 Gram aticas Atribuidas


Contenido
6.1. Concepto de Sem antica y de Gram atica Atribuida . . . 6.2. Atributos heredados y sintetizados . . . . . . . . . . . . . 97 99

6.3. Gram aticas S-atribuidas y L-Atribuidas . . . . . . . . . . 100 6.4. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Hasta ahora hemos visto como las gram aticas regulares (tipo 3) son adecuadas para representar las caracter sticas morfol ogicas de los elementos b asicos de un lenguaje de programaci on. Igualmente, las gram aticas independientes del contexto (tipo 2) lo son para representar las caracter sticas sint acticas. Sin embargo, dichas gram aticas no son lo sucientemente potentes como para representar los aspectos sem anticos de un lenguaje de programaci on. Veremos, a lo largo de este tema, c omo las gram aticas atribuidas pueden ser u tiles para realizar esta labor.

6.1.

Concepto de Sem antica y de Gram atica Atribuida

La sem antica est atica se ocupa de las condiciones que deben cumplir las construcciones de un programa para que su signicado sea correcto. 97

MANUALES UEX 97

La sem antica, considerada desde el punto de vista de los lenguajes de programaci on, se ocupa del signicado que tienen las instrucciones de los programas escritos en un determinado lenguaje. Para poder realizar un an alisis sem antico de un programa este debe ser correcto tanto desde el punto de vista l exico como desde el sint actico. En la sem antica de un lenguaje de programaci on pueden distinguirse dos aspectos: est atico y din amico.

ELENA JURADO MLAGA


TEMA 6. GRAMATICAS ATRIBUIDAS Ejemplo 6.1 Una sentencia de asignaci on en C como A := 5 + B es correcta desde un punto de vista l exico y sint actico, pero para que sea sem anticamente correcta la variable B debe ser de un tipo al que se le pueda aplicar el operador + y, adem as, el valor resultante de evaluar la expresi on 5 + B debe ser de un tipo compatible con el de la variable sobre la que se efect ua la asignaci on (A). La sem antica din amica se ocupa del signicado de una construcci on con objeto de que pueda ser traducido a c odigo directamente ejecutable por la m aquina. Ejemplo: A partir de una sentencia de asignaci on V Expresi on debe generarse c odigo que permita: 1. obtener la direcci on de memoria de la variable V 2. calcular el valor de la expresi on asignada 3. almacenar el valor calculado en el paso 2 en la direcci on de memoria obtenida en el paso 1 La sem antica de un lenguaje de programaci on, en sus dos vertientes est atica y din amica, es m as dif cil de especicar que los aspectos l exicos y sint acticos de un lenguaje. Se podr a utilizar el lenguaje natural pero su falta de precisi on provocar a probablemente ambig uedad. Tambi en resultar a dif cil conrmar que se ha realizado una especicaci on completa de todas las caracter sticas sem anticas del lenguaje. Las gram aticas atribuidas son un buen mecanismo formal para dar soluci on a este problema. Las gram aticas atribuidas pueden considerarse como una ampliaci on de las independientes del contexto que tiene por objeto dotar a la gram atica de capacidad para especicar correctamente la sem antica de un lenguaje de programaci on. Para conseguirlo, a los s mbolos de la gram atica se les asocian atributos que permiten denir ciertas caracter sticas sem anticas de los mismos, y a las producciones se les asocian funciones sem anticas que permiten calcular, evaluar y controlar dichos atributos. Denici on 6.1 (Gram atica atribuida) Si una Gram atica Independiente del Contexto se dene como G= {T , N , S, P } la gram atica atribuida se dene como GA ={G, AS, F S }, donde AS son los atributos sem anticos asociados a los s mbolos de la gram atica. FS son las funciones sem anticas asociadas a las producciones de la gram atica.

98

MANUALES UEX 98

TEORA DE AUTMATAS Y LENGUAJES FORMALES

6.2. ATRIBUTOS HEREDADOS Y SINTETIZADOS

99

De la misma forma que G permite denir los aspectos sint acticos de un lenguaje, GA permite denir los aspectos sem anticos. Un mismo s mbolo de la gram atica puede tener asociados varios atributos que permitan representar diferentes aspectos de dicho s mbolo. Por ejemplo, un s mbolo llamado X que representara variables de un lenguaje podr a tener dos atributos, uno llamado tipo que podr a tener los valores: real, entero, l ogico,. . . y otro llamado valor cuyo valor depender a del tipo mencionado anteriormente. Podr amos representarlo as : X X.tipo entero X.valor 534

Las funciones sem anticas denen las relaciones que se cumplen entre los atributos de los distintos s mbolos de la gram atica. Estas relaciones permiten calcular los valores de unos atributos en funci on de los valores de otros. Cuando se desea describir las funciones sem anticas asociadas a una producci on, estas deben aparecen encerradas entre llaves al nal o en alg un punto intermedio de la producci on. Si un s mbolo aparece varias veces en la misma producci on (por ejemplo, en las producciones recursivas) se utilizan sub ndices para distinguir unas instancias de otras. El sub ndice 0 se reserva para hacer referencia al s mbolo repetido cuando este aparece en la parte izquierda de la producci on y los sub ndices 1, 2, . . . se utilizan en orden para las diferentes apariciones del s mbolo en la parte derecha de la producci on. Por ejemplo: expr ::= expr + expr {expr0 .valor = expr1 .valor + expr2 .valor }

Esta producci on indica que una expresi on aritm etica puede construirse como la suma de otras dos expresiones m as simples y, en este caso, la acci on sem antica indica que el valor de la expresi on resultante ser a la suma de las dos expresiones simples.

6.2.

Atributos heredados y sintetizados

Una producci on gramatical puede representarse gr acamente como un arbol. Por ejemplo, la producci on A ::= x y z se puede representar as : A x y z

MANUALES UEX 99

Empleando la terminolog a t pica de las estructuras arb oreas podemos decir que A es el nodo padre de x, o que x es un nodo hermano de y. De acuerdo a esta terminolog a podemos distinguir dos tipos diferentes de atributos. Los atributos pueden ser sintetizados y heredados. El valor de los atributos sintetizados se calcula en funci on de los atributos de los nodos hijos. El valor de los

ELENA JURADO MLAGA


TEMA 6. GRAMATICAS ATRIBUIDAS

100

atributos heredados se calcula en funci on de los atributos de los nodos hermanos y/o padre.

6.3.

Gram aticas S-atribuidas y L-Atribuidas

En las gram aticas atribuidas el principal problema radica en la evaluaci on de los atributos. Gr acamente se puede pensar en el arbol de derivaci on que representa la estructura sint actica de manera que los atributos est an localizados en los diferentes nodos del arbol. As , un recorrido apropiado del arbol puede permitir calcular todos lo atributos. Pero si no se imponen ciertas restricciones este proceso puede ser largo y costoso. En funci on de que los atributos de una gram atica sean heredados o sintetizados se pueden denir las gram aticas S o L atribuidas. Dependiendo del tipo de la gram atica atribuida resultar a recomendable utilizar un determinado mecanismo para construir y procesar el arbol sint actico.

6.3.1.

Gram aticas S-atribuidas

Las gram aticas S-atribuidas son aquellas cuyos s mbolos s olo tienen atributos sintetizados. Con las gram aticas S-atribuidas es muy ecaz utilizar un reconocedor ascendente (por ejemplo, un reconocedor del tipo LR) ya que al mismo tiempo que se construye el arbol sint actico se pueden ir evaluando los atributos. El programa PCYACC genera un reconocedor sint actico-sem antico que realiza esta tarea. Ejemplo 6.2 El siguiente ejemplo de gram atica S-atribuida se utiliza para generar expresiones aritm eticas. Por simplicidad, consideraremos que las u nicas operaciones que se pueden realizar son la suma y la multiplicaci on. Los s mbolos expr y num, que representan las expresiones aritm eticas y los n umeros que aparecen en ellas respectivamente, tienen ambos un atributo sintetizado llamado valor que permite calcular el valor de las expresiones aritm eticas analizadas. Por simplicidad, el s mbolo num ser a considerado como terminal y su valor habr a sido obtenido en el proceso de an alisis l exico previo. Las acciones sem anticas de estas producciones permitir an obtener el valor de una expresi on aritm etica a partir de los valores de expresiones m as b asicas. expr ::= num {expr.valor = num.valor } expr ::= expr + expr {expr0 .valor = expr1 .valor + expr2 .valor } expr ::= expr expr {expr0 .valor = expr1 .valor expr2 .valor } La gura 6.1 muestra el a rbol de derivaci on de la expresi on 9 + 7 * 5. Al mismo tiempo que el arbol se construye de manera ascendente se calculan los atributos

100

MANUALES UEX

TEORA DE AUTMATAS Y LENGUAJES FORMALES


6.3. GRAMATICAS S-ATRIBUIDAS Y L-ATRIBUIDAS
expr.valor expr expr.valor 9 expr expr num.valor num 9 9 + num 7 expr.valor 7 num.valor 7 * 44 expr expr num 5 expr.valor 35 expr.valor 5 num.valor 5

101

Figura 6.1: Gram atica S-atribuida

sintetizados de todos los s mbolos. Finalmente se obtiene el valor de la expresi on completa.

6.3.2.

Gram aticas L-atribuidas

Las gram aticas L-atribuidas tienen atributos sintetizados y heredados, pero a los atributos heredados se les imponen algunas restricciones con objeto de facilitar el dise no de un algoritmo que permita evaluar todos los atributos de la gram atica. Los atributos heredados s olo pueden depender de los atributos heredados del nodo padre o de cualquier atributo de sus nodos hermanos, siempre que esos nodos hermanos aparezcan a su izquierda en la producci on. Es decir, si tenemos una producci on A ::= x1 x2 . . . xn Los atributos heredados de xi solo pueden calcularse en funci on de : 1. los atributos heredados de A 2. cualquier atributo (heredado o sintetizado) de x1 . . . xi1 Ejemplo 6.3 Veamos con un ejemplo abstracto c omo especicar claramente un fragmento de gram atica L-atribuida. Supongamos que tenemos la producci on

el s mbolo A tiene un atributo sintetizado(a1 ) y otro heredado (a2 ) el s mbolo x tiene s olo un atributo heredado (x1 )

101

MANUALES UEX

::=

x y

ELENA JURADO MLAGA


TEMA 6. GRAMATICAS ATRIBUIDAS el s mbolo y tiene un atributo sintetizado(y1 ) y otro heredado (y2 ) el s mbolo z tiene un atributo sintetizado(z1 ) Si deseamos representar los atributos de cada s mbolo dentro de la producci on, lo haremos de la siguiente forma: A.a1 a2 ::= x.x1 y.y1 y2 z.z1

102

donde el s mbolo indica que el atributo es heredado y el s mbolo indica que es sintetizado. Si adem as se quisieran representar las acciones sem anticas, estas deber an aparecer encerradas entre llaves y colocadas en el punto adecuado de la producci on, siguiendo las siguientes reglas: 1. Una acci on sem antica no podr a hacer referencia a un atributo sintetizado de un s mbolo que se encuentra a la derecha de dicha acci on. 2. Para calcular un atributo heredado de un s mbolo que est a en la parte derecha de una producci on, la acci on debe estar situada inmediatamente antes de ese s mbolo. 3. Los atributos sintetizados de un s mbolo s olo se pueden calcular en una producci on en la que dicho s mbolo se encuentre en la parte izquierda y una vez que se hayan evaluado todos los atributos de los s mbolos que aparecen en la parte derecha de la producci on, por tanto, la acci on correspondiente se ubicar a al nal de la producci on. Veamos un ejemplo de c omo se aplicar an estas reglas en el ejemplo anterior:

A ::= {x.x1 = f (A.a2 )} x {y.y2 = g (x.x1 )} y z {A.a1 = h(y.y2 , z.z1 )} No podemos asociar a esta producci on acciones sem anticas que eval uen los atributos a2 (por ser heredado se evaluar a en una producci on en la que el s mbolo A est e ubicado en la parte derecha), y1 y z1 (por ser atributos sintetizados se deben evaluar en producciones en las que los s mbolos y y z aparezcan en la parte izquierda). Las tres reglas vistas anteriormente tienen sentido si analizamos el algoritmo que se utiliza para evaluar los atributos en una gram atica L-atribuida al hacer un recorrido en preorden de cada uno de los nodos que forman el arbol sint actico.

102

MANUALES UEX

TEORA DE AUTMATAS Y LENGUAJES FORMALES


6.3. GRAMATICAS S-ATRIBUIDAS Y L-ATRIBUIDAS Algoritmo 6.1 Visitar (N) Input: N es un nodo de un a rbol sint actico Begin for all H hijo del nodo N (de izquierda a derecha ) do Evaluar los atributos heredados del nodo H Visitar (H) end for Evaluar los atributos sintetizados del nodo N End

103

Ejemplo 6.4 La siguiente gram atica L-atribuida permite generar una declaraci on de variables siguiendo las pautas del lenguaje C. Los s mbolos no terminales D, T y L representan los conceptos de declaraci on, tipo y lista de identicadores, respectivamente. En este ejemplo, los atributos que tienen los diferentes s mbolos gramaticales almacenan informaci on que representa el tipo de las variables que se van a denir. Adem as, el s mbolo terminal id tiene un atributo sintetizado que permite conocer el nombre de la variable y que habr a sido calculado en el proceso de an alisis l exico. La sem antica de estas instrucciones de declaraci on debe asociar a cada variable su tipo correspondiente y adem as debe almacenar, utilizando el procedimiento a nadir tabla, la informaci on asociada a cada variable en la tabla de s mbolos del compilador. D ::= T {L.tipoh = T.tipo} L T ::= INT T ::= REAL {T.tipo = 0} {T.tipo = 1} ID

L ::= {ID.tipoh = L.tipoh}

{a nadir tabla(ID.nombre, ID.tipoh )} L ::= {L1 .tipoh = L0 .tipoh} L, {ID.tipoh = L0 .tipoh} ID {a nadir tabla(ID.nombre, ID.tipoh )} Los atributos de L y de ID son heredados, por eso los llamamos tipoh, el atributo de T es sintetizado y se calcula en aquellas producciones que tienen a T en la parte izquierda (la segunda y la tercera).

103

MANUALES UEX

ELENA JURADO MLAGA


TEMA 6. GRAMATICAS ATRIBUIDAS

104

D L.tipoh T.tipo T int L.tipoh L.tipoh L 0

1 0

2
id.tipoh id 0 9

3 0
L id a ,

L id b

id.tipoh

4 0
id.tipoh

7 0

10

c aadir_tabla(c,0)

5 0

8 aadir_tabla(b,0)

6 aadir_tabla (a,0)

Figura 6.2: Gram atica L-atribuida

La gura 6.2 muestra el a rbol de derivaci on de una declaraci on de variables como int a, b, c , la numeraci on indica el orden en el que se realizar an las diferentes acciones sem anticas de acuerdo al algoritmo 6.1

6.4.

Problemas

6.1 Dada la siguiente gram atica atribuida: T = {id, cte, =, +} N = {asig, expr } S = asig 1. asig ::= id = expr {id.valor = expr.valor } 2. expr ::= id {expr.valor = id.valor } 3. |cte {expr.valor = cte.valor } 4. |expr + expr {expr0 .valor = expr1 .valor + expr2 .valor } Es esta gram atica S-atribuida o L-atribuida?

104

MANUALES UEX

Tema 7 M aquinas de Turing


Contenido
7.1. Introducci on. Antecedentes hist oricos . . . . . . . . . . . 105 7.2. Denici on y ejemplos de M.T.s . . . . . . . . . . . . . . . 107 7.3. Restricciones a la M.T. . . . . . . . . . . . . . . . . . . . . 110 7.4. Modicaciones de la M.T. . . . . . . . . . . . . . . . . . . 113 7.5. T ecnicas para la construcci on de M.T. . . . . . . . . . . . 116 7.6. La M.T. Universal . . . . . . . . . . . . . . . . . . . . . . . 118 7.7. La M.T. como generadora de lenguajes . . . . . . . . . . 119 7.8. La tesis de Church-Turing . . . . . . . . . . . . . . . . . . 120 7.9. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

La m aquina de Turing es un dispositivo te orico muy simple pero con una gran capacidad computacional, es decir, permite resolver problemas de una gran complejidad. Como veremos en los pr oximos temas, la m aquina de Turing es una herramienta formal muy u til para estudiar la teor a de la computabilidad.

7.1.

Introducci on. Antecedentes hist oricos

105

105

MANUALES UEX

En la d ecada de los 30, el ingl es Allan Turing dise n o el modelo matem atico de una m aquina te orica con un gran poder computacional, llamada M aquina de Turing (M.T.). En los siguientes p arrafos analizaremos los motivos cient cos e hist oricos que llevaron a Turing a dise nar esta m aquina. A nales del siglo XIX, la reci en nacida Teor a de Conjuntos hab a causado un gran impacto entre los matem aticos. Sin embargo, algunos pensadores como Bertrand Russell opinaban que dicha teor a no estaba bien formalizada ya que permit a enunciados tan parad ojicos como este:

ELENA JURADO MLAGA


TEMA 7. MAQUINAS DE TURING Si R es el conjunto de todos los conjuntos que no son miembros de s mismo, R R? Para evitar este tipo de problemas, Russell y Whitehead desarrollaron un sistema matem atico de axiomas y reglas de inferencia altamente formalizado, cuyo prop osito era poder traducir a este esquema cualquier razonamiento matem atico correcto. Las reglas estaban cuidadosamente seleccionadas para evitar planteamientos que pudieran llevar a conclusiones parad ojicas. Simult aneamente, el prestigioso matem atico alem an David Hilbert comenz o la tarea de establecer un esquema mucho m as completo y manejable. Hilbert pretend a demostrar que el sistema estaba libre de contradicciones. Nunca vacil o en proclamar su convicci on de que alg un d a con este sistema se podr a resolver cualquier problema matem atico o demostrar que carece de soluci on. Aseguraba que exist a un procedimiento por medio del cual era posible armar a priori si un problema pod a o no ser resuelto. Llam o a este problema Entscheidungsproblem (el problema de la decisi on). Sin embargo, un joven austriaco, llamado Kurt G odel, publico en 1931 un art culo titulado Sobre proposiciones formalmente indecidibles de los fundamentos de las matem aticas y sistemas relacionales. En el, G odel prob o el Teorema de la incompletitud en el que se armaban dos importantes cuestiones: 1. Si la teor a axiom atica de conjuntos es consistente existen teoremas que no pueden ser probados ni refutados. 2. No existe ning un procedimiento constructivo que pruebe que la teor a axiom atica de conjuntos es consistente. En la demostraci on de este teorema G odel tambi en propuso un interesante m etodo para enumerar objetos que originalmente no parecen ser enumerables. Utiliz o para ello el teorema fundamental de la Aritm etica o teorema de factorizaci on u nica que arma que todo entero positivo se puede representar de forma u nica como producto de factores primos. Por ejemplo, 6936 = 23 31 172 y no hay ninguna otra factorizaci on del n umero 6936 en n umeros primos. Esta idea es muy interesante y puede ser utilizada para catalogar el conjunto de las M.T.s como veremos en el siguiente tema. Veamos su aplicaci on para enumerar, por ejemplo, las expresiones aritm eticas. En primer lugar es necesario enumerar todos los elementos que pueden formar parte de una expresi on aritm etica ( operaciones y d gitos): + * 0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10 11 12 13 14

106

MANUALES UEX 106

De esta manera, una expresi on como 3*5-2 podr a representarse mediante la tupla (8-3-10-2-7) que puede asociarse con el n umero 28 33 510 72 117 . Debido a la unicidad de la factorizaci on en n umeros primos podemos reconstruir la expresi on aritm etica a partir de su c odigo (n umero de orden) asociado.

TEORA DE AUTMATAS Y LENGUAJES FORMALES


Y EJEMPLOS DE M.T.S 7.2. DEFINICION

107

Para los cient cos mencionados anteriormente era fundamental el concepto de algoritmo o proceso efectivo, consider andolo como un m etodo para resolver un problema gen erico en un n umero nito de pasos mediante operaciones conocidas y realizables. Desde este punto de vista, Turing dise n o su m aquina como un dispositivo capaz de realizar un algoritmo. Apoy o las teor as de G odel al demostrar que algunos problemas no pueden resolverse con una M.T. La gran ventaja de la M.T. es que, a pesar de su simplicidad, tiene un gran poder computacional y no se ve limitada por las caracter sticas tecnol ogicas de una computadora como la velocidad de procesamiento o la capacidad de la memoria. Por esta raz on, se la considera como un s mbolo invariante de la inform atica. En esta misma epoca, Emil Post, as como Church y Kleene, realizaron estudios similares a los de Turing.

7.2.

Denici on y ejemplos de M.T.s

La M.T. es un modelo matem atico para representar a una m aquina te orica. A pesar de su simplicidad la M.T. tiene el mismo poder computacional que una computadora de prop osito general. La M.T. es interesante, sobre todo, por el conjunto de lenguajes que permite reconocer y tambi en generar (lenguajes recursivamente enumerables) y por el conjunto de funciones que puede computar (funciones calculables). El modelo b asico de M.T. est a formado por un aut omata nito, con un dispositivo de lectura/escritura que controla una cinta de longitud innita. La cinta est a dividida en celdas en las que se almacena un u nico s mbolo o un espacio en blanco. Aunque la longitud de la cinta es innita, en cada momento s olo un n umero nito de celdas contienen s mbolos diferentes al espacio en blanco, que pertenecen a un alfabeto tambi en nito. El dispositivo de lectura/escritura puede explorar(leer) el contenido de una celda y grabar(escribir) un nuevo s mbolo sobre ella, seguidamente se desplaza en una posici on hacia la izquierda o hacia la derecha. Por tanto, la M.T. dependiendo del s mbolo le do y del estado actual del aut omata, realiza las siguientes operaciones: 1. Cambia de estado. 2. Escribe un s mbolo en la celda analizada. 3. Desplaza la cabeza de lectura/escritura a la izquierda o a la derecha en una posici on. Con el siguiente esquema se representa una M.T. que se encuentra en un estado llamado p y cuya cabeza de lectura/escritura se nala a una celda que contiene al s mbolo a

107

MANUALES UEX

ELENA JURADO MLAGA


TEMA 7. MAQUINAS DE TURING a p Denici on 7.1 (M aquina de Turing) Formalmente la M.T. se dene como una tupla: MT = {Q, , , f, q0 , b, F } Q es el conjunto nito de estados es el alfabeto de la cadena de entrada es el alfabeto de la cinta q0 Q es el estado inicial b es el espacio en blanco b , pero b / F Q es el conjunto de estados nales f : Q Q {I, D } Inicialmente, en la cinta hay una colecci on nita de s mbolos de precedida y seguida por blancos (b), el estado de la M.T. es q0 y la cabeza de lectura/escritura suele apuntar al primer s mbolo distinto de b que hay en la cinta. Denici on 7.2 (Descripci on Instant anea de una M.T.) Llamaremos Descripci on Instant anea(D.I.) de la M.T. a 1 q2 donde q es el estado actual de la m aquina y 1 2 es el contenido de la cinta. La cabeza de lectura/escritura analiza en ese momento el primer s mbolo de 2 . Dentro de la cadena 1 2 podemos encontrar el car acter b, pero el primer car acter de 1 es el car acter diferente de b m as a la izquierda de la cinta y el u ltimo car acter de 2 es el car acter diferente de b m as a la derecha de la cinta. Teniendo en cuenta el concepto de D.I. los movimientos de la M.T. pueden denirse de la siguiente forma: Sea una M.T. cuya D.I. es x1 . . . xi1 qxi . . . xn

108

MANUALES UEX

Si f (q, xi ) = (p, y, I ) entonces la nueva D.I. es x1 . . . xi2 pxi1 yxi+1 . . . xn Podemos representar la transici on de la forma: x1 . . . xi1 qxi . . . xn x1 . . . xi2 pxi1 yxi+1 . . . xn

108

TEORA DE AUTMATAS Y LENGUAJES FORMALES


Y EJEMPLOS DE M.T.S 7.2. DEFINICION

109

Una representaci on m as gr aca ser a la siguiente: x1 . . . xi1 xi . . . xn x1 . . . xi1 y xi+1 . . . xn q p para indicar que hemos pasado de una situaci on Se puede utilizar el s mbolo a otra en uno o m as pasos. Denici on 7.3 (Lenguaje aceptado por una M.T.) Est a formado por la cadenas denidas sobre el alfabeto que hacen que la M.T. llegue a un estado nal, partiendo de una situaci on inicial en que la cadena est a en la cinta de entrada, q0 es el estado inicial y la cabeza de lectura/escritura apunta a la celda ocupada por el primer car acter de dicha cadena.
L(MT ) = {w / q0 w 1 p2

donde p F 1 , 2 }

Ejemplo 7.1 (Complemento binario) Esta M.T. obtiene el complemento binario de un n umero binario almacenado en la cinta. Q = {q0 , q1 } F = {q1 } = {0, 1} = {0, 1, b} La funci on de transici on se dene en la siguiente tabla: 0 q0 1D 1 q0 0D b q1 bI

q0

Ejemplo 7.2 (Paridad) Esta M.T. calcula la paridad del n umero de 1s que hay en la cadena binaria de entrada. Al nal del proceso, se a nade a la derecha de la cadena un 0 para indicar que hay un n umero par de 1s y un 1 para indicar que el n umero de 1s es impar. Q = {q0 , q1 , q2 } F = {q2 } = {0, 1} = {0, 1, b} La funci on de transici on se dene en la siguiente tabla: 0 q0 0D q1 0D 1 q1 1D q0 1D b q2 0I q2 1I

q0 q1

109

MANUALES UEX

Ejemplo 7.3 (Duplicar) Esta M.T. recibe una cadena formada por 1s en la cinta de entrada y duplica su tama no. El proceso comienza en el extremo derecho de la cadena. Para llevar a cabo este trabajo, cada vez que encuentra un 1 lo marca sustituy endolo por un 0 y se desplaza hasta el nal de la cadena donde a nade otro 0 (que representa a un 1 marcado ). Al nal del proceso, en el estado q2 se cambian todos los 0s por 1s para reconstruir la informaci on. Q = {q0 , q1 , q2 , q3 } F = {q3 } = {1} = {0, 1, b} La funci on de transici on se dene en la siguiente tabla:

ELENA JURADO MLAGA


TEMA 7. MAQUINAS DE TURING 1 q1 0D q1 1D 0 q0 0I q1 0D q2 1D b q2 bD q0 0I q3 bI

110

q0 q1 q2

Ejemplo 7.4 (Imagen especular) Esta M.T. construye la imagen especular de un n umero binario. Es decir, si recibe la cadena de entrada 100 al acabar el proceso la informaci on que hay en la cinta es 100001. Esta m aquina es similar a la anterior con la diferencia de que, en este caso, hay que duplicar dos tipos de s mbolos (0 y 1) en lugar de uno. Tambi en en este caso los d gitos se procesar an de derecha a izquierda. Los 0s y 1s son reemplazados por As y Bs respectivamente cada vez que se procesan (duplican). Al nal del proceso, en el estado q3 se reconstruye la cadena cambiando las As y Bs por 0s y 1s. Q = {q0 , q1 , q2 , q3 , q4 } F = {q4 } = {0, 1} = {0, 1, A, B, b} La funci on de transici on se dene en la siguiente tabla: q0 q1 q2 q3 0 q1 AD 1 q2 BD A q0 AI q1 AD q2 AD q3 0D B q0 BI q1 BD q2 BD q3 1D b q3 bD q0 AI q0 BI q4 bI

Ejemplo 7.5 (Par entesis anidados) Esta M.T. reconoce cadenas de par entesis anidados. Las parejas de par entesis que se van procesado se marcan convirti endolos en *. En este caso se dispone de dos estado nales f1 y f2 que indican respectivamente si la cadena inicial es o no correcta, adem as, a pesar de ser algo redundante se escribe en la cinta la letra S o N (si o no). Al nal del proceso no se reconstruye la informaci on inicial que, por tanto, se pierde. Esta m aquina puede reconocer cadenas como estas: ((())) o (()()) pero no reconocer a (()))(. Q = {q0 , q1 , q2 , q3 , f1 , f2 } F = {f1 , f2 } = {(, )} = {(, ), , S, N, b} La funci on de transici on se dene en la siguiente tabla: q0 q1 q2 q3 ( q0 (D q0 D q3 I q3 I ) q1 I * q0 D q1 I q2 I q3 I b q2 bI f2 ND f1 SD f2 ND marca un ) y pasa a q1 marca un ( y pasa a q0 al nal, comprueba que no quedan ( se llega a q3 si hay m as ( que )

MANUALES UEX

7.3.

Restricciones a la M.T.

La M.T. que se ha denido en la secci on anterior es la m as gen erica posible. Sin embargo, veremos a continuaci on que se le pueden imponer restricciones a la denici on sin que esto afecte a la potencia computacional de la m aquina.

110

TEORA DE AUTMATAS Y LENGUAJES FORMALES

7.3. RESTRICCIONES A LA M.T.

111

Las restricciones se aplicar an sucesivamente a: 1. el alfabeto, 2. la estructura de la cinta, y 3. la capacidad de la m aquina para realizar diferentes operaciones (escribir, desplazarse o cambiar de estado) en una sola transici on.

7.3.1.

M.T. con alfabeto binario

Cualquier M.T. es equivalente (esto signica que realiza la misma tarea) a una M.T. con un alfabeto binario = {0, 1, b}. Para conseguirlo, ser a necesario codicar en binario los caracteres del alfabeto original. Cada transici on original se desglosar a en varias transiciones de la m aquina con alfabeto binario con el consiguiente incremento de estados intermedios, como se indica en el siguiente ejemplo: Sea Z una M.T. denida sobre el alfabeto = {x, y, z, w }. Supongamos que Z es la M.T. denida sobre un alfabeto binario, equivalente a Z , que pretendemos construir. Codicamos los s mbolos de de la siguiente forma: x = 00 y = 10 z = 01 w = 11 Supongamos que f (p, x) = (q, y, D) es una de las transiciones de Z . En la m aquina Z esta transici on se desglosar a en las siguientes: reconoce el primer 0 de x f (p, 0) = (p0 , 0, D) f (p0 , 0) = (px , 0, I ) reconoce el segundo 0 de x f (px , 0) = (px0 , 1, D) cambia 00 por 10 (x por y ) f (px0 , 0) = (q, 0, D) se desplaza a la derecha y pasa al estado q Para conseguir en Z transiciones equivalentes a la de Z ha sido necesario utilizar tres nuevos estados p0 , px , px0 . En general, si Z tiene un alfabeto de tama no m ser a necesario buscar n N tal que 2n1 < m 2n de manera que todos los s mbolos del alfabeto de Z podr an ser codicados mediante una cadena binaria de longitud n. El proceso que deber a llevar a cabo Z ser a el siguiente: 1. Analizar los n caracteres que representan a un s mbolo del alfabeto original. En el peor de los casos ser an necesarias n transiciones y 2n + 2n1 + . . . + 20 nuevos estados. 2. Una vez reconocido el s mbolo, Z deber a retroceder como m aximo n posiciones con el n de poder modicar la cadena de longitud n que acaba de analizar. 3. Finalmente la cabeza de lectura/escritura deber a desplazarse hasta llegar a la posici on adecuada.

111

MANUALES UEX

ELENA JURADO MLAGA


TEMA 7. MAQUINAS DE TURING

112

7.3.2.

M.T. con la cinta limitada en un sentido

Dada una M.T. con una cinta innita en ambos sentidos, siempre existe una m aquina equivalente cuya cinta est a limitada por un extremo pero es innita por el otro. Sea Z una M.T. con una cinta innita en ambos sentidos. Se pueden numerar las casillas de la siguiente forma: -2 -1 1 2 a la siguiente esEs posible construir una M.T. equivalente Z cuya cinta tendr tructura: 0 1 -1 2 -2 mbolo nuevo En Z existe una nueva casilla, numerada con el 0, que contiene un s (). Adem as de a nadir esta nueva casilla, se ha redistribuido la informaci on de Z , de manera que cada casilla de Z contiene la misma informaci on que su correspondiente casilla de Z (la que tiene la misma numeraci on). Veamos con un ejemplo el funcionamiento de Z . Supongamos que f (p, x) = (q, y, D) es una de las transiciones de Z y supongamos que x est a almacenado en la casilla n(n > 0), despu es de realizar el cambio de s mbolo hay que desplazarse a la casilla n + 1 (que ahora est a situada dos posiciones a la derecha de n). En la m aquina Z est a transici on se desglosar a en las siguientes: f (p, x) = (pD , y, D) f (pD , ?) = (q, ?, D) ? es un comod n que representa a cualquier s mbolo a diferente si la casilla ocupada por x fuera la etiEl comportamiento de Z ser quetada con n ya que un desplazamiento a la derecha en Z supone un doble desplazamiento hacia la izquierda en Z . La transici on anterior se desglosar a en: f (p, x) = (pD , y, I ) f (pD , ?) = (q, ?, I ) Si la posici on ocupada por x fuera la -1, habr a que a nadir una transici on al pasar por la posici on 0. f (q, ) = (q, , D) En general, la nueva m aquina tiene un n umero de estados 6 veces mayor que Z ya que cada estado q de Z se multiplica por 3 (q, qI , qD ) en la parte positiva de la cinta y otro tanto ocurre con la parte negativa de la cinta (q , qI , qD ).

7.3.3.

M.T. con restricciones en cuanto a las operaciones que realiza simult aneamente

MANUALES UEX

En el modelo original de M.T., se realizan tres operaciones en cada transici on: 1. Escritura de un s mbolo 2. Cambio de estado 3. Movimiento de la cabeza de lectura/escritura

112

TEORA DE AUTMATAS Y LENGUAJES FORMALES

7.4. MODIFICACIONES DE LA M.T.

113

Veamos, con diferentes ejemplos, como, aumentando el n umero de estados, se puede restringir el n umero de operaciones que se realizar an simult aneamente. Imposibilidad para escribir y cambiar de estado simult aneamente La transici on f (p, x) = (q, y, D) se convierte en: f (p, x) = (pxD , x, P ) f (pxD , x) = (pxD , y, P ) f (pxD , y ) = (q, y, D) Imposibilidad para escribir y desplazarse simult aneamente La transici on f (p, x) = (q, y, D) se convierte en: f (p, x) = (pD , y, P ) f (pD , y ) = (q, y, D) De forma an aloga, dada una M.T. es posible construir otra equivalente a ella que ejecute una sola operaci on en cada transici on.

7.4.

Modicaciones de la M.T.

Una de las razones de la gran aceptaci on de la M.T. como modelo general de computaci on es que el modelo est andar denido al comienzo del tema es equivalente a otras versiones de M.T. que, sin aumentar el poder computacional del dispositivo, permiten resolver con m as facilidad determinados problemas.

7.4.1.

Almacenamiento de informaci on en el control nito

Es posible utilizar el estado de control (perteneciente a un conjunto nito) para almacenar una cantidad nita de informaci on. Para ello cada estado se representa como un par ordenado donde el primer elemento representa realmente al estado y el segundo a la informaci on que se pretende almacenar. Veamos su utilidad con un ejemplo en el que se dene una M.T. que reconoce el lenguaje L = 01 + 10 . Como el primer s mbolo de la cadena no puede volver a aparecer, se almacena con el estado de control. Las transiciones no denidas son situaciones de error, es decir, la cadena no ha sido reconocida. Q = {q0 , q1 } {0, 1, b} estado inicial = [q0 , b] F = {[q1 , b]} = {0, 1} = {0, 1, b} [q0 , b] [q1 , 0] [q1 , 1] 0 [q1 , 0]0D [q1 , 1]0D 1 [q1 , 1]1D [q1 , 0]1D b

Es evidente que no se aumenta la potencia computacional del modelo ya que simplemente se ha utilizado una notaci on diferente para designar a los estados.

113

MANUALES UEX

[q1 , b]0P [q1 , b]0P

este estado indica que la cadena comienza por 0 este estado indica que la cadena comienza por 1

ELENA JURADO MLAGA


TEMA 7. MAQUINAS DE TURING

114

7.4.2.

Pistas m ultiples

En este caso se considera que la cinta est a dividida en un n umero k de pistas, de manera que los s mbolos de la cinta se representan como k -tuplas. Tampoco en este caso se aumenta la potencia del modelo ya que s olo hay un cambio en la representaci on de los s mbolos de la M.T. En este sentido, es un caso an alogo al anterior. Esta variaci on de la M.T., concretamente con tres pistas, puede resultar muy u til para resolver operaciones aritm eticas con dos datos. Cada dato se almacena en una pista y el resultado se almacena en la tercera (que inicialmente est a vac a). Por ejemplo, una M.T. que sume n umeros binarios comenzar a con la siguiente informaci on en la cinta: b b b 1 1 b 1 1 b 0 1 b b b b

y nalmente la cinta quedar a as : b b 1 1 1 1 1 1 0 0 1 1 b b b

Ejemplos de transiciones para esta m aquina: 0 0 f (q0 , 1 ) = (q0 , 1 , I ) b 1 0 0 f (q0 , 0 ) = (q0 , 0 , I ) b 0

7.4.3.

S mbolos de chequeo

MANUALES UEX 114

Como se ha visto en ejemplos anteriores, para resolver muchos problemas es importante marcar aquellos s mbolos que se van procesando. Hasta ahora estos s mbolos se marcaban sustituy endolos por otros diferentes, sin embargo esta misma idea puede llevarse a cabo de una forma m as intuitiva y sencilla utilizando en la cinta una segunda pista en la que s olo se almacenan espacios en blanco y otro s mbolo (por ejemplo, ) que s olo aparece debajo del s mbolo de la primera pista (la original) que ha sido procesado. Esto no es m as que un caso particular de una M.T. con pistas m ultiples. Veamos en el siguiente ejemplo como se utilizar an estos s mbolos de chequeo para resolver el problema planteado en el ejemplo 3 en el que la M.T. duplicaba el n umero de 1s que hab a en la cinta inicialmente. Ejemplo 7.6 (Duplicar - segunda versi on) Q = {q0 , q1 , q2 } F = {q2 } = {1} = {0, 1, b}

TEORA DE AUTMATAS Y LENGUAJES FORMALES

7.4. MODIFICACIONES DE LA M.T.

115

El proceso comienza en el extremo derecho de la cinta y la funci on de transici on se dene en la siguiente tabla: 1 b 1 D q1 1 1 I q0 1 D q1 b b b D q2 b 1 I q0

q0 q1

7.4.4.

M aquinas multicinta

En este caso la M.T. dispone de k cintas y k cabezas de lectura/escritura. Cada cabeza trabaja (lee y escribe) sobre su cinta y se mueve con total independencia de las dem as. Para comprobar que este tipo de m aquinas no aumenta el poder computacional de la M.T. est andar se puede construir una m aquina equivalente a ella utilizando varias pistas y s mbolos de chequeo. Supongamos que la m aquina Z dispone de tres cintas y una situaci on concreta puede ser representada como se indica en el siguiente esquema: Ai p

Ck r Es posible construir una nueva m aquina multipista que sea equivalente a ella. Esta nueva m aquina tendr a un n umero de pistas igual al doble de las cintas de la m aquina original, en este caso seis. Las pistas pares almacenan un s mbolo de chequeo que sirve para indicar qu e celda de la pista inmediatamente superior se est a procesando en ese momento. Las pistas impares tienen la misma funci on que las correspondientes cintas de la m aquina original. Evidentemente, esta nueva M.T. tendr a m as estados porque tiene que ir procesando secuencialmente cada pareja de pistas buscado el s mbolo de chequeo correspondiente. Ai Ck

Bj q

Bj

115

MANUALES UEX

ELENA JURADO MLAGA


TEMA 7. MAQUINAS DE TURING

116

7.4.5.

M.T. no determinista

Dado un estado y un s mbolo analizado, la M.T. no determinista tiene un n umero nito de posibilidades entre las que elegir para realizar el siguiente movimiento. Cada elecci on consiste en un nuevo estado, un s mbolo a grabar y una direcci on de movimiento de la cabeza. Por ejemplo: f (q, a) = {(p1 , a, D), (p2 , b, I ), (p3, a, I ), . . .} Como ocurr a con los Aut omatas Finitos, el No Determinismo no a nade m as potencia a la M.T., ni siquiera la combinaci on del No Determinismo con cualquiera de las modicaciones previamente planteadas aumenta el poder computacional de la M.T.

7.5.

T ecnicas para la construcci on de M.T.

116

MANUALES UEX

De la misma forma que al programar, al dise nar M.T.s tambi en es posible utilizar t ecnicas de dise no modular que simplican la tarea de su construcci on. De hecho, una M.T. puede simular el comportamiento de cualquier tipo de subrutina, incluyendo procedimientos recursivos con cualquier mecanismo conocido de paso de par ametros. Para que una M.T. act ue como subrutina de otra, la idea general es que su estado nal se convierta en un estado de retorno a la m aquina que la ha llamado. La llamada se efect ua, por tanto, a trav es del estado inicial de la subrutina y el retorno a trav es de su estado nal. Veamos, en primer lugar, como encadenar dos M.T. M1 y M2 de manera que primero trabaje M1 e inmediatamente despu es lo haga M2 utilizando como entrada la salida de M1 . Para llevar a cabo este encadenamiento basta con realizar una transici on desde el estado nal de M1 hasta el inicial de M2 . Es decir, si p1 y q1 son los estados inicial y nal, respectivamente de M1 y p2 y q2 son los estados inicial y nal de M2 , hay que incluir la transici on f (q1 , x) = (p2 , x, P ) x . Por ejemplo, si deseamos construir una M.T.M que calcule la funci on f () = 2x2 , podr amos construir M1 que calcule g (x) = x2 y M2 que calcule h(x) = 2x, as M ser a el resultado de encadenar M1 con M2 . En ocasiones s olo es deseable que trabaje M2 si el proceso de M1 ha terminado a bajo ciertas condiciones (simulaci on de una sentencia if ). Por ejemplo M1 M2 indica que M2 s olo trabajar a en el caso de que al acabar M1 , la cabeza de lect./esc. a,b est e situada sobre el s mbolo a. De la misma forma, M1 M2 indica que M2 s olo trabajar a en el caso de que al acabar M1 la cabeza de lec./esc. est e situada sobre una celda que contiene al s mbolo a o al s mbolo b. En este segundo caso, habr a que a nadir las siguientes transiciones: f (q1 , a) = (p2 , a, P ) f (q1 , b) = (p2 , b, P )

TEORA DE AUTMATAS Y LENGUAJES FORMALES


DE M.T. 7.5. TECNICAS PARA LA CONSTRUCCION f (q1 , x) = (f, x, P ) El esquema M1 a x \{a, b} donde f es un nuevo estado nal. M2

117

indica que si al acabar el proceso, M1 est a se nalando b M3 a una celda que contiene el s mbolo a, la m aquina M2 debe continuar el proceso, pero si la casilla contiene el s mbolo b, ser a M3 la m aquina que continuar a trabajando. En otro caso el proceso naliza. Para materializar esta situaci on habr a que a nadir las transiciones: f (q1 , a) = (p2 , a, P ) f (q1 , b) = (p3 , b, P ) f (q1 , x) = (f, x, P ) x \{a, b} donde f es un nuevo estado nal. Ejemplo 7.7 (Multiplicar) Este ejemplo servir a para ilustrar la utilizaci on de una M.T. como subrutina de otra. Se construir a una M.T. que multiplique n umeros enteros, que se representan como cadenas de 1s. Por ejemplo, un 4 se representa como 1111. Se utiliza el 0 como separador entre los datos iniciales. La M.T. se dise nar a de manera que si la entrada es 1m 01n 0 la salida deber a ser 1nm . B asicamente, la M.T. copiar a al nal de la cadena el segundo bloque de 1s (1n ) tantas veces como 1s haya en el primer bloque (1m ), los 1s de este primer bloque se van borrando (es una forma sencilla de marcarlos ). En primer lugar, se dise na una M.T., llamada COPIAR que copia al nal de la cadena de entrada n 1s. Es decir, si la situaci on inicial de la M.T. se describe as 1m 0q1 1n 01i, la situaci on nal ser a 1m 0q5 1n 01i+n . Los 1s (del segundo bloque) que se van copiando se marcan cambi andolos temporalmente por un 2, y adem as se procesan de izquierda a derecha. La funci on de transici on de COPIAR se dene en la siguiente tabla, adem as q1 y q5 son respectivamente los estados inicial y nal: q1 q2 q3 q4 0 q4 0I q2 0D q3 0I q5 0D 1 q2 2D q2 1D q3 1I 2 b q3 1I q1 2D q4 1I cambia un 1 por un 2 y pasa a q2 se desplaza al extr. derecho y a nade un 1 se desplaza hacia la izq. buscando un 2 cambia los 2s por 1s

117

MANUALES UEX

A continuaci on, se dise na la M.T. MULTIPLICAR que utiliza la m aquina COPIAR a modo de subrutina. La M.T. MULTIPLICAR va borrando los 1s del primer dato al mismo tiempo que, mediante la M.T. COPIAR, copia n 1s al nal de la cadena. Cuando se han borrado todos los 1s del primer dato se borran tambi en los del segundo as como los 0s que act uan de separadores de manera que nalmente en la cinta s olo queda el resultado de la operaci on (1nm ). En este caso los estados inicial y nal son q0 y q12 .

ELENA JURADO MLAGA


TEMA 7. MAQUINAS DE TURING 0 q0 q5 q6 q7 q8 q9 q10 q11 1 q6 bD q7 1I q6 1D q9 1I q9 1I q11 bD q12 bD q11 bD b elimina un 1 del primer dato llama a COPIAR q10 bD q0 bD

118

q1 0D q8 0I

retrocede al extr. izq. para volver a empezar borra un 0 borra el segundo dato y un 0

7.6.

La M.T. Universal

El concepto de M.T. es tan general y potente que es posible construir una M.T. que sea capaz de simular el comportamiento de cualquier otra M.T., a esta m aquina se la llama M aquina de Turing Universal, y su forma de trabajar puede compararse con la de un ordenador que se comporta de una u otra forma dependiendo del programa que ejecuta en cada momento. En primer lugar, veremos c omo se podr a representar toda la informaci on necesaria para simular el comportamiento de una M.T. llamada M. Es necesario conocer la funci on de transici on, el estado inicial, el contenido inicial de la cinta y la posici on de la cabeza de lectura/escritura. Sin perdida de generalidad supondremos que M trabaja con un alfabeto binario y que necesitamos m bits para codicar cada uno de sus estados. El movimiento de la cabeza se puede codicar con un u nico bit (por ejemplo, 0=Derecha, 1=Izquierda). As cada transici on f (p, a) = (q, b, D) puede codicarse con 2m + 3 s mbolos binarios de la forma xx ...x . . . y b0, donde xx . . . x es una codicaci on binaria del estado p y yy . . . y a yy
m

representa al estado q . La M.T. M puede representarse de la siguiente forma:

dd . . . . . . d < q . . . qd > xx . . . xayy . . . yb0 > xx . . . xayy . . . yb0 > . . . Los s mbolos < y > permiten delimitar los diferentes bloques que constituyen esta cadena. El primer bloque(dd . . . . . . d) representa el contenido de la cinta de la M.T. M, y el asterisco se coloca inmediatamente a la izquierda del s mbolo al que apunta la cabeza de lectura/escritura. Esta informaci on va cambiando a lo largo del proceso representando en cada momento el contenido de la cinta de M. El segundo bloque representa el estado actual de M (q . . . q ) y el s mbolo al que apunta la cabeza (d), que es el que est a a la derecha del asterisco en el bloque anterior. Esta informaci on tiene longitud m + 1 y tambi en cambia a lo largo del proceso. A partir de este punto,

118

MANUALES UEX

TEORA DE AUTMATAS Y LENGUAJES FORMALES

7.7. LA M.T. COMO GENERADORA DE LENGUAJES

119

el resto de los bloques (de longitud 2m + 3) representan a los diferentes valores de la funci on de transici on. Cada transici on puede considerarse como un registro formado por dos partes: la primera (xx . . . xa) es una etiqueta que identica a la transici on, la segunda (yy . . . yb0) puede ser considerada como el dato de la transici on. Por lo tanto, esta u ltima parte de la cadena (> xx . . . xayy . . . yb0 > . . .) puede ser vista como una colecci on de registros formados cada uno de ellos por una etiqueta y un dato. Con estas consideraciones, ser a necesario construir una M.T. localizadora de informaci on cuya misi on sea buscar en esta colecci on de registros aqu el que tenga una etiqueta determinada. Es evidente que, conociendo el signicado de los datos que hay en la cinta, el segundo bloque de informaci on (< q . . . qd >) constituye la etiqueta que es necesario buscar. Una vez localizado el registro (transici on) adecuado ser a necesario copiar el dato (yy . . . yb) en el segundo bloque de la cinta, y modicar adecuadamente el primer bloque. B asicamente, la M.T. Universal est a constituida por una M.T. que localiza informaci on en la cinta y otra que copia informaci on de una parte a otra de la cinta.

7.7.

La M.T. como generadora de lenguajes

En los ejemplos de M.T. que hemos visto hasta ahora, estas b asicamente se ocupaban de reconocer lenguajes o de calcular funciones. Sin embargo, hay una tercera forma de utilizar una M.T. y es como generadora de cadenas. Este tipo de M.T.s disponen de varias cintas de forma que en una de ellas llamada cinta de salida, inicialmente vac a, s olo se llevan a cabo operaciones de escritura que van llenando la cinta con las palabras del lenguaje. Es necesario utilizar un s mbolo, que no pertenece al alfabeto sobre el que est a denido el lenguaje, y que act ua como separador entre una palabra y otra. Por ejemplo, si se construyera una M.T. que generara el lenguaje formado por todas las cadenas binarias y se utilizara como separador el s mbolo , en un momento determinado la informaci on que habr a en la cinta de salida ser a: ... b 0 1 0 0 0 1 ...

119

MANUALES UEX

Es evidente que este tipo de M.T.s s olo para en el caso de que el lenguaje a generar sea nito, por tanto, la m aquina descrita en el ejemplo anterior no parar a nunca. Para los lenguajes de tipo 0, que se estudian con m as detalle en el pr oximo tema, siempre es posible construir una M.T. que los genere. Como veremos, dentro de este conjunto de lenguajes existe un importante subconjunto que es el de los lenguajes recursivos. En el caso de los lenguajes recursivos es posible construir una M.T. que genere las palabras de dicho lenguaje en orden creciente de tama nos, es decir, el tama no de la palabra generada en la posici on n + 1 es mayor o igual que el de la

ELENA JURADO MLAGA


TEMA 7. MAQUINAS DE TURING

120 generada en la posici on n.

7.8.

La tesis de Church-Turing

Podemos decir que una M.T. es un modelo general de computaci on y esto es equivalente a decir que cualquier procedimiento algor tmico que sea ejecutable (por una persona o una m aquina) puede ser desarrollado por una M.T. La noci on de procedimiento algor tmico que act ua sobre una secuencia de s mbolos es id entica al concepto de un proceso que puede ser ejecutado por una M.T. Esta armaci on la formul o el l ogico Alonzo Church a principios de la d ecada de los 30 y suele denominarse tesis de Church o tesis de Church-Turing. No es una armaci on matem atica exacta, ya que carecemos de una denici on precisa para el t ermino procedimiento algor tmico y, por lo tanto, no es algo que pueda comprobarse. Sin embargo esta tesis es aceptada de forma general, debido a diferentes motivos: 1. No se ha planteado ning un tipo de computo que pueda incluirse en la categor a de procedimiento algor tmico y que no pueda ejecutarse en una M.T. 2. Se han propuesto mejoras al dise no de la M.T. original y en todos los casos ha sido posible demostrar que el poder computacional de las M.T.s no se ve a modicado. 3. Se han propuesto otros modelos te oricos de c omputo, que siempre son equivalentes al de las M.T.s La tesis de Church-Turing no puede probarse de manera precisa debido justamente a la imprecisi on del t ermino proceso algor tmico. Sin embargo, una vez adoptada esta tesis, ya podemos darle un signicado preciso al t ermino: un algoritmo es un procedimiento que puede ser ejecutado por una M.T. Esta denici on nos proporciona un punto de partida para analizar problemas que pueden o no resolverse con una M.T. como veremos en los siguientes temas.

7.9.

Problemas

7.1 Construir una M.T. que reciba como entrada dos cadenas de 1s separadas por el s mbolo y que compruebe si tienen la misma longitud.

MANUALES UEX 120

7.2 Construir una M.T. con tres pistas que reciba dos n umeros binarios y que indique cu al de los dos es mayor. Consideraremos que los datos est an almacenados en las dos primeras pistas y alineados a la derecha, es decir, los bits menos signicativos de ambos est an situados en la misma columna. En la tercera pista se escribir a una

TEORA DE AUTMATAS Y LENGUAJES FORMALES

7.9. PROBLEMAS

121

G, una P o una I indicando respectivamente que el primer n umero es m as grande, m as peque no o igual que el segundo. 7.3 Construir una M.T. con tres pistas que sume dos n umeros binarios. Consideraremos que los datos est an almacenados en las dos primeras pistas y alineados a la derecha. El resultado se escribir a en la tercera pista que inicialmente est a vac a. 7.4 Construir una M.T. para reconocer cada uno de los siguientes lenguajes L1 = {0n 1n , n N} L2 = {ww 1, w (0 + 1) } L3 = {wcw / w, w (a + b) w = w }

121

MANUALES UEX

Tema 8 Gram aticas de tipo 0 y 1


Contenido
8.1. Gram aticas de tipo 0 . . . . . . . . . . . . . . . . . . . . . 123 8.2. Lenguajes de tipo 0 . . . . . . . . . . . . . . . . . . . . . . 124 8.3. El problema de la parada . . . . . . . . . . . . . . . . . . . 126 8.4. Lenguajes y gram aticas de tipo 1 . . . . . . . . . . . . . . 126

Este cap tulo se dedica al estudio de las gram aticas menos restrictivas, las de tipo 0 y las de tipo 1. Los aut omatas que reconocen estas gram aticas son las M aquinas de Turing (estudiadas en el cap tulo anterior) y los Aut omatas Linealmente Acotados respectivamente. La diferencia principal entre ambos aut omatas est a en el tama no de la cinta que utilizan. Mientras que la M aquina de Turing dispone de una cinta te oricamente innita, los Aut omatas Linealmente Acotados utilizan una cinta nita, aunque su longitud pueda ser tan grande como sea necesario en cada caso.

8.1.

Gram aticas de tipo 0

123

123

MANUALES UEX

Dentro de la jerarqu a de Chomsky, el grupo m as amplio de gram aticas, llamadas gram aticas de tipo 0 y tambi en gram aticas sin restricciones son aquellas cuyas producciones tienen la siguiente forma: u ::= v u + v adem as u = xAy donde A N x, y Es decir, en la parte izquierda de las producciones hay, al menos, un s mbolo no terminal. Este conjunto de gram aticas es equivalente al de gram aticas con estructura de frase, cuya denici on es algo m as restringida. Las producciones de las gram aticas con estructura de frase son de la forma:

ELENA JURADO MLAGA


TEMA 8. GRAMATICAS DE TIPO 0 Y 1

124

xAy ::= xvy

donde

A N

x, y, v

En estas gram aticas es posible que la parte derecha de la producci on sea m as corta que la izquierda (cuando v = ), en este caso se dice que es una producci on compresora . Una gram atica compresora es la que tiene alguna regla compresora, en este caso las derivaciones pueden ser decrecientes. El conjunto de los lenguajes generados por las gram aticas de tipo 0 coincide con el conjunto de los generados por las gram aticas con estructura de frase y se llaman lenguajes recursivamente enumerables. Estos lenguajes son reconocidos por M aquinas de Turing. Ejemplo 8.1 La gram atica de tipo 0 que se describe a continuaci on genera el lenguai je L = {a2 } N = {S, A, B, C, D, E } T = {a} S ::= ACaB Ca ::= aaC CB ::= DB |E aD ::= Da P = AD ::= AC aE ::= Ea AE ::=

Esta gram atica no tiene estructura de frase (debido, por ejemplo, a la quinta y s eptima producciones), sin embargo es posible encontrar una gram atica con estructura de frase que sea equivalente a ella.

8.2.

Lenguajes de tipo 0

124

MANUALES UEX

Como ya sabemos, los lenguajes generados por las gram aticas de tipo 0 se llaman lenguajes recursivamente enumerables y son los reconocidos por las M aquinas de Turing. Pero, adem as, estos lenguajes tambi en pueden ser generados por M aquinas de Turing. El nombre de recursivamente enumerables es debido a que sus palabras pueden ser generadas ordenadamente por una M aquina de Turing. Dicho de otra forma, existe un algoritmo que permite generar sus palabras una tras otra. Evidentemente, si el lenguaje es innito, la M aquina de Turing que lo genera no para nunca. Este grupo de lenguajes incluye a algunos para los que no es posible saber si una palabra no pertenece al lenguaje. Si L es uno de estos lenguajes, cualquier M aquina de Turing que lo reconozca no parar a cuando reciba como entrada algunas palabras que no pertenecen a L. En este caso, si w L sabemos que la M.T. parar a, pero si

TEORA DE AUTMATAS Y LENGUAJES FORMALES

8.2. LENGUAJES DE TIPO 0

125

la m aquina no para, no podemos saber si el motivo es que la palabra no pertenece al lenguaje o es que todav a no ha terminado el proceso de reconocimiento. Teniendo en cuenta estas cuestiones es conveniente considerar un subconjunto de los lenguajes recursivamente enumerables, a los que llamaremos lenguajes recursivos, que son los aceptados por M aquinas de Turing que paran siempre, sea cual sea la entrada que reciban. Por supuesto, la parada de la m aquina debe ir precedida por la aceptaci on o no de la palabra. En el caso de los lenguajes recursivos siempre es posible dise nar una M aquina de Turing que genere las palabras del lenguaje seg un un orden creciente de tama no. A continuaci on veremos unos resultados que, entre otras cosas, demuestran que la uni on es una operaci on cerrada para estos dos conjuntos de lenguajes. Teorema 8.1 1. L es recusivo L y L son recursivamente enumerables 2. L es recursivo L es recursivo 3. L1 y L2 son recursivos = L1 L2 es recursivo 4. L1 y L2 son recursivamente enumerables = L1 L2 es recursivamente enumerable Demostraci on. 1. Si L y L son recursivamente enumerables existen dos M aquinas de Turing M1 y M2 que reconocen respectivamente las palabras de L y L. A partir de M1 y M2 es posible construir una nueva m aquina M que se limitar a a anotar cu al de las dos m aquinas M1 o M2 acepta a la cadena de entrada. Evidentemente M reconoce a L (y tambi en a L) y adem as para, sea cual sea la entrada, por lo que L (y tambi en L) es un lenguaje recursivo. Si L no fuera recursivo, no podr amos construir M , ya que tampoco podr amos construir M2 . M1 resulta insuciente para construir M , ya que, en el caso de que M1 no pare no es posible saber si la m aquina ha entrado en un bucle innito o si necesita m as tiempo para procesar la cadena. Si L es recursivo es evidente que tambi en es recursivamente enumerable, adem as podemos armar que L tambi en es recursivamente enumerable ya que la M.T. que reconoce a L tambi en permitir a reconocer a L.

3. Si L y L son recursivos existen dos M aquinas de Turing M1 y M2 que reconocen respectivamente las palabras de L y L. A partir de M1 y M2 es posible construir

125

MANUALES UEX

2. Si L es recursivo la misma M.T. que lo reconoce permite reconocer a L, basta con intercambiar el signicado de las salidas.

ELENA JURADO MLAGA


TEMA 8. GRAMATICAS DE TIPO 0 Y 1 as una nueva m aquina M que permita reconocer a las palabras de L1 L2 . Adem esta m aquina parar a siempre. 4. Si L y L son recursivamente enumerables existen dos M aquinas de Turing M1 y M2 que reconocen respectivamente las palabras de L y L. A partir de M1 y M2 es posible construir una nueva m aquina M que permita reconocer a las palabras de L1 L2 . No es posible asegurar que M parar a cuando reciba como entrada una palabra que no pertenezca a L1 L2 , ya que en ese caso es posible que no paren ni M1 ni M2 .

126

8.3.

El problema de la parada

Dada una M aquina de Turing con un dato en la cinta de entrada, no existe ning un algoritmo que permita conocer a priori si la m aquina se detendr a o no. Este problema es, por ese motivo, indecidible. Este problema puede enunciarse de otra forma. Teniendo en cuenta que el conjunto de las M aquinas de Turing puede enumerarse, es posible asociar a cada m aquina un n umero natural. Es posible construir una M aquina de Turing H que tome como datos de entrada al par (n, x) donde n representa a la m aquina pn y x a un dato para esa m aquina, y devuelva 1 o 0 dependiendo de si la m aquina pn para o no teniendo a x como dato? La respuesta a esta pregunta es negativa, no es posible construir dicha m aquina. Para demostrarlo utilizaremos la t ecnica de reducci on al absurdo. Supongamos que E es un lenguaje recursivamente enumerable pero no recursivo (sabemos que existen). Sea M = pr la M aquina de Turing que reconoce a E , esta m aquina no para cuando recibe como entrada algunas de las palabras que no pertenecen a E . Por hip otesis H deber a comportarse de la siguiente forma: H (r, ) = 1 si M para con el dato (esto ocurre si E ) 0 si M no para con el dato (esto ocurre si / E)

De esta manera H permitir a reconocer las palabras del lenguaje E y adem as parar a siempre, pero entonces E ser a un lenguaje recursivo, lo cual es falso por hip otesis. Por lo que podemos concluir que es imposible construir H.

MANUALES UEX

8.4.

Lenguajes y gram aticas de tipo 1

Las gram aticas de tipo 1 de la jerarqu a de Chomsky, tambi en llamadas gram aticas dependientes (o sensibles) al contexto son aquellas cuyas producciones tienen la forma:

126

TEORA DE AUTMATAS Y LENGUAJES FORMALES


8.4. LENGUAJES Y GRAMATICAS DE TIPO 1

127

xAy ::= xvy

donde

A N

x, y

v +

Es decir, en cada derivaci on, un s mbolo no terminal A se sustituye por una cadena v (no nula), siempre que este se encuentre en un determinado contexto. Se puede incluir la producci on S ::= , necesaria cuando pertenece al lenguaje. Es evidente que el conjunto de las gram aticas de tipo 1 est a incluido en el conjunto de las gram aticas con estructura de frase y que no admiten producciones compresoras. Los lenguajes de tipo 1 pueden ser reconocidos por Aut omatas Linealmente Acotados. Estos aut omatas constituyen un caso particular de las M aquinas de Turing en el que la cinta est a acotada por ambos lados. Para ello, se denen dos s mbolos de la cinta especiales (por ejemplo: < y >) que delimitan el principio y el nal de la zona u til de la cinta que puede ser manipulada. La cabeza de lectura/escritura no podr a desplazarse m as a la izquierda del s mbolo que indica el comienzo de dicha zona u til ni m as a la derecha del s mbolo que indica el nal. Por tanto, los Aut omatas Linealmente Acotados disponen de una cinta nita pero con un tama no que puede ser tan grande como sea necesario para el proceso.

127

MANUALES UEX

128

TEMA 8. GRAMATICAS DE TIPO 0 Y 1

Tema 9 Computabilidad y M aquinas de Turing


Contenido
9.1. Funciones calculables . . . . . . . . . . . . . . . . . . . . . 129 9.2. Funciones recursivas . . . . . . . . . . . . . . . . . . . . . . 131 9.3. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

En este tema abordaremos el concepto de computabilidad o calculabilidad que se puede aplicar a aquellos problemas que pueden ser resueltos mediante un algoritmo. A partir de la denici on de m aquina de Turing podremos plantear una denici on formal para este concepto. Tambi en estudiaremos el concepto de recursividad y su relaci on con el de calculabilidad.

9.1.

Funciones calculables

natural, la m aquina debe detenerse dejando en la cinta un n umero de unos, siendo f (n1 , n2 , . . . , nr ) = . Es posible que para una tupla concreta la m aquina no se detenga, en ese caso la funci on no estar a denida para esos valores. 129

129

MANUALES UEX

La Teor a de la Computabilidad parte de la idea inicial de hacer precisa la noci on intuitiva de funci on calculable, es decir, una funci on que pueda ser calculada autom aticamente mediante un algoritmo. Dada una funci on f : Nr N , a veces es posible construir una M aquina de Turing Zf que se comporte como dicha funci on. Es decir, si Zf inicia su funcionamiento con la siguiente informaci on en la cinta 11 . . . 1 0 11 . . . 1 0 . . . 0 11 . . . 1 , donde cada ristra de unos representa a un n umero
n1 n2 nr

ELENA JURADO MLAGA


TEMA 9. COMPUTABILIDAD Y MAQUINAS DE TURING

130

Denici on 9.1 (Funci on parcialmente calculable) Se dice que una funci on f : D Nr N es parcialmente calculable si existe una M aquina de Turing tal que para cada tupla t D , la m aquina calcula f (t) Denici on 9.2 (Funci on calculable) Se dice que una funci on es calculable si es parcialmente calculable y est a denida sobre todo Nr , es decir, D = Nr Ejemplo 9.1 Funciones calculables y parcialmente calculables 1. f1 (n1 , n2 ) = n1 + n2 es calculable 2. f2 (n1 , n2 ) = n1 n2 si n1 n2 es parcialmente calculable 3. f3 (n1 , n2 ) = n1 n2 si n1 n2 es calculable 0 si n1 < n2

Las deniciones anteriores pueden ampliarse de forma natural a funciones denidas sobre otros conjuntos, por ejemplo, denidas sobre cadenas de s mbolos. De esta forma podemos establecer las siguientes relaciones entre lenguajes de tipo 0 y funciones calculables o parcialmente calculables. Dado un lenguaje L , denimos su funci on caracter stica de la siguiente forma: fL : N w fL (w ) =

1 0

si w L si w /L

La funci on caracter stica de un lenguaje determina si una palabra pertenece o no pertenece a dicho lenguaje. Tambi en es posible denir una funci on que s olo indique si una palabra pertenece a un lenguaje, dicha funci on no estar a denida en todo el dominio y se comportar a de la siguiente forma:
fL : N w fL (w ) = 1 si w L

Considerando estas deniciones, podemos armar que:

MANUALES UEX

Si L es un lenguaje recursivo, su funci on caracter stica es calculable. Si L es un lenguaje recursivamente enumerable, entonces es el dominio de una funci on parcialmente calculable (fL ).

130

TEORA DE AUTMATAS Y LENGUAJES FORMALES

9.2. FUNCIONES RECURSIVAS

131

Ejemplo 9.2 (Funci on no calculable) En este ejemplo no s olo presentaremos una funci on no calculable sino tambi en un lenguaje que no es recursivo y otro que ni siquiera es recursivamente enumerable. El conjunto de todas las M aquinas de Turing asociadas a funciones denidas de N en N es innito pero numerable, basta tener en cuenta que una M.T. cualquiera puede describirse como una cadena nita de s mbolos (tal y como se explic o en la denici on de la M aquina de Turing Universal) as como el m etodo que G odel propuso para enumerar objetos que inicialmente no parecen ser enumerables (p agina 106). Por tanto, podemos describir dicho conjunto de M.T.s de la siguiente forma: MT = {p0 , p1 , . . . , pn , . . .}

A partir de dicha lista de m aquinas, podr amos denir la siguiente funci on: f : N N n f (n) =

0 si pn no para con el dato n k + 1 si pn para con el dato n y devuelve el valor k

Si suponemos que f es calculable, existe una M aquina de Turing que realiza el mismo trabajo que f . Consideremos que pr sea esta m aquina. Si f (r ) = 0 pr no para con la entrada r Si f (r ) = 0 f (r ) = k + 1 donde k es el resultado que devuelve la m aquina pr En cualquiera de los dos casos, la situaci on que se produce es absurda ya que f y pr no tienen el mismo comportamiento, por lo tanto, la suposici on inicial es falsa y f no es una funci on calculable. El conjunto L1 = {n N/ pn no para si recibe como dato a n} no es recursivamente enumerable y adem as, el conjunto L2 = L1 es recursivamente enumerable pero no es recursivo. Veamos, a continuaci on, como justicar estas armaciones. En la secci on 8.3 qued o demostrado que L1 no es un lenguaje recursivamente enumerable, ya que es imposible construir una M.T. que lo reconozca. Por otra parte, L2 = {n N/ pn para si recibe como dato a n} es un lenguaje recursivamente enumerable porque la M aquina de Turing Universal permite saber si un n umero pertenece a L2 y, por tanto, puede reconocer los elementos de L2 , sin embargo no es recursivo ya que su complementario L2 = L1 no es recursivamente enumerable (teorema 8.1).

La recursi on consiste en denir un concepto en t erminos de si mismo. Esta idea puede aplicarse a las deniciones de funciones, de conjuntos y, en particular, de lenguajes.

131

MANUALES UEX

9.2.

Funciones recursivas

ELENA JURADO MLAGA


TEMA 9. COMPUTABILIDAD Y MAQUINAS DE TURING

132

A continuaci on veremos una primera denici on de funci on recursiva. Denici on 9.3 (Funci on recursiva) Una funci on f : Nn N se considera recursiva si tiene los siguientes elementos: Deniciones b asicas que establecen de manera axiom atica el valor que toma la funci on para determinados valores del conjunto origen. Por ejemplo, f act(0) = 1. Una o m as reglas recursivas que permiten calcular nuevos valores de la funci on a partir de otros valores conocidos. Por ejemplo, f act(n) = n f act(n 1), n1

Aplicar las deniciones b asicas y las recursivas un n umero nito de veces debe ser suciente para calcular cualquier valor de la funci on. A pesar de que esta denici on es muy intuitiva no es lo sucientemente estricta como para denir los casos m as complejos de recursividad. Por este motivo, se introducir an en las siguientes secciones, los conceptos de funci on recursiva primitiva y funci on -recursiva. Diremos que una funci on recursiva es total si est a denida para todos los valores del conjunto origen y parcial si lo est a s olo para un subconjunto propio del conjunto origen. Para denir un conjunto de manera recursiva se especican ciertos objetos del conjunto y luego se describen uno o m as m etodos generales que permiten obtener nuevos elementos a partir de los existentes. Por ejemplo, podemos denir recursivamente el lenguaje as : Para cada w y cada a tenemos que aw

9.2.1.

Funciones recursivas primitivas

Es posible denir las funciones recursivas utilizando s olo funciones b asicas y ciertas reglas que permiten mezclar funciones para construir otras m as complejas. Las funciones consideradas b asicas (Kleene) son las siguientes: Funci on constante 0 Su valor es independiente del argumento. C (x) = 0, x N Funci on sucesor A cada n umero natural le hace corresponder su sucesor siguiendo el orden habitual, de menor a mayor. Por ejemplo, S (5) = 6, S (22) = 23. Hay que hacer notar que la suma no se ha denido formalmente, por eso no puede ser utilizada en esta denici on.

132

MANUALES UEX

TEORA DE AUTMATAS Y LENGUAJES FORMALES

9.2. FUNCIONES RECURSIVAS

133

Funciones de proyecci on Reciben n argumentos y devuelven el argumento i-esimo, es decir la proyecci on sobre la dimensi on i. Pin (x1 , . . . , xn ) = xi A continuaci on veremos dos reglas que nos permitir an construir funciones m as complejas a partir de las b asicas. Denici on 9.4 (Regla de composici on) Dadas las siguientes funciones: 1 , . . . , m , denidas como i : Nn N : Nm N

Se dene la composici on de estas m + 1 funciones como : Nn N tal que, (x1 , . . . , xn ) = (1 (x1 , . . . , xn ), . . . , m (x1 , . . . , xn )) Denici on 9.5 (Regla de recursi on primitiva) Dadas dos funciones: , denidas como : Nn N : Nn+2 N Se puede denir a partir de ellas, una nueva funci on : Nn+1 N tal que, (0, x1 , . . . , xn ) = (x1 , . . . , xn ) (y + 1, x1 , . . . , xn ) = (y, (y, x1, . . . , xn ), x1 , . . . , xn ) En el caso particular de que n = 0, se dene as : (0) = k (y + 1) = (y, (y )) Denici on 9.6 Decimos que una funci on es recursiva primitiva si se puede denir a partir de las funciones b asicas mediante cero o m as aplicaciones de las reglas de composici on y de recursi on primitiva. Aunque el n umero de funciones recursivas primitivas es muy amplio, existen algunas funciones recursivas que no son primitivas. Un ejemplo es la funci on de Ackermann, que se dene de la siguiente forma: A(0, x) = x + 1 A(n + 1, 0) = A(n, 1) Por este motivo debemos incluir otra regla para la generaci on de funciones recursivas que nos permitir a ampliar su n umero, de esta manera llegamos a la denici on de funci on -recursiva. A(n + 1, x + 1) = A(n, A(n + 1, x))

133

MANUALES UEX

ELENA JURADO MLAGA


TEMA 9. COMPUTABILIDAD Y MAQUINAS DE TURING

134

9.2.2.

Funciones -recursivas

Para ampliar el n umero de funciones que podemos generar a partir de las funciones recursivas primitivas, a nadiremos una nueva regla de composici on: la minimizaci on. Denici on 9.7 (Regla de minimizaci on) on de minimizaci on Dada la funci on: : Nn+1 N se dene la funci : Nn N tal que, (x1 , . . . , xn ) = min{y/(x1 , . . . , xn , y ) = 0 z < y, (x1, . . . , xn , y )est a denida} En otras palabras, hace corresponder a cada entrada x el menor entero que cumple que (x, y ) = 0. Denici on 9.8 (Funci on -recursiva) Decimos que una funci on es -recursiva, o simplemente recursiva, si se puede denir a partir de las funciones b asicas mediante cero o m as aplicaciones sucesivas de las reglas de composici on, recursi on primitiva y minimizaci on. El concepto de recursividad est a ntimamente unido al de computabilidad, ya que toda funci on computable es -recursiva. Adem as, el conjunto de las m aquinas de Turing es equivalente al de las funciones -recursivas. Es decir un problema se puede resolver mediante m aquinas de Turing si y s olo si se puede plantear utilizando funciones recursivas.

9.3.

Problemas

9.1 Dene recursivamente las siguientes funciones: 1. La suma de dos n umeros enteros 2. La multiplicaci on de dos n umeros enteros 9.2 Dene recursivamente los siguientes lenguajes: 1. L1 = {ww 1/w (0 + 1) } 2. L2 = {0n 1n /n 0} 3. Dado el alfabeto = {i, (, ), +, }, considera el lenguaje formado por expresiones aritm eticas que pueden o no tener par entesis. Por ejemplo: (i + i), i + i, (i + i) (i + i), etc.

MANUALES UEX 134

9.3 Demuestra que las siguientes funciones son recursivas primitivas:

TEORA DE AUTMATAS Y LENGUAJES FORMALES

9.3. PROBLEMAS 1. La funci on constante K(x)= k 2. La funci on predecesor, P (x) = 3. La funci on suma 4. La funci on producto 5. La funci on sustracci on propia, sp(x, y ) = xy x>y 0 xy x1 x>1 0 x=0

135

6. La funci on sustracci on absoluta, sa(x, y ) = |x y | 7. Las funciones m aximo y m nimo 8. La funci on signo, sg (x) = 1 x>0 0 x=0

135

MANUALES UEX

Tema 10 Introducci on a la Complejidad Computacional


Contenido
10.1. Complejidad y M aquinas de Turing . . . . . . . . . . . . 137 10.2. Medidas de complejidad algor tmica . . . . . . . . . . . . 138 10.3. Problemas P, NP y NP-completos . . . . . . . . . . . . . 141

De entre todos los problemas que pueden plantearse, el conjunto de aquellos que son computables, es decir, que pueden ser resueltos aplicando un algoritmo, es muy peque no. Sin embargo, no todos los problemas computables son factibles en la realidad por requerir a veces demasiados recursos, ya sean de espacio de memoria o de tiempo. La teor a de la complejidad algor tmica es la encargada de denir los criterios b asicos para saber si un problema computable es factible, dicho de otro modo, si existe un algoritmo eciente para su resoluci on y en este caso cu al es su grado de eciencia.

10.1.

Complejidad y M aquinas de Turing

137

137

MANUALES UEX

Hasta este momento hemos analizado si los problemas son solubles o insolubles, es decir, si pueden o no ser resueltos mediante una m aquina de Turing (un algoritmo). Sin embargo, en la vida real los recursos de computo disponibles son limitados y por tanto podemos encontrarnos con problemas que son solubles, pero que podemos considerar intratables debido a la gran cantidad de tiempo y memoria que son necesarios para resolverlos. En esta secci on introduciremos una terminolog a que nos permitir a analizar preguntas como cu anto tiempo tardaremos en resolver un problema?

ELENA JURADO MLAGA


A LA COMPLEJIDAD COMPUTACIONAL TEMA 10. INTRODUCCION

138

A priori, establecer un criterio universal para poder saber cu an eciente es un algoritmo no es sencillo porque un mismo problema puede resolverse sobre diferentes tipos de m aquinas, con diferentes grados de eciencia. La eciencia de un algoritmo est a en funci on del tiempo y de la cantidad de memoria que se necesite para ejecutar el programa, y esto a su vez depende del hardware utilizado. Sin embargo, la M aquina de Turing permite que nos liberemos de la mayor parte de estas ligaduras materiales. Recordemos que al estudiar la M aquina de Turing no se impuso ning un l mite de espacio ni de tiempo, es decir, la M aquina de Turing no padece limitaciones en cuanto a la longitud de la cinta utilizada ni en cuanto al n umero de movimientos que realiza (tiempo de ejecuci on). Por esta raz on utilizaremos la M aquina de Turing para medir la complejidad de un algoritmo.

10.2.

Medidas de complejidad algor tmica

La complejidad de una computaci on se mide por la cantidad de espacio y de tiempo que consume. Las computaciones ecientes tienen unas exigencias de recursos peque nas (este calicativo debe ser considerado de una manera relativa). Los recursos que necesita una computaci on que acepta cadenas de alg un lenguaje, suelen depender del tama no (longitud) de la cadena de entrada. En los siguientes p arrafos consideraremos, en primer lugar, los recursos espaciales y despu es los temporales. Si M es una m aquina de Turing, denotaremos por L(M) al lenguaje que reconoce dicha m aquina. Denici on 10.1 (Complejidad espacial) La m aquina M con k pistas tiene una complejidad espacial S(n), si para cualquier entrada de longitud n, consulta como m aximo S(n) casillas. Tambi en podemos decir que M es una M aquina de Turing espacialmente acotada por S(n), o que L(M) es un lenguaje con complejidad espacial S(n). Se cumple siempre que S(n) 1 Teorema 10.1 Si una M aquina de Turing con k pistas y cota espacial S(n) acepta al lenguaje L, entonces existe una M aquina de Turing con una sola pista y cota espacial S(n) que tambi en lo acepta. Es decir, el n umero de pistas de trabajo utilizadas para aceptar un lenguaje no afecta a la complejidad espacial de L. Denici on 10.2 (Clases de complejidad espacial) La familia de los lenguajes aceptados por M aquinas de Turing deterministas con complejidad espacial S(n) se llama ESPACIOD(S(n)). La familia de los lenguajes

138

MANUALES UEX

TEORA DE AUTMATAS Y LENGUAJES FORMALES


10.2. MEDIDAS DE COMPLEJIDAD ALGOR ITMICA

139

aceptados por M aquinas de Turing no deterministas con esa misma complejidad espacial se llama ESPACION(S(n)). Estas clases se conocen como clases de complejidad espacial. Teorema 10.2 Sean S1 , S2 y S funciones de N en N. Supongamos que S1 (n) S2 (n), para todo n N, y que c > 0. Entonces se cumple: 1. ESPACIOD(S1 (n)) ESPACIOD(S2 (n)) 2. ESPACION(S1 (n)) ESPACION(S2 (n)) 3. ESPACIOD(S(n)) ESPACION(S(n)) 4. ESPACIOD(S(n)) = ESPACIOD(cS(n)) 5. ESPACION(S(n)) ESPACIOD(S (n)2 ) Aunque el espacio es un recurso importante de cualquier M aquina de Turing, el tiempo de computaci on tambi en lo es. Consideraremos que la complejidad temporal se mide por el n umero de movimientos que hace la m aquina. Denici on 10.3 (Complejidad temporal) Supongamos que M es una m aquina de Turing que realiza como m aximo T(n) movimientos sobre una cadena de longitud n, entonces se dice que M tiene una complejidad temporal T(n) o que es una m aquina con una cota temporal T(n). Tambi en se dice que L(M) es un lenguaje temporalmente acotado por T(n). Siempre se cumple que T(n) n+1 (ya que n+1 es el n umero m nimo de movimientos necesarios para leer todos los s mbolos que inicialmente hay en la cinta) Denici on 10.4 (Clases de complejidad temporal) La familia de los lenguajes aceptados por M aquinas de Turing deterministas con complejidad temporal T(n), es TIEMPOD(T(n)). La familia de los lenguajes aceptados por M aquinas de Turing no deterministas con complejidad temporal T(n) es TIEMPON(T(n)). Estas clases se conocen como clases de complejidad temporal. Teorema 10.3 Sean T1 , T2 y T funciones de N en N. Supongamos que T1 (n) T2 (n), para todo n N . Entonces se cumple:

2. TIEMPON(T1 (n)) TIEMPON(T2 (n)) 3. TIEMPOD(T(n)) TIEMPON(T(n))

139

MANUALES UEX

1. TIEMPOD(T1 (n)) TIEMPOD(T2 (n))

ELENA JURADO MLAGA


A LA COMPLEJIDAD COMPUTACIONAL TEMA 10. INTRODUCCION

140

Teorema 10.4 Si L TIEMPOD(f(n)) entonces, L ESPACIOD(f(n)) Demostraci on. Supongamos que M es la M aquina de Turing que reconoce a L y que realiza, como m aximo, f (n) movimientos sobre la cadena de longitud n. Es evidente que puede inspeccionar un m aximo de 1 + f (n) celdas, por tanto, L ESPACIOD(f(n)+1) L ESPACIOD(f(n)). Las funciones S(n) y T(n) que hemos utilizado no tienen porque ser una funci on exacta, sino s olo un indicador de la forma de variaci on del espacio o del tiempo ocupado, en funci on de la longitud de la entrada de datos. Habitualmente nos interesa poder comparar estas funciones con otras (habitualmente m as simples) de manera que las tasas de crecimiento sean an alogas. Veamos a continuaci on la notaci on que se utiliza para comparar tasas de crecimiento. Denici on 10.5 Sean dos funciones f, g : N R. Se dice que: f = O (g ) si existen dos constantes C y k tales que x k, f (x) Cg (x) f = o(g ) si para cada constante C , existe k tal que x k, f (x) Cg (x) f = (g ) si f = O (g ) y g = O (f ) La expresi on f = O (g ) quiere decir que para valores sucientemente grandes de x, la funci on f (x) es menor o igual a una funci on proporcional a g . La constante de proporcionalidad C puede ser muy grande de forma que el valor real de f (x) puede ser mayor que g (x), sin embargo la tasa de crecimiento de f no es mayor que la de g . Si f = (g ) las dos funciones tienen la misma tasa de crecimiento, es decir, los dos valores son aproximadamente equivalentes, con valores grandes de x. Si f = o(g ) la tasa de crecimiento de f es menor que la de g , es decir, f (x) ser a en u ltima instancia menor que g (x), pero no sabemos cu an grande tiene que ser x para que esto ocurra. Por ejemplo, si pretendemos estudiar la eciencia de un algoritmo ejecutado por una M aquina de Turing M , no existe una gran diferencia, a efectos pr acticos, entre que su tiempo de ejecuci on T(n) sea 14n2 + 25n 4 o que sea 3n2 , ya que en ambos casos podemos decir que su tasa de crecimiento no es mayor que la de n2 , es decir, T = O (n2 ). Diremos que la m aquina es de complejidad temporal n2 , o (n2 )-limitada en el tiempo. Las funciones anteriores tienden (cuando n ) a las as ntotas 14n2 2 2 y 3n respectivamente, que son funciones del tipo cn . As pues estamos hablando de complejidad en t erminos asint oticos.

140

MANUALES UEX

TEORA DE AUTMATAS Y LENGUAJES FORMALES

10.3. PROBLEMAS P, NP Y NP-COMPLETOS

141

Cuando queremos hacer referencia al crecimiento de los recursos necesarios para la ejecuci on de un determinado algoritmo utilizaremos la notaci on O(f(n)), que representa su comportamiento asint otico. As un tiempo de ejecuci on 14n2 + 25n 4, 2 se resume en que la complejidad del algoritmo es O (n ). Los algoritmos cuya complejidad del tipo O (n), O (n2 ), O (n3 ), en general O (nc ), se llaman algoritmos polin omicos, o de complejidad polin omica. Los algoritmos que se comportan como 2n (en general cn ) son algoritmos exponenciales, o de complejidad exponencial. Otro aspecto diferente y muy importante dentro de la Teor a de la Complejidad es el que se reere, no a la complejidad del algoritmo, sino a la complejidad del problema. Esto nos obliga a comparar todos los algoritmos posibles para resolver un determinado problema. Se conoce como cota superior a la complejidad de un problema a la complejidad del mejor algoritmo que se haya podido encontrar para resolverlo. Es posible probar, a veces, que no existe algoritmo que pueda resolver un determinado problema sin emplear como m nimo una cierta cantidad de recursos, a la que se llama cota inferior.

10.3.

Problemas P, NP y NP-completos

Diremos que un algoritmo es eciente si existe una M aquina de Turing determinista que lo ejecute con una complejidad temporal polin omica. A la clase de los algoritmos (o de los problemas que estos algoritmos resuelven) ecientes se la denomina clase P . Existen algoritmos no deterministas que no siguen un ujo jo, sino que act uan en funci on de una serie de decisiones tomadas en tiempo real. De entre los algoritmos no deterministas existe un amplio conjunto de ellos que pueden considerarse ecientes, pero es indemostrable que est en en P, debido precisamente a que no son deterministas. A esta clase de problemas se les llama NP. Cualquier problema se puede plantear como un lenguaje formado por todas las soluciones posibles para ese problema. Un algoritmo que reconozca al lenguaje tambi en servir a para resolver el problema. Por esta raz on resulta equivalente considerar que P y NP son clases de problemas o clases de lenguajes. Denici on 10.6 (Clases P y NP) La clase P de lenguajes esta compuesta por todos los lenguajes que acepta alguna M aquina de Turing determinista que tiene una cota temporal polin omica. La clase NP se compone por todos los lenguajes que acepta alguna M aquina de Turing no determinista con una cota temporal polin omica. Un ejemplo de problema NP es el conocido problema de Hamilton: dado un conjunto de puntos, puede encontrase un camino que pase una sola vez por cada uno de

141

MANUALES UEX

ELENA JURADO MLAGA


A LA COMPLEJIDAD COMPUTACIONAL TEMA 10. INTRODUCCION

142

los puntos?. Un algoritmo determinista para resolver el problema es muy costoso, sin embargo dada una posible soluci on, resulta muy sencillo comprobar que es v alida. En este terreno el problema principal que podemos plantearnos es el siguiente: es el conjunto NP igual al conjunto P? Este es el llamado problema P-NP, y todav a no tiene soluci on. Es evidente que P NP, pero para poder demostrar que la igualdad se cumple habr a que demostrar que todo problema NP es tambi en P, es decir, habr a que encontrar una forma de transformar una M aquina de Turing no determinista con cota temporal polin omica en una M aquina de Turing determinista con cota temporal tambi en polin omica. Por otro lado, tampoco se ha podido demostrar la desigualdad entre los dos conjuntos, para ello habr a que encontrar un lenguaje que pertenezca a NP y que no pertenezca a P. Dentro de la clase NP hay un cierto n umero de problemas que pueden catalogarse entre los m as duros, en el siguiente sentido: si se encontrase un algoritmo de tiempo polin omico para cualquiera de ellos habr a un algoritmo de tiempo polin omico para todo problema en NP. Se dice que cualquier problema de esta categor a es NPcompleto. Denici on 10.7 Se dice que un lenguaje L1 es reducible en tiempo polin omico a un lenguaje L2 si hay una funci on f computable en tiempo polin omico para la cual f(u) L2 sii u L1 . omico Se utiliza la notaci on <p para indicar que L1 es reducible en tiempo polin a L2 . Observar que si L1 <p L2 entonces determinar si w L1 no es m as dif cil que determinar si f(w) L2 . Bas andonos en la misma idea podemos decir que un problema es reducible en tiempo polin omico a otro. Denici on 10.8 (Problemas NP-completos) Un problema P NP es NP-completo si todos los dem as problemas de la clase NP se pueden reducir a el en tiempo polin omico. Esta clase de problemas es importante porque si pudi eramos encontrar una soluci on en tiempo polin omico en una m aquina de Turing determinista para un solo problema NP-completo habr amos demostrado que P=NP. Ejemplos de problemas NP-completos SAT Dada una expresi on l ogica, por ejemplo: p (q p), hay que determinar si es posible satisfacerla, es decir, si es posible encontrar valores para los predicados p y q que hagan que la expresi on tenga un valor verdadero.

142

MANUALES UEX

CV - cobertura de v ertices Dado un grafo G con un conjunto de v ertices V y un conjunto de arcos E, y dado un n umero k, se trata de averiguar si existe un subconjunto V de V, con no m as de k elementos, tal que para todo arco de E alguno de los nodos unidos por este arco pertenece a V.

Ap endice A Generadores autom aticos de analizadores l exicos y sint acticos


Contenido
A.1. Generador de analizadores l exicos . . . . . . . . . . . . . 143 A.2. Generador de analizadores sint acticos . . . . . . . . . . . 149

Existen herramientas que generan analizadores l exicos a partir de la denici on de una serie de expresiones regulares. Estos analizadores llevan a cabo el procesamiento secuencial de una colecci on de caracteres de manera que al encontrar una cadena que encaja con una de las expresiones denidas realiza las acciones que se hayan indicado previamente. Internamente, los analizadores l exicos se comportan como Aut omatas Finitos que reconocen expresiones regulares. Los analizadores l exicos constituyen una parte fundamental de cualquier compilador pero tambi en pueden ser utilizados con otros objetivos, por ejemplo, para modicar la estructura de un chero de texto. An alogamente, existen herramientas que generan analizadores sint acticos a partir de la denici on de una gram atica independiente del contexto. Concretamente, generan un reconocedor ascendente del tipo LR(1). La utilizaci on conjunta de ambas herramientas simplicar a el proceso de dise no y construcci on de traductores para un determinado lenguaje formal. Esta ser a una de sus principales aplicaciones en el a mbito de esta asignatura.

Existen diferentes programas que, con un comportamiento similar, permiten generar autom aticamente analizadores l exicos. Entre los m as utilizados est an PCLEX, LEX y FLEX, estos dos u ltimos son utilizados en entorno UNIX/LINUX. Todos ellos 143

143

MANUALES UEX

A.1.

Generador de analizadores l exicos

ELENA JURADO MLAGA


AUTOMATICA APENDICE A. GENERACION DE ANALIZADORES

144

traducen la descripci on de un analizador l exico, realizada en un metalenguaje al que llamaremos Lex, a un programa escrito en C. Utilizando las opciones adecuadas es posible generar dicho programa escrito en otros lenguajes de alto nivel como C++, Java, Pascal, etc. Lex es un lenguaje de alto nivel de prop osito espec co, dise nado para representar expresiones regulares. Adem as, el c odigo puede extenderse con secciones escritas en C o en el lenguaje de programaci on correspondiente.

A.1.1.

C omo utilizar PCLEX

PCLEX se ejecuta en l nea de comandos, de la siguiente forma: PCLEX [opciones] nombre chero nombre chero es el nombre del chero que contiene la especicaci on del analizador l exico en Lex. Por claridad, se recomienda que el nombre de estos cheros tenga extensi on .l. Por defecto se generar a un chero con el mismo nombre y con extensi on .c. Por ejemplo, si el chero de entrada se llama ejemplo.l, el de salida se llamar a ejemplo.c. Se pueden utilizar las siguientes opciones a la hora de ejecutar PCLEX: -c el chero de salida tiene el nombre yylex.c -C<nom chero> el chero de salida tiene el nombre que indica <nom chero> -h muestra una pantalla de ayuda -i construye un analizador insensible a la diferencia may usculas/min usculas -n suprime las directivas #line en el chero de salida -p<nom chero> utiliza <nom chero> como chero esqueleto para construir el chero de salida, en lugar de utilizar el chero por defecto -s suprime la regla por defecto, es decir, las entradas que no encajen con ninguna regla provocan la salida del programa con el mensaje : pclex scanner jammed Los dem as programas anteriormente mencionados se utilizan de forma similar aunque el signicado de las opciones puede variar.

MANUALES UEX

A.1.2.

Estructura de un programa Lex

Un programa Lex se divide en tres partes, cada una de ellas se separa de la siguiente utilizando el delimitador % %. Es decir, el programa tendr a el siguiente aspecto:

144

TEORA DE AUTMATAS Y LENGUAJES FORMALES


A.1. GENERADOR DE ANALIZADORES LEXICOS zona de deniciones %% zona de reglas %% procedimientos del programador Zona de deniciones En esta parte del programa se pueden denir expresiones regulares que se utilizar an posteriormente. Tambi en se pueden incluir todas las deniciones en C que sean necesarias. Las deniciones en C, deber an ir encerradas entre los delimitadores %{ y %}. Por ejemplo: %{ #include "stdlib.h" int x,y; %} Las deniciones de expresiones regulares, tendr an el siguiente formato: nombre expresi on regular A partir de este momento cada vez que deseemos utilizar esa expresi on podemos hacerlo escribiendo su nombre entre llaves. En el siguiente ejemplo, se dene una expresi on regular llamada digito, que representa a un d gito cualquiera y otra, llamada entero, que representa a una colecci on de d gitos, o sea a un n umero entero y positivo: digito [0 9] entero {digito}+ Zona de reglas Cada regla est a formada por una expresi on regular seguida por una serie de acciones (codicadas en C) que ser an las que el analizador l exico ejecute cuando encuentre una cadena de caracteres que encaje con la expresi on regular. Por ejemplo: ab* {printf("hola");} Procedimientos del programador En esta parte del programa se incluye el programa C que el usuario haya dise nado. En el caso m as sencillo, en el que s olo se desee generar un analizador l exico, el programa principal deber a incluir al menos una llamada al procedimiento yylex. Es decir:

145

145

MANUALES UEX

void main() { yylex(); } yylex es el procedimiento que act ua como analizador l exico y cuyo c odigo C es generado a partir de las especicaciones que aparecen en la zona de reglas. El

ELENA JURADO MLAGA


AUTOMATICA APENDICE A. GENERACION DE ANALIZADORES

146

programa principal puede ser mucho m as complejo e incluir todos los procedimientos que se deseen.

A.1.3.

C omo representar una expresi on regular

Para describir las expresiones regulares que pueden aparecer en la zona de deniciones o en la zona de reglas, hay que seguir las siguientes normas: La concatenaci on entre s mbolos se representa escribi endolos uno junto a otro sin utilizar ning un s mbolo especial. Por ejemplo: int char while representar an palabras reservadas de C. El punto (.) es un comod n y representa a cualquier car acter (s olo a uno) del c odigo ASCII salvo a la marca n de l nea (representada por \n). Por ejemplo: a. representa a la letra a seguida por cualquier otro car acter. Podemos utilizar los corchetes para representar la uni on entre varios s mbolos y el gui on para representar un rango de valores: [a-z] [Ff][Oo][Rr] representa a cualquier letra min uscula representa a la palabra for escrita utilizando letras may usculas o min usculas (ser a la manera de representar palabras reservadas en un lenguaje como Pascal)

Las repeticiones de s mbolos, o de conjuntos de s mbolos, se pueden representar utilizando diferentes operadores: operador + {n} {n,m} ? no de repeticiones 0, 1, . . . 1, 2 , . . . n n, . . .,m 0,1 ejemplo ab* ab+ ab{3} ab{3,5} ab? cadenas v alidas a, ab, abb, . . . ab, abb, . . . abbb abbb, abbbb, abbbbb a, ab

MANUALES UEX

La barra vertical (|) representa la uni on entre expresiones regulares. Por ejemplo: ab|cd representa a la cadena ab o a la cadena cd

146

TEORA DE AUTMATAS Y LENGUAJES FORMALES


A.1. GENERADOR DE ANALIZADORES LEXICOS

147

Marcas de contexto Si utilizamos al comienzo de una expresi on, esta s olo se tendr a en cuenta en el caso de que la cadena analizada est e al comienzo de una l nea. Si utilizamos $ al nal de una expresi on, esta s olo se tendr a en cuenta en el caso de que la cadena analizada est e al nal de una l nea. Si utilizamos / entre dos expresiones, s olo se tendr a en cuenta la primera de ellas en el caso de que aparezca seguida por la segunda. Ejemplos: ab la cadena ab debe aparecer al comienzo de la l nea ab$ la cadena ab debe aparecer al nal de la l nea ab/cd la cadena ab debe aparecer seguida por la cadena cd Prioridades Los operadores que hemos visto tienen diferentes prioridades. Aparecen listados a continuaci on, de mayor a menor prioridad: () [] *+?{} ee | $ par entesis uni on entre s mbolos repeticiones concatenaci on uni on de expr. regulares indicadores de contexto

A.1.4.

Variables y procedimientos predenidos

yylex() es el procedimiento principal a partir de las expresiones regulares denidas, act ua como un analizador l exico. yytext es una variable de tipo cadena de caracteres y almacena la cadena que acaba de ser analizada por el scanner. yyleng es una variable entera que almacena la longitud de yytext. yyin, yyout son los nombres de los cheros de entrada y de salida del analizador l exico. ECHO es una acci on predenida que escribe la cadena analizada en el chero de salida, por tanto, es equivalente a la instrucci on

REJECT hace que el scanner analice por segunda vez la misma cadena. En este segundo an alisis, la regla que contiene a REJECT no ser a tenida en cuenta.

147

MANUALES UEX

{fprintf(yyout," %s",yytext);}

ELENA JURADO MLAGA


AUTOMATICA APENDICE A. GENERACION DE ANALIZADORES

148

A.1.5.

Condiciones de comienzo

Las condiciones de comienzo se pueden activar o desactivar dependiendo de la llegada de alg un s mbolo o cadena de s mbolos. Existen dos tipos, las exclusivas y las no exclusivas. Se denen en la primera zona del programa utilizando las palabras reservadas %s, %S o %Star para las no exclusivas, y %x para las exclusivas. Despu es deber an escribirse los nombres de las condiciones que se vayan a utilizar. Por ejemplo: %s nombre1 nombre2 . . . Para activarlas se utilizar a la acci on BEGIN(nombre) y para desactivarlas BEGIN(0). Se utilizan colocando su nombre, encerrado entre los s mbolos <>, delante de una regla. Por ejemplo: <nombre>ab* ECHO; Esta regla s olo se tendr a en cuenta si la condici on nombre est a activa. Las condiciones de comienzo exclusivas se caracterizan porque las reglas que no llevan su nombre delante s olo se tienen en cuenta si la condici on est a desactivada. En el caso de las condiciones no exclusivas, estas reglas se tienen en cuenta en cualquier caso. El siguiente ejemplo permite eliminar los comentarios del chero de entrada. Suponemos que existen dos tipos diferentes de comentarios, unos encerrados entre llaves y otros entre (* y *). %x coment1 coment2 %% "{" BEGIN(coment1) <coment1>"}" BEGIN(0) "(*" BEGIN(coment2) <coment2>"*)" BEGIN(0) <coment1,coment2>. ;

A.1.6.

Acciones

MANUALES UEX

Cuando el analizador l exico encuentra una cadena de caracteres que encaja con alguna de las expresiones regulares denidas, ejecuta las acciones asociadas a esta expresi on. Est as acciones pueden ser las predenidas ECHO o REJECT, o cualquier instrucci on escrita en C. A continuaci on se describen algunas situaciones especiales: Si los caracteres de la entrada pueden encajar con diferentes expresiones regulares, se elegir a aquella que valide la cadena m as larga.

148

TEORA DE AUTMATAS Y LENGUAJES FORMALES


A.2. GENERADOR DE ANALIZADORES SINTACTICOS ab ab+ acci on1 acci on2

149

Teniendo en cuenta el ejemplo anterior, si en el chero de entrada est a incluida la cadena abb se ejecutar a la acci on2, ya que la primera regla solo validar a 2 caracteres y la segunda validar a 3. En el caso de que dos reglas diferentes validen cadenas de la misma longitud, se elegir a la que aparezca en primer lugar. Por ejemplo, si la cadena hola aparece en el chero de entrada y se han denido las dos reglas siguientes: hola [a-z]+ acci on1 acci on2

Se ejecutar a la acci on1 simplemente porque est a escrita en primer lugar. La acci on que se ejecuta por defecto cuando un car acter (o cadena de caracteres) no encaja con ninguna de las expresiones denidas, consiste en escribir dicho car acter en el chero de salida (yyout); salvo que se haya utilizado la opci on -s al ejecutar PCLEX. Si detr as de una expresi on regular s olo escribimos el s mbolo |, la acci on asociada a esta expresi on es la misma que la asociada a la siguiente. Los siguiente ejemplos son, por tanto, equivalentes: hola [a-z]+ | acci on hola [a-z]+ acci on acci on

Si detr as de una expresi on regular s olo escribimos el s mbolo ; no hay ninguna acci on asociada a esta expresi on, ni siquiera escribir la cadena validada en el chero de salida, podr a entenderse como no hacer nada.

A.2.

Generador de analizadores sint acticos

149

MANUALES UEX

Existen programas como YACC (Yet Another Compiler-Compiler), PCYACC o BISON, este u ltimo para entornos LINUX, que permiten generar autom aticamente analizadores sint acticos de tipo LR(1), a partir de la denici on de una gram atica independiente del contexto descrita con una notaci on similar a la BNF(Backus Normal Form). Concretamente, se genera una funci on, llamada yyparse, que reconocer a programas escritos en el lenguaje denido por la gram atica y detectar a los errores si los hubiera. La funci on yyparse(), llama repetidamente al analizador l exico yylex() que convierte cadenas de caracteres del chero de entrada en s mbolos terminales de la gram atica (llamados tokens). Utilizando una terminolog a anglosajona, al analizador

ELENA JURADO MLAGA


AUTOMATICA APENDICE A. GENERACION DE ANALIZADORES

150

l exico se le denomina scanner y al sint actico se le denomina parser. La forma convencional por la que el scanner env a al parser informaci on adicional sobre los tokens es a trav es de la variable yylval. Por defecto esta variable es de tipo int pero, como veremos, esto se puede cambiar.

A.2.1.

C omo utilizar PCYACC

PCYACC se ejecuta en l nea de comandos, de la siguiente forma: PCYACC [opciones] nombre chero nombre chero es el nombre del chero que contiene la especicaci on de la gram atica, por claridad se recomienda que el nombre de estos cheros tenga extensi on .y. Por defecto se generar a un chero con el mismo nombre y con extensi on .c. Por ejemplo, si el chero de entrada se llama ejemplo.y, el de salida se llamar a ejemplo.c. Se pueden utilizar las siguientes opciones a la hora de ejecutar PCYACC: el chero de salida tiene el nombre yytab.c el chero de salida tiene el nombre que indica <nom chero> -d se genera un chero cabecera llamado yytab.h -D<nom chero> se genera un chero cabecera con el nombre que indica <nom chero> -h muestra una pantalla de ayuda -n suprime las directivas #line en el chero de salida -p<nom chero> utiliza <nom chero> como chero esqueleto para construir el chero de salida, en lugar de utilizar el chero por defecto (yaccpar.c ) -r informa durante la ejecuci on -s genera vectores internos cuyos elementos son de tipo short int -S el programa se para despu es de realizar la fase de an alisis sint actico -t construye un a rbol parser y lo almacena en el chero yy.ast -T<nom chero> construye un a rbol parser y lo almacena en el chero <nom chero> -v genera un chero llamado yy.lrt con informaci on sobre el proceso y la tabla parser -V<nom chero> genera el chero de la opci on anterior pero con el nombre <nom chero> Otros programas como YACC o BISON se utilizan de forma similar aunque el signicado de las opciones pueda variar. -c -C<nom chero>

150

MANUALES UEX

TEORA DE AUTMATAS Y LENGUAJES FORMALES


A.2. GENERADOR DE ANALIZADORES SINTACTICOS

151

A.2.2.

Estructura de un programa para YACC

Un programa para YACC tiene la misma estructura que un programa para LEX. Es decir, tiene tres partes, con el mismo signicado que en el caso anterior. 1. En la primera parte, la zona de deniciones, se pueden incluir declaraciones en C, de la misma forma que se hac a con LEX. Adem as, es necesario realizar algunas deniciones que necesita conocer el parser, para ello se utilizan palabras reservadas (todas comienzan por %). La denici on del s mbolo inicial de la gram atica se realiza utilizando la palabra reservada %start. Por ejemplo: %start programa La denici on de los s mbolos terminales de la gram atica se realiza utilizando la palabra reservada %token. Por ejemplo: %token NUMERO IDENTIFICADOR 2. En la segunda parte, la zona de las reglas, se describe la G.I.C. siguiendo la siguiente notaci on: El s mbolo : se utiliza para separar la parte izquierda de una producci on de la parte derecha. Todas las reglas que tienen la misma parte izquierda se pueden separar con el s mbolo |, sin necesidad de repetir la parte izquierda. Una colecci on de producciones con la misma parte izquierda debe acabar con ;. Por ejemplo, las siguientes deniciones son equivalentes: lista var: lista var var lista var: lista var var lista var: var |var ; ; Los s mbolos de la gram atica que no hayan sido declarados como tokens, se considerar an s mbolos no terminales, excepto los caracteres simples, encerrados entre comillas que tambi en se consideran s mbolos terminales. Por ejemplo: +,*. 3. En la tercera parte del programa, procedimientos del programador es necesario, como m nimo llamar al procedimiento yyparse(). Tambi en es necesario que el programador dena la rutina yyerror. Esta rutina ser a llamada por el analizador cada vez que encuentre un error sint actico. Un ejemplo de denici on de yyerror puede ser: void yyerror(char *s) { } printf(" %s"\n,s);

151

MANUALES UEX

ELENA JURADO MLAGA


AUTOMATICA APENDICE A. GENERACION DE ANALIZADORES

152

A.2.3.

Gram aticas atribuidas

En ocasiones es necesario trabajar con informaci on adicional sobre determinados s mbolos de la gram atica. Diremos que estos s mbolos tienen atributos. Esta informaci on se almacena en una variable predenida llamada yylval que es de tipo YYSTYPE. Como hemos comentado anteriormente, por defecto, ese tipo es int, pero en ocasiones puede resultar u til cambiar su denici on. Este cambio en la denici on de YYSTYPE se realiza en la zona de deniciones y se puede llevar a cabo de diferentes formas. La m as sencilla consiste en utilizar la palabra reservada %union, de la siguiente forma: %union { int num; char cadena[10]; } Suponiendo que YYSTYPE ha sido denido seg un el ejemplo anterior, es necesario especicar que s mbolos de la gram atica van a tener atributos y de que tipo van a ser. Esto se realiza con la palabra reservada %type. Por ejemplo: %type <num> NUMERO expresion %type <cadena> IDENTIFICADOR En el caso de los s mbolos terminales, esto mismo se puede denir con %token. Por ejemplo: %token <num> NUMERO %token <cadena> IDENTIFICADOR En la parte derecha de una producci on es posible insertar acciones escritas en C que ser an ejecutadas cuando el analizador sint actico llegue a ese punto del an alisis. Estas acciones deber an ir encerradas entre llaves. Cuando queramos utilizar los atributos asociados a algunos s mbolos de una producci on, utilizaremos $$, $1, $2, . . . $$ es el atributo del s mbolo que aparece en la parte izquierda de la producci on. $1 es el atributo del primer s mbolo de la parte derecha, $2 el del segundo s mbolo, etc. Por ejemplo: expr:expr+expr {$$=$1+$2;}

MANUALES UEX

A.2.4.

Prioridad y asociatividad de operadores

YACC permite especicar la prioridad y la asociatividad de determinados s mbolos de la gram atica (utilizados normalmente como operadores).

152

TEORA DE AUTMATAS Y LENGUAJES FORMALES


A.2. GENERADOR DE ANALIZADORES SINTACTICOS

153

Utilizando las palabras reservadas %left, %right, %nonassoc, podemos denir el tipo de asociatividad que tienen los s mbolos gramaticales. Adem as, la prioridad de los s mbolos queda impl cita al especicar su asociatividad. Los s mbolos que aparecen en la misma l nea tienen la misma prioridad entre si, y la prioridad ser a m as alta cuanto m as tarde(en el texto) haya sido denida la asociatividad. Por ejemplo: %left +, - %left , / Estas deniciones indican que la suma y la resta tienen la misma prioridad, ambas tienen asociatividad por la izquierda y, adem as, tienen una prioridad menor que la multiplicaci on y la divisi on.

153

MANUALES UEX

154

AUTOMATICA APENDICE A. GENERACION DE ANALIZADORES

Bibliograf a
[1] Hopcroft J. E. y Motwani R. y Ullman J. D. Teor a de Aut omatas, Lenguajes y Computaci on. Pearson-Addison Wesley, 2008. [2] Alfonseca E. y Alfonseca M. y Moriy on R. Teor a de Aut omatas y Lenguajes Formales. McGraw-Hill, 2007. [3] Isasi P. y Mart nez P. y Borrajo D. Lenguajes, Gram aticas y Aut omatas. Un enfoque pr actico. Addison Wesley, 2001. [4] Alfonseca M. y Sancho y Orga. Teor a de Lenguajes, Gram aticas y Aut omatas. Ed. Universidad, 1993. [5] Martin J. Lenguajes Formales y Teor a de la Computaci on. McGraw-Hill, 2003. [6] Brookshear. Teor a de la Computaci on. Lenguajes Formales, Aut omatas y Complejidad. Addison Wesley, 1993. [7] Kelley D. Teor a Aut omatas y Lenguajes Formales. Prentice Hall, 1995. [8] Apple A. Modern Compiler Implementation in Java/C. Cambridge University Press, 1998. [9] Aho A.V. y Sethi R. y Ullman J.D. Compilers: Principles, Techniques and Tools. Addison Wesley, 1986. [10] Alfonseca y de la Cruz y Ortega y Pulido. Compiladores e Int erpretes: Teor a y Pr actica. Prentice-Hall, 2006.

155

155

MANUALES UEX

TEORA DE AUTMATAS Y LENGUAJES FORMALES

Indice alfab etico


Arbol de derivaci on, 21, 77 Alfabeto, 15 de entrada, 40 de s mbolos no terminales, 22 de s mbolos terminales, 22 Analizador l exico, 11, 143 sem antico, 12 sint actico, 12, 149 Atributos sem anticos, 98 heredados, 99 sintetizados, 99 Aut omata, 6 conexo, 42 equivalente, 45 incompleto, 41 minimizaci on, 43 de pila, 74 nito determinista, 40 nito no determinista, 47 linealmente acotado, 127 Bombeo lema para gr. de tipo 2, 94 lema para gr. de tipo 3, 65 Chomsky, 7 jerarqu a de, 8, 24 Church-Turing, tesis, 120 Cierre de Kleene, 18 positivo, 19 Compilador, 10 Complejidad espacial, 138 temporal, 139 Concatenaci on de un lenguaje, 18 de una palabra, 16 Derivaci on, 20 directa, 20 Descripci on instant anea de un aut omata de pila, 75 de un reconocedor LR(1), 90 de una m aquina de Turing, 108 Desplazamiento, 88 Ensamblador, 10 Estado muerto, 41 nal, 40 inicial, 40 Expresi on regular, 33 Forma sentencial, 84 Funci on -recursiva, 134 calculable, 130 caracter stica de un lenguaje, 130 de transici on, 40 parcialmente calculable, 130 recursiva, 134 recursiva primitiva, 133 G odel, 6, 106 Gram atica, 6, 22 bien formada, 29 156

157

MANUALES UEX

ELENA JURADO MLAGA


INDICE ALFABETICO equivalente, 26 limpia, 28 ambigua, 78 atribuida, 98 L-atribuida, 101 S-atribuida, 100 compresora, 124 con estructura de frase, 25, 123 dependiente del contexto, 25, 126 independiente del contexto, 25, 74 lineal, 35 LL(1), 85 LR(1), 92 recursiva, 24 recursivamente enumerable, 24, 123 regular, 26, 35 Hilbert, 6 Homomorsmo, 94 Int erprete, 10 Inversa de una palabra, 17 Lenguaje, 6, 16 universal, 16 recursivamente enumerable, 124 recursivo, 125 Lex, 143 LR-item, 89 M aquina de Turing, 107 universal, 118 Myhill-Nerode, teorema, 66 Palabra, 16 vac a, 16 anulable, 83 Potencia de un lenguaje, 18 de una palabra, 17 Problema de clase NP, 141 de clase P, 141

157 NP-completo, 142 Producci on, 19 compresora, 20 de redenominaci on, 28 innecesaria, 27 no generativa, 28 anulable, 83 con prejos comunes, 81 con recursividad por la izquierda, 81 Reconocedor ascendente, 87 descendente, 80 LL(1), 81 LR(1 ), 87 Reducci on, 88 Reexi on de un lenguaje, 19 de una palabra, 17 S mbolo inaccesible, 27 no generativo, 27 director de una producci on, 85 del LR-item, 89 inicial de una cadena, 83 de una gram atica, 22 seguidor, 84 Sem antica, 97 Shannon, 7 Sustituci on, 94 Tabla de acciones, 88, 89 de s mbolos, 13 Turing, 6, 105 Uni on de lenguajes, 17 Yacc, 149

158

MANUALES UEX

S-ar putea să vă placă și