Teorías de Autómatas

176
Teorías de Autómatas y Lenguajes Formales Colección manuales uex - 55 Elena Jurado Málaga 55 (E.E.E.S.)

Transcript of Teorías de Autómatas

Page 1: Teorías de Autómatas

Teorías de Autómatasy Lenguajes Formales

Colección manuales uex - 55

ElenaJurado Málaga

55

Álgeb

ra lin

eal y

Geom

etría

50

50

9 788477 237471

ISBN 84-7723-747-6

(E.E.E.S.)

ISBN 978-84-7723-747-1

Page 2: Teorías de Autómatas
Page 3: Teorías de Autómatas

Teoría de auTómaTasy lenguajes formales

Page 4: Teorías de Autómatas

55manuales uex

(e.e.e.s.)espacioeuropeoeducaciónsuperior

Page 5: Teorías de Autómatas

Teoría de auTómaTasy lenguajes formales

elena jurado málaga

2008

Page 6: Teorías de Autómatas

La publicación del presente manual fue subvencionada por el Vicerrectorado de Calidad y Formación 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: “Diseño y desarrollo de materiales docentes adaptados a la metodo-logía derivada del E.E.E.S.” Esta convocatoria de acciones forma parte del Plan de Adaptación de la UEX al Espacio Europeo de Educación Superior.

Edita

Universidad de Extremadura. Servicio de Publicaciones C./ Caldereros, 2 - Planta 2ª - 10071 Cáceres (España) Telf. 927 257 041 - Fax 927 257 046 [email protected] www.unex.es/publicaciones

ISSN 1135-870-XISBN 978-84-691-6345-0Depósito Legal M-45.211-2008

Edición electrónica: Pedro Cid, S.A.Teléf.: 914 786 125

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

Page 7: Teorías de Autómatas

A Juan

Page 8: Teorías de Autómatas
Page 9: Teorías de Autómatas

IX

manu

ales

uex

Prologo

El estudio de la teorıa de automatas y de los lenguajes formales se puede ubicaren el campo cientıfico de la Informatica Teorica, un campo clasico y multidisciplinardentro de los estudios universitarios de Informatica. Es un campo clasico debido nosolo a su antiguedad (anterior a la construccion de los primeros ordenadores) sino,sobre todo, a que sus contenidos principales no dependen de los rapidos avancestecnologicos que han hecho que otras ramas de la Informatica deban adaptarse a losnuevos tiempos a un ritmo vertiginoso. Es multidisciplinar porque en sus cimientosencontramos campos tan aparentemente dispares como la linguıstica, las matematicaso la electronica.

El hecho de que esta materia no haya sufrido grandes cambios en las ultimasdecadas no le resta un apice de interes. El estudio de las maquinas secuenciales queabarca la teorıa de automatas, por una parte, sienta las bases de la algoritmia ypermite modelar y disenar soluciones para un gran numero de problemas. Por otraparte, permite abordar cuestiones de gran interes para un informatico como que tipode problemas pueden ser resueltos por un computador o, caso de existir una solucioncomputable para un problema, como podemos medir la calidad (en terminos de efica-cia) de dicha solucion. Es decir, la teorıa de automatas es la puerta que nos permitela entrada hacia campos tan interesantes como la computabilidad y la complejidadalgorıtmica. Ademas, una de las principales aportaciones del estudio de los lenguajesformales, sobre todo desde un punto de vista practico, es su contribucion al diseno delenguajes de programacion y a la construccion de sus correspondientes traductores.En este sentido la asignatura ayudara a conocer con mayor profundidad la estructurade los lenguajes de programacion y el funcionamiento de los compiladores.

Este manual es el resultado del trabajo que durante varios anos he realizado impar-tiendo la asignatura de Teorıa de Automatas y Lenguajes Formales en las titulacionesde Informatica de la Universidad de Extremadura. Dicha asignatura es troncal paralos alumnos de Ingenierıa Informatica y de Ingenierıa Tecnica en Informatica de Sis-temas pero tambien puede ser cursada como materia optativa por los alumnos deIngenierıa Tecnica en Informatica de Gestion. Se imparte en el tercer curso de estastitulaciones.

La asignatura se ha disenado teniendo en cuenta las diferentes circunstancias delos alumnos de las tres titulaciones, ası como el tiempo disponible a lo largo del

Page 10: Teorías de Autómatas

X

manu

ales

uex

elena jurado málaga

curso para impartirla. Por tanto, y teniendo en cuenta sobre todo esto ultimo, loscontenidos han sido seleccionados de forma realista con la intencion de que puedanser abarcados por completo a lo largo del curso academico. Por este motivo, la altacarga formal que suele acompanar a los libros de esta materia ha sido aligerada,procurando no incluir, siempre que ha sido posible, demostraciones complejas y otrascuestiones formales que harıan el texto inabordable en una unica asignatura. Comocontrapartida se han intentado presentar los conceptos e ideas basicos de una maneraintuitiva y clara.Otro de los aspectos que se ha tenido en cuenta al disenar los contenidos del

manual ha sido destacar una de las aplicaciones practicas mas interesantes de estamateria: el diseno de lenguajes de programacion y de compiladores. Esto ha motivadoque, al clasico estudio de la jerarquıa para las gramaticas formales de Chomsky, delos Automatas Finitos, de los Automatas de Pila y de las Maquinas de Turing, sehayan anadido temas como el de las gramaticas atribuidas, los reconocedores LR oun anexo sobre la generacion automatica de analizadores lexicos y sintacticos. Si bienestas ultimas cuestiones pueden considerarse al margen de la asignatura, tienen unclaro interes desde el punto de vista practico.Considerando la proxima implantacion de los nuevos planes de estudio dentro del

espacio europeo de educacion superior, se ha incluido un apartado en el que se describeel plan docente de la asignatura, indicando la metodologıa docente, el plan de trabajodel estudiante, ası como las competencias especıficas de la materia y de la titulacion.En este sentido, y teniendo en cuenta que el trabajo no presencial del estudiantetiene cada vez mas relevancia en el nuevo marco de las ensenanzas universitarias,consideramos que este manual puede convertirse en una herramienta de gran utilidadpara los estudiantes, como complemento a los apuntes y como material de ayuda enla preparacion previa de los temas.Quisiera terminar este prologo agradeciendo la colaboracion de los estudiantes que

han cursado esta asignatura durante los ultimos anos. Sus comentarios y sugerenciashan resultado imprescindibles para mejorar los contenidos y el diseno de las primerasversiones de este manual.

Elena Jurado Malaga

Page 11: Teorías de Autómatas

XI

manu

ales

uex

Teoría de auTómaTas y lenguajes formales

Plan Docente

I. Descripcion y contextualizacion

Identificacion y caracterısticas de la materia

Denominacion: Teorıa de Automatas y Lenguajes FormalesCurso y Titulaciones:3o Ingenierıa Informatica,3o Ingenierıa Tecnica en Informatica de Sistemas,3o Ingenierıa Tecnica en Informatica de Gestion

Area: Lenguajes y Sistemas InformaticosDepartamento: Ingenierıa de Sistemas Informaticos y TelematicosTipo:Troncal en Ingenierıa Informatica,Troncal en Ingenierıa Tecnica en Informatica de Sistemas,Optativa en Ingenierıa Tecnica en Informatica de Gestion

Coeficientes:Practicidad: 3 (Medio)Agrupamiento: 3 (Medio)

Duracion: Anual, 8.18 creditos ECTS (204.5 horas)Distribucion 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 (segun BOE): Teorıa de Automatas y Lenguajes Formales

Perfiles (y subperfiles) profesionales de la titulacion

I. Perfil Profesional de Desarrollo Software

II. Perfil Profesional de Sistemas

III. Perfil Profesional de Gestion y Explotacion de Tecnologıas de la Informacion

Page 12: Teorías de Autómatas

XII

manu

ales

uex

elena jurado málaga

Competencias Especıficas de la Titulacion (y perfiles rela-cionados)

1. Aprender de manera autonoma nuevos conocimientos y tecnicas adecuados parala concepcion, el desarrollo o la explotacion de sistemas informaticos.(Todos)

2. Comunicar de forma efectiva, tanto por escrito como oral, conocimientos, pro-cedimientos, resultados e ideas relacionadas con las TIC y, concretamente de laInformatica, conociendo su impacto socioeconomico.(Todos)

3. Comprender la responsabilidad social, etica y profesional, y civil en su caso, dela actividad del Ingeniero en Informatica y su papel en el ambito de las TIC yde la Sociedad de la Informacion y del Conocimiento.(Todos)

4. Concebir y llevar a cabo proyectos informaticos utilizando los principios ymetodologıas propios de la ingenierıa.(I,II)

5. Disenar, desarrollar, evaluar y asegurar la accesibilidad, ergonomıa, usabilidady seguridad de los sistemas, aplicaciones y servicios informaticos, ası como de lainformacion que proporcionan, conforme a la legislacion y normativa vigentes.(I)

6. Definir, evaluar y seleccionar plataformas hardware y software para el desarrolloy la ejecucion de aplicaciones y servicios informaticos de diversa complejidad.(I,II)

7. Disponer de los fundamentos matematicos, fısicos, economicos y sociologicosnecesarios para interpretar, seleccionar, valorar, y crear nuevos conceptos, teorıas,usos y desarrollos tecnologicos relacionados con la informatica, y su aplicacion.(Todos)

8. Concebir, desarrollar y mantener sistemas y aplicaciones software empleandodiversos metodos de ingenierıa del software y lenguajes de programacion ade-cuados al tipo de aplicacion a desarrollar manteniendo los niveles de calidadexigidos.(I)

9. Concebir y desarrollar sistemas o arquitecturas informaticas centralizadas odistribuidas integrando hardware, software y redes.(II)

10. Proponer, analizar, validar, interpretar, instalar y mantener soluciones informaticasen situaciones reales en diversas areas de aplicacion dentro de una organi-zacion.(Todos)

11. Concebir, desplegar, organizar y gestionar sistemas y servicios informaticos encontextos empresariales o institucionales para mejorar sus procesos de nego-cio, responsabilizandose y liderando su puesta en marcha y mejora continua,ası como valorar su impacto economico y social.(III)

Page 13: Teorías de Autómatas

XIII

manu

ales

uex

Teoría de auTómaTas y lenguajes formales

II. Objetivos. Competencias Especıficas de la Ma-

teria (y relacion con CET)

1. Ser capaz de realizar operaciones basicas con cadenas y con lenguajes.(7)

2. Conocer los diferentes tipos de gramaticas y de lenguajes que forman la jerar-quıa de Chomsky y su utilidad en el diseno de los lenguajes de programacion ysus traductores.(7)

3. Saber como reconocer de que tipo es una determinada gramatica o lenguaje.(7)

4. Ser capaz de construir automatas para resolver diferentes tipos de problemas ypara reconocer diferentes lenguajes.(7,11)

5. Conocer el funcionamiento de diferentes tipos de automatas y entender el tipode problemas que cada uno puede resolver.(7,11)

6. Conocer y ser capaz de utilizar metodos que permitan construir, dado unlenguaje regular: gramaticas que los generan, expresiones regulares que los re-presentan y automatas finitos que los reconocen.(7)

7. Conocer el esquema funcional de un traductor.(4)

8. Conocer los diferentes aspectos lexicos, sintacticos y semanticos que hay quetener en cuenta a la hora de disenar lenguajes formales y traductores para esoslenguajes.(4,8)

9. Ser capaz de construir un traductor.(1,2,4,8,10)

10. Ser capaz de disenar una gramatica para un lenguaje de programacion sencillo.(4,7)

11. Conocer metalenguajes que permitan describir lenguajes regulares y lenguajesindependientes del contexto.(1,8)

12. Saber utilizar herramientas que permitan generar automaticamente analizado-res lexicos y sintacticos.(1,8)

13. Ser capaz de calcular la complejidad espacial y temporal de maquinas de Turingsencillas.(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 oNP-completo.(5,6,7)

Page 14: Teorías de Autómatas

XIV

manu

ales

uex

elena jurado málaga

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 Programacion y Laboratoriode Programacion I, y de 2o curso, Estructuras de Datos y Algoritmos yLaboratorio de Programacion II, son requisitos para esta asignatura ya queproporcionan los conocimientos sobre programacion necesarios para abordar latarea de la construccion de un compilador. Tambien permiten que el alumnoconozca con antelacion conceptos basicos para la asignatura como el de lenguajede programacion y el de compilador.

2. El concepto de complejidad algorıtmica se ha tratado en asignaturas comoElementos de Programacion y Estructuras de Datos y Algoritmos. Ennuestra asignatura este se relaciona con el concepto de Maquina de Turing.

3. La asignatura de Teorıa de Automatas y Lenguajes Formales debe sentar lasbases para que los alumnos de Ingenierıa Informatica puedan abordar congarantıas la asignatura de 5o curso Procesadores de Lenguajes

IV. Metodologıa docente y plan de trabajo del es-

tudiante

En esta seccion se describe la metodologıa utilizada para cada uno de los temasque aparecen en este manual. A cada una de las actividades programadas se le asignaun determinado tipo y el numero de horas estimadas de dedicacion del estudiante. Acontinuacion se indican las siglas utilizadas para representar los diferentes tipos deactividades:

GG Grupo grande S Seminario-LaboratorioTut Tutorıa ECTS NO No Presencial.

Tema 1. Preliminares (Objetivos: 1,7)

Lectura y estudio (previo y/o posterior)(NP): 1h.

Explicacion, discusion y ejemplificacion en clase(GG): 3h.

Realizacion de ejercicios propuestos (NP): 3h.

Tema 2. Lenguajes y Gramaticas Formales (Objetivos: 1,2)

Page 15: Teorías de Autómatas

XV

manu

ales

uex

Teoría de auTómaTas y lenguajes formales

Lectura y estudio (previo y/o posterior)(NP): 2h.

Explicacion, discusion y ejemplificacion en clase(GG): 6h.

Explicacion de cuestiones y ejercicios relacionados con la teorıa(GG): 2h.

Realizacion de ejercicios propuestos (NP): 10h.

Tema 3. Expresiones y gramaticas regulares (Objetivos: 1,3,8,10,12,11)

Lectura y estudio (previo y/o posterior)(NP): 2h.

Explicacion, discusion y ejemplificacion en clase(GG): 1h.

Explicacion de cuestiones y ejercicios relacionados con la teorıa(GG): 2h.

Practicas (S): 2h.

Revision de las actividades practicas (Tut): 2h.

Realizacion de ejercicios propuestos (NP): 4h.

Tema 4. Automatas Finitos (Objetivos: 3,4,5,8,6,12,11)

Lectura y estudio (previo y/o posterior)(NP): 10h.

Explicacion, discusion y ejemplificacion en clase(GG): 10h.

Explicacion de cuestiones y ejercicios relacionados con la teorıa(GG): 7h.

Practicas (S): 6h.

Revision de las actividades practicas (Tut): 2h.

Realizacion de ejercicios propuestos (NP): 20h.

Evaluacion del primer bloque tematico

Tema 5. Gramaticas Independientes del Contexto (GIC) y Automatas de Pila(Objetivos: 3,4,5,8,9,10,12,11)

Lectura y estudio (previo y/o posterior)(NP): 10h.

Explicacion, discusion y ejemplificacion en clase(GG): 6h.

Explicacion de cuestiones y ejercicios relacionados con la teorıa(GG): 5h.

Practicas (S): 10h.

Revision de las actividades practicas (Tut): 3h.

Realizacion de ejercicios propuestos (NP): 12h.

Tema 6. Gramaticas Atribuidas (Objetivos: 7,8,10,12,11)

Lectura y estudio (previo y/o posterior)(NP): 3h.

Explicacion, discusion y ejemplificacion en clase(GG): 2h.

Page 16: Teorías de Autómatas

XVI

manu

ales

uex

elena jurado málaga

Explicacion de cuestiones y ejercicios relacionados con la teorıa(GG): 2h.

Practicas (S): 2h.

Revision de las actividades practicas (Tut): 3h.

Realizacion de ejercicios propuestos (NP): 5h.

Tema 7. Maquinas de Turing(MT) (Objetivos: 4,5)

Lectura y estudio (previo y/o posterior)(NP): 4h.

Explicacion, discusion y ejemplificacion en clase(GG): 5h.

Explicacion de cuestiones y ejercicios relacionados con la teorıa(GG): 4h.

Realizacion de ejercicios propuestos (NP): 14h.

Tema 8. Gramaticas de tipo 0 y 1 (Objetivos: 3)

Lectura y estudio (previo y/o posterior)(NP): 2h.

Explicacion, discusion y ejemplificacion en clase(GG): 2h.

Realizacion de ejercicios propuestos (NP): 2h.

Tema 9. Computabilidad y Maquinas de Turing (Objetivos: 13,14,15)

Lectura y estudio (previo y/o posterior)(NP): 2h.

Explicacion, discusion y ejemplificacion en clase(GG): 2h.

Explicacion de cuestiones y ejercicios relacionados con la teorıa(GG): 1h.

Realizacion de ejercicios propuestos (NP): 4h.

Tema 10. Introduccion a la Complejidad Computacional (Objetivos: 16)

Lectura y estudio (previo y/o posterior)(NP): 2h.

Explicacion, discusion y ejemplificacion en clase(GG): 2h.

Realizacion de ejercicios propuestos (NP): 2h.

V. Evaluacion

Criterios de Evaluacion

1. Aplicar los conceptos y metodos estudiados para la resolucion de problemasrelacionados con el diseno de automatas y gramaticas.

En este aspecto, las principales habilidades a tener en cuenta son:

a) Definir formalmente un lenguaje.

Page 17: Teorías de Autómatas

XVII

manu

ales

uex

Teoría de auTómaTas y lenguajes formales

b) Ser capaz de determinar el tipo al que pertenece un lenguaje.

c) Ser capaz de convertir un Automata Finito No Determinista en AutomataFinito Determinista.

d) Disenar una gramatica a partir del automata que reconoce al lenguaje queesta genera.

e) Construir el automata que reconoce a un determinado lenguaje.

f ) Disenar una maquina de Turing que resuelva un problema dado o quereconozca o genere un lenguaje determinado.

g) Ser capaz de probar que una funcion es recursiva primitiva o µ-recursiva.

2. Disenar un lenguaje formal y construir, utilizando las herramientas adecuadas,un traductor para dicho lenguaje.

Actividades e instrumentos de evaluacion

Examen parcial Prueba de desarrollo escrito con 1 pregunta dirigida a la compren-sion de conceptos y 4 o 5 a la aplicacion los metodos para resolver problemasrelacionados con el diseno de lenguajes y automatas (Temas 1-4). (20 %)

Examen final Prueba de desarrollo escrito con 1 pregunta dirigida a la compren-sion de conceptos y 4 o 5 a la aplicacion los metodos para resolver problemasrelacionados con el diseno de lenguajes y automatas. (55 %)

Seminarios y Tutorıas ECTS Revision y analisis del trabajo no presencial delalumno ası como del trabajo desarrollado en los Seminarios.

1. Revision de ejercicios practicos a realizar por el alumno durante los Semi-narios. (5 %)

2. Revision del lenguaje y del traductor construido por el alumno, haciendoespecial hincapie en un correcto diseno de ambos. Prueba en la que elalumno debe realizar una sencilla ampliacion de su trabajo practico con elobjetivo de valorar el control que tiene sobre su trabajo. (20 %)

Page 18: Teorías de Autómatas
Page 19: Teorías de Autómatas

Manu

ales

uex

1

1ª prueba

Indice General

1. Preliminares 5

1.1. Antecedentes historicos y conceptos basicos . . . . . . . . . . . . . . . 5

1.2. Desarrollo de la asignatura . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3. Conceptos basicos sobre compiladores . . . . . . . . . . . . . . . . . . 10

1.3.1. Componentes de un compilador . . . . . . . . . . . . . . . . . 11

2. Lenguajes y Gramaticas Formales 15

2.1. Definiciones basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2. Operaciones con palabras . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3. Lenguajes y operaciones con lenguajes . . . . . . . . . . . . . . . . . 17

2.4. Concepto de gramatica formal . . . . . . . . . . . . . . . . . . . . . . 19

2.4.1. Definiciones previas . . . . . . . . . . . . . . . . . . . . . . . . 19

2.4.2. Ejemplo con un lenguaje natural(castellano) . . . . . . . . . . 20

2.4.3. Ejemplo en un lenguaje artificial . . . . . . . . . . . . . . . . 21

2.4.4. Definicion de gramatica formal . . . . . . . . . . . . . . . . . 22

2.5. Clasificacion de las gr. formales . . . . . . . . . . . . . . . . . . . . . 24

2.5.1. Gramaticas de tipo 0 . . . . . . . . . . . . . . . . . . . . . . . 24

2.5.2. Gramaticas de tipo 1 . . . . . . . . . . . . . . . . . . . . . . . 25

2.5.3. Gramaticas de tipo 2 . . . . . . . . . . . . . . . . . . . . . . . 25

2.5.4. Gramaticas de tipo 3 . . . . . . . . . . . . . . . . . . . . . . . 26

2.6. Gramaticas equivalentes . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.6.1. Simplificacion de gramaticas . . . . . . . . . . . . . . . . . . . 26

2.7. Problemas y cuestiones . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3. Expresiones y gramaticas regulares 33

3.1. Definicion de expresion regular . . . . . . . . . . . . . . . . . . . . . . 33

3.2. Algebra de las expresiones regulares . . . . . . . . . . . . . . . . . . . 34

3.3. Definicion de gramatica regular . . . . . . . . . . . . . . . . . . . . . 35

3.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.5. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

1

Page 20: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

2

1ª prueba

2 INDICE GENERAL

4. Automatas Finitos 39

4.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.2. Definicion de Automata Finito Determinista . . . . . . . . . . . . . . 40

4.3. Representacion de Automatas . . . . . . . . . . . . . . . . . . . . . . 40

4.4. Los AFD como reconocedores de lenguajes . . . . . . . . . . . . . . . 43

4.5. Minimizacion de un AFD . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.6. Automatas Finitos No Deterministas(AFND) . . . . . . . . . . . . . 47

4.7. Lenguaje aceptado por un AFND . . . . . . . . . . . . . . . . . . . . 50

4.8. Simulacion de un AFD y AFND . . . . . . . . . . . . . . . . . . . . . 51

4.9. Paso de un AFND a AFD . . . . . . . . . . . . . . . . . . . . . . . . 52

4.10. Relacion entre AF, gr. y exp. reg. . . . . . . . . . . . . . . . . . . . . 55

4.10.1. Construccion de la expresion regular reconocida por un AF . . 55

4.10.2. Construccion del AF que reconoce una expresion regular . . . 58

4.10.3. Relacion entre A.F. y gramaticas regulares . . . . . . . . . . . 62

4.11. Lımites para los leng. regulares . . . . . . . . . . . . . . . . . . . . . 65

4.11.1. El lema del bombeo(pumping lemma) . . . . . . . . . . . . . . 65

4.11.2. El teorema de Myhill-Nerode . . . . . . . . . . . . . . . . . . 66

4.12. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5. G.I.C y Automatas de Pila 73

5.1. Definicion de G.I.C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.2. Automatas de Pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.3. Arboles de derivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

5.3.1. Ambiguedad. . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

5.4. Reconocimiento descendente . . . . . . . . . . . . . . . . . . . . . . . 80

5.4.1. Simplificacion de las GIC . . . . . . . . . . . . . . . . . . . . . 81

5.4.2. Reconocedores LL(1) . . . . . . . . . . . . . . . . . . . . . . . 83

5.5. Reconocimiento ascendente . . . . . . . . . . . . . . . . . . . . . . . . 87

5.5.1. Construccion de la Tabla de Acciones . . . . . . . . . . . . . . 89

5.6. Propiedades de los L.I.C. . . . . . . . . . . . . . . . . . . . . . . . . . 93

5.6.1. El lema del bombeo para LIC(pumping lemma) . . . . . . . . 94

5.7. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6. Gramaticas Atribuidas 97

6.1. Concepto de Semantica y de Gramatica Atribuida . . . . . . . . . . . 97

6.2. Atributos heredados y sintetizados . . . . . . . . . . . . . . . . . . . 99

6.3. Gramaticas S-atribuidas y L-Atribuidas . . . . . . . . . . . . . . . . . 100

6.3.1. Gramaticas S-atribuidas . . . . . . . . . . . . . . . . . . . . . 100

6.3.2. Gramaticas L-atribuidas . . . . . . . . . . . . . . . . . . . . . 101

6.4. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Page 21: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

3

1ª prueba

INDICE GENERAL 3

7. Maquinas de Turing 1057.1. Introduccion. Antecedentes historicos . . . . . . . . . . . . . . . . . . 1057.2. Definicion y ejemplos de M.T.’s . . . . . . . . . . . . . . . . . . . . . 1077.3. Restricciones a la M.T. . . . . . . . . . . . . . . . . . . . . . . . . . . 110

7.3.1. M.T. con alfabeto binario . . . . . . . . . . . . . . . . . . . . 1117.3.2. M.T. con la cinta limitada en un sentido . . . . . . . . . . . . 1127.3.3. M.T. con restricciones en cuanto a las operaciones que realiza

simultaneamente . . . . . . . . . . . . . . . . . . . . . . . . . 1127.4. Modificaciones de la M.T. . . . . . . . . . . . . . . . . . . . . . . . . 113

7.4.1. Almacenamiento de informacion en el control finito . . . . . . 1137.4.2. Pistas multiples . . . . . . . . . . . . . . . . . . . . . . . . . . 1147.4.3. Sımbolos de chequeo . . . . . . . . . . . . . . . . . . . . . . . 1147.4.4. Maquinas multicinta . . . . . . . . . . . . . . . . . . . . . . . 1157.4.5. M.T. no determinista . . . . . . . . . . . . . . . . . . . . . . . 116

7.5. Tecnicas para la construccion de M.T. . . . . . . . . . . . . . . . . . 1167.6. La M.T. Universal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187.7. La M.T. como generadora de lenguajes . . . . . . . . . . . . . . . . . 1197.8. La tesis de Church-Turing . . . . . . . . . . . . . . . . . . . . . . . . 1207.9. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

8. Gramaticas de tipo 0 y 1 1238.1. Gramaticas de tipo 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238.2. Lenguajes de tipo 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1248.3. El problema de la parada . . . . . . . . . . . . . . . . . . . . . . . . . 1268.4. Lenguajes y gramaticas de tipo 1 . . . . . . . . . . . . . . . . . . . . 126

9. Computabilidad y Maquinas de Turing 1299.1. Funciones calculables . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.2. Funciones recursivas . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

9.2.1. Funciones recursivas primitivas . . . . . . . . . . . . . . . . . 1329.2.2. Funciones µ-recursivas . . . . . . . . . . . . . . . . . . . . . . 134

9.3. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

10.Introduccion a la Complejidad Computacional 13710.1. Complejidad y Maquinas de Turing . . . . . . . . . . . . . . . . . . . 13710.2. Medidas de complejidad algorıtmica . . . . . . . . . . . . . . . . . . . 13810.3. Problemas P, NP y NP-completos . . . . . . . . . . . . . . . . . . . . 141

A. Generacion automatica de analizadores 143A.1. Generador de analizadores lexicos . . . . . . . . . . . . . . . . . . . . 143

A.1.1. Como utilizar PCLEX . . . . . . . . . . . . . . . . . . . . . . 144A.1.2. Estructura de un programa Lex . . . . . . . . . . . . . . . . . 144

Page 22: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

4

1ª prueba

4 INDICE GENERAL

A.1.3. Como representar una expresion regular . . . . . . . . . . . . 146A.1.4. Variables y procedimientos predefinidos . . . . . . . . . . . . . 147A.1.5. Condiciones de comienzo . . . . . . . . . . . . . . . . . . . . . 148A.1.6. Acciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

A.2. Generador de analizadores sintacticos . . . . . . . . . . . . . . . . . . 149A.2.1. Como utilizar PCYACC . . . . . . . . . . . . . . . . . . . . . 150A.2.2. Estructura de un programa para YACC . . . . . . . . . . . . . 151A.2.3. Gramaticas atribuidas . . . . . . . . . . . . . . . . . . . . . . 152A.2.4. Prioridad y asociatividad de operadores . . . . . . . . . . . . . 152

Page 23: Teorías de Autómatas

Manu

ales

uex

5

1ª prueba

Tema 1

Preliminares

Contenido

1.1. Antecedentes historicos y conceptos basicos . . . . . . . 5

1.2. Desarrollo de la asignatura . . . . . . . . . . . . . . . . . . 8

1.3. Conceptos basicos sobre compiladores . . . . . . . . . . . 10

En este primer tema de la asignatura pretendemos sentar las bases de la mismay explicar cual va a ser su estructura. En la seccion 1.1 explicaremos cuales son lostemas centrales sobre los que va a girar la asignatura, ası como los antecedenteshistoricos sobre los que se han desarrollado estos temas, mencionando los personajesque mas han influido en su nacimiento. La estructura de la asignatura es el contenidofundamental de la seccion 1.2 en la que tambien se detallan algunas de las aplicacionesmas interesantes de los conceptos teoricos que estudiaremos. Teniendo en cuenta queprobablemente la aplicacion practica mas interesante de esta asignatura es el disenode lenguajes de computacion y la construccion de sus correspondientes traductores,en la seccion 1.3 se sentaran las bases que permitiran entender la estructura de uncompilador y las tareas que debe llevar a cabo.

1.1. Antecedentes historicos y conceptos basicos

La mayor parte del conocimiento cientıfico es el resultado de muchos anos deinvestigacion, con frecuencia sobre temas que aparentemente no tienen una relaciondirecta. Como veremos, esto sucede tambien con un campo como la Informatica Teori-ca (ambito en el que se enmarca la asignatura de Teorıa de Automatas y Lengua-jes Formales). Esta materia se ha desarrollado gracias a la confluencia de camposmuy diferentes, como son: las matematicas, la teorıa de maquinas, la linguıstica, etc.Podemos considerarla, por tanto, como una materia multidisciplinar. En este aparta-do pretendemos explicar de manera intuitiva los conceptos basicos que constituyen las

5

Page 24: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

6

1ª prueba

6 TEMA 1. PRELIMINARES

bases de la asignatura ası como los campos cientıficos que han influido fundamental-mente en el desarrollo de esta materia y que nos ayudaran a entender sus aplicacionesmas importantes.

Veamos, en primer lugar, la relacion entre conceptos que trataremos a lo largode todo el temario: lenguaje, gramatica y automata. Toda comunicacion conlle-va la utilizacion de un lenguaje, que podemos definir como un conjunto de palabras(tambien llamadas cadenas) formadas por sımbolos de un alfabeto. Las gramaticaspermitiran definir la estructura de los lenguajes, es decir, proporcionaran las formasvalidas en las que se pueden combinar los sımbolos del alfabeto para construir ca-denas correctas. Una maquina abstracta o automata es un dispositivo teorico querecibe como entrada una cadena de sımbolos y los procesa, cambiando de estado, demanera que genera una determinada salida. Los automatas pueden servir, entre otrascosas, para determinar si una palabra pertenece o no a un determinado lenguaje. Porlo tanto, las gramaticas nos permitiran definir lenguajes y los automatas podran re-conocer las palabras de dichos lenguajes. A pesar de la conexion que existe entre estosconceptos, los trabajos iniciales sobre automatas y lenguajes tienen, como veremos acontinuacion, un origen diferente.

Para encontrar los principios de la Informatica Teorica debemos remontarnos alos anos 30, decada en la que el mundo de las matematicas se hallaba ocupado, sobretodo, en temas como la logica y la definicion de sistemas axiomaticos.

El metodo axiomatico requiere una coleccion de enunciados basicos, llamadosaxiomas, que describen las propiedades fundamentales del sistema que se estudia.A partir de estos axiomas, se derivan enunciados adicionales, llamados teoremas,aplicando secuencias finitas de reglas de inferencia.

Una ventaja del metodo axiomatico es que ofrece un modelo de razonamientodeductivo en el cual todas las suposiciones estan aisladas en los axiomas iniciales ylas reglas de inferencia. Cualquier enunciado que se derive posteriormente sera unaconsecuencia de estas suposiciones.

A principios del siglo XX, muchos matematicos creıan que era posible encontrar ununico sistema axiomatico en el que podrıan basarse todas las matematicas. Su metaera encontrar un conjunto de axiomas y reglas de inferencia correctos de manera quelas matematicas pudieran reducirse a un sistema computacional con el cual pudieradeducirse la veracidad o falsedad de cualquier enunciado matematico. Uno de losprincipales defensores de esta idea era el conocido matematico aleman Hilbert.

Sin embargo, en 1931, el austriaco Kurt Godel publico el “Teorema de la in-completitud”, en el que demostraba que era imposible la completa axiomatizacionde las matematicas. Este teorema incremento el debate por el poder de los metodosaxiomaticos y los procesos computacionales.

En 1937, el matematico ingles Alan Turing, en su artıculo “Sobre los numeroscomputables”, presento la conocidaMaquina de Turing(M.T.), una entidad matematica

Page 25: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

7

1ª prueba

1.1. ANTECEDENTES HISTORICOS Y CONCEPTOS BASICOS 7

abstracta con la que se formalizo el concepto de algoritmo1, ademas demostro quemuchos problemas perfectamente definidos no pueden ser resueltos mediante unaM.T., es decir, no son computables y de esta manera ratifico la teorıa de Godel. Estamaquina serıa la precursora, desde un punto de vista teorico, de los computadores quese construyeron durante la siguiente decada. La Maquina de Turing tiene el podercomputacional mas alto conocido hasta el momento, es decir, es capaz de resolvercualquier problema que tenga una solucion computacional.

Podemos considerar todo esto como el primer eslabon dentro del campo de laInformatica Teorica. El segundo eslabon se ubicarıa en un campo muy cercano a laElectronica en el que el matematico Shannon establecio las bases para la aplicacionde la logica matematica al diseno de los circuitos combinatorios y secuenciales. Lasideas de Shannon derivarıan en la formalizacion de una teorıa de maquinas secuen-ciales y automatas, cuyo principal objetivo era representar de manera formal el com-portamiento de un determinado dispositivo electronico o mecanico. Los automatasson, en un sentido amplio, sistemas que aceptan senales del medio que les rodea, cam-bian de estado como consecuencia de estas senales y trasmiten otras senales al medio.En este sentido, un electrodomestico comun, una central telefonica, un ordenador, eincluso ciertas facetas del comportamiento de los seres vivos pueden modelarse me-diante automatas. A finales de los anos 50 se comenzo a estudiar la utilidad de losautomatas en relacion con los lenguajes de programacion y su proceso de traduccion.

La Teorıa de Automatas estudia diferentes niveles de automatas entre los quepodemos destacar, de una parte, los Automatas Finitos por constituir el grupo massencillo de automatas y, de otra, las Maquinas de Turing que, por el contrario, sonlos automatas mas complejos y con mayor poder computacional. Estos dos tipos deautomatas representan los dos extremos de la jerarquıa, otros niveles intermedios losencontramos en los Automatas de Pila y en los Automatas Linealmente Acotados.Basicamente, la diferencia principal entre estos automatas estriba en la utilizacion ono de memoria auxiliar y en la forma de acceso a dicha memoria.

Para llegar al tercer eslabon de la Informatica Teorica hay que saltar al campo de lalinguıstica. En la decada de los anos 50, el linguista y pensador Noam Chomsky, enun intento de formalizar los lenguajes naturales, establecio las bases de la linguısticamatematica o formal y con ello proporciono una poderosa herramienta que facilito ladefinicion de los primeros lenguajes de programacion, que empezaban a surgir en esaepoca.

1Un algoritmo puede considerarse como un metodo generico que, en un numero finito de pasoso computaciones, permite resolver un determinado problema. Recordemos que la palabra algoritmodebe su nombre a un matematico persa Abu Ja’far Mohamed ibn Musa al-Jowaizmı, autor de untratado de aritmetica publicado en el ano 825.

Page 26: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

8

1ª prueba

8 TEMA 1. PRELIMINARES

1.2. Desarrollo de la asignatura

Chomsky clasifico las gramaticas formales (y los lenguajes que estas generan) deacuerdo a una jerarquıa de cuatro niveles representada en la tabla 1.1. Sorprendente-mente, es posible establecer una relacion biunıvoca entre los diferentes niveles de lajerarquıa de Chomsky y cuatro niveles de una jerarquıa definida entre los diferentestipos de automatas. A cada nivel de gramatica se le puede asociar de forma naturalun conjunto de lenguajes que seran los que esas gramaticas generan, pero ademas, sele puede asociar una clase de automatas formada por aquellos que podran reconocera dichos lenguajes.La siguiente figura describe la relacion que hay entre los diferentes niveles de

gramaticas de la jerarquıa de Chomsky, los lenguajes que generan y las maquinas quereconocen estos lenguajes.

Lenguajes Independientes del Contexto

Lenguajes Dependientes del Contexto

Gr. tipo 0

Gr. tipo 2

Gr. tipo 3

Gr. tipo 1

AutómatasLinealmente Acotados

Leng. LR(1)

Leng. LL(1)

Lenguajes recursivamente enumerables Máquinasde Turing

Autómatas Finitos

Autómatas de Pila

Lenguajes recursivos

Leng. LL(k)

Leng. LR(k)

Leng. (expresiones) regulares

Lenguajes Gramáticas Autómatas

Figura 1.1: Jerarquıa de gramaticas, lenguajes y automatas

Cada nivel de lenguaje se corresponde con un tipo de automata. Por ejemplo,dado un lenguaje de tipo 3 siempre sera posible encontrar un Automata Finito quereconozca dicho lenguaje, es decir, que permita determinar si una determinada pala-bra pertenece o no al lenguaje. Si el lenguaje es de tipo 2 sera necesario utilizar unautomata mas complejo, concretamente un Automata de Pila. La figura 1.1, ademasde sintetizar la Jerarquıa de Chomsky, presenta un sencillo esquema de los temas aabordar durante el curso. Comenzaremos con el estudio de los lenguajes mas sencillos

Page 27: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

9

1ª prueba

1.2. DESARROLLO DE LA ASIGNATURA 9

(los de tipo 3) y de los automatas asociados a ellos, para acabar con el estudio delos lenguajes de tipo 0 y de las M.T. Los nombres de los lenguajes de la jerarquıade Chomsky aparecen destacados en esta figura, pero tambien aparecen otros con-juntos de lenguajes que representan niveles intermedios de esta jerarquıa y que porsu interes seran tambien estudiados en la asignatura. Concretamente, los lenguajesLL(1) y LR(1), incluidos en el conjunto de los lenguajes independientes del contextose estudiaran en el tema 5 y los lenguajes recursivos seran tratados en el tema 8.

Como muestra la figura 1.1, en los tres conceptos estudiados (gramaticas, lengua-jes y automatas) cada nivel contiene al anterior. Por ejemplo, cualquier lenguaje detipo 3 es a su vez un lenguaje de tipo2 (sin embargo, comprobaremos que lo contrariono es cierto), es decir (L3�L2�L1�L0). De la misma forma, un Automata Finitopuede considerarse como un caso particular de Automata de Pila y este como uncaso particular de Maquina de Turing.

A continuacion comentaremos cuales son las principales aplicaciones de los temasque se estudiaran en esta asignatura.

El estudio de las gramaticas formales sera una herramienta muy util para eldiseno de los lenguajes de programacion. El estudio de determinados automatas(concretamente los automatas finitos y los de pila) permitira construir de ma-nera sistematica algunos de los componentes basicos de los compiladores.

Los automatas finitos se pueden aplicar con exito en el procesamiento dellenguaje natural, por ejemplo, en la categorizacion gramatical de las palabrasen una oracion o en la extraccion de informacion a partir de grandes volumenesde texto. Tambien pueden ser utilizados para manipular ficheros de texto quealmacenan una informacion estructurada, por ejemplo, con objeto de modificardicha estructura.

Los automatas, en general, tienen una gran aplicacion en el mundo industrial,ya que permiten modelar el comportamiento de cualquier dispositivo electro-mecanico: una cadena de montaje, un robot, un electrodomestico, etc. Tambienpueden ser utilizados para el reconocimiento de patrones y para el diseno deredes neuronales. Los Automatas Finitos ayudan a disenar software que com-pruebe la correccion de cualquier sistema que tenga un numero finito de estados:protocolos de comunicacion, protocolos para el intercambio seguro de informa-cion, etc. Tambien se utilizan en el diseno y la verificacion del comportamientode circuitos digitales.

Los lenguajes regulares se pueden utilizar para especificar argumentos en de-terminados comandos de un sistema operativo o de un sistema de busqueda deinformacion.

Page 28: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

10

1ª prueba

10 TEMA 1. PRELIMINARES

Los automatas son tambien esenciales para el estudio de los lımites de la com-putacion. En este terreno, existen dos cuestiones importantes que nos podemosplantear y que se estudiaran en los ultimos temas de la asignatura:

1. ¿Que puede hacer un computador? Utilizaremos el concepto de computa-bilidad para aplicarlo a los problemas que puede resolver un computador.

2. ¿Que puede hacer un computador eficientemente? Diremos que un proble-ma es tratable, si un computador puede resolverlo en un tiempo que crezcalentamente al aumentar el tamano de los datos de entrada.

1.3. Conceptos basicos sobre compiladores

Salvo los dos ultimos temas que se centraran en la teorıa de la computacion,el planteamiento del resto de los temas estara, en general, enfocado al diseno delenguajes de programacion y a la construccion de compiladores, teniendo en cuentaque es esta una de las aplicaciones mas interesantes de los conceptos teoricos tratadosen esta asignatura. Por este motivo, en esta seccion se introducen conceptos muyelementales sobre el proceso de traduccion de los lenguajes de programacion.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 escritoen un lenguaje diferente denominado objeto.En el caso de que el lenguaje fuente sea un lenguaje de programacion de alto

nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o codigo maquina), adicho traductor se le denomina compilador. Analogamente, un ensamblador es untraductor cuyo lenguaje fuente es el lenguaje ensamblador.A diferencia de los programas mencionados anteriormente, un interprete es un

traductor que no genera un programa en codigo objeto, sino que toma una sentenciadel 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 utilizacion de interpretes frente a la de compiladores, puesel programa fuente y el interprete juntos requerıan menos memoria que la que eranecesaria para el proceso de compilacion. Por ello, los primero ordenadores personalestenıan instalado habitualmente un interprete para el lenguaje BASIC. Sin embargo,con el tiempo se impusieron los compiladores debido, sobre todo, a la informacion queofrecıan sobre los errores cometidos por el programador, y a una mayor velocidad deejecucion del codigo resultante. A modo de resumen, los siguientes parrafos indicanlas ventajas que pueden tener un metodo de traduccion frente al otro.

Ventajas del compilador frente al interprete

El programa se compila una sola vez, pero se puede ejecutar muchas.

Page 29: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

11

1ª prueba

1.3. CONCEPTOS BASICOS SOBRE COMPILADORES 11

La ejecucion del programa objeto es mucho mas rapida que la interpretaciondel fuente.

El compilador tiene una vision completa del programa, por lo que puede daruna informacion mas detallada de los errores cometidos por el programador.

Ventajas del interprete

El interprete necesita menos memoria que el compilador.

Permite una mayor interactividad con el codigo en tiempo de desarrollo.

Un compilador no suele funcionar de manera aislada sino que se apoya en otrosprogramas para conseguir su objetivo. Algunos de estos programas de apoyo se descri-ben a continuacion. El preprocesador se ocupa de incluir ficheros, expandir macros,eliminar comentarios, etc. El enlazador (linker) construye el fichero ejecutable anadi-endo al fichero objeto las cabeceras necesarias y las funciones de librerıa utilizadaspor el programa fuente. El depurador permite seguir paso a paso la ejecucion delprograma. Finalmente, muchos compiladores generan un programa en lenguaje en-samblador que debe despues convertirse en un ejecutable mediante la utilizacion deun ensamblador.

1.3.1. Componentes de un compilador

Un compilador es un programa complejo en el que no es facil distinguir claramenteunas partes de otras. Sin embargo, se ha conseguido establecer una division logica delcompilador en fases, lo que permite formalizar y estudiar por separado cada una deellas. En la practica, estas fases no siempre se ejecutan secuencialmente sino que lohacen simultaneamente, pudiendo ser unas fases tratadas como subrutinas de otras.

Analisis lexico El analizador lexico, tambien conocido como scanner, lee los ca-racteres del programa fuente, uno a uno, desde el fichero de entrada y va formandogrupos de caracteres con alguna relacion entre sı (tokens). Cada token es tratado co-mo una unica 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, enalgunos casos, un valor. Los tokens se pueden agrupar en dos categorıas:

Cadenas especıficas, como las palabras reservadas (if, while, . . .), signos de pun-tuacion (., ,, =, . . .), operadores aritmeticos (+,*, . . .) y logicos (AND, OR, . . .),etc. Habitualmente, las cadenas especıficas no tienen asociado ningun valor, solosu tipo.

Page 30: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

12

1ª prueba

12 TEMA 1. PRELIMINARES

Cadenas no especıficas, como los identificadores o las constantes numericas o detexto. Las cadenas no especıficas siempre tienen tipo y valor. Por ejemplo, sidato es el nombre de una variable, el tipo del token sera identificador y suvalor sera dato.

Frecuentemente el analizador lexico funciona como una subrutina del analizadorsintactico. Para el diseno del analizadores lexicos se utilizan los Automatas Finitos.

Analisis sintactico El analizador sintactico, tambien llamado parser, recibe comoentrada los tokens que genera el analizador lexico y comprueba si estos tokens vanllegando en el orden correcto. Siempre que no se hayan producido errores, la salidateorica de esta fase del compilador sera un arbol sintactico. Si el programa es in-correcto se generaran los mensajes de error correspondientes. Para el diseno de losanalizadores sintacticos se utilizan los Automatas de Pila.

Analisis semantico El analizador semantico trata de determinar si el significadode las diferentes instrucciones del programa es valido. Para conseguirlo tendra quecalcular y analizar informacion asociada a las sentencias del programa, por ejemplo,debera determinar el tipo de los resultados intermedios de la expresiones, comprobarque los argumentos de un operador pertenecen al conjunto de los operandos posibles,comprobar que los operandos son compatibles entre si, etc.

La salida teorica de esta fase sera un arbol semantico. Este es una ampliacion deun arbol sintactico en el que cada rama del arbol ha adquirido, ademas, el significadoque debe tener el fragmento de programa que representa. Esta fase del analisis esmas difıcil de formalizar que las dos anteriores y se utilizaran para ello las gramaticasatribuidas.

Generacion de codigo intermedio Cuando una empresa se dedica a la gen-eracion de compiladores, normalmente trabaja con muchos lenguajes fuentes (m) ycon muchos lenguajes objetos (n) diferentes. Para evitar el tener que construir m*ncompiladores, se utiliza un lenguaje intermedio. De esta forma solo hay que construirm programas que traduzcan cada lenguaje fuente al codigo intermedio (front ends)y n programas que traduzcan del lenguaje intermedio a cada lenguaje objeto (backends). La utilizacion del lenguaje intermedio permite construir en menos tiempocompiladores para nuevos lenguajes y para nuevas maquinas. Desgraciadamente, noexiste consenso para utilizar un unico lenguaje intermedio.

Optimizacion de codigo La mayorıa de los compiladores suelen tener una fase deoptimizacion de codigo intermedio (independiente de los lenguajes fuente y objeto),y una fase de optimizacion de codigo objeto (no aplicable a otras maquinas).

Page 31: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

13

1ª prueba

1.3. CONCEPTOS BASICOS SOBRE COMPILADORES 13

Estas fases se anaden al compilador para conseguir que el programa objeto seamas rapido y necesite menos memoria para ejecutarse.Veamos en los siguientes parrafos algunos ejemplos de optimizacion:

Eliminar expresiones comunes. Por ejemplo:

A := B+C+D Aux := B+CE := (B+C)*F se convierte en A := Aux + D

E := Aux * F

Optimizar los bucles. Se trata de sacar de los bucles aquellas expresiones quesean invariantes.

REPEATB := 1A := A-B

UNTIL A = 0 La asignacion B := 1 se puede sacar del bucle

Generacion de codigo objeto En esta fase, el codigo intermedio optimizado estraducido a una secuencia de instrucciones en ensamblador o en codigo maquina. Porejemplo, la sentencia A := B+C se convertirıa en una coleccion de instrucciones quepodrıan representarse ası:LOAD BADD CSTORE A

Tabla de sımbolos El compilador necesita gestionar la informacion de los elemen-tos que se va encontrando en el programa fuente: variables, tipos, funciones, clases,etc. Esta informacion se almacena en una estructura de datos interna conocida comotabla de sımbolos.Para que la compilacion sea eficiente la tabla debe ser disenada cuidadosamente

de manera que contenga toda la informacion que el compilador necesita. Ademas, hayque prestar especial atencion a la velocidad de acceso a la informacion con objeto deno ralentizar el proceso.

Control de errores Informar adecuadamente al programador de los errores quehay en su programa es una de las misiones mas importantes y complejas de uncompilador. Es una tarea difıcil porque a veces unos errores ocultan a otros, o porqueun error desencadena una avalancha de errores asociados. El control de errores selleva a cabo, sobre todo, en las etapas de analisis sintactico y semantico.

Page 32: Teorías de Autómatas
Page 33: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

15

1ª prueba

Tema 2

Lenguajes y Gramaticas Formales

Contenido

2.1. Definiciones basicas . . . . . . . . . . . . . . . . . . . . . . 15

2.2. Operaciones con palabras . . . . . . . . . . . . . . . . . . . 16

2.3. Lenguajes y operaciones con lenguajes . . . . . . . . . . . 17

2.4. Concepto de gramatica formal . . . . . . . . . . . . . . . . 19

2.5. Clasificacion de las gr. formales . . . . . . . . . . . . . . . 24

2.6. Gramaticas equivalentes . . . . . . . . . . . . . . . . . . . 26

2.7. Problemas y cuestiones . . . . . . . . . . . . . . . . . . . . 29

En este tema se abordan los conceptos de gramatica y lenguaje formal. El temacomienza con la definicion de una serie de conceptos basicos, seguidamente, se es-tudian las diferentes operaciones que se pueden llevar a cabo con palabras y conlenguajes, y las propiedades que estas operaciones tienen. Probablemente el puntocentral de este tema es la introduccion del concepto de gramatica formal, que sehara en primer lugar de forma intuitiva, hasta llegar a una definicion formal. El temaacaba con la presentacion de una taxonomıa de las gramaticas formales realizadapor Noam Chomsky y con el estudio de algunos metodos para simplificar ciertasgramaticas.

2.1. Definiciones basicas

A continuacion se incluyen las definiciones de conceptos elementales que se uti-lizaran a lo largo de toda la asignatura.

Alfabeto: conjunto no vacıo y finito de sımbolos. A estos sımbolos tambien se lessuele llamar letras del alfabeto. Se denota con la letra griega Σ. Ejemplos:

15

Page 34: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

16

1ª prueba

16 TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

Σ1 = {a,b,c,...,z} Σ2 = {0,1}Palabra: secuencia finita de sımbolos de un alfabeto. Lo correcto es hablar de “pala-

bras definidas sobre un alfabeto”. Habitualmente utilizaremos en nuestros ejem-plos las ultimas letras minusculas de nuestro alfabeto (x, y, z) para denotar alas palabras. Ejemplos:

x = casa es una palabra definida sobre el alfabeto Σ1

y = 010100 es una palabra definida sobre el alfabeto Σ2

Palabra vacıa: es una palabra que no tiene ningun sımbolo y se representa como λ.

Longitud de una palabra: es el numero de sımbolos que componen la palabra. Serepresenta utilizando dos barras verticales(||). Ejemplos:

|x| = 4 |y| = 6 |λ| = 0Lenguaje Universal definido 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 infinito, y siempre pertenece a ella palabra vacıa.

Ejemplo: si Σ = {a} entonces ω(Σ) = {λ, a, aa, aaa, ...}Lenguaje L definido sobre un alfabeto Σ, es un conjunto cualquiera de palabras

definidas sobre dicho alfabeto, por lo tanto, L ⊂ ω(Σ).

2.2. Operaciones con palabras

En este apartado se presenta una coleccion de operaciones que se pueden realizarcon palabras y las propiedades que cumplen estas operaciones.

1. Concatenacion Sean x e y dos palabras, se concatenan para formar otra palabraque se denota xy y que esta formada por todas las letras de x seguidas por las letrasde y.Ejemplo: x= casa y=blanca ⇒xy = casablancaPropiedades:

Operacion cerrada. Si x e y estan definidas sobre el mismo alfabeto, xy tambienlo estara.

Asociativa. (xy)z = x(yz)

Elemento neutro (λ). xλ = λx = x

Page 35: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

17

1ª prueba

2.3. LENGUAJES Y OPERACIONES CON LENGUAJES 17

|xy| = |x|+ |y|No es una operacion conmutativa

2. Potencia i-esima de una palabra (xi) Consiste en concatenar una palabra xconsigo misma, i veces. xi = x . . .i xEjemplo: x = la ⇒ x4 = lalalalaPropiedades:

xi+j = xixj

|xi| = i|x|x0 = λ

3. Reflexion (o inversa) de una palabra (x−1) Es otra palabra definida sobreel mismo alfabeto y formada por los mismos sımbolos que x, dispuestos en ordeninverso.Ejemplo: x = casa ⇒ x−1 = asacPropiedad: |x| = |x−1|

2.3. Lenguajes y operaciones con lenguajes

Como hemos visto anteriormente un lenguaje definido sobre un alfabeto no es masque un subconjunto del lenguaje universal de ese alfabeto. Por ejemplo, si Σ = {0,1},podemos definir diferentes lenguajes sobre ese alfabeto:

L1 = {x/|x| = 4} L2 = {0n1n/n > 0}L3 = {x/x no contenga un numero par de 0’s }Sobre cualquier alfabeto se pueden definir lenguajes especiales como el lenguaje

vacıo, que se representa como LØ = Ø y que no tiene ninguna palabra. Tambienexiste el lenguaje que contiene solamente la palabra vacıa Lλ = {λ}Se presentan, a continuacion, diferentes operaciones que se pueden definir sobre

los lenguajes. Casi todas estan basadas en las operaciones sobre palabras que seexplicaron en la seccion anterior.

1. Union de lenguajes La union de dos lenguajes L1 y L2 definidos sobre elmismo alfabeto Σ es otro lenguaje, tambien definido sobre ese alfabeto, que contienetodas las palabras de L1 y todas las de L2.

L = L1 ∪ L2 = {x/x ∈ L1 ∨ x ∈ L2}Propiedades:

Page 36: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

18

1ª prueba

18 TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

Operacion cerrada. El lenguaje resultante esta definido sobre el mismo alfabetoque L1 y L2.

Asociativa. (L1 ∪ L2) ∪ L3 = L1 ∪ (L2 ∪ L3)

Conmutativa. L1 ∪ L2 = L2 ∪ L1

Elemento Neutro (Ø). L ∪ Ø = Ø ∪ L = L

Idempotencia. L ∪ L = L

2. Concatenacion Sean dos lenguajes L1 y L2 definidos sobre el mismo alfabeto Σ,la concatenacion de ambos lenguajes estara formada por todas las palabras obtenidasal concatenar una palabra cualquiera de L1 con otra de L2.

L = L1L2 = {xy/x ∈ L1 ∧ y ∈ L2}Propiedades:

Operacion cerrada. El lenguaje resultante esta definido sobre el mismo alfabetoque L1 y L2.

Asociativa. (L1 L2) L3 = L1 (L2 L3)

Elemento Neutro (Lλ = {λ}). LλL = LLλ = L

No es conmutativa.

3. Potencia i-esima Es el resultado de concatenar un lenguaje consigo mismo unnumero i de veces. Li = L . . .i LPropiedades:

Li+j = LiLj

L0 = Lλ = {λ}

4. Clausura (o cierre de Kleene) La clausura de un lenguaje (L∗) es el resultadode unir todas las potencias de dicho lenguaje, es decir,

L∗ =∞�i=0

Li

Page 37: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

19

1ª prueba

2.4. CONCEPTO DE GRAMATICA FORMAL 19

5. Clausura positiva La clausura positiva de un lenguaje (L+) es la union detodas las potencias de ese lenguaje, exceptuando la potencia cero.

L+ =

∞�i=1

Li

Propiedades:

L∗ = L+ ∪ {λ}L+ = L∗L = LL∗

ω(Σ) = Σ∗

En este caso el alfabeto es considerado como un lenguaje, concretamente elformado por todas las cadenas de longitud 1.

Σ+ = Σ∗ \ {λ}

6. Reflexion La reflexion de un lenguaje (L−1) esta formada por las inversas detodas las palabras de ese lenguaje. L−1 = {x−1/x ∈ L}

2.4. Concepto de gramatica formal

Si nos referimos a los lenguajes naturales el concepto de gramatica es muy antiguo.Los primeros trabajos aparecen en la India durante los comienzos del primer milenioantes de Cristo, alcanzandose el maximo apogeo con Panini (siglos VII y VI a. C.).Al mismo tiempo en Grecia se desarrollaba una corriente de investigacion gramatical,cuyo maximo representante serıa Pitagoras. Sin embargo, el concepto de gramaticadesde un punto de vista formal tiene su origen en los trabajos de Chomsky a mediadosdel siglo XX.

2.4.1. Definiciones previas

Comenzaremos este apartado con una serie de definiciones cuyo interes practicoquedara de manifiesto con los ejemplos que aparecen a continuacion.

Definicion 2.1 (Produccion)Sea Σ un alfabeto, llamamos produccion (o regla) definida sobre ese alfabeto a unpar ordenado de palabras (x, y) donde x, y ∈ Σ∗. Se dice que x es la parte izquierdade la produccion y que y es la parte derecha. A las producciones tambien se las llamareglas de derivacion. Se representa x ::= y.

Page 38: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

20

1ª prueba

20 TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

Definicion 2.2 (Produccion compresora)Se dice que una produccion es compresora si la longitud de su parte derecha es menorque la de la parte izquierda.

Definicion 2.3 (Derivacion directa)Sea Σ un alfabeto, P un conjunto de producciones definidas sobre ese alfabeto

P =

x1 ::= y1

x2 ::= y2

· · ·xn ::= yn

y v, w ∈ Σ∗.Decimos que v produce directamente a w, o que w deriva directamente de v, si

∃z, u ∈ Σ∗ y una produccion xi ::= yi tal que v = zxiu y w = zyiu

La notacion utilizada para representar una derivacion directa es v → w

Definicion 2.4 (Derivacion)Sea Σ un alfabeto, P un conjunto de producciones definidas sobre ese alfabeto yv, w ∈ Σ∗.

Decimos que v produce a w, o que w deriva de v, si ∃w0, w1, . . . , wm ∈ Σ∗ talesque

v = w0 → w1

w1 → w2

. . .wm−1 → wm = w

La notacion utilizada en este caso es v →∗ w

2.4.2. Ejemplo con un lenguaje natural(castellano)

Estamos familiarizados con el concepto tradicional de gramatica que, de formaintuitiva, podrıamos considerar como un conjunto de reglas que nos indican que escorrecto y que no lo es en un lenguaje natural. Con el fin de acercarnos a una definicionmas formal comenzaremos con un ejemplo en lengua castellana.

La gramatica debe describir la estructura de las frases y de las palabras de unlenguaje. Veamos una serie de reglas muy sencillas que nos permitirıan comprobarque la frase “el perro corre deprisa” es correcta.

Page 39: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

21

1ª prueba

2.4. CONCEPTO DE GRAMATICA FORMAL 21

Reglas gramaticales:

1. < sentencia >::=< sujeto >< predicado >2. < sujeto >::=< articulo >< nombre >3. < predicado >::=< verbo >< complemento >4. < predicado >::=< verbo >5. < articulo > ::= el6. < articulo > ::= la7. < nombre > ::= perro8. < nombre > ::= gata9. < verbo > ::= corre10. < verbo > ::= come11. < complemento > ::= deprisa12. < complemento > ::= mucho

Estas reglas pueden ser consideradas como un conjunto de producciones. Si uti-lizamos algunas de estas producciones para llevar a cabo derivaciones a partir delitem < 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 aconstruir la frase “mucho deprisa perro”.

Veamos, paso a paso, como se podrıa generar la frase “la gata corre” a partirdel sımbolo < sentencia >. En cada fase del proceso hemos destacado en negrita elsımbolo que se transforma.

Aplicando la pr. 1 < sentencia >−→ < sujeto > < predicado >Aplicando la pr. 2 < sentencia >−→∗ < articulo >< nombre > < predicado >Aplicando la pr. 4 < sentencia >−→∗ < articulo > < nombre >< verbo >Aplicando la pr. 6 < sentencia >−→∗ la< nombre > < verbo >Aplicando la pr. 8 < sentencia >−→∗ la gata< verbo >Aplicando la pr. 9 < sentencia >−→∗ la gata corre

Sin embargo, la forma mas habitual de representar este mismo proceso de gen-eracion de una cadena de sımbolos es mediante un arbol de derivaciones (o arbolparser) como el que se muestra en la figura 2.1.

2.4.3. Ejemplo en un lenguaje artificial

Aplicaremos el mismo metodo para definir un fragmento de un lenguaje de pro-gramacion. Pretendemos describir como son las instrucciones que permiten asignarel valor de una expresion a una variable en un lenguaje como C.

Page 40: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

22

1ª prueba

22 TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

<oracion>

<sujeto> <predicado>

la gata corre

<articulo> <nombre> <verbo>

Figura 2.1: Arbol de derivacion

1. < asignacion > ::=< variable > � =�< expresion >2. < expresion > ::=< numero >3. < expresion > ::=< variable >4. < expresion > ::=< expresion > �+� < expresion >5. < expresion > ::=< expresion > �∗� < expresion >

Si consideramos que A, B y C pueden ser considerados como < variable > y que2 y 4 pueden ser considerados como < numero >, es facil comprobar que a partirdel sımbolo < asignacion > y utilizando diferentes producciones podemos llegar aconstruir instrucciones como:

A = B + CB = B * 2C = C + 4Sin embargo, no podrıamos construir sentencias como A = + 2 * / + 4 o 4=AEs decir, en los ejemplos anteriores podemos ver que hay construcciones grama-

ticalmente correctas y otras que no lo son.

2.4.4. Definicion de gramatica formal

Analizando los ejemplos anteriores podemos observar como el objetivo es llegar atener 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.) partiendode un determinado sımbolo, que llamaremos inicial, (< oracion > en el primer casoo < asignacion > en el segundo), y utilizando algunas de las producciones definidas.A partir de estas ideas intuitivas, formalizaremos la definicion de gramatica.

Definicion 2.5 (Gramatica Formal)Se llama gramatica formal definida sobre un alfabeto Σ a una tupla de la formaG = {ΣT ,ΣN , S, P} donde:

Page 41: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

23

1ª prueba

2.4. CONCEPTO DE GRAMATICA FORMAL 23

•ΣT es el alfabeto de sımbolos terminales

•ΣN es el alfabeto de sımbolos no terminales (aparecen en los ejemplos encerradosentre <>)

•S es el sımbolo inicial de la gramatica

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

P =

< Numero >::=< Signo >< Digito >< Signo >::= +< Signo >::= −< Digito >::=< Caracter >< Digito >< Digito >::=< Caracter >< Caracter >::= 0< Caracter >::= 1

· · ·< Caracter >::= 9

Con esta gramatica, y a partir del sımbolo < Numero >, podemos generarcualquier numero 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 termi-nales encerrando a los primeros entre <>. Sin embargo, en los ejemplos que veremosa partir de ahora y por simplicidad, utilizaremos las letras mayusculas para repre-sentar a los sımbolos no terminales y las minusculas para los terminales. Ademas,utilizaremos la notacion BNF (Backus Normal Form). Con esta notacion se utilizanlos sımbolos ::= para separar la parte izquierda de una produccion de la derecha yademas, se emplea el sımbolo | para indicar que la parte izquierda de una produccioncoincide con la de la anterior, ası no se repite la parte izquierda de determinadasproducciones. Por tanto, en el ejemplo anterior la descripcion de las produccionesquedarıa ası:

Page 42: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

24

1ª prueba

24 TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

P =

< Numero >::=< Signo >< Digito >< Signo >::= +

|−< Digito >::=< Caracter >< Digito >

| < Caracter >< Caracter >::= 0

|1| · · ·|9

Definicion 2.6 (Lenguaje generado por una gramatica)Sea una gramatica definida como G = {ΣT ,ΣN , S, P} llamamos lenguaje generadopor dicha gramatica a L = {x ∈ Σ∗

T/S →∗ x}Por lo tanto, las palabras del lenguaje estaran formadas por cadenas de sımbo-

los terminales generadas a partir del sımbolo inicial de la gramatica, utilizando lasproducciones que la definen.

Definicion 2.7 (Recursividad)Una gramatica es recursiva si tiene alguna derivacion recursiva, es decir, si A →∗ xAydonde A ∈ ΣN , x, y ∈ Σ∗. Si x = λ se dice que la gramatica es recursiva por laizquierda, y si y = λ se dice que es recursiva por la derecha.

Es evidente que si una gramatica tiene producciones recursivas, es decir produccionescon la forma A ::= xAy, entonces es recursiva.

Teorema 2.1Un lenguaje es infinito si y solo si existe una gramatica recursiva que lo genera.

2.5. Clasificacion de las gr. formales

Noam Chomsky clasifico las gramaticas en cuatro grupos (G0, G1, G2, G3),donde cada uno contiene al siguiente. La diferencia entre cada grupo se centra enla forma de las producciones. La misma clasificacion puede ser aplicada a los lengua-jes, es decir, los lenguajes de tipo 0 son los generados por las gramaticas de tipo 0 yası sucesivamente.

2.5.1. Gramaticas de tipo 0

Tambien se las llama gramaticas sin restricciones o gramaticas recursivamenteenumerables.Las producciones de las gramaticas de tipo 0 tienen la forma:

Page 43: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

25

1ª prueba

2.5. CLASIFICACION DE LAS GR. FORMALES 25

xAy ::= v donde A ∈ ΣN , x, y, v ∈ Σ∗

Sin embargo, es posible demostrar que cualquier lenguaje de tipo 0 puede ser tam-bien generado por una gramatica que pertenece a un grupo algo mas restringido, lasgramaticas con estructura de frase. Podemos decir, por tanto, que las gr. de tipo 0 ylas gr. con estructura de frase tienen el mismo poder generativo.

Las producciones de las gramaticas con estructura de frase tienen la forma:

xAy ::= xvy donde A ∈ ΣN , x, y, v ∈ Σ∗

2.5.2. Gramaticas de tipo 1

A este tipo de gramaticas tambien se las llama gramaticas dependientes delcontexto. Las producciones deben tener la siguiente forma:

xAy ::= xvy donde A ∈ ΣN , v ∈ Σ+ x, y ∈ Σ∗

Es obvio que todas las gramaticas de tipo 1 son tambien gramaticas con estructurade frase, pero en este caso hay una restriccion anadida y es que la longitud de la partederecha de las producciones es siempre mayor o igual que la de la parte izquierda, esdecir, no hay producciones compresoras.

El nombre de gramaticas dependientes del contexto se debe a que las produccionesse pueden interpretar como que “A se convierte en v, siempre que se encuentre enun 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 laproduccion.

2.5.3. Gramaticas de tipo 2

Son tambien llamadas gramaticas independientes del contexto. Sus produc-ciones son aun mas restrictivas. En este caso, la parte izquierda de la produccionesta formada por un unico sımbolo no terminal. Por lo tanto, las producciones sonde la forma:

A ::= v donde A ∈ ΣN v ∈ Σ∗

En este tipo de gramaticas, la conversion de A en v se realiza independientemente delcontexto en el que se encuentre A, de ahı su nombre. Son especialmente adecuadaspara representar los aspectos sintacticos de cualquier lenguaje de programacion.

Page 44: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

26

1ª prueba

26 TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

2.5.4. Gramaticas de tipo 3

Es el grupo mas restringido de gramaticas y tambien son llamadas regulares. Eneste caso tambien se le imponen restricciones a la parte derecha de las producciones,que tendran como maximo dos sımbolos. Hay dos tipos de gramaticas regulares y susproducciones pueden ser de la siguiente forma:

1. Para las gramaticas lineales por la derecha (GLD)

a) A ::= a

b) A ::= aV donde A, V ∈ ΣN , a ∈ ΣT

c) S ::= λ y S es el sımbolo inicial de la gramatica.

2. Para las gramaticas lineales por la izquierda (GLI)

a) A ::= a

b) A ::= V a donde A, V ∈ ΣN , a ∈ ΣT

c) S ::= λ y S es el sımbolo inicial de la gramatica.

Cualquier lenguaje de tipo 3 puede ser generado tanto por una gramatica lineal por laderecha como por una lineal por la izquierda. Es decir, estos dos grupos de gramaticastienen el mismo poder generativo.

2.6. Gramaticas equivalentes

A continuacion veremos como, en ocasiones, es recomendable simplificar ciertasgramaticas, eliminando sımbolos o producciones no deseadas. En estos casos, el obje-tivo sera llegar a definir una gramatica equivalente a la primera pero que no tenga esoselementos indeseables. En este apartado trabajaremos exclusivamente con gramaticasindependientes del contexto.

Definicion 2.8 (Gramaticas equivalentes)Dos gramaticas son equivalentes cuando generan el mismo lenguaje. Es evidente que,para que esto suceda, deben estar definidas sobre el mismo ΣT .

2.6.1. Simplificacion de gramaticas

Comenzaremos definiendo los elementos indeseables de los que hablabamos ante-riormente.

Page 45: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

27

1ª prueba

2.6. GRAMATICAS EQUIVALENTES 27

Definicion 2.9 (Reglas innecesarias)Son produciones de la forma A ::= A. Evidentemente no aportan informacion a lagramatica.

Definicion 2.10 (Sımbolos inaccesibles)Son sımbolos no terminales que no aparecen en ninguna cadena de sımbolos quepueda derivarse a partir del sımbolo inicial de la gramatica.

Definicion 2.11 (Sımbolos no generativos)Son sımbolos no terminales a partir de los cuales no puede derivarse ninguna cadenade sımbolos terminales.

Veamos a continuacion metodos para localizar los sımbolos inaccesibles y los no ge-nerativos.

Metodo para localizar los sımbolos inaccesibles de una gramatica En rea-lidad, el metodo trata de identificar los sımbolos accesibles, ası el resto seran sımbolosinaccesibles. Para conseguirlo se puede disenar un algoritmo que construya de formaincremental este conjunto de sımbolos accesibles.Inicialmente cualquier sımbolo que aparezca en la parte derecha de una produccion

que tiene a S en la parte izquierda, es un sımbolo accesible. A partir de aquı, si unsımbolo esta en la parte derecha de una produccion que tiene a un sımbolo accesibleen la parte izquierda es tambien accesible.Veamos un algoritmo para llevar a cabo esta tarea:

Algoritmo 2.1 Busqueda Sımbolos inaccesiblesOutput: SimInacc ⊂ ΣN

BeginSimAccesibles = {V ∈ ΣN/∃ S ::= xV y, x, y ∈ Σ∗}Auxiliar = Øwhile Auxiliar �= SimAccesibles doAuxiliar = SimAccesiblesSimAccesibles = SimAccesibles ∪ {V ∈ ΣN/∃ A ::= xV y, x, y ∈ Σ∗ A ∈SimAccesibles}

end whileSimInacc = ΣN\ SimAccesibles.

End

Metodo para localizar los sımbolos no generativos El metodo es analogoal anterior, es decir, tiene como objetivo localizar, en primer lugar, los sımbolosgenerativos. Inicialmente son sımbolos generativos aquellos que aparecen en la parte

Page 46: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

28

1ª prueba

28 TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

izquierda de una produccion que tiene solo sımbolos terminales o la cadena nula enla parte derecha. Veamos el algoritmo:

Algoritmo 2.2 Busqueda Sımbolos No GenerativosOutput: SimNoGen ⊂ ΣN

BeginSimGenerativos = {V ∈ ΣN/∃ V ::= α, α ∈ Σ∗

T}Auxiliar = Øwhile Auxiliar �= SimGenerativos doAuxiliar = SimGenerativosSimGenerativos = SimGenerativos ∪ {V ∈ ΣN/∃ V ::= α, α ∈ (ΣT ∪SimGenerativos)∗}

end whileSimNoGen = ΣN\ SimGenerativos

End

Tanto las reglas innecesarias como los sımbolos no generativos o los inaccesiblespueden eliminarse de cualquier gramatica, ya que no aportan informacion relevantea la misma.

Definicion 2.12 (Gramatica Limpia)Decimos que una gramatica es limpia si no tiene reglas innecesarias, ni sımbolos nogenerativos, ni sımbolos inaccesibles.

Definicion 2.13 (Reglas de redenominacion)Son reglas en las que hay un unico sımbolo no terminal tanto en la parte izquierdade la produccion como en la derecha. Es decir, tienen la forma:

A ::= B, A,B ∈ ΣN

Para eliminar las reglas de redenominacion de una gramatica es necesario susti-tuirlas por otras producciones que sean equivalentes.Por ejemplo, si tenemos las produccionesA::=BB::=xB::=y donde x,y ∈ Σ∗

y deseamos eliminar A::=B, las producciones anteriores deben ser sustituidas porlas siguientes producciones:A::=xA::=yB::=xB::=y

Definicion 2.14 (Reglas no generativas)Son aquellas en las que solo aparece λ en la parte derecha de la produccion.

Page 47: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

29

1ª prueba

2.7. PROBLEMAS Y CUESTIONES 29

Para eliminar estas reglas tambien es necesario anadir otras a la gramatica.Si queremos eliminar la produccion A ::= λ es necesario localizar las producciones

que tiene a A en la parte derecha (por ejemplo: B ::= xAy) y anadir para cadaproduccion de este tipo otra equivalente en la que no aparece A (en este caso, B ::=xy).La produccion S ::= λ no puede eliminarse de ninguna gramatica ya que es

imprescindible si se pretende que el lenguaje generado contenga la palabra nula.

Definicion 2.15 (Gramatica bien formada)Decimos que una gramatica esta bien formada si no tiene reglas de redenominacionni reglas no generativas.

2.7. Problemas y cuestiones

2.1 Dado el alfabeto Σ = {a, b}, ¿cuantas palabras hay en el lenguaje AnB y comoson dichas palabras?, considerando los siguientes casos:

1. A = {a} B = {b}2. A = {a} B = {b, λ}3. A = {a, λ} B = {b, λ}4. A = {a, λ} B = {b}

2.2 Dado el alfabeto Σ = {a, b}, y el lenguaje definido sobre el, L = {aa, bb} ¿comoson las palabras del lenguaje L4?

2.3 ¿En que situacion se cumple que L∗ = L+?

2.4 Dadas las siguientes gramaticas, indicar de que tipo son y como es el lenguajeque generan:

1. ΣT = {a, b, c, 0, 1} ΣN = {S}

P =

S ::= a|b|c|Sa|Sb|Sc|S0|S1

Page 48: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

30

1ª prueba

30 TEMA 2. LENGUAJES Y GRAMATICAS FORMALES

2. ΣT = {a, b} ΣN = {S,A}

P =

S ::= A|λ

A ::= aAb|ab

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

P =

S ::= A|λ

A ::= aA|Ab|a|b

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

P =

S ::= A|λ

A ::= AaA|a

2.5 Dados los siguientes lenguajes, disenar una gramatica que los genere

1. L1 = {abna/ n = 0, 1, . . .}2. L2 = {ambn/ m ≥ n ≥ 0}3. L3 = {akbman/ n = k +m}4. L4 = {waw−1/ w es una cadena binaria definida en el alfabeto {0, 1}}

2.6 Dadas las siguientes gramaticas, obtener gramaticas equivalentes a ellas quesean limpias y bien formadas

1. ΣT = {a, b} ΣN = {S,A,B, C,D,E}

P =

S ::= Aa|Ca|a

B ::= Aa|Ca|a

C ::= BbD ::= CaE ::= Cb

Page 49: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

31

1ª prueba

2.7. PROBLEMAS Y CUESTIONES 31

2. ΣT = {x, y, z} ΣN = {S, P,Q}

P =

S ::= zPzQzP ::= xPx

|QQ ::= yPy

Page 50: Teorías de Autómatas
Page 51: Teorías de Autómatas

Manu

ales

uex

33

1ª prueba

Tema 3

Expresiones y gramaticas regulares

Contenido

3.1. Definicion de expresion regular . . . . . . . . . . . . . . . 33

3.2. Algebra de las expresiones regulares . . . . . . . . . . . . 34

3.3. Definicion de gramatica regular . . . . . . . . . . . . . . . 35

3.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.5. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

En este tema se van a estudiar las gramaticas regulares, tambien llamadas detipo 3 atendiendo a la clasificacion de Chomsky. Tambien se aborda el estudio de lasexpresiones regulares que permiten definir de forma precisa los lenguajes generadospor estas gramaticas (lenguajes regulares).

3.1. Definicion de expresion regular

Una expresion regular es una notacion normalizada para representar lenguajesregulares, es decir, lenguajes generados por gramaticas de tipo 3. Como veremos, lasexpresiones regulares permiten describir con exactitud y sencillez cualquier lenguajeregular. Para definir una expresion regular(e.r.) se pueden utilizar todos los sımbolosdel alfabeto Σ y, ademas, λ y Ø. Los operadores que tambien se pueden utilizar son:

+ representa la union

. representa la concatenacion (este sımbolo no se suele escribir)

* representa el cierre de Kleene

( ) modifican las prioridades de los demas operadores

33

Page 52: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

34

1ª prueba

34 TEMA 3. EXPRESIONES Y GRAMATICAS REGULARES

Una expresion regular se puede definir 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 α+ β tambien lo es y representa al lenguaje Lα+β =

Lα ∪ Lβ

5. Si α y β son e.r. entonces αβ tambien lo es y representa al lenguaje Lαβ = LαLβ

6. Si α es una e.r. entonces α∗ tambien lo es y representa al lenguaje

Lα∗ =�∞

i=0 Liα que tambien se puede representar α

∗ = Σ∞i=0α

i

Solo son e.r. aquellas que puedan ser definidas utilizando los 6 puntos vistos ante-riormente.La prioridad de las operaciones, que puede modificarse utilizando parentesis, 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 unsolo 1, L = {0n10m/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 definido sobre el alfabeto

3.2. Algebra de las expresiones regulares

Propiedades de la union (+)

1. Asociativa (α+ β) + γ = α + (β + γ)

2. Conmutativa α + β = β + α

3. Elemento neutro (Ø) α +Ø = α

4. Idempotencia α + α = α

Page 53: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

35

1ª prueba

3.3. DEFINICION DE GRAMATICA REGULAR 35

Propiedades de la concatenacion (.)

1. Asociativa (αβ)γ = α(βγ)

2. Distributiva respecto de la union α(β + γ) = αβ + αγ

3. Elemento neutro (λ) αλ = λα = α

4. αØ = Ø

5. No es conmutativa

Propiedades del cierre de Kleene (*)

1. λ∗ = λ

2. Ø∗ = λ

3. α∗α∗ = α∗

4. α∗α = αα∗

5. (α∗)∗ = α∗

6. α∗ = λ+ αα∗

7. α∗ = λ+ α + α2 + . . .+ αn + αn+1α∗

Si tenemos una funcion f : EnΣ −→ EΣ (por ejemplo f(α, β) = α∗β), donde EΣ

representa al conjunto de las expresiones regulares definidas sobre Σ, entonces:

8. f(α, β, γ, . . .) + (α+ β + γ + . . .)∗ = (α + β + γ + . . .)∗

9. (f(α∗, β∗, γ∗, . . .))∗ = (α + β + γ + . . .)∗

3.3. Definicion de gramatica regular

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

1. A ::= a

2. A ::= aV donde A, V ∈ ΣN , a ∈ ΣT

3. S ::= λ y S es el sımbolo inicial de la gramatica.

Page 54: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

36

1ª prueba

36 TEMA 3. EXPRESIONES Y GRAMATICAS REGULARES

Las producciones de las gramaticas lineales por la izquierda pueden ser de laforma:

1. A ::= a

2. A ::= V a donde A, V ∈ ΣN , a ∈ ΣT

3. S ::= λ y S es el sımbolo inicial de la gramatica.

Estos dos tipos de gramaticas tienen el mismo poder generativo, es decir, dada unagramatica lineal por la izquierda siempre existe una gramatica lineal por la derechaque es equivalente a ella y viceversa. Ademas, dado un lenguaje regular siempreexisten, al menos, una gramatica lineal por la izquierda y una gramatica lineal porla 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

Supongamos que Σ1 = {a, b, . . . , z}1. El lenguaje L1 = {λ, a, aa, aaa, . . .} puede representarse con la e.r. a∗ y puedeser 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 conla e.r. a(a+ b+ . . .+ z)∗ y puede ser generado por la gr. lineal por la izquierda

P =

S ::= a|Sa|Sb· · ·|Sz

y por la gr. lineal por la derecha

P =

S ::= aAA ::= aA

|bA· · ·|zA|λ

Page 55: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

37

1ª prueba

3.4. EJEMPLOS 37

3. El lenguaje de las palabras que empiezan por a, terminan por c y ademas deestas dos letras solo pueden tener b´s (tantas como se quieran) puede represen-tarse con la e.r. ab∗c y puede ser generado por la gr. lineal por la izquierda

P =

S ::= AcA ::= Ab

|a

y por la gr. lineal por la derecha

P =

S ::= aAA ::= bA

|c

Los lenguajes regulares son especialmente adecuados para representar las carac-terısticas lexicas de un lenguaje de programacion, como veremos en los siguien-tes ejemplos en los que consideraremos un lenguaje de programacion similar aC.

4. Las cadenas que pueden ser consideradas como un identificador del lenguaje(nombres inventados por el programador para definir variables, funciones, etc.)estan formadas por letras (mayusculas y minusculas), dıgitos y el guion bajo( ), pero no pueden comenzar por un dıgito. Este lenguaje definido sobre elalfabeto Σ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 Total1 pero no representarıa a 1Ab

Si trabajamos con el alfabeto Σ3 = {0, . . . , 9, .,+ ,−, e, E} (el sımbolo de la suma+ ha sido representado en un tamano menor del habitual para distinguirlo conclaridad del operador union (+))

5. La e.r. α = (0 + . . . + 9)(0 + . . . + 9)∗ permite representar a cualquier numeronatural (por ejemplo: 4, 27 o 256).

6. La e.r. β = α.(0 + . . . + 9)∗ representa numeros reales no negativos con unanotacion clasica (por ejemplo: 55.7, 854.95 o 5.).

7. La e.r. γ = (β(e + E)α) + (β(e+ E)+α) + (β(e+ E)− α) representa numerosreales no negativos con una notacion cientıfica (por ejemplo: 5.5e+10).

Page 56: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

38

1ª prueba

38 TEMA 3. EXPRESIONES Y GRAMATICAS REGULARES

3.5. Problemas

3.1 Describir los lenguajes representados por las siguientes expresiones regularesdefinidas 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 expresion regular, los siguientes lenguajes

1. Considerando que Σ = {a},a) el lenguaje formado por cadenas de a’s de longitud par

b) el lenguaje formado por cadenas de a’s de longitud impar

2. Considerando que Σ = {a, b}, el lenguaje formado por cadenas de a’s y b´s, delongitud impar, en las que se van alternando los dos sımbolos, es decir, nuncaaparece 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, unapalabra que pertenezca al lenguaje que la expresion representa y otra que no pertenez-ca a dicho lenguaje

1. (1∗ + 0∗)(1∗ + 0∗)(1∗ + 0∗) 3. 1∗(0 + 10∗)1∗

2. (1 + 0)∗10(1 + 0)∗ 4. 10∗ + 01∗

3.4 Simplificar las siguientes expresiones regulares

1. (a + b+ ab+ ba)∗ 3. a(a∗a + a∗) + a∗

2. (a + λ)∗ 4. (a + b)∗ba(a+ b)∗ + a∗b∗

3.5 Dadas dos expresiones regularesα = 0∗ + 1∗ β = 01∗ + 10∗ + 1∗0 + (0∗1)∗

encontrar

1. una palabra que pertenezca a α pero no a β

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 β

Page 57: Teorías de Autómatas

Manu

ales

uex

39

1ª prueba

Tema 4

Automatas Finitos

Contenido

4.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.2. Definicion de Automata Finito Determinista . . . . . . . 40

4.3. Representacion de Automatas . . . . . . . . . . . . . . . . 40

4.4. Los AFD como reconocedores de lenguajes . . . . . . . . 43

4.5. Minimizacion de un AFD . . . . . . . . . . . . . . . . . . . 43

4.6. Automatas Finitos No Deterministas(AFND) . . . . . . 47

4.7. Lenguaje aceptado por un AFND . . . . . . . . . . . . . . 50

4.8. Simulacion de un AFD y AFND . . . . . . . . . . . . . . 51

4.9. Paso de un AFND a AFD . . . . . . . . . . . . . . . . . . 52

4.10. Relacion entre AF, gr. y exp. reg. . . . . . . . . . . . . . 55

4.11. Lımites para los leng. regulares . . . . . . . . . . . . . . . 65

4.12. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

4.1. Introduccion

Aunque no se puede considerar como una definicion correcta de automata, esta muyextendida una idea que confunde el concepto de automata con el de robot. Por lotanto, se considera erroneamente que un automata es una maquina que imita fun-ciones tıpicas de los seres vivos, sobre todo relacionadas con el movimiento, pudiendoincluso ejecutar ciertas ordenes. En realidad el concepto de automata es mucho masgenerico, ya que podemos considerarlo como un dispositivo que procesa cadenas desımbolos que recibe como entrada, cambiando de estado y produciendo una salidaque, en algunos casos, puede estar formada por otra cadena de sımbolos.

39

Page 58: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

40

1ª prueba

40 TEMA 4. AUTOMATAS FINITOS

La teorıa de automatas se ocupa de clasificar y estudiar de modo sistematicodiferentes tipos de maquinas abstractas que llevan a cabo un procesamiento secuencialde la informacion. Dentro del conjunto de las maquinas abstractas que estudiaremosen esta asignatura, los Automatas Finitos constituyen el grupo de maquinas massencillas y que, por tanto, tienen un menor poder funcional.El estudio de los automatas finitos se utiliza para modelar el comportamiento de

dispositivos mecanicos y tambien de sistemas naturales. Concretamente, permite es-tudiar procesos que dependen de una historia, es decir, sistemas cuyo comportamien-to actual depende del pasado. Tambien se aplican en el procesamiento del lenguajenatural, pero en el contexto de esta asignatura su principal aplicacion sera el re-conocimiento de lenguajes regulares (de tipo 3).

4.2. Definicion de Automata Finito Determinista

Los Automatas Finitos son maquinas teoricas que van cambiando de estado de-pendiendo de la entrada que reciban. La salida de estos Automatas esta limitadaa dos valores: aceptado y no aceptado, que pueden indicar si la cadena que se harecibido como entrada es o no valida. Generalmente utilizaremos los Automatas Fini-tos para reconocer lenguajes regulares, es decir, una palabra se considerara valida solosi pertenece a un determinado lenguaje.Formalmente, un Automata Finito Determinista (AFD) se define como una tupla

AFD = (Σ, Q, f, q0, F ), donde

Σ es el alfabeto de entradaQ es el conjunto finito y no vacıo de los estados del Automataf es la funcion de transicion que indica en que situaciones el Automata pasa de

un estado a otro, se define f : Q× Σ −→ Qq0 ∈ Q es el estado inicialF ⊂ Q es el conjunto de estados finales de aceptacion (F �= Ø)

4.3. Representacion de Automatas

Existen dos formas de representar un AFD, mediante tablas de transicion omediante diagramas de transicion. Introduciremos estas dos representaciones conun ejemplo.Sea el siguiente AFD: Σ = {a, b} Q = {p, q, r} q0 = p F = {q}donde f se define de la siguiente forma:f(p, a) = q f(p, b) = rf(q, a) = q f(q, b) = rf(r, a) = r f(r, b) = r

Page 59: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

41

1ª prueba

4.3. REPRESENTACION DE AUTOMATAS 41

Tabla de transicion El AFD se representarıa mediante la siguiente tabla querepresenta los valores de la funcion de transicion.

a b→ p q r∗ q q r

r r rLa flecha indica que p es el estado inicial, y el asterisco indica que q es un estado

final de aceptacion (en general, pueden aparecer muchos asteriscos aunque solo puedeaparecer una flecha ya que solo hay un estado inicial).

Diagrama de transicion La figura 4.1 representa de forma grafica las transi-

r

p q

aa

b b

a,b

Figura 4.1: Ejemplo de AFD

ciones del automata. Los estados finales de aceptacion se identifican por estar ence-rrados en un doble circulo. El estado inicial se destaca con una flecha arrugada.Al analizar el automata del ejemplo es evidente que solo considera como cadenas

aceptadas aquellas que estan formadas solamente por a’s. Cualquier cadena que con-tenga una b hara que el automata acabe en el estado r , que es un estado muerto.Diremos que un estado esta muerto si no es un estado final de aceptacion y no partede el ninguna transicion hacia otro estado. Es evidente que si durante el analisis deuna cadena se llega a un estado muerto, como ya no es posible salir de dicho estado,la cadena no sera aceptada por el automata.

Automatas Incompletos A menudo nos encontramos con automatas para losque no estan definidas todas las transiciones. Las situaciones que no estan definidasdeben ser consideradas como situaciones de error, es decir, si una cadena hace llegaral automata hasta una situacion no definida, consideraremos que la cadena no hasido reconocida por dicho automata.

Page 60: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

42

1ª prueba

42 TEMA 4. AUTOMATAS FINITOS

Si deseamos completar un automata (no es imprescindible) bastara con anadir unestado muerto que reciba todas las transiciones que le faltan al automata incompleto.En la figura 4.2 podemos ver un ejemplo de esta situacion. El automata de la

izquierda esta incompleto, pero podemos completarlo trasformandolo en el de laderecha, al que hemos anadido el estado r, que es un estado muerto.

s

p qa

b a

s

p qa

b a

r

a,b

b

a,b

Figura 4.2: Ejemplo de AF incompleto y completo

Estados accesibles y automatas conexos

Definicion 4.1 (Automata Conexo)Un automata es conexo si todos sus estados son accesibles desde el estado inicial.

Definicion 4.2 (Parte conexa de un automata)Si un automata no es conexo, se llama parte conexa del automata al conjunto deestados accesibles desde el estado inicial.

Ejemplo 4.1 El automata representado en la figura 4.3 no es conexo y su parteconexa es la formada por los estados p y q y por las transiciones que hay entre ellos.

r

p q

aa

a

b

b

Figura 4.3: AF no conexo

Page 61: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

43

1ª prueba

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 funcion de transicion f ha sido definidade manera que depende de un unico sımbolo del alfabeto de entrada. A continuacion,se ampliara esta definicion de forma que dicha funcion pueda actuar sobre cadenasde sımbolos, es decir, la funcion indicara a que estado pasa el automata ante lallegada de una cadena de sımbolos (y no solamente de un unico sımbolo). Por tanto,consideraremos que f : Q× Σ∗ −→ Q. Para conseguir esta ampliacion, f se redefinede forma recursiva:

f(q, λ) = q ∀q ∈ Q

f(q, ax) = f(f(q, a), x) ∀a ∈ Σ, x ∈ Σ∗, q ∈ Q

Ejemplo 4.2 Considerando el automata que aparece en la figura 4.1 la funcion detransicion extendida devolverıa los siguientes valores:

f(p, a) = q f(p, aa) = qf(p, ab) = r f(p, aabbb) = rf(p, baba) = r f(r, abb) = r

Con esta nueva definicion de la funcion de transicion es posible definir formalmentecual es el lenguaje aceptado por un AFD.

Definicion 4.3 (Leng. aceptado por un AFD)El lenguaje que acepta un AFD es el conjunto de palabras definidas sobre Σ quehacen que el automata llegue a un estado final de aceptacion

L = {x ∈ Σ∗/ f(q0, x) ∈ F}

4.5. Minimizacion de un AFD

En ocasiones nos encontramos con automatas que tienen algunos estados equiva-lentes, en estos casos esos estados se pueden agrupar de manera que se consigue unautomata, equivalente al primero, pero con un menor numero de estados. Se dice queel automata ha sido minimizado. Un concepto diferente al de minimizar un automataes el de simplificar un automata que consiste en eliminar estados muertos o inacce-sibles.A continuacion se presenta un algoritmo para minimizar un AFD. El objetivo

principal de este algoritmo consiste en agrupar estados equivalentes. Consideraremosque dos estados son equivalentes cuando las transiciones que parten de ellos, para cadauno de los sımbolos del alfabeto, llevan al mismo estado o a estados que tambien son

Page 62: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

44

1ª prueba

44 TEMA 4. AUTOMATAS FINITOS

equivalentes entre sı. Todos los estados que sean equivalentes entre sı se fundiran en ununico estado en el automata resultante. Para conseguir este objetivo se construira unaparticion de Q, que se ira refinando paulatinamente, de manera que finalmente cadaelemento de la particion agrupara estados equivalentes. Inicialmente, se construyeuna particion de Q formada por dos unicos elementos: los estados de aceptacion y losque no lo son. Dicha particion se ira refinando todo lo posible, separando en diferenteselementos a los estados que no son equivalentes. Recordemos que una particion de Qconsiste en dividir Q en varios subconjuntos {Gi}1≤i≤n de tal forma que:

Gi ∩Gj = Ø ∀i �= j y�

1≤i≤n

Gi = Q

Algoritmo 4.1 Minimizacion de un AFD

Input: AFD A = (Σ, Q, f, q0, F )Output: AFD A� = (Σ, Q�, f �, q�0, F

�)BeginParticion = {G1, G2} donde G1 = F y G2 = Q \ FAuxiliar = Øwhile Auxiliar �= Particion doAuxiliar = Particion∀Gi ∈ Particion y ∀a ∈ Σ separar en diferentes grupos a los estadoss y t ∈ Gi siempre que f(s, a) ∈ Gj , f(t, a) ∈ Gk siendo j �= k

end whileCada elemento Gi de Particion se convierte en un estado de Q

�, las transicionesseran las mismas que define f

End

Ejemplo 4.3 Se minimizara el Automata representado en la figura 4.4.Inicialmente, Particion = {G1, G2} G1 = {E} G2 = {A,B,C,D}Evidentemente no es posible refinar el grupo G1. Pero hay que comprobar como

se comportan los estados de G2 con los sımbolos a y b.

G2 sımbolo a G2 sımbolo bA → B ∈ G2 A → C ∈ G2

B → B ∈ G2 B → D ∈ G2

C → B ∈ G2 C → C ∈ G2

DDD → B ∈ G2B ∈ G2B ∈ G2 DDD → E ∈ G1E ∈ G1E ∈ G1

Analizando el comportamiento de los cuatro estados con el sımbolo b, es evidenteque D no es equivalente a los otros tres estados. Por tanto, es necesario dividir G2

en dos nuevos elementos.

Page 63: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

45

1ª prueba

4.5. MINIMIZACION DE UN AFD 45

C

A

E

a

b

a

DB

a

b

a

b

b

a

b

Figura 4.4: Automata a minimizar

Particion = {G1, G�2, G3} G1 = {E} G�

2 = {A,B,C} G3 = {D}Veamos como se comporta G�

2 con los sımbolos a y b.

G�2 sımbolo a G�

2 sımbolo bA → B ∈ G�

2 A → C ∈ G�2

BBB → B ∈ G�2B ∈ G�2B ∈ G�2 BBB → D ∈ G3D ∈ G3D ∈ G3

C → B ∈ G�2 C → C ∈ G�

2

De nuevo es evidente que el estado B no es equivalente a los otros dos. Es necesariodividir G�

2. Ahora, Particion = {G1, G��2, G3, G4} donde

G1 = {E} G��2 = {A,C} G3 = {D} G4 = {B}

Volvemos a comprobar el comportamiento de G��2, el unico grupo que es posible

refinar.

G��2 sımbolo a G��

2 sımbolo bA → B ∈ G4 A → C ∈ G��

2

C → B ∈ G4 C → C ∈ G��2

No es posible refinar mas la particion. Es evidente que A y C son equivalentesy, por tanto, deben formar parte del mismo grupo. A continuacion aparece el nuevoautomata (figura 4.5), equivalente al anterior, que tiene un estado menos, debido alagrupamiento entre A y C(representado por G��

2).

Definicion 4.4 (AFD equivalentes)Dos AFD son equivalentes si reconocen el mismo lenguaje. Es evidente que para queesto ocurra deben estar definidos sobre el mismo alfabeto.

Page 64: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

46

1ª prueba

46 TEMA 4. AUTOMATAS FINITOS

a a

G’’2

G1

a

G3G4

b

b

b

a

b

Figura 4.5: Automata minimizado

A veces es facil comprobar de manera intuitiva si dos AFD son equivalentes, peroesto no siempre ocurre. Un metodo para comprobar si dos AFD son equivalentesconsiste en unirlos de manera que formen un unico AFD que, por supuesto, no esconexo. Formalmente, la union de los dos automatas se llevarıa a cabo ası:Sean A1 = {Σ, Q1, f1, q01, F1} A2 = {Σ, Q2, f2, q02, F2}El automata resultante tras la union serıaA = A1 + A2 = {Σ, Q1 ∪Q2, f, q0, F1 ∪ F2} donde

f(q, a) =

�f1(q, a) si q ∈ Q1

f2(q, a) si q ∈ Q2

El nuevo estado inicial q0 puede ser tanto q01 como q02.Una vez construido el automata union, este se minimiza. Si al concluir el proceso

de minimizacion, los dos estados iniciales q01 y q02 forman parte del mismo elemento dela particion, los automatas originales son equivalentes y el AFD que hemos obtenidoes el automata mınimo equivalente a ambos.

Ejemplo 4.4 Dados los automatas de la figura 4.6, aplicaremos el metodo anteriorpara decidir si son equivalentes o no.Como hemos visto inicialmente, Particion = {G1, G2}donde G1 = {q, r, w} G2 = {p, s, v, u}Hay que comprobar como se comportan los elementos de G1 y G2 con los sımbolos

a y b.

G1 sımbolo a G1 sımbolo bq → r ∈ G1 q → p ∈ G2

r → q ∈ G1 r → p ∈ G2

w → w ∈ G1 w → v ∈ G2

Page 65: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

47

1ª prueba

4.6. AUTOMATAS FINITOS NO DETERMINISTAS(AFND) 47

r s

b

b

aa

b

b

a

b

Autómata 2

p qa

u

v w

aa

ba,b

Autómata 1

Figura 4.6: ¿Automatas equivalentes?

G2 sımbolo a G2 sımbolo bp → q ∈ G1 p → p ∈ G2

sss → p ∈ G2p ∈ G2p ∈ G2 sss → p ∈ G2p ∈ G2p ∈ 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, esevidente que s no es equivalente a los otros tres estados. Por tanto, es necesario dividirG2 en dos subgrupos.Particion = {G1, G

�2, G3} G1 = {q, r, w} G�

2 = {p, v, u} G3 = {s}Veamos como se comporta G�

2 con los sımbolos a y b.G�

2 sımbolo a G�2 sımbolo b

p → q ∈ G1 p → p ∈ G�2

v → w ∈ G1 v → v ∈ G�2

u → w ∈ G1 u → v ∈ G�2

Es evidente que todos los estados de G�2 son equivalentes. Por tanto, no es posible

refinar mas la particion. Podemos determinar que los Automatas 1 y 2 son equiva-lentes ya que los estados iniciales p y v son equivalentes. Ademas, el automata quese muestra en la figura 4.7 es equivalente a ambos y es mınimo.Como el estado G3 es inaccesible se puede eliminar. Ası el automata quedarıa

como muestra la figura 4.8.

4.6. Automatas Finitos No Deterministas(AFND)

En los automatas deterministas sabemos exactamente cual es la transicion quedebemos llevar a cabo ante una determinada situacion. Sin embargo, en los no de-terministas podemos encontrarnos con varias opciones e, incluso, con λ-transiciones

Page 66: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

48

1ª prueba

48 TEMA 4. AUTOMATAS FINITOS

a

G3

G’2 G1

ab

a, b

G1 = {q, r, w} G’2 = {p, u, v} G3 = {s}

Figura 4.7: Automata mınimo

aG’2 G1

ab

G1 = {q, r, w} G’2 = {p, u, v}

Figura 4.8: Automata simplificado

que se realizan sin considerar el correspondiente sımbolo de la cadena de entrada.

Para tener en cuenta estas consideraciones, los AFND se definen como una tupla:AFND = (Σ, Q, f, q0, F, T ), f : Q× Σ −→ 2Q donde

2Q es el conjunto formado por los subconjuntos de Q, incluyendo a Ø

T es una relacion binaria definida sobre Q que indica las λ-transiciones delautomata (si pTq ⇒ existe una λ-transicion desde p hasta q)

El resto de los sımbolos tiene el mismo significado que en la definicion de AFD.

Ejemplo 4.5 Representacion de un AFND utilizando un diagrama de transiciones:ver figura 4.9

Descripcion del mismo automata mediante una tabla de transiciones:

Page 67: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

49

1ª prueba

4.6. AUTOMATAS FINITOS NO DETERMINISTAS(AFND) 49

a b λ→ ∗p {q} Ø Ø

q {p, s} {r, p} {s}r Ø {s, p} {r, s}∗s Ø Ø {r}

q

s

a

b

λr

λ,b

a, λ

a,bp

λ

b

Figura 4.9: A.F. no determinista

Es evidente que un AFD no es mas 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 util conocer el cierre transitivo de la relacion 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 repre-sentar a T y calcular despues todas las potencias de dicha matriz (llega un momentoen que las potencias se repiten y no es necesario calcular mas). Ası BT 2 = (BT )

2 repre-senta las parejas de estados que estan conectadas por dos λ-transiciones, BT 3 las queestan conectadas por tres, y ası sucesivamente. Por lo tanto Id+BT+BT 2+BT 3+. . . esuna matriz booleana que representa la relacion que deseamos calcular T ∗. En nuestroejemplo:

BT =

pqrs

0 0 0 00 0 0 10 0 1 10 0 1 0

(BT )

2 = BT 2 =

0 0 0 00 0 1 00 0 1 10 0 1 1

Page 68: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

50

1ª prueba

50 TEMA 4. AUTOMATAS FINITOS

BT 3 = BT 4 = . . . =

0 0 0 00 0 1 10 0 1 10 0 1 1

BT ∗ = BId+BT +BT 2+BT 3 =

1 0 0 00 1 1 10 0 1 10 0 1 1

Definicion 4.5 (λ-clausura)Sea q ∈ Q, se llama λ-clausura(q) al conjunto de estados de Q que son accesiblesdesde q mediante λ-transiciones. Por lo tanto,

λ− clausura(q) = {p ∈ Q/qT ∗p}Esta definicion se puede ampliar a conjuntos de estados de manera natural.Si R ⊂ Q, entonces λ− clausura(R) = �

q∈R λ− clausura(q)Aunque para calcular la λ-clausura de un estado se pueden utilizar las matrices

booleanas que acabamos de ver, a continuacion se describe un algoritmo que tambiennos permite calcular la λ-clausura.

Algoritmo 4.2 Calculo de la λ-clausura(q)

Output: Clausura ⊂ QBeginClausura = {q}Auxiliar = Øwhile Auxiliar �= Clausura doAuxiliar = ClausuraClausura = Clausura ∪ {s ∈ Q/∃ λ-transicion desde p hasta s, siendo p ∈Auxiliar}

end whileλ-clausura(q) = Clausura

End

4.7. Lenguaje aceptado por un AFND

El lenguaje aceptado por un AFND es el conjunto de todas las cadenas de sımbolosterminales que pueden hacer que el AFND llegue a un estado final de aceptacion. Parallegar a una definicion formal de este lenguaje ampliaremos la definicion de la funcionde transicion con objeto de que acepte cadenas de caracteres. Es decir, si la funcionde transicion de un AFND de define ası: f : Q ∗Σ→ 2Q. Definiremos una funcion detransicion ampliada, de la siguiente forma f � : Q ∗ Σ∗ → 2Q, donde

Page 69: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

51

1ª prueba

4.8. SIMULACION DE UN AFD Y AFND 51

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 definicion de la funcion de transicion, el lenguaje aceptadopor el AFND es: L(AFND) = {x ∈ Σ∗/f �(q0, x) ∩ F �= Ø}

4.8. Simulacion de un AFD y AFND

En esta seccion veremos sendos algoritmos que nos permitiran simular el compor-tamiento de un AFD y de un AFND. Por tanto, permitiran determinar si una cadenapertenece o no al lenguaje que reconoce el automata.

Algoritmo 4.3 Simulacion de un AFDInput: x ∈ Σ∗

Beginc es el primer caracter de xq = q0while c �= Fin doq = f(q, c)c es el siguiente caracter de x

end whileif q ∈ F thenla palabra x ha sido reconocida por el AFD

elsela palabra x no ha sido reconocida por el AFD

end ifEnd

Para detallar el algoritmo de simulacion de un AFND, supondremos que tenemosimplementadas las siguientes funciones:

f(R, a) = ∪q∈Rf(q, a), siendo R ⊂ Q y a ∈ Σ

λ− clausura(R), siendo R ⊂ Q

La diferencia fundamental entre ambos algoritmos esta en el significado de q y S.En el algoritmo 4.3, q representa el estado que el automata tiene en cada instante.Sin embargo, en el algoritmo 4.4, q es sustituido por S que representa al conjunto delos estados en los que puede estar el automata.

Page 70: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

52

1ª prueba

52 TEMA 4. AUTOMATAS FINITOS

Algoritmo 4.4 Simulacion de un AFNDInput: x ∈ Σ∗

Beginc es el primer caracter de xS = λ− clausura(q0)while c �= Fin doS = λ− clausura(f(S, c))c es el siguiente caracter de x

end whileif S ∩ F �= Ø thenla palabra x ha sido reconocida por el AFND

elsela palabra x no ha sido reconocida por el AFND

end ifEnd

4.9. Paso de un AFND a AFD

Los AFND y los AFD tienen el mismo poder computacional (esto no ocurre enotros niveles de la jerarquıa de los automatas), es decir, pueden resolver los mismosproblemas. Por lo tanto, dado un AFND siempre es posible encontrar un AFD que seaequivalente a el. En esta seccion estudiaremos un metodo para resolver este problema.En primer lugar explicaremos de manera generica el paso de un automata a otro, paradespues ilustrar con un ejemplo este mecanismo de trasformacion.Partimos de un AFND = (Σ, Q, f, q0, F, T ) y queremos construir unAFD = (Σ, Q�, f �, q�0, F

�) que sea equivalente, donde:

1. Q� = 2Q

2. q�0 = λ− clausura(q0)3. F � = {C ⊂ Q/C ∩ F �= Ø}4. f �(C, a) = {C � ⊂ Q/C � =

�q∈C λ− clausura(f(q, a))}, siendo C ⊂ Q

El automata que se obtiene por este metodo no tiene porque ser mınimo y podrıallegar a tener, como maximo, 2|Q| estados.

Ejemplo 4.6 Calcularemos el AFD equivalente al AFND que se muestra en la figura4.10. Comenzamos calculando el estado inicial q0 que es la λ-clausura del estado inicialdel AFND. q0 =λ-clausura(A) = {A,C}A continuacion hay que calcular la funcion de transicion para el estado q0

Page 71: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

53

1ª prueba

4.9. PASO DE UN AFND A AFD 53

C E

a

b

λ

D

a,bλ

a,b

λ

b

B

A

a

b

a

a

Figura 4.10: Ejemplo

f(q0, a) = λ-clausura(f(A, a) ∪ f(C, a)) = λ-clausura(B,A) = {A,B,C,D} = q1f(q0, b) = λ-clausura(f(A, b) ∪ f(C, b)) = λ-clausura(B,E) = {B,D,E} = q2

Es necesario seguir calculando la funcion de transicion para los nuevos estados quevan apareciendo.

f(q1, a) = λ-clausura(f(A, a) ∪ f(B, a) ∪ f(C, a) ∪ f(D, a))= λ-clausura(B,C,A,E) = {A,B,C,D,E} = q3

f(q1, b) = λ-clausura(f(A, b) ∪ f(B, b) ∪ f(C, b) ∪ f(D, b))= λ-clausura(B,E) = {B,D,E} = q2

f(q2, a) = λ-clausura(f(B, a) ∪ f(D, a) ∪ f(E, a))= λ-clausura(C,E) = {C,E} = q4

f(q2, b) = λ-clausura(f(B, b) ∪ f(D, b) ∪ f(E, b))= λ-clausura(B,E) = {B,D,E} = q2

f(q3, a) = λ-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

f(q3, b) = λ-clausura(f(A, b) ∪ f(B, b) ∪ f(C, b) ∪ f(D, b) ∪ f(D, b))= λ-clausura(B,E) = {B,D,E} = q2

f(q4, a) = λ-clausura(f(C, a) ∪ f(E, a)) = λ-clausura(A,E) = {A,C,E} = q5f(q4, b) = λ-clausura(f(C, b) ∪ f(E, b)) = λ-clausura(E) = {E} = q6f(q5, a) = λ-clausura(f(A, a) ∪ f(C, a) ∪ f(E, a))

= λ-clausura(B,A,E) = {A,B,C,D,E} = q3f(q5, b) = λ-clausura(f(A, b) ∪ f(C, b) ∪ f(E, b))

= λ-clausura(B,E) = {B,D,E} = q2f(q6, a) = λ-clausura(f(E, a)) = λ-clausura(E) = q6f(q6, b) = λ-clausura(f(E, b)) = λ-clausura(E) = q6

Page 72: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

54

1ª prueba

54 TEMA 4. AUTOMATAS FINITOS

El AFD resultante aparece en la siguiente figura.

q6

b

a

a,b

a

b

q1

q0

a

b a

a

q5

q4

q3

q2

b

b

a

b

Figura 4.11: AFD equivalente al de la figura 4.10

Una vez obtenido el AFD, intentaremos minimizarlo.

Inicialmente, Particion = {G1, G2} G1 = {q2, q3, q4, q5, q6} G2 = {q0, q1}Analizaremos el comportamiento de todos los estados con a y b.

G1 sımbolo a G1 sımbolo bq2 → q4 ∈ G1 q2 → q2 ∈ G1

q3 → q3 ∈ G1 q3 → q2 ∈ G1

q4 → q5 ∈ G1 q4 → q6 ∈ G1

q5 → q3 ∈ G1 q5 → q2 ∈ G1

q6 → q6 ∈ G1 q6 → q6 ∈ G1

G2 sımbolo a G2 sımbolo bq0 → q1 ∈ G2 q0 → q2 ∈ G1

q1 → q3 ∈ G1 q1 → q2 ∈ G1

Todos los estados de G1 son equivalentes, sin embargo, esto no ocurre con losde G2, por lo que es necesario separarlos en dos elementos diferentes. La nueva ydefinitiva particion serıa:

{G1, G�2, G3} G1 = {q2, q3, q4, q5, q6} G�

2 = {q0} G3 = {q1}.A continuacion se representa el nuevo automata (figura 4.12) que es determinista,

mınimo y equivalente al AFND del que partimos.

Page 73: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

55

1ª prueba

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

a

G3

G’2 G1

a, b b

a, b

G1 = {q2, q3, q4, q5, q6} G’2 = { q0} G3 = { q1}

Figura 4.12: AFD mınimo equivalente al del figura 4.11

4.10. Relacion entre Automatas Finitos, gramaticas

y expresiones regulares

Como sabemos las gramaticas regulares generan lenguajes regulares que puedenser representados mediante expresiones regulares. A su vez, estos lenguajes puedenser reconocidos por Automatas Finitos.En esta seccion estudiaremos diferentes metodos que nos permitiran construir

unos elementos a partir de otros.

4.10.1. Construccion de la expresion regular reconocida por

un AF

Estudiaremos dos metodos diferentes.

El metodo del sistema de ecuaciones

El metodo de las funciones recursivas

Previamente se define y demuestra la Regla de Inferencia que se aplicara en elprimer metodo como un mecanismo para despejar incognitas.

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

Demostracion:

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

Page 74: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

56

1ª prueba

56 TEMA 4. AUTOMATAS FINITOS

Suponemos que R = SR + T y queremos demostrar que R = S∗T , para ellocomenzaremos demostrando que S∗T ⊂ R

Si α ∈ S y β ∈ T (como R = SR + T entonces T ⊂ R y por tanto β ∈ R)⇒ αβ ∈ SR ⊂ R

Analogamente y aplicando n veces el mismo razonamiento,

si α1, . . . , αn ∈ S y β ∈ T ⇒ α1 . . . αnβ ∈ R ⇒ S∗T ⊂ R

Supongamos que S∗T �= R, entonces R = S∗T + C

(consideramos que C ∩ S∗T = Ø)

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

Eso significa que cualquier palabra de C debe pertenecer a SC (ya que no puedepertenecer a S∗T ) y esto es absurdo ya que λ /∈ S por lo tanto C = Ø y secumple que S∗T = R �

El metodo del sistema de ecuaciones

Este metodo se basa en la definicion de una serie de e.r. que inicialmente seranlas incognitas de un sistema de ecuaciones.Partimos de un AFD = (Σ, Q, f, q0, F ) y para cada uno de los estados qi ∈ Q

definimos una e.r. Xi que representa a todas las cadenas que permiten llegar desdeel estado i hasta algun estado final de aceptacion.

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 define de la siguiente forma:Xi = Σn

j=1aijXj + af1 + af2 + . . . + afm donde f(qi, aij) = qj y f(qi, afk) ∈ F .Ademas, hay que anadir λ si qi ∈ F .Si aplicamos esta definicion para todos los estados del AF, conseguimos construir

un sistema de n ecuaciones con n incognitas, donde n es el numero de estados delAF. El sistema de ecuaciones se resolvera sustituyendo unas ecuaciones en otras yaplicando la regla de inferencia para despejar dichas incognitas. En realidad, no esnecesario resolver el sistema completo ya que la unica incognita que nos interesa esX0 (considerando que q0 es el estado inicial) que es la e.r. buscada.

Ejemplo 4.7 Sea el siguiente AF

Page 75: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

57

1ª prueba

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

a q0 q1

b a

b

Definimos el sistema de ecuaciones:�X0 = bX0 + aX1 + aX1 = aX0 + bX1 + b+ λ

Aplicamos la regla de inferencia en la 2 ecuacion.(considerando que R = X1, S = b y T = aX0 + b+ λ)X1 = aX0 + bX1 + b+ λ = b∗(aX0 + b+ λ)Sustituimos X1 en la primera ecuacion.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 ecuacion.(ahora, R = X0, S = b+ ab∗a y T = ab∗)X0 = (b+ ab∗a)X0 + ab∗ = (b+ ab∗a)∗ab∗

El metodo de las funciones recursivas

Para que este metodo pueda llevarse a cabo sin ambiguedades es necesario numerarlos estados a partir del 1, es decir, Q = {q1, . . . , qn}.Tambien en este caso definiremos una serie de e.r.(en este caso, de forma recursiva)

que inicialmente seran incognitas que es necesario calcular.Cada e.r. Rk

ij representara a las cadenas que permiten llegar del estado qi alestado qj pasando exclusivamente por los estados q1, . . . , qk. Definiremos R

0ij como el

conjunto de cadenas (en este caso, sımbolos) que nos llevaran directamente del estadoqi al estado qj. Las e.r del tipo R

0ij se definen de forma directa, mientras que las e.r.

Rkij , k ≥ 1 se definen de forma recursiva.

R0ij =

� {a ∈ Σ/f(qi, a) = qj} si i �= j{a ∈ Σ/f(qi, a) = qj} ∪ λ si i = j

Rkij = Rk−1

ij +Rk−1ik (Rk−1

kk )∗Rk−1

kj , k ≥ 1Una vez calculadas las e.r. Rk

ij, la e.r. buscada es: Rn1f1+Rn

1f2+ . . . donde q1 es el

estado inicial y qfi∈ F

Page 76: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

58

1ª prueba

58 TEMA 4. AUTOMATAS FINITOS

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

q1 q2

b a

k = 0 k = 1 k = 2R11 λ λ λR12 a a ab∗

R21 Ø Ø ØR22 b+ λ b+ λ b∗

Las dos ultimas columnas se han calculado mediante la formula recursiva vistaanteriormente.

R111 = R0

11 +R011(R

011)

∗R011 = λ+ λλ∗λ = λ

R112 = R0

12 +R011(R

011)

∗R012 = a+ λλ∗a = a

R121 = R0

21 +R021(R

011)

∗R011 = Ø+Øλ

∗λ = ØR1

22 = R022 +R0

21(R011)

∗R012 = (b+ λ) + Øλ∗a = b+ λ

R211 = R1

11 +R112(R

122)

∗R121 = λ+ a(b+ λ)∗Ø = λ

R212 = R1

12 +R112(R

122)

∗R122 = a+ a(b+ λ)∗(b+ λ) = a+ ab∗ = ab∗

R221 = R1

21 +R122(R

122)

∗R121 = Ø+ (b+ λ)(b+ λ)∗Ø = Ø

R222 = R1

22 +R122(R

122)

∗R122 = (b+ λ) + (b+ λ)(b+ λ)∗(b+ λ) = b∗

Teniendo en cuenta que solo hay un estado final de aceptacion q2, la e.r. queestamos buscando sera R2

12 = ab∗

4.10.2. Construccion del AF que reconoce una expresion re-

gular

Estudiaremos dos metodos que nos ayudaran a construir un automata que re-conoce el lenguaje que representa una e.r. dada. El primero construye un AFNDmientras que el segundo permite construir un AFD.

Paso de expresion regular a AFND De la misma forma que las e.r. se definieronde forma recursiva, este metodo para construir el AFND, que esta basado en ladefinicion de las e.r., tambien puede considerarse recursivo. Para cada tipo de e.r.construiremos un AFND, de esta manera diferentes automatas pueden ensamblarsepara construir otro mas complejo.

Page 77: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

59

1ª prueba

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

q1 qf

a

q1 qf

λ

q1

q1 qf1Mα

q2 qf2Mβ

q0 qf

q1 qf1Mα

q2Mβ qf

λ

λ

λ λ

q1 qf1Mα

q0 qf

λλ

λ

λ

1 - e.r. = ∅

2 - e.r. = λ

3 – e.r. = a ∈ Σ

4 – e.r. = α + β

5 – e.r. = α β

6 – e.r. = α∗

Figura 4.13: Paso de e.r. a AFND

En la figura anterior se detallan los esquemas asociados a cada una de las opera-ciones que podemos encontrar en una e.r., Mα y Mβ representan a los automatas quereconocen a las e.r. α y β respectivamente.

Paso de expresion regular a AFD Introduciremos este metodo mediante unejemplo con la e.r. (a + b)*abb.Para desarrollar este metodo es necesario etiquetar con un numero a cada uno

de los sımbolos que componen la e.r. A estas etiquetas las llamaremos posiciones.Ademas, anadiremos el sımbolo # a la derecha de la e.r. para indicar el final de las

Page 78: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

60

1ª prueba

60 TEMA 4. AUTOMATAS FINITOS

palabras del lenguaje representado.

( a + b ) * a b b #1 2 3 4 5 6

Para cada una de las posiciones es necesario definir su conjunto siguiente queestara formado por las posiciones que pueden seguir a una dada en cualquier pala-bra que pertenezca al lenguaje representado por la e.r. Para calcular estos conjuntoses necesario analizar cada una de las operaciones que intervienen en la e.r. y estu-diar como afectan a las diferentes posiciones. Para este ejemplo, los valores de estosconjuntos serıan:

sig(1) = {1, 2, 3} sig(3) = {4} sig(5) = {6}sig(2) = {1, 2, 3} sig(4) = {5} sig(6) = Ø

Cada estado de nuestro AFD sera un conjunto de posiciones. Los estados finalesde aceptacion seran aquellos que contienen a la posicion asociada al sımbolo # (en elejemplo, la posicion 6). Se calculan simultaneamente estos estados y las transicionescorrespondientes mediante el algoritmo 4.5. En este algoritmo hay que tener en cuentaque simb(i) indica el sımbolo del alfabeto asociado a la posicion i. En nuestro caso:

simb(1) = {a} simb(3) = {a} simb(5) = {b}simb(2) = {b} simb(4) = {b} simb(6) = Ø

Ademas, pp representa a las primeras posiciones de la e.r., es decir, las posicionespor las que puede comenzar cualquier palabra representada por la e.r. En este ejemplo,pp = {1, 2, 3}Las siglas EM y ENM significan Estados Marcados y Estados No Marcados re-

spectivamente, y representan a dos conjuntos de estados del automata que se esta con-struyendo. Estos conjuntos se utilizan para saber si un estado ha sido marcado o no.Marcar un estado significa procesarlo, es decir, calcular las transiciones que parten dedicho estado. Cuando un estado se procesa pasa del conjunto ENM al conjunto EM.La construccion del automata terminara cuando no quede ningun estado sin marcar.Veamos como se aplicarıa el algoritmo 4.5 al ejemplo con el que estamos traba-

jando.Comenzamos definiendo el estado inicial q0 = pp = {1, 2, 3}.Inicialmente, EM = Ø y ENM = {q0}A continuacion hay que calcular la funcion de transicion para el estado q0

f(q0, a) = sig(1) ∪ sig(3) = {1, 2, 3, 4} = q1f(q0, b) = sig(2) = {1, 2, 3} = q0 Ahora: EM = {q0} y ENM = {q1}Es necesario seguir calculando la funcion de transicion para los nuevos estados quevan apareciendo.

Page 79: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

61

1ª prueba

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

Algoritmo 4.5 Construccion del AFD a partir de la e.r.Input: x ∈ Σ∗

BeginENM = ppEM = Øwhile ENM �= Ø doPasar T desde ENM hasta EMfor all a ∈ Σ doR =

�∀i∈T sig(i) tal que simb(i) = a

if R �= Ø and R /∈ (EM ∪ENM) thenanadir R a ENMf(T, a) = R

end ifend for

end whileEnd

f(q1, a) = sig(1) ∪ sig(3) = {1, 2, 3, 4} = q1f(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} = q1f(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} = q1f(q3, b) = sig(2) = {1, 2, 3} = q0 EM = {q0, q1, q2, q3} y ENM = Ø

La figura 4.14 representa graficamente al automata construido. Como se puedeobservar, el unico estado final de aceptacion es q3.

q1

q0

q3

a

b

a

q2

a

b

a

bb

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

Page 80: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

62

1ª prueba

62 TEMA 4. AUTOMATAS FINITOS

4.10.3. Relacion entre A.F. y gramaticas regulares

En este apartado, se estudiaran metodos, similares entre si, para construir el AFque reconoce al lenguaje generado por una gramatica regular (distinguiendo si eslineal por la izquierda o por la derecha). De forma analoga se estudiaran metodospara construir gramaticas que generen el lenguaje que reconoce un AF dado. Parapoder definir una relacion entre los AF’s y las gr. regulares estableceremos, en primerlugar, las siguientes correspondencias:

Cada estado del automata se correspondera con un sımbolo no terminal de lagramatica.

Cada transicion del automata se correspondera con una produccion de la gramatica.

Paso de GLD a AFND En este caso:

1. El estado inicial del automata se correspondera con el sımbolo inicial de lagramatica.

2. Definiremos un estado final de aceptacion P que no se corresponde con ningunsımbolo no terminal de la gramatica.

3. A cada produccion de la gramatica le corresponde una transicion en el automatasegun el siguiente esquema:

S P λ

A ::= a

A ::= aB

S ::= λ

P a

A a

A

B

Ejemplo 4.9 En la figura 4.15 se muestra la obtencion de un automata finito apartir de una gramatica lineal por la derecha.

Page 81: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

63

1ª prueba

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

0 P

1

S

A

0

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

B

1

0, 1

1

Figura 4.15: Ejemplo de paso de GLD a AFND

Paso de AFND a GLD En este caso debemos tener en cuenta las mismas rela-ciones que hemos visto en el caso anterior. Sin embargo, las transiciones que llevana un estado final dan lugar a dos producciones diferentes como indica la siguientefigura.

Obtenemos dos producciones: A ::= aB y A ::= a B

a A

Ejemplo 4.10 En la figura 4.16 se muestra la obtencion de una gramatica linealpor la derecha a partir de un automata finito. La gramatica ha sido posteriormentesimplificada ya que el sımbolo P no es un estado generativo.

0

P

1S A

1

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 GLI’s, debemos tener en cuenta que:

1. El estado final del automata se correspondera con el sımbolo inicial de lagramatica.

Page 82: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

64

1ª prueba

64 TEMA 4. AUTOMATAS FINITOS

2. Definiremos un estado inicial llamado P que no se corresponde con ningunsımbolo no terminal de la gramatica.

3. A cada produccion de la gramatica le corresponde una transicion en el Automa-ta segun el siguiente esquema:

P S λ

A ::= a

A ::= Ba

S ::= λ

A a

B a

P

A

Ejemplo 4.11 En la figura 4.17 se muestra el automata obtenido a partir de unagramatica lineal por la izquierda.

0

S

1

P

A

0

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

1

1

0

Figura 4.17: Ejemplo de paso de GLI a AFND

Paso de AFND a GLI En este caso debemos tener en cuenta las mismas relacionesque hemos visto en el caso anterior. Sin embargo, hay que tener en cuenta que puedehaber varios estados finales, en ese caso las transiciones que llevan a un estado finaldan lugar a dos producciones segun se indica en el siguiente esquema.

• Si A es el único estado final, obtenemos la producción S ::= Ba • Si hay varios estados finales, obtenemos las producciones

A ::= Ba y S ::= Ba

A a

B

Page 83: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

65

1ª prueba

4.11. LIMITES PARA LOS LENG. REGULARES 65

Ejemplo 4.12 En la figura 4.18 se muestra la gramatica lineal por la izquierdaobtenida a partir de un automata finito.

0 D 1

A

1

B ::= A0 D ::= B1 G ::= E0 | D0 |G0 | 0 E ::= C0 C ::= A1 | E1 F ::= D1 S ::= B1 | 1 | C1 | C0

B

C

F

E G 0

10

1

00

1

0

B ::= D0 D ::= B1 | 0 E ::= C0 C ::= E1 S ::= B1 | 1 | C0

A es no generativo F y G son inaccesibles

Figura 4.18: Ejemplo de paso de AFND a GLI

4.11. Lımites para los leng. regulares

En esta seccion estudiaremos dos resultados, el lema del bombeo y el teorema deMyhill-Nerode que nos permitiran establecer lımites para determinar si un lenguajees o no regular.

4.11.1. El lema del bombeo(pumping lemma)

El lema del bombeo enuncia una propiedad que deben cumplir todos los lenguajesregulares. El hecho de comprobar que un lenguaje no cumple dicha propiedad essuficiente para demostrar que no es regular. Sin embargo, en ningun caso este lemaservira 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 entres partes z = uvw que verifican:

1. |v| ≥ 12. |uv| ≤ n

3. ∀i ≥ 0⇒ uviw ∈ L

Page 84: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

66

1ª prueba

66 TEMA 4. AUTOMATAS FINITOS

Ejemplo 4.13 Utilizaremos el lema del bombeo para demostrar que el lenguaje L ={akbk/k ≥ 0} no es regular. La demostracion se realizara por el metodo de reduccional absurdo. Es decir, supondremos que L es regular, si partiendo de esta hipotesisllegamos a una situacion absurda habremos comprobado que nuestra suposicion inicialera 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 esposible encontrar una palabra en L cuya longitud sea mayor que n, por ejemplo, seaz = anbn, en este caso |z| = 2n > n. Veamos diferentes formas de dividir z en trespartes:

1. z = uvw = a . . . |a . . . a| . . . ab . . . b2. z = uvw = a . . . ab . . . |b . . . b| . . . b3. z = uvw = a . . . |a . . . ab . . . b| . . . bEn el primer caso solo se bombearıan a’s con los que conseguirıamos cadenas con

mas a’s que b’s, que no pertenecerıan a L. En el segundo caso ocurrirıa lo contrario yaque solo bombearıamos b’s. En el tercer caso bombeamos a’s y b’s simultaneamente,por tanto serıa posible obtener el mismo numero de a’s que de b’s. Sin embargo,las cadenas obtenidas contendrıan subcadenas del tipo ababab o aabbaabbaabb, decualquier forma estas palabras nunca pertenecerıan a L. No existe ninguna otra formade dividir la cadena en tres partes; por tanto, hemos comprobado que el lema no secumple y podemos asegurar que el lenguaje no es regular.

4.11.2. El teorema de Myhill-Nerode

Este teorema nos permitira saber si un lenguaje es o no regular. Ademas y enel caso de que el lenguaje sea regular, la demostracion del teorema nos muestraun metodo para construir el AFD mınimo que reconoce a dicho lenguaje. Antes deenunciar el teorema sera necesario conocer algunas definiciones acerca de las relacionesbinarias. Consideraremos que R es una relacion de equivalencia definida sobre elconjunto X.

Definicion 4.6 (Relacion invariante por la derecha)Se dice que R es invariante por la derecha respecto a una operacion ◦ definida sobreX, si se cumple que:

si xRy ⇒ ∀z ∈ X, x ◦ zRy ◦ zDefinicion 4.7 (Relacion de ındice finito)Se dice que R es de ındice finito si el cardinal de su conjunto cociente es finito, esdecir, si el numero de clases de equivalencia que define R es finito.

Page 85: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

67

1ª prueba

4.11. LIMITES PARA LOS LENG. REGULARES 67

Teorema 4.2 (Teorema de Myhill-Nerode)Dado un lenguaje L definido sobre un alfabeto Σ, las siguientes afirmaciones sonequivalentes:

1. L ⊂ Σ∗ es regular

2. L es la union de algunas clases de equivalencia de una relacion de equivalenciaRM definida sobre Σ∗ que es de ındice finito e invariante por la derecha respectoa la concatenacion.

3. A partir de L se puede definir una relacion binaria RL sobre Σ∗, de la siguienteforma:

xRLy ⇐⇒ ∀z ∈ Σ∗ xz ∈ L ⇔ yz ∈ L

Es decir, o ambas cadenas (xz e yz) pertenecen a L, o ninguna de las dospertenece a L.

Se cumple que la relacion RL es una relacion de equivalencia, de ındice finito einvariante por la derecha respecto a la concatenacion.

Demostracion.

Para demostrar este teorema comprobaremos en primer lugar que 1⇒ 2, despuesque 2⇒ 3 y finalmente que 3⇒ 1.

1 =⇒ 2 Suponemos que L es regular, entonces existe un AFD = (Σ, Q, f, q0, F ) quelo reconoce. A partir de este automata podemos definir una relacion binaria sobre Σ∗

a la que llamaremos RM :

∀x, y ∈ Σ∗ xRMy ⇐⇒ f(q0, x) = f(q0, y)

Es evidente que esta relacion es de equivalencia y ademas tendremos tantas clasesde equivalencia como estados tenga el automata, por tanto, sera una relacion de ındicefinito.

Veamos que RM es de invariante por la derecha respecto a la concatenacion. SixRMy ⇒ f(q0, x) = f(q0, y)⇒ f(q0, xz) = f(q0, yz) ∀z ∈ Σ∗ ⇒ xzRMyz c.q.d.

Si x ∈ Σ∗ entonces [x] representa a la clase de equivalencia de x, es decir, [x] esel conjunto de todas las cadenas que estan relacionadas con x.

Utilizando esta notacion y teniendo en cuenta la definicion de RM es evidente queL = {∪[x]/f(q0, x) ∈ F}. Es decir, L es la union de varias clases de equivalencia deRM , concretamente, tantas como estados finales tenga el automata.

Page 86: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

68

1ª prueba

68 TEMA 4. AUTOMATAS FINITOS

2 =⇒ 3 Suponemos que L es la union de varias clases de equivalencia definidaspor una relacion a la que llamaremos RM que es de ındice finito e invariante por laderecha.Por otra parte, se ha definido la relacion RL de la siguiente forma:

xRLy ⇐⇒ ∀z ∈ Σ∗ xz ∈ L ⇔ yz ∈ L

Es evidente que RL es una relacion de equivalencia. Veamos que es invariante porla derecha:

xRLy =⇒ ∀z ∈ Σ∗ xz ∈ L ⇔ yz ∈ L=⇒ ∀z, z� ∈ Σ∗ xzz� ∈ L ⇔ yzz� ∈ L=⇒ ∀z ∈ Σ∗ xzRLyz

Comprobaremos a continuacion que xRMy ⇒ xRLy. Si esto ocurre el numero declases de equivalencia que genera RM sera mayor o igual que el numero de clases deRL, lo que permitira afirmar que RL es de ındice finito.

xRMy =⇒ ∀z ∈ Σ∗ xzRMyz =⇒ como[xz] = [yz]

�si [xz] ⊆ L ⇒ xz ∈ L, yz ∈ Lsi [xz] � L ⇒ xz /∈ L, yz /∈ L

=⇒ xz ∈ L ⇔ yz ∈ L =⇒ xzRLyz c.q.d.

3 =⇒ 1 Suponemos que RL es de ındice finito e invariante por la derecha. Parademostrar que L es un lenguaje regular, vamos a construir un AFD = (Σ, Q, f, q0, F )que lo reconozca.

Q = Σ∗/RL f([x], a) = [xa]q0 = [λ] F = {[x]/x ∈ L}

Q es un conjunto finito porque RL es de ındice finito.

f esta bien definido porque si [x] = [y] ⇒ [xa] = [ya]∀a ∈ Σ ya que RL esinvariante por la derecha respecto a la concatenacion ⇒ f([x], a) = f([y], a)

Este automata finito que se ha definido 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 Automata Finito, podemosasegurar que L es un lenguaje regular. �

Ejemplo 4.14 Utilizando el teorema de Myhill-Nerode construiremos el AFD mıni-mo que reconozca el lenguaje 0∗10∗0∗10∗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

Page 87: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

69

1ª prueba

4.11. LIMITES PARA LOS LENG. REGULARES 69

[1] = [λ]?⇐⇒ ∀z 1z ∈ L ⇔ z ∈ L? Falso =⇒ f(q0, 1) = [1] = q1

f(q1, 0) = [10] f(q1, 1) = [11]

[10] = [λ]?⇐⇒ ∀z 10z ∈ L ⇔ z ∈ L? Falso

[10] = [1]?⇐⇒ ∀z 10z ∈ L ⇔ 1z ∈ L? Cierto =⇒ f(q1, 0) = [10] = q1

[11] = [λ]?⇐⇒ ∀z 11z ∈ L ⇔ z ∈ L? Falso

[11] = [1]?⇐⇒ ∀z 11z ∈ L ⇔ 1z ∈ L? Falso =⇒ f(q1, 1) = [11] = q2

f(q2, 0) = [110] f(q2, 1) = [111]

[110] = [11]?⇐⇒ ∀z 110z ∈ L ⇔ 11z ∈ L? Cierto =⇒ f(q2, 0) = q2

[111] = [11]?⇐⇒ ∀z 111z ∈ L ⇔ 11z ∈ L? Cierto =⇒ f(q2, 1) = q2

La siguiente figura muestra el automata que se acaba de construir.

0

q2 q0 q1

0

1

0,1

q0 = [λ]=[0]=[00] q1 =[1]=[01] q2=[11]=[110]=[111]

1

Es importante destacar que el estado q0 = [λ] = [0] representa a todas las cadenasbinarias que no tienen ningun 1, el estado q1 = [1] = [10] representa a las cadenasbinarias que tienen un solo 1 y, por tanto, pertenecen al lenguaje (por ese motivo esel unico estado final de aceptacion), y el estado q2 = [11] representa a las cadenasque tienen mas de un 1. Es evidente que q0, q1 y q2 o, lo que es lo mismo, las clases deequivalencia [λ], [1] y [11] constituyen una particion del lenguaje universal (0 + 1)∗(0 + 1)∗(0 + 1)∗.

Ejemplo 4.15 Utilizando el teorema de Myhill-Nerode es posible demostrar que ellenguaje L = {anbn/ n ≥ 0} no es regular.Comprobaremos que existe un numero infinito de clases de equivalencia para la

relacion RL, concretamente [a] �= [a2] �= [a3] �= . . .

Bastara demostrar que [ai] �= [aj ] cuando i �= j, o lo que es lo mismo, que

aiRL/ aj cuando i �= j.

Sea z = bj entonces ajz ∈ L y sin embargo aiz /∈ L =⇒ aiRL/ aj

Page 88: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

70

1ª prueba

70 TEMA 4. AUTOMATAS FINITOS

4.12. Problemas

4.1 Minimizar el siguiente automataa b

→ q0 q1 q2q1 q3 q2q2 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 ¿Que lenguajes reconocen los siguientes automatas?

0

0

1

0,11

0

0

1

11

1

0

1

00

1

0,1

A

B

C

0

0 11 0,1

D1

0,10

4.4 A partir de los siguiente Automatas Finitos:

Page 89: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

71

1ª prueba

4.12. PROBLEMAS 71

a b λ 0 1→ A {B,D} − − → A B C

B C − A B − D∗ C − − − C E −∗ D − A − ∗ D B −

∗ E − Cconstruir una GLD y una GLI, limpias y bien formadas, para generar los lenguajes

que reconocen dichos automatas. Calcular las expresiones regulares que describendichos lenguajes utilizando el metodo del sistema de ecuaciones.

4.5 Utilizando el metodo de los conjuntos siguientes calcular el AFD que reconocea 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 reconoz-ca los lenguajes L1 = (ab)

∗ y L2 = ab∗

Page 90: Teorías de Autómatas
Page 91: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

73

1ª prueba

Tema 5

Gramaticas Independientes delContexto y Automatas de Pila

Contenido

5.1. Definicion de G.I.C. . . . . . . . . . . . . . . . . . . . . . . 74

5.2. Automatas de Pila . . . . . . . . . . . . . . . . . . . . . . . 74

5.3. Arboles de derivacion . . . . . . . . . . . . . . . . . . . . . 77

5.4. Reconocimiento descendente . . . . . . . . . . . . . . . . . 80

5.5. Reconocimiento ascendente . . . . . . . . . . . . . . . . . 87

5.6. Propiedades de los L.I.C. . . . . . . . . . . . . . . . . . . . 93

5.7. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

En este tema se estudiaran las Gramaticas Independientes del Contexto (GIC), loslenguajes que estas definen, llamados lenguajes independientes del contexto (LIC),y los automatas que reconocen a estos ultimos, los Automatas de Pila (AP). Con-siderando la jerarquıa de Chomsky, tambien se les llama respectivamente gramaticasy lenguajes de tipo 2. Estas gramaticas, igual que ocurre con las regulares, tienen unagran importancia practica en la definicion de lenguajes de programacion, ya que nospermiten formalizar el concepto de sintaxis, de la misma forma que los Automatasde Pila nos permitiran modelar el funcionamiento del analizador sintactico, una delas partes fundamentales de un compilador. Analogamente, los lenguajes regulares ylos Automatas Finitos permiten representar los aspectos lexicos y el analisis lexico,respectivamente, de los lenguajes de programacion.

73

Page 92: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

74

1ª prueba

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

5.1. Definicion de G.I.C.

En las Gramaticas Independientes del Contexto las producciones son menos res-trictivas que en las gramaticas regulares. En este caso, la parte izquierda de la produc-cion tambien esta formada por un unico sımbolo no terminal, pero no hay restriccionesrespecto a la parte derecha de la produccion. Por lo tanto, las producciones son dela forma:

A ::= v donde A ∈ ΣN , v ∈ Σ∗

En este tipo de gramaticas, la conversion de A en v se realiza independientementedel contexto en el que se encuentre A, de ahı su nombre.

5.2. Automatas de Pila

De la misma forma que cualquier lenguaje regular puede ser reconocido por unAutomata Finito, cualquier lenguaje independiente del contexto puede ser reconocidopor un Automata de Pila. Sin embargo, en este caso la equivalencia es menos satis-factoria ya que los Automatas de Pila no son dispositivos deterministas y el conjuntode los Automatas de Pila Deterministas solo permite reconocer a un subconjunto delos lenguajes de tipo 2. Afortunadamente, este subconjunto suele ser suficiente paradefinir los aspectos mas comunes de cualquier lenguaje de programacion.En esencia, un Automata de Pila es un Automata Finito al que se le ha incorpora-

do memoria que se gestiona como una pila, con lo que se aumenta su poder funcional.El dispositivo sera no determinista y tendra un numero finito de movimientos (o tran-siciones) a elegir en cada situacion. Hay dos tipos de movimientos:

1. Dependiendo del estado actual del Automata, del sımbolo que hay en la cimade la pila y del que hay en la cadena de entrada, habra que elegir entre unconjunto de posibles transiciones. Cada transicion esta formada por un posiblecambio de estado y por una cadena (puede ser λ) que reemplazara al sımboloque ocupa la cima de la pila. Despues de realizar un movimiento se avanza enel analisis de la cinta de entrada.

2. Se le llama λ-movimiento y es similar al anterior salvo que el sımbolo de lacadena de entrada no se tiene en cuenta y, por tanto, el analisis de dicha cadenano avanza.

Definiremos formalmente un Automata de Pila de la siguiente forma:

AP = {Q,Σ, f,Γ, q0, z0, F}

Q es el conjunto finito de estados

Page 93: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

75

1ª prueba

5.2. AUTOMATAS DE PILA 75

Σ 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 finales

f : Q× (Σ ∪ λ)× Γ −→ P(Q× Γ∗)

f(q, a, z) = {(p1, ψ1), (p2, ψ2), . . . , (pn, ψn)}Estas transiciones indican que si el Automata de Pila se encuentra en el estadoq, recibe como entrada el sımbolo a y z es el sımbolo que se encuentra en lacima de la pila, el Automata puede pasar al estado p1 y reemplazar en la pila elcaracter z por la cadena ψ1, o bien elegir cualquiera de las otras posibilidades.

Para describir formalmente la configuracion de un Automata de Pila en un ins-tante dado, utilizamos la Descripcion Instantanea(DI). La DI estara definida poruna tupla (q, w, γ) donde q es el estado actual del Automata, w es la cadena desımbolos de entrada que aun queda por procesar, y γ es la cadena de los sımbolosalmacenados en la pila (el caracter mas a la izquierda de γ sera la cima de la pila).Utilizaremos la notacion (q, aw, zγ) −→ (p, w, βγ) cuando (p, β) ∈ f(q, a, z). La

notacion (q, w, γ) −→∗ (p, w�, β) indica que se ha pasado de la primera situacion a lasegunda en un numero indeterminado de transiciones.

Lenguaje aceptado por un Automata de Pila El lenguaje aceptado por unAutomata de Pila se puede definir de dos formas diferentes y equivalentes:

1. De forma analoga a los Automatas Finitos, es decir, el lenguaje aceptado esel conjunto de entradas que hacen que el Automata llegue a un estado final.L(M) = {w ∈ Σ∗/(q0, w, z0) −→∗ (p, λ, γ), p ∈ F}

2. El lenguaje esta formado por el conjunto de entradas que vacıan la pila. Eneste caso decimos que es un Automata de Pila Vacıa. Para esta definicion elconjunto F es irrelevante y podemos considerar que F = Ø.

N(M) = {w ∈ Σ∗/(q0, w, z0) −→∗ (p, λ, λ)}.

Dado un lenguaje independiente del contexto siempre es posible encontrar unAutomata de Pila con estados finales y un Automata de Pila Vacıa que reconozcana dicho lenguaje.

Page 94: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

76

1ª prueba

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

Ejemplo 5.1 Construiremos un Automata de Pila con estados finales para el lengua-je L = {0n1n/n ≥ 0}, generado por la GIC S ::= 0S1|λLa estrategia sera la siguiente: mientras se procesan los primeros caracteres de

la cadena (que deberan ser 0’s), estos se almacenan en la pila. Cuando se llega ala segunda mitad de la cadena y comienzan a llegar 1’s, se pasa a otro estado cuyamision sera eliminar un 0 de la pila por cada 1 que se procese. Cuando se termine deprocesar la cadena, la pila debera estar vacıa (en realidad, solo almacenara el sımboloinicial de la pila z0).

El AP se define: Q = {q0, q1, q2} Σ = {0, 1} Γ = {z0, 0} F = {q0}Y la funcion de transicion se define de la siguiente forma:

f(q0, 0, z0) = (q1, 0z0)f(q1, 0, 0) = (q1, 00) en el estado q1 se anaden caracteres a la pilaf(q1, 1, 0) = (q2, λ)f(q2, 1, 0) = (q2, λ) en el estado q2 se eliminan caracteres de la pilaf(q2, λ, z0) = (q0, λ)

En este caso el estado inicial tambien es estado final debido a que λ ∈ L. Cualquiersituacion que no haya sido definida indicara un error. Por ejemplo, si la cadenacomienza con 1 el automata detectara el error, notese que la funcion de transicion noesta definida para la situacion (q0, 1, z0).

Ejemplo 5.2 Construiremos un Automata de Pila Vacıa para el lenguaje

L = {w2w−1/w ∈ (0 + 1)∗} generado por la gramatica

S ::= 0S0| 1S1| 2

La estrategia sera la siguiente: cuando se esta procesando la primera mitad de lacadena (antes de recibir el 2), los caracteres se almacenan en la pila. Cuando comienzaa llegar la segunda mitad de la cadena, cada caracter debe coincidir con el que esta enla cima de la pila, si es ası se borra la cima y se continua el proceso. Cuando se terminede procesar la cadena, la pila debe estar vacıa.

El AP se define Q = {q0, q1} Σ = {0, 1, 2} Γ = {z0, 0, 1}La funcion de transicion sera:

Page 95: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

77

1ª prueba

5.3. ARBOLES DE DERIVACION 77

f(q0, 0, z0) = (q0, 0z0)f(q0, 1, z0) = (q0, 1z0) esta funcion se puede simplificarf(q0, 0, 0) = (q0, 00) utilizando como comodın * quef(q0, 1, 0) = (q0, 10) representa a {z0, 0, 1}f(q0, 0, 1) = (q0, 01)f(q0, 1, 1) = (q0, 11)f(q0, 2, z0) = (q1, z0) f(q0, 0, ∗) = (q0, 0∗)f(q0, 2, 0) = (q1, 0) f(q0, 1, ∗) = (q0, 1∗)f(q0, 2, 1) = (q1, 1) f(q0, 2, ∗) = (q1, ∗)f(q1, 0, 0) = (q1, λ) f(q1, 0, 0) = (q1, λ)f(q1, 1, 1) = (q1, λ) f(q1, 1, 1) = (q1, λ)f(q1, λ, z0) = (q1, λ) f(q1, λ, z0) = (q1, λ)

Ejemplo 5.3 Construiremos un Automata de Pila Vacıa para el lenguajeL = {ww−1/w ∈ (0 + 1)∗} generado por la GIC S ::= 0S0|1S1|λ.En este caso no podremos construir un AP determinista ya que no es posible cono-

cer cual es el punto medio de la cadena, momento en el que serıa necesario cambiarde estado. Cada vez que lleguen dos sımbolos iguales seguidos cabe la posibilidadde que estemos en el centro de la cadena por lo que hay que considerar el hecho deque el automata pueda cambiar de estado. La estrategia sera similar a la del ejemploanterior.El AP se define Q = {q0, q1} Σ = {0, 1} Γ = {z0, 0, 1}La funcion de transicion sera:

f(q0, 0, z0) = (q0, 0z0)f(q0, 1, z0) = (q0, 1z0)f(q0, 0, 0) = {(q0, 00), (q1, λ)} hay dos posibilidades, considerando o nof(q0, 0, 1) = (q0, 01) el haber llegado al centro de la cadenaf(q0, 1, 0) = (q0, 10)f(q0, 1, 1) = {(q0, 11), (q1, λ)} idemf(q1, 0, 0) = (q1, λ)f(q1, 1, 1) = (q1, λ)f(q1, λ, z0) = (q1, λ) la pila queda vacıa

5.3. Arboles de derivacion

El arbol de derivacion, al representar las producciones utilizadas para generaruna palabra, esta indicando ademas su estructura, lo que resulta determinante paraentender su significado. Por esa razon, en los mecanismos para reconocer lenguajesindependientes del contexto no es suficiente con indicar si una cadena determinadapertenece o no al lenguaje, tambien es muy importante que el reconocedor construyael arbol de derivacion de dicha cadena.

Page 96: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

78

1ª prueba

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

Cada nodo interno del arbol sera un sımbolo no terminal de la gramatica mientrasque las hojas seran los sımbolos terminales. Una produccion como A ::= X1 . . .Xn serepresentara como un subarbol cuyo nodo padre es A siendo sus hijos los sımbolosX1, . . . , Xn.

Si en un paso de la construccion del arbol, se aplica una produccion al sımbolo noterminal que esta situado mas a la izquierda del arbol, se dice que es una derivacionpor la izquierda. La misma definicion se aplica a derivacion por la derecha.

5.3.1. Ambiguedad.

Una gramatica es ambigua cuando es posible construir dos o mas arboles dederivacion diferentes para una misma palabra. El problema de la ambiguedad es muycomplejo ya que no existe ningun algoritmo que permita reconocer si una gramaticaes o no ambigua y, en el caso de que lo sea, tampoco existe ningun algoritmo quepermita eliminar dicha ambiguedad (ni siquiera es posible eliminarla en todos loscasos). Los lenguajes independientes del contexto para los cuales todas las GIC quelos generan son ambiguas, se dice que tienen una ambiguedad inherente.

Ejemplo 5.4 (Gramatica ambigua) Un ejemplo clasico de gramatica ambigua sepresenta en la definicion de las expresiones aritmeticas que aparecen comunmenteen los lenguajes de programacion. El siguiente ejemplo simplificado permite definirexpresiones en las que intervienen las cuatro operaciones aritmeticas basicas conoperandos que pueden ser identificadores (id) o constantes (cte). Llamaremos a estagramatica G Exp 0.

ΣT = {id, cte, (, ),+,−, ∗, /}ΣN = {< expre >,< op >}S =< expre >

P =

< expre >::=< expre >< op >< expre >|(< expre >)|id|cte

< op >::= +|−|∗|/

Es facil demostrar que esta gramatica es ambigua construyendo dos arboles dife-rentes para generar la misma expresion, concretamente id + cte * id

Page 97: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

79

1ª prueba

5.3. ARBOLES DE DERIVACION 79

<expre>

<expre>

<expre>

id cte id

<expre> <expre><op>

<op>

+ *

<expre>

<expre>

id cte id

<expre>

<expre> <op>

<op>

+ *

<expre>

Figura 5.1: Ejemplo de ambiguedad

Analizando la figura 5.1 es facil comprobar que la ambiguedad esta provocadapor la ausencia de una jerarquıa entre los operadores. En el arbol de la izquierdala operacion suma, entre los dos primeros operandos, se lleva a cabo antes que lamultiplicacion. Sin embargo, en el arbol de la derecha se comenzarıa multiplicandolos dos ultimos operandos y al resultado de esta operacion se le sumarıa el valordel primer operando. Es evidente que a pesar de que la expresion es correcta, lautilizacion de cada arbol generarıa en cada caso resultados diferentes.

Para resolver este caso de ambiguedad hay que imponer una jerarquıa entre losoperadores. Como suele ser habitual consideraremos que la multiplicacion y la divisiontienen una prioridad mas alta que la suma y la resta. Si aparecen varias operacionescon la misma prioridad se ejecutaran de izquierda a derecha, aunque en este caso elresultado de la expresion siempre serıa el mismo. Para definir la jerarquıa se van aintroducir en la gramatica nuevos sımbolos no terminales:

< termino > y < op− adt > estaran asociados a los operadores aditivos suma yresta.

< factor > y < op−mult > estaran asociados a los operadores multiplicacion ydivision.

Ası llegamos a la siguiente gramatica, equivalente a G Exp 0:

ΣN = {< expre >,< termino >,< factor >,< op− adt >,< op−mult >}

S =< expre >

Page 98: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

80

1ª prueba

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

P =

< expre >::=< expre >< op− adt >< termino >| < termino >

< termino >::=< termino >< op−mult >< factor >| < factor >

< factor >::= (< expre >)|id|cte

< op− adt >::= +|−

< op−mult >::= ∗|/

Con esta nueva gramatica, a la que llamaremos G Exp 1, la expresion anteriortendrıa un unico arbol de derivacion que se representa en la figura 5.2.

<expre>

<expre>

<termino>

id cte id

<factor><termino><termino>

<op_adt>

+ *

<factor>

<op_mult><factor>

Figura 5.2: Nuevo arbol de derivacion

Este arbol representa la estructura de la expresion id + cte * id, obligando aque la multiplicacion se realice antes que la suma.

5.4. Reconocimiento descendente

En general, un reconocedor es un algoritmo que recibe como entrada una palabraw ∈ Σ+

T , examina sus sımbolos de izquierda a derecha e intenta construir un arbolde derivacion para dicha palabra. Con el proceso de construccion del arbol se obtieneademas la estructura de la palabra, las producciones gramaticales que han de aplicarsey el orden en el que deben utilizarse.

Page 99: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

81

1ª prueba

5.4. RECONOCIMIENTO DESCENDENTE 81

Un reconocedor descendente o analizador sintactico descendente es un metodo dereconocimiento de palabras de un LIC que se caracteriza porque construye el arbolde derivacion de cada palabra de manera descendente, es decir, desde la raız hastalas hojas.A continuacion se describira un reconocedor descendente llamado LL(1) (Left-

Left(1)). De su nombre, la primera L indica que la cadena se analiza de izquierdaa derecha, la segunda L indica que en cada paso se construye la derivacion por laizquierda, y el 1 indica que solo es necesario un caracter para que el reconocedordecida que produccion debe utilizar en la construccion del arbol.Como paso previo a la descripcion de los reconocedores LL(1) estudiaremos al-

gunos aspectos de las GIC que es importante detectar y evitar para el correcto fun-cionamiento del metodo.

5.4.1. Simplificacion de las GIC

Hay diferentes formas de restringir el formato de las producciones sin mermarpor ello el poder generativo de una GIC. En determinadas situaciones nos intere-sara trasformar una gramatica en otra equivalente de forma que las produccionescumplan ciertos requisitos que faciliten la construccion de un reconocedor para dichagramatica. Podemos encontrar en las GIC tres defectos que es conveniente eliminar:los prefijos comunes, la recursividad por la izquierda y la ambiguedad.

1. Eliminacion de los prefijos comunes. Una gramatica tiene prefijos comunescuando hay dos o mas producciones que, teniendo la misma parte izquierda,tienen algunos sımbolos coincidentes en el comienzo de la parte derecha dela produccion. La forma de eliminar los prefijos comunes es muy sencilla, sepretende sacar factor comun de los sımbolos que constituyen el prefijo comun.A esta operacion se la llama factorizar por la izquierda.

En general, si nos encontramos con la siguiente situacion:

A ::= δα1|δα2| . . . |δαn|β1| . . . |βm considerando que n ≥ 2 y que |δ| > 0Estas producciones se pueden sustituir por las siguientes, en las que ha sidonecesario anadir un nuevo sımbolo no terminal A�.

A ::= δA�|β1| . . . |βm A� ::= α1|α2| . . . |αn

2. Eliminacion de la recursividad por la izquierda. En una gramatica esmuy frecuente encontrar producciones recursivas. Estas tienen la forma X ::=αXβ. Seran recursivas por la izquierda cuando su forma sea X ::= Xβ, yrecursivas por la derecha si son de la forma X ::= αX

La recursividad por la izquierda resulta perjudicial a la hora de construir re-conocedores LL(1), por lo que la eliminaremos sustituyendola por recursividadpor la derecha.

Page 100: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

82

1ª prueba

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

Considerando la siguiente situacion: A ::= Aα1|Aα2| . . . |Aαn|β1| . . . |βm

Estas producciones se pueden sustituir por las siguientes, en las que ha sidonecesario anadir un nuevo sımbolo no terminal A�:

A ::= β1A�| . . . |βmA

� A� ::= α1A�|α2A

�| . . . |αnA�|λ

Ejemplo 5.5 Utilizaremos la gramatica de las expresiones aritmeticas presen-tada en la pagina 78. Para representar de forma mas compacta dicha gramaticautilizaremos letras mayusculas para indicar cuales son los sımbolos no termi-nales de acuerdo al siguiente criterio:

< expre >= E < factor >= F < termino >= T

< op− adt >= A < op−mult >=M

De esta forma, representamos a continuacion la gramatica no ambigua originala la izquierda y la nueva version, a la que llamaremos G Exp 2, a la derecha.En esta ultima version de la gramatica se ha eliminado la recursividad por laizquierda. Como la recursividad por la izquierda aparece en las produccionesque tienen a E y a T en la parte izquierda, sera necesario anadir dos nuevossımbolos no terminales a los que llamaremos E’ y T’.

G Exp 1 G Exp 2

1. E::=E A T 1. E::=T E’2. |T 2. E’::=A T E’3. T::=T M F 3. |λ4. |F 4. T::=F T’5. F::=(E) 5. T’ ::= M F T’6. |id 6. |λ7. |cte 7. F::=(E)8. A::=+ 8. |id9. |- 9. |cte10. M::=* 10. A::=+11. |/ 11. |-

12. M::=*13. |/

3. Ambiguedad. No existe ningun algoritmo que nos permite eliminar la am-biguedad de forma sistematica. Sin embargo, y como vimos en el ejemplo de lapagina 78, en ocasiones es posible resolver este problema analizando cuales sonsus causas.

Page 101: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

83

1ª prueba

5.4. RECONOCIMIENTO DESCENDENTE 83

5.4.2. Reconocedores LL(1)

En la construccion de los reconocedores LL(1) es muy importante el papel quejuegan los sımbolos directores de las producciones que, como su nombre indica, di-rigiran el analisis de la cadena, es decir, indicaran cual es la produccion que ha deutilizarse en cada paso de la construccion del arbol. Para llegar a la definicion desımbolos directores de una produccion sera necesario conocer otras definiciones pre-vias, todas ellas relativas a una GIC. Los ejemplos que aparecen en esta seccion estanbasados en la gramatica G Exp 2.

Definicion 5.1 (Cadena o palabra anulable)Una cadena w ∈ Σ∗

N es anulable si, a partir de ella, y utilizando algunas produccionesgramaticales 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 �

Definicion 5.2 (Produccion anulable)Una produccion X ::= α es anulable si α es una cadena anulable.

Una produccion anulable en modo alguno puede considerarse eliminable. Esto se debea que aunque a partir de una produccion anulable es posible llegar a λ, tambien esposible generar otras cadenas utilizando derivaciones diferentes. Las producciones nogenerativas son, obviamente, anulables.Ejemplos de producciones anulables en G Exp 2: Las producciones no 3

y 6.

Definicion 5.3 (Sımbolos Iniciales)Los sımbolos iniciales de una cadena w ∈ (ΣN ∪ΣT )

∗ son los sımbolos terminales porlos que pueden comenzar todas las palabras que podamos obtener a partir de ella.

INIC(w) = {a ∈ ΣT/ w −→∗ aβ, β ∈ Σ∗}

Metodo para calcular los Sımbolos Iniciales Hay que tener en cuenta lassiguientes consideraciones:

1. Si w comienza por un sımbolo terminal es trivial: w = aβ, a ∈ ΣT =⇒INIC(w) = {a}

2. Si w comienza por un sımbolo no terminal, hay que considerar la posibilidadde que el sımbolo por el que comienza sea anulable y aplicar esta consideracionreiteradamente. w = Xβ, X ∈ ΣN =⇒

INIC(w) =

�INIC(X) ∪ INIC(β) si X es anulableINIC(X) si X no es anulable

Page 102: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

84

1ª prueba

84 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(ATE �) = {+,−}INIC((E)) = {(} INIC(FT �) = {(, id, cte} INIC(MFT �) = {∗, /}

Definicion 5.4 (Forma sentencial)Es una cadena w ∈ (ΣN ∪ ΣT )

∗ que puede generarse a partir del sımbolo inicial deuna GIC utilizando un numero indeterminado de producciones.

Definicion 5.5 (Sımbolos Seguidores)Los sımbolos seguidores de un sımbolo no terminal X, son los sımbolos terminalesque pueden aparecer inmediatamente a la derecha de X en una forma sentencialcualquiera. SEG(X) = {a ∈ ΣT/ S −→∗ αXaβ α, β ∈ Σ∗}Ejemplos de sımbolos seguidores:E → TE� → FT �E � → (E)T �E � =⇒) ∈ SEG(E)E → TE � → FT � → idMFT � → idMcteT � =⇒ cte ∈ SEG(M)

Metodo para calcular los Sımbolos Seguidores de X. Este metodo se basaen el examen de las producciones de la gramatica. El metodo se divide en dos fases yes necesario calcular simultaneamente los sımbolos seguidores de todos los sımbolosno terminales.

Fase 1. En la primera fase examinaremos aquellas producciones en las queX apareceen la parte derecha seguido por algun sımbolo gramatical.

Situacion A. Si hay una produccion de la forma: Y ::= αXaβ donde

a ∈ ΣT α, β ∈ Σ∗ =⇒ a ∈ SEG(X)

Situacion B. Si hay una produccion de la forma: Y ::= αXZβ donde

Z ∈ ΣN α, β ∈ Σ∗ =⇒ INIC(Z) ⊂ SEG(X)

Situacion C. Si hay una produccion de la forma: Y ::= αXδβ donde

δ ∈ Σ+N es anulable α, β ∈ Σ∗ =⇒ INIC(β) ⊂ SEG(X)

Una vez que han sido consideradas estas tres situaciones se obtiene una listaprovisional 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 alfinal de la parte derecha.

Situacion D. Si hay una produccion de la forma: Y ::= αX donde

α ∈ Σ∗ =⇒ SEG(Y ) ⊂ SEG(X)

Situacion E. Si hay una produccion de la forma: Y ::= αXδ donde

δ ∈ Σ+N es anulable y α ∈ Σ∗ =⇒ SEG(Y ) ⊂ SEG(X)

Page 103: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

85

1ª prueba

5.4. RECONOCIMIENTO DESCENDENTE 85

Tras considerar las situaciones D y E con todas las producciones, se obtiene unacoleccion de relaciones de inclusion entre los conjuntos de sımbolos seguidorespreviamente calculados. Si se consideran ordenadamente todas estas inclusiones,tomando como punto de partida la lista provisional calculada en la fase 1, seconsigue la lista definitiva.

Si consideramos que el sımbolo $ aparece al final de cualquier cadena, hay quetener en cuenta siempre que $ ∈ SEG(S)

Ejemplo 5.6 Los seguidores de los sımbolos no terminales para la gramaticaG Exp 2son los siguientes:

Fase 1 Fase 2E ) $E’ ) $T + - ) $T’ + - ) $F * / + - ) $A ( id cteM ( id cte

Para llevar a cabo la segunda fase del metodo se han considerado las siguientesrelaciones de inclusion:

SEG(E) ⊂ SEG(E �) ⊂ SEG(T ) ⊂ SEG(T �) ⊂ SEG(F )

Definicion 5.6 (Sımbolos directores de una produccion)El calculo de los sımbolos directores de una produccion (X ::= α) es inmediato.Sabiendo calcular los Sımbolos Iniciales, los Seguidores y sabiendo identificar lasCadenas anulables, basta con aplicar la siguiente formula:

DIR(X ::= α) =

�INIC(α) si α no es anulableINIC(α) ∪ SEG(X) si α es anulable

Cuando se esta construyendo el arbol de derivacion correspondiente a una palabra,se analizan de izquierda a derecha los caracteres de dicha palabra y se decide cuales la produccion que se va a utilizar. Para tomar esa decision hay que considerarque, en cada momento, se debe llevar a cabo la derivacion por la izquierda siempre ycuando el caracter que se esta procesando en ese momento forme parte de los SımbolosDirectores de la produccion a utilizar.

Gramaticas LL(1)

Una gramatica sera 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

Page 104: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

86

1ª prueba

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

de la palabra que se esta analizando permita determinar sin incertidumbre la pro-duccion que se debe utilizar para proseguir con el analisis. Por lo tanto, para queuna gramatica sea LL(1) es necesario que todas las producciones que tienen el mismosımbolo en la parte izquierda no tengan ningun Sımbolo Director en comun. Es decir,considerando que:

X ::= α1|α2| . . . |αn y que

D1 = DIR(X ::= α1)D2 = DIR(X ::= α2). . .Dn = DIR(X ::= αn)

La gramatica sera 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

prefijos comunes, ni recursividad por la izquierda.

Ejemplo 5.7 Los sımbolos directores para las producciones de la gramaticaG Exp 2son los siguientes:

DIR1 = DIR(E ::= TE �) = {(, cte, id}DIR2 = DIR(E � ::= ATE�) = {+,−}DIR3 = DIR(E � ::= λ) = SEG(E �) = {), $}DIR4 = DIR(T ::= FT �) = {(, cte, id}DIR5 = DIR(T � ::=MFT �) = {∗, /}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 facil comprobar que es una gramatica LL(1) ya que:DIR2 ∩DIR3 = ∅ DIR5 ∩DIR6 = ∅ DIR7 ∩DIR8 ∩DIR9 = ∅DIR10 ∩DIR11 = ∅ DIR12 ∩DIR13 = ∅

Ejemplo 5.8 Gramatica que no es LL(1). La gramatica que se describe a contin-uacion permitira representar la clasica estructura alternativa de cualquier lenguajede programacion. Es una gramatica ambigua y por ese motivo no es LL(1) comocomprobaremos a continuacion.ΣN = {S,E,R}ΣT = {i, t, a, e, b}Los sımbolos gramaticales tienen el siguiente significado:S = Sentencia E = Expresion R = Resto de la sentencia

Page 105: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

87

1ª prueba

5.5. RECONOCIMIENTO ASCENDENTE 87

i = if t = then a = accion e = else b = boolean

P =

S ::= iEtSR|a

R ::= eS|λ

E ::= b

Sımbolos seguidores:

Fase 1 Fase 2S e $R e $E t

Sımbolos directores de las producciones:

DIR1 = DIR(S ::= iEtSR) = {i}DIR2 = DIR(S ::= a) = {a}DIR3 = DIR(R ::= eS) = {e}DIR4 = DIR(R ::= λ) = SEG(R) = {e, $}DIR5 = DIR(E ::= b) = {b}Como DIR3 ∩DIR4 = {e} podemos afirmar que la gramatica no es LL(1)

5.5. Reconocimiento ascendente

El reconocimiento ascendente o analisis sintactico ascendente se caracteriza porconstruir el arbol de derivacion de manera ascendente, es decir, desde las hojas hastala raız.A continuacion se describira un reconocedor ascendente llamado LR(1) (Left-

Right(1)). En este nombre, L indica que la cadena se analiza de izquierda a derecha,R indica que en cada paso se construye la derivacion por la derecha en orden inverso, yel 1 indica que solo es necesario un caracter para que el reconocedor decida que accionse debe realizar.Una gramatica es LR(1) si es posible construir para ella un reconocedor LR(1)

determinista.Algunas de las ventajas de los reconocedores LR(1):

Son mas potentes que los reconocedores LL(1). Es decir, el conjunto de loslenguajes LL(1) esta contenido en el conjunto de los LR(1).

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

Page 106: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

88

1ª prueba

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

Practicamente todas las gramaticas que definen los lenguajes de programacionson LR(1).

La desventaja de los reconocedores LR(1) es que su construccion a mano es mascompleja. Sin embargo, existen herramientas (YACC) que permiten la construccionautomatica 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 transicion de un estado a otro. Se representancomo Di, donde i identifica el estado al que se va a pasar.

2. Reducciones. Esta accion se lleva a cabo cuando en el arbol aparece la partederecha de una produccion y se anade la parte izquierda, subiendo un nivel enla construccion del arbol. Se representa como Ri, donde i permite identificar laproduccion utilizada en el proceso de reduccion.

Los analizadores LR(1) tambien utilizan una pila en la que se van almacenandolos caracteres que se van procesando ası como los estados por los que el reconocedorha pasado.Veamos con un sencillo ejemplo como funcionarıa un reconocedor LR(1), conocien-

do su Tabla de Acciones. Posteriormente estudiaremos como construir dicha tabla.

Ejemplo 5.9 Sea la gramatica definida 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 definen en funcion del estado del automata y del sımbolo de la

cadena de entrada que se procesa en cada momento. Hay que tener en cuenta quelas situaciones no definidas se consideran situaciones de error. La Tabla de Accionesasociada a este ejemplo se muestra a continuacion. En la tabla aparece el sımbolo $,que indica el final de la cadena de entrada.

$ a ( ) Aq0 D2 D3 D1

q1 R1

q2 R2

q3 D4

q4 D5

q5 R3

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

Page 107: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

89

1ª prueba

5.5. RECONOCIMIENTO ASCENDENTE 89

Entrada Pila Accion(a)$ q0 Desplazar a q3a)$ q0(q3 Desplazar a q4)$ q0(q3aq4 Desplazar a q5$ q0(q3aq4)q5 Reducir por la 3a produccion A ::= (a)$ q0A Desplazar a q1$ q0Aq1 Reducir por S ::= A (el proceso termina)

Veamos como se procesarıa una cadena incorrecta como a)

Entrada Pila Acciona)$ q0 Desplazar a q2)$ q0aq2 ErrorSe produce un error ya que en el estado q2 no hay ninguna accion asociada al

sımbolo ).

5.5.1. Construccion de la Tabla de Acciones

La Tabla de Acciones se construye al mismo tiempo que se definen los estados.Para llevar este trabajo a cabo es necesario introducir el concepto de LR-item queindicara el progreso del analisis de la cadena.Denominamos LR-item a una produccion a la que se le coloca una marca (un

punto) en algun lugar de la parte derecha. Esta marca indica que parte de la cadenaha sido ya procesada y cual es la que queda por analizar. Ademas, en los LR-itemshay un conjunto de sımbolos terminales (separados por una coma de la produccion)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

produccion de la gramatica y w1, w2 ∈ ΣT )Los estados del analizador LR(1) seran conjuntos de LR-items y cada LR-item,

segun la posicion en la que se encuentre el punto, indicara la accion que se debe llevara cabo.

Si detras de la marca hay algun sımbolo, la accion que se realizara sera undesplazamiento al estado que contenga un LR-item similar pero con la marcadesplazada en una posicion a la derecha.

Es decir, si [A ::= x.By, w] ∈ p y [A ::= xB.y, w] ∈ q entonces

Accion(p,B)= Desplazamiento a q

Si la marca esta situada al final de la produccion, la accion a realizar sera unareduccion por la produccion que representa el LR-item, siempre y cuando elcaracter analizado sea uno de sus sımbolos directores.

Page 108: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

90

1ª prueba

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

Por ejemplo, si [A ::= xBy., w] ∈ p entonces

Accion(p,w)= Reducir por la produccion A ::= xBy

En cada instante, el analizador va a tener una configuracion (descripcion ins-tantanea) determinada que viene dada por el contenido de la pila y por el fragmentode la cadena de entrada que aun no ha sido procesado. En la pila se almacenan losestados por los que ha ido pasando el analizador ası como los sımbolos (terminales yno terminales) que estan ubicados en las zonas superiores del arbol de derivacion.Por ejemplo: (q0X1q1 . . .Xmqm, ajaj+1 . . . an$) qi ∈ Q Xi ∈ Σ ai ∈ ΣT

Veamos como varıa la configuracion del analizador en funcion de la accion que serealice:

Desplazamiento Si Accion(qm, aj) = Dr

La nueva configuracion sera: (q0X1q1 . . .Xmqmajqr, aj+1 . . . an$)

Se anade a la pila el caracter procesado y el estado actual.

Reduccion Si Accion(qm, aj) = Ri y la produccion i es A ::= β donde |β| = rsupondremos que los ultimos r sımbolos almacenados en la pila coinciden conβ. Es decir, β = Xm−r+1 . . .Xm.

En este caso, se sustituyen los ultimos r sımbolos de la pila (y los estados queles acompanan) por A.

La nueva configuracion sera: (q0X1q1 . . . Xm−rqm−rAqp, ajaj+1 . . . an) dondeAccion(qm−r, A) = Dp

En este caso no ha sufrido ninguna modificacion el fragmento de cadena queaun queda por procesar. Aunque aj ha sido tenido en cuenta para decidir laoperacion a realizar, no podemos considerar que haya sido procesado, es decir,no forma parte de la pila ni tampoco del arbol de derivacion.

Metodo para la construccion de los LR-items Los estados se van creandoen dos fases: en primer lugar se construye lo que podemos denominar el nucleo delestado, posteriormente, y siempre que sea necesario, se anaden otros LR-items hastacerrar el estado.

Determinacion del nucleo de q0. Para cada una de las producciones que tienenal sımbolo inicial en la parte izquierda (S::=x), anadir al estado q0 el LR-item[S::= .x, $]

Cierre de un estado. Si [A::=x.By,w] ∈ q y B ∈ ΣN hay que anadir al estado qLR-items construidos a partir de todas las producciones de la gramatica quetienen a B en la parte izquierda.

Page 109: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

91

1ª prueba

5.5. RECONOCIMIENTO ASCENDENTE 91

Para la produccion B::=z, hay que anadir el LR-item [B::= .z, u] donde

u = INIC(yw).

Creacion del nucleo 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 como se crea la Tabla de Sımbolos para el ejemplo anterior:

1. Crear el nucleo 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 despues, es evidenteque:

Accion(q0, A) = D1 Accion(q0, () = D3 Accion(q0, a) = D2

3. Crear nuevos estados (en este caso estan ya cerrados)

q1 = {[S::=A., $]} Accion(q1, $) = R1

q2 = {[A::=a., $]} Accion(q2, $) = R2

q3 = {[A::=(.a), $]} Accion(q3, a) = D4

q4 = {[A::=(a.), $]} Accion(q4, )) = D5

q5 = {[A::=(a)., $]} Accion(q5, $) = R3

Ejemplo 5.11 Calculo del reconocedor LR(1) para la siguiente gramatica:

ΣT = {a, b} ΣN = {S,A,B} y las producciones:1. S ::= A 2. A ::= BA 4. B ::= aB

3. |λ 5. |bEsta gramatica genera el lenguaje (a∗b)∗

Definicion de los estados:

q0 = {[S::=.A, $],[A::=.BA, $],[A::=., $],[B::=.aB, a, b, $],[B::=.b, a, b,$]}q1 = {[S::=A., $]}q2 = {[A::=B.A,$], [A::=.BA,$], [A::=.,$], [B::=.aB,a,b,$], [B::=.b,a,b,$]}q3 = {[B::=a.B, a, b, $], [B::=.aB, a, b, $], [B::=.b, a, b,$]}q4 = {[B::=b., a, b,$]}q5 = {[A::=BA., $]}q6 = {[B::=aB., a, b, $]}Analizando los LR-items de los estados se construye la siguiente tabla de acciones:

Page 110: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

92

1ª prueba

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

$ a b A Bq0 R3 D3 D4 D1 D2

q1 R1

q2 R3 D3 D4 D5 D2

q3 D3 D4 D6

q4 R5 R5 R5

q5 R2

q6 R4 R4 R4

Utilizando esta tabla, veamos como se procesarıa la cadena ab:

Entrada Pila Accionab$ q0 Desplazar a q3b$ q0aq3 Desplazar a q4$ q0aq3bq4 Reducir por la 5a produccion B ::= b (desp. q6)$ q0aq3Bq6 Reducir por la 4a produccion B ::= aB (desp. q2)$ q0Bq2 Reducir por la 3a produccion A ::= λ (desp. q5)$ q0Bq2Aq5 Reducir por la 2a produccion A ::= BA (desp. q1)$ q0Aq1 Reducir por la 1a produccion S ::= A (finaliza el proceso)

Veamos como se procesarıa una cadena incorrecta como a

Entrada Pila Acciona$ q0 Desplazar a q3$ q0aq3 Error

Gramaticas LR(1)

Una gramatica es LR(1) siempre que sea posible construir un reconocedor LR(1)que sea determinista. Para que esto pueda ocurrir deben cumplirse las siguientescondiciones:

1. La gramatica debe ser aumentada, es decir, el sımbolo inicial no debe aparecernunca en la parte derecha de ninguna produccion. Si no es ası, basta con anadiruna produccion como S’ ::= S, en la que S’ se convierte en el nuevo sımboloinicial de la gramatica.

2. No deben aparecer conflictos a la hora de construir la tabla de acciones. Haytres tipos de conflicto:

a) Conflicto desplazamiento/desplazamiento. Aparece cuando en un es-tado q hay dos items del siguiente tipo: [A ::= α.aβ, u1] y [B ::= γ.aδ, u2].La accion asociada al estado q ante la llegada del sımbolo a podrıa ser undesplazamiento al estado que contiene al LR-item [A ::= αa.β, u1] o undesplazamiento al que contiene a [B ::= γa.δ, u2].

Page 111: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

93

1ª prueba

5.6. PROPIEDADES DE LOS L.I.C. 93

b) Conflicto reduccion/reduccion. Aparece cuando en un estado q haydos items del siguiente tipo: [A ::= α., u] y [B ::= β., u]. La accion aso-ciada al estado q ante la llegada del sımbolo u podrıa ser una reduccionutilizando la produccion A ::= α o una reduccion utilizando la produccionB ::= β.

c) Conflicto desplazamiento/reduccion. Aparece cuando en un estadoq hay dos items del siguiente tipo: [A ::= α.aβ, u1] y [B ::= β., a]. Laaccion asociada al estado q ante la llegada del sımbolo a podrıa ser undesplazamiento al estado que contiene al LR-item [A ::= αa.β, u1] o unareduccion utilizando la produccion B ::= β.

Ejemplo 5.12 Gramatica que no es LR(1).

ΣT = {a, b, c} ΣN = {S,A,B} y las producciones:1. S ::= cAB 3. A ::= Aa 5. B ::= Bb2. |c 4. |a 6. |bEsta gramatica genera el lenguaje c+ ca+b+

Comenzamos la definicion 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 informacion el conflicto es evidente:

¿que accion hay que realizar si estando en el estado q0 llega el sımbolo c? Si aten-demos al primer LR-item deberıamos desplazarnos a q1 pero si atendemos al segundoel desplazamiento deberıa hacerse a q2, por lo tanto es imposible construir un recono-cedor LR(1) determinista.

5.6. Propiedades de los L.I.C.

Teorema 5.1El conjunto de los LIC esta cerrado para la union, la concatenacion y el cierre deKleene.

Teorema 5.2El conjunto de los LIC no esta cerrado para la interseccion ni para la comple-mentacion.

Ejemplo 5.13 Sean L1 = {anbncn, n ≥ 0}, L2 = {anbncm, n,m ≥ 0} yL3 = {anbmcm, 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).

Page 112: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

94

1ª prueba

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

Como L1∩L2 = L1 ∪ L2, si los LIC fueran cerrados para la complementacion tambienlo serıan para la interseccion y hemos comprobado en el ejemplo anterior que esto noes cierto.

Teorema 5.3Si L es un LIC y R es un Lenguaje regular, entonces L ∩ R es un LIC.

Ejemplo 5.14 Sea L1 = {anbmanbm, n,m ≥ 0}, L2 = {ww, w ∈ (0 + 1)∗} yL3 = a+b+a+b+. Tenemos que L1 = L2 ∩ L3. Como L1 no es un LIC (se puededemostrar con el lema del bombeo) y L3 es un lenguaje regular entonces, aplicandoel teorema anterior, se deduce que L2 tampoco es un LIC.

Definicion 5.7 (Sustitucion)Sean Σ y Γ dos alfabetos, se define una sustitucion como una funcion

s : Σ −→ P(Γ∗) tal que ∀a ∈ Σ s(a) es un LIC.

Esta funcion se puede extender a cadenas de caracteres y a lenguajes de formanatural.

Definicion 5.8 (Homomorfismo)Un homomorfismo es un caso particular de sustitucion en el que h : Σ −→ Γ∗

Teorema 5.4El conjunto de los LIC esta cerrado para las sustituciones y (como caso particular)para los homomorfismos.

5.6.1. El lema del bombeo para LIC(pumping lemma)

El lema del bombeo enuncia una propiedad que deben cumplir todos los lenguajesindependientes del contexto. El hecho de comprobar que un lenguaje no cumple dichapropiedad es suficiente para demostrar que no es independiente del contexto. Sinembargo, en ningun caso este lema servira 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 asociadaal lenguaje n > 0, de manera que ∀z ∈ L tal que |z| ≥ n, se cumple que z se puededescomponer en cinco partes z = uvwxy que verifican:

1. |vx| ≥ 1

2. |vwx| ≤ n

3. ∀i ≥ 0 se cumple que uviwxiy ∈ L

Page 113: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

95

1ª prueba

5.7. PROBLEMAS 95

5.7. Problemas

5.1 Construir un Automata de Pila Vacıa para los siguientes lenguajes definidossobre el alfabeto Σ = {a, b, c, 0, 1}1. L1 = {a2nbn, n ≥ 0}2. L2 = {awbw−1c, w ∈ (0 + 1)∗}3. L3 = {ab∗c}4. L4 = {abncdn, n ≥ 0}

5.2 Demuestra que cada una de las siguientes gramaticas de tipo 2 es ambigua yencuentra otra gramatica equivalente que no lo sea

1. S ::= A A ::= AA|a|b2. S ::= A|B A ::= aAb|ab B ::= abB|λ3. S ::= aB|Ab A ::= aA|λ B ::= bB|λ

5.3 Para cada una de las siguientes gramaticas de tipo 2 hay que comprobar si sonLL(1) y/o LR(1). Si lo son hay que construir el correspondiente reconocedor y si nolo son hay que explicar el motivo

1. S ::= aA A ::= bA|λ2. S ::= aA A ::= Ab|b3. S � ::= S S ::= 0S0|A A ::= 1A|λ4. S ::= A A ::= AB|λ B ::= aB|b5. S ::= E E ::= E + T |T T ::= a|(E)6. S ::= cAb A ::= aA|λ

5.4 Utliza el lema del bombeo para demostrar que los siguientes lenguajes no sonindependientes del contexto

1. L1 = {anbncn, n ≥ 0}2. L2 = {anbncm, m ≥ n ≥ 0}3. L3 = {anbmcndm, n,m ≥ 0}4. L4 = {anbncm, n �= m n,m ≥ 0}

Page 114: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

96

1ª prueba

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

5. L5 = {anbncm, 0 ≤ n ≤ m ≤ 2n}

5.5 Demuestra que la gramatica que aparece en el ejemplo 5.8 (pagina 86) es am-bigua y no es LR(1)

5.6 Demuestra que una gramatica LR(1) no puede ser ambigua

5.7 Demuestra que el lenguaje L = {anbmcmdn, n,m ≥ 0} es independiente delcontexto

5.8 Disena una gramatica que genere parentesis anidados y demuestra que es LR(1)

5.9 Modifica la siguiente gramatica de manera que sea LL(1) y demuestra que real-mente lo esΣN = {D, T, L} S = D ΣT = {entero, real, id, ,}D ::= TL T ::= entero|real L ::= L, id|id

Page 115: Teorías de Autómatas

Manu

ales

uex

97

1ª prueba

Tema 6

Gramaticas Atribuidas

Contenido

6.1. Concepto de Semantica y de Gramatica Atribuida . . . 97

6.2. Atributos heredados y sintetizados . . . . . . . . . . . . . 99

6.3. Gramaticas S-atribuidas y L-Atribuidas . . . . . . . . . . 100

6.4. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Hasta ahora hemos visto como las gramaticas regulares (tipo 3) son adecuadaspara representar las caracterısticas morfologicas de los elementos basicos de un lengua-je de programacion. Igualmente, las gramaticas independientes del contexto (tipo 2)lo son para representar las caracterısticas sintacticas. Sin embargo, dichas gramaticasno son lo suficientemente potentes como para representar los aspectos semanticos deun lenguaje de programacion. Veremos, a lo largo de este tema, como las gramaticasatribuidas pueden ser utiles para realizar esta labor.

6.1. Concepto de Semantica y de Gramatica Atribui-

da

La semantica, considerada desde el punto de vista de los lenguajes de progra-macion, se ocupa del significado que tienen las instrucciones de los programas escritosen un determinado lenguaje.Para poder realizar un analisis semantico de un programa este debe ser correcto

tanto desde el punto de vista lexico como desde el sintactico.En la semantica de un lenguaje de programacion pueden distinguirse dos aspectos:

estatico y dinamico.

La semantica estatica se ocupa de las condiciones que deben cumplir lasconstrucciones de un programa para que su significado sea correcto.

97

Page 116: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

98

1ª prueba

98 TEMA 6. GRAMATICAS ATRIBUIDAS

Ejemplo 6.1 Una sentencia de asignacion en C como A := 5+B es correctadesde un punto de vista lexico y sintactico, pero para que sea semanticamentecorrecta la variable B debe ser de un tipo al que se le pueda aplicar el operador+ y, ademas, el valor resultante de evaluar la expresion 5+B debe ser de untipo compatible con el de la variable sobre la que se efectua la asignacion (A).

La semantica dinamica se ocupa del significado de una construccion conobjeto de que pueda ser traducido a codigo directamente ejecutable por lamaquina.

Ejemplo: A partir de una sentencia de asignacion V ← Expresion debegenerarse codigo que permita:

1. obtener la direccion de memoria de la variable V

2. calcular el valor de la expresion asignada

3. almacenar el valor calculado en el paso 2 en la direccion de memoria obteni-da en el paso 1

La semantica de un lenguaje de programacion, en sus dos vertientes estatica ydinamica, es mas difıcil de especificar que los aspectos lexicos y sintacticos de unlenguaje. Se podrıa utilizar el lenguaje natural pero su falta de precision provocarıaprobablemente ambiguedad. Tambien resultarıa difıcil confirmar que se ha realiza-do una especificacion completa de todas las caracterısticas semanticas del lenguaje.Las gramaticas atribuidas son un buen mecanismo formal para dar solucion a esteproblema.Las gramaticas atribuidas pueden considerarse como una ampliacion de las inde-

pendientes del contexto que tiene por objeto dotar a la gramatica de capacidad paraespecificar correctamente la semantica de un lenguaje de programacion. Para con-seguirlo, a los sımbolos de la gramatica se les asocian atributos que permiten definirciertas caracterısticas semanticas de los mismos, y a las producciones se les asocianfunciones semanticas que permiten calcular, evaluar y controlar dichos atributos.

Definicion 6.1 (Gramatica atribuida)Si una Gramatica Independiente del Contexto se define como

G= {ΣT ,ΣN , S, P}

la gramatica atribuida se define como

GA ={G,AS, FS}, donde

AS son los atributos semanticos asociados a los sımbolos de la gramatica.

FS son las funciones semanticas asociadas a las producciones de la gramatica.

Page 117: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

99

1ª prueba

6.2. ATRIBUTOS HEREDADOS Y SINTETIZADOS 99

De la misma forma que G permite definir los aspectos sintacticos de un lenguaje,GA permite definir los aspectos semanticos.Un mismo sımbolo de la gramatica puede tener asociados varios atributos que

permitan representar diferentes aspectos de dicho sımbolo. Por ejemplo, un sımbolollamado X que representara variables de un lenguaje podrıa tener dos atributos, unollamado tipo que podrıa tener los valores: real, entero, logico,. . . y otro llamado valorcuyo valor dependerıa del tipo mencionado anteriormente. Podrıamos representarloası:

XX.tipo X.valorentero 534

Las funciones semanticas definen las relaciones que se cumplen entre los atributosde los distintos sımbolos de la gramatica. Estas relaciones permiten calcular los valoresde unos atributos en funcion de los valores de otros.Cuando se desea describir las funciones semanticas asociadas a una produccion,

estas deben aparecen encerradas entre llaves al final o en algun punto intermediode la produccion. Si un sımbolo aparece varias veces en la misma produccion (porejemplo, en las producciones recursivas) se utilizan subındices para distinguir unasinstancias de otras. El subındice 0 se reserva para hacer referencia al sımbolo repetidocuando este aparece en la parte izquierda de la produccion y los subındices 1, 2, . . .se utilizan en orden para las diferentes apariciones del sımbolo en la parte derechade la produccion. Por ejemplo:

expr ::= expr + expr {expr0.valor = expr1.valor + expr2.valor}Esta produccion indica que una expresion aritmetica puede construirse como la

suma de otras dos expresiones mas simples y, en este caso, la accion semantica indicaque el valor de la expresion resultante sera la suma de las dos expresiones simples.

6.2. Atributos heredados y sintetizados

Una produccion gramatical puede representarse graficamente como un arbol. Porejemplo, la produccion A ::= x y z se puede representar ası:

A� �� �x y z

Empleando la terminologıa tıpica de las estructuras arboreas podemos decir que A esel nodo padre de x, o que x es un nodo hermano de y. De acuerdo a esta terminologıapodemos distinguir dos tipos diferentes de atributos.Los atributos pueden ser sintetizados y heredados. El valor de los atributos

sintetizados se calcula en funcion de los atributos de los nodos hijos. El valor de los

Page 118: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

100

1ª prueba

100 TEMA 6. GRAMATICAS ATRIBUIDAS

atributos heredados se calcula en funcion de los atributos de los nodos hermanos y/opadre.

6.3. Gramaticas S-atribuidas y L-Atribuidas

En las gramaticas atribuidas el principal problema radica en la evaluacion de losatributos. Graficamente se puede pensar en el arbol de derivacion que representa laestructura sintactica de manera que los atributos estan localizados en los diferentesnodos del arbol. Ası, un recorrido apropiado del arbol puede permitir calcular todoslo atributos. Pero si no se imponen ciertas restricciones este proceso puede ser largoy costoso.En funcion de que los atributos de una gramatica sean heredados o sintetizados se

pueden definir las gramaticas S o L atribuidas. Dependiendo del tipo de la gramaticaatribuida resultara recomendable utilizar un determinado mecanismo para construiry procesar el arbol sintactico.

6.3.1. Gramaticas S-atribuidas

Las gramaticas S-atribuidas son aquellas cuyos sımbolos solo tienen atributossintetizados.Con las gramaticas S-atribuidas es muy eficaz utilizar un reconocedor ascendente

(por ejemplo, un reconocedor del tipo LR) ya que al mismo tiempo que se construyeel arbol sintactico se pueden ir evaluando los atributos. El programa PCYACC generaun reconocedor sintactico-semantico que realiza esta tarea.

Ejemplo 6.2 El siguiente ejemplo de gramatica S-atribuida se utiliza para generarexpresiones aritmeticas. Por simplicidad, consideraremos que las unicas operacionesque se pueden realizar son la suma y la multiplicacion. Los sımbolos expr y num, querepresentan las expresiones aritmeticas y los numeros que aparecen en ellas respec-tivamente, tienen ambos un atributo sintetizado llamado valor que permite calcularel valor de las expresiones aritmeticas analizadas. Por simplicidad, el sımbolo numsera considerado como terminal y su valor habra sido obtenido en el proceso de anali-sis lexico previo.Las acciones semanticas de estas producciones permitiran obtener el valor de una

expresion aritmetica a partir de los valores de expresiones mas basicas.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 figura 6.1 muestra el arbol de derivacion de la expresion 9 + 7 * 5. Al mismotiempo que el arbol se construye de manera ascendente se calculan los atributos

Page 119: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

101

1ª prueba

6.3. GRAMATICAS S-ATRIBUIDAS Y L-ATRIBUIDAS 101

expr

expr expr

num

expr expr

+ * 5

numnum

79

num.valor9

num.valor7

num.valor5

expr.valor9

expr.valor

7 5

expr.valor35

expr.valor44

expr.valor

Figura 6.1: Gramatica S-atribuida

sintetizados de todos los sımbolos. Finalmente se obtiene el valor de la expresioncompleta.

6.3.2. Gramaticas L-atribuidas

Las gramaticas L-atribuidas tienen atributos sintetizados y heredados, pero a losatributos heredados se les imponen algunas restricciones con objeto de facilitar eldiseno de un algoritmo que permita evaluar todos los atributos de la gramatica. Losatributos heredados solo pueden depender de los atributos heredados del nodo padreo de cualquier atributo de sus nodos hermanos, siempre que esos nodos hermanosaparezcan a su izquierda en la produccion. Es decir, si tenemos una produccion

A ::= x1x2 . . . xn

Los atributos heredados de xi solo pueden calcularse en funcion de :

1. los atributos heredados de A

2. cualquier atributo (heredado o sintetizado) de x1 . . . xi−1

Ejemplo 6.3 Veamos con un ejemplo abstracto como especificar claramente un frag-mento de gramatica L-atribuida. Supongamos que tenemos la produccion

A ::= x y z

el sımbolo A tiene un atributo sintetizado(a1) y otro heredado (a2)

el sımbolo x tiene solo un atributo heredado (x1 )

Page 120: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

102

1ª prueba

102 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 produccion, loharemos de la siguiente forma:

A.a1 ↑ a2 ↓ ::= x.x1 ↓ y.y1 ↑ y2 ↓ z.z1 ↑donde el sımbolo ↓ indica que el atributo es heredado y el sımbolo ↑ indica que

es sintetizado.

Si ademas se quisieran representar las acciones semanticas, estas deberıan aparecerencerradas entre llaves y colocadas en el punto adecuado de la produccion, siguiendolas siguientes reglas:

1. Una accion semantica no podra hacer referencia a un atributo sintetizado deun sımbolo que se encuentra a la derecha de dicha accion.

2. Para calcular un atributo heredado de un sımbolo que esta en la parte derechade una produccion, la accion debe estar situada inmediatamente antes de esesımbolo.

3. Los atributos sintetizados de un sımbolo solo se pueden calcular en una produc-cion en la que dicho sımbolo se encuentre en la parte izquierda y una vez quese hayan evaluado todos los atributos de los sımbolos que aparecen en la partederecha de la produccion, por tanto, la accion correspondiente se ubicara alfinal de la produccion.

Veamos un ejemplo de como se aplicarıan estas reglas en el ejemplo anterior:

A ::= {x.x1 ↓= f(A.a2 ↓)}x {y.y2 ↓= g(x.x1 ↓)}yz {A.a1 ↑= h(y.y2 ↓, z.z1 ↑)}

No podemos asociar a esta produccion acciones semanticas que evaluen los atri-butos a2 (por ser heredado se evaluara en una produccion en la que el sımbolo Aeste ubicado en la parte derecha), y1 y z1 (por ser atributos sintetizados se debenevaluar 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 quese utiliza para evaluar los atributos en una gramatica L-atribuida al hacer un recorridoen preorden de cada uno de los nodos que forman el arbol sintactico.

Page 121: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

103

1ª prueba

6.3. GRAMATICAS S-ATRIBUIDAS Y L-ATRIBUIDAS 103

Algoritmo 6.1 Visitar (N)

Input: N es un nodo de un arbol sintacticoBeginfor all H hijo del nodo N (de izquierda a derecha) doEvaluar los atributos heredados del nodo HVisitar (H)

end forEvaluar los atributos sintetizados del nodo N

End

Ejemplo 6.4 La siguiente gramatica L-atribuida permite generar una declaracionde variables siguiendo las pautas del lenguaje C. Los sımbolos no terminales D, T yL representan los conceptos de declaracion, tipo y lista de identificadores, respectiva-mente. En este ejemplo, los atributos que tienen los diferentes sımbolos gramaticalesalmacenan informacion que representa el tipo de las variables que se van a definir.Ademas, el sımbolo terminal id tiene un atributo sintetizado que permite conocer elnombre de la variable y que habra sido calculado en el proceso de analisis lexico.

La semantica de estas instrucciones de declaracion debe asociar a cada vari-able su tipo correspondiente y ademas debe almacenar, utilizando el procedimientoanadir tabla, la informacion asociada a cada variable en la tabla de sımbolos del com-pilador.

D ::= T {L.tipoh = T.tipo}LT ::= INT {T.tipo = 0}T ::= REAL {T.tipo = 1}L ::= {ID.tipoh = L.tipoh} ID

{anadir tabla(ID.nombre, ID.tipoh)}L ::= {L1.tipoh = L0.tipoh}L, {ID.tipoh = L0.tipoh} ID

{anadir tabla(ID.nombre, ID.tipoh)}

Los atributos de L y de ID son heredados, por eso los llamamos tipoh, el atributode T es sintetizado y se calcula en aquellas producciones que tienen a T en la parteizquierda (la segunda y la tercera).

Page 122: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

104

1ª prueba

104 TEMA 6. GRAMATICAS ATRIBUIDAS

int L.tipoh

3

0

id.tipoh 0 9

añadir_tabla(b,0)

0

D

T L

L

L ,

, id

id

id

0 T.tipo

añadir_tabla (a,0)

12

4

5

6

7

a

b

c

0 L.tipoh

0 L.tipoh

id.tipoh

0 id.tipoh

añadir_tabla(c,0)

8

10

Figura 6.2: Gramatica L-atribuida

La figura 6.2 muestra el arbol de derivacion de una declaracion de variables comoint a, b, c , la numeracion indica el orden en el que se realizarıan las diferentesacciones semanticas de acuerdo al algoritmo 6.1

6.4. Problemas

6.1 Dada la siguiente gramatica atribuida:ΣT = {id, cte,=,+} ΣN = {asig, expr} S = asig1. 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 gramatica S-atribuida o L-atribuida?

Page 123: Teorías de Autómatas

Manu

ales

uex

105

1ª prueba

Tema 7

Maquinas de Turing

Contenido

7.1. Introduccion. Antecedentes historicos . . . . . . . . . . . 105

7.2. Definicion y ejemplos de M.T.’s . . . . . . . . . . . . . . . 107

7.3. Restricciones a la M.T. . . . . . . . . . . . . . . . . . . . . 110

7.4. Modificaciones de la M.T. . . . . . . . . . . . . . . . . . . 113

7.5. Tecnicas para la construccion 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 maquina de Turing es un dispositivo teorico muy simple pero con una grancapacidad computacional, es decir, permite resolver problemas de una gran compleji-dad. Como veremos en los proximos temas, la maquina de Turing es una herramientaformal muy util para estudiar la teorıa de la computabilidad.

7.1. Introduccion. Antecedentes historicos

En la decada de los 30, el ingles Allan Turing diseno el modelo matematico deuna maquina teorica con un gran poder computacional, llamada Maquina de Turing(M.T.). En los siguientes parrafos analizaremos los motivos cientıficos e historicosque llevaron a Turing a disenar esta maquina.A finales del siglo XIX, la recien nacida Teorıa de Conjuntos habıa causado un

gran impacto entre los matematicos. Sin embargo, algunos pensadores como BertrandRussell opinaban que dicha teorıa no estaba bien formalizada ya que permitıa enun-ciados tan paradojicos como este:

105

Page 124: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

106

1ª prueba

106 TEMA 7. MAQUINAS DE TURING

Si R es el conjunto de todos los conjuntos que no son miembros de sı mis-mo, ¿R ∈ R?

Para evitar este tipo de problemas, Russell y Whitehead desarrollaron un sistemamatematico de axiomas y reglas de inferencia altamente formalizado, cuyo propositoera poder traducir a este esquema cualquier razonamiento matematico correcto. Lasreglas estaban cuidadosamente seleccionadas para evitar planteamientos que pudieranllevar a conclusiones paradojicas.Simultaneamente, el prestigioso matematico aleman David Hilbert comenzo la

tarea de establecer un esquema mucho mas completo y manejable. Hilbert pretendıademostrar que el sistema estaba libre de contradicciones. Nunca vacilo en proclamarsu conviccion de que algun dıa con este sistema se podrıa resolver cualquier problemamatematico o demostrar que carece de solucion. Aseguraba que existıa un procedi-miento por medio del cual era posible afirmar a priori si un problema podıa o noser resuelto. Llamo a este problema Entscheidungsproblem (“el problema de la de-cision”). Sin embargo, un joven austriaco, llamado Kurt Godel, publico en 1931 unartıculo titulado “Sobre proposiciones formalmente indecidibles de los fundamentosde las matematicas y sistemas relacionales”. En el, Godel probo el Teorema de laincompletitud en el que se afirmaban dos importantes cuestiones:

1. Si la teorıa axiomatica de conjuntos es consistente existen teoremas que nopueden ser probados ni refutados.

2. No existe ningun procedimiento constructivo que pruebe que la teorıa axioma-tica de conjuntos es consistente.

En la demostracion de este teorema Godel tambien propuso un interesante metodopara enumerar objetos que originalmente no parecen ser enumerables. Utilizo paraello el teorema fundamental de la Aritmetica o teorema de factorizacion unica queafirma que todo entero positivo se puede representar de forma unica como producto defactores primos. Por ejemplo, 6936 = 23·31·172 y no hay ninguna otra factorizacion delnumero 6936 en numeros primos. Esta idea es muy interesante y puede ser utilizadapara catalogar el conjunto de las M.T.’s como veremos en el siguiente tema. Veamossu aplicacion para enumerar, por ejemplo, las expresiones aritmeticas.En primer lugar es necesario enumerar todos los elementos que pueden formar

parte de una expresion aritmetica ( 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 14De esta manera, una expresion como 3*5-2 podrıa representarse mediante la

tupla (8-3-10-2-7) que puede asociarse con el numero 28 · 33 · 510 · 72 · 117. Debidoa la unicidad de la factorizacion en numeros primos podemos reconstruir la expresionaritmetica a partir de su codigo (numero de orden) asociado.

Page 125: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

107

1ª prueba

7.2. DEFINICION Y EJEMPLOS DE M.T.’S 107

Para los cientıficos mencionados anteriormente era fundamental el concepto de al-goritmo o proceso efectivo, considerandolo como un metodo para resolver un problemagenerico en un numero finito de pasos mediante operaciones conocidas y realizables.Desde este punto de vista, Turing diseno su maquina como un dispositivo capaz derealizar un algoritmo. Apoyo las teorıas de Godel al demostrar que algunos problemasno pueden resolverse con una M.T.

La gran ventaja de la M.T. es que, a pesar de su simplicidad, tiene un granpoder computacional y no se ve limitada por las caracterısticas tecnologicas de unacomputadora como la velocidad de procesamiento o la capacidad de la memoria. Poresta razon, se la considera como un sımbolo invariante de la informatica.

En esta misma epoca, Emil Post, ası como Church y Kleene, realizaron estudiossimilares a los de Turing.

7.2. Definicion y ejemplos de M.T.’s

La M.T. es un modelo matematico para representar a una maquina teorica. Apesar de su simplicidad la M.T. tiene el mismo poder computacional que una com-putadora de proposito general.

La M.T. es interesante, sobre todo, por el conjunto de lenguajes que permite re-conocer y tambien generar (lenguajes recursivamente enumerables) y por el conjuntode funciones que puede computar (funciones calculables).

El modelo basico de M.T. esta formado por un automata finito, con un dispositivode lectura/escritura que controla una cinta de longitud infinita. La cinta esta divididaen celdas en las que se almacena un unico sımbolo o un espacio en blanco. Aunquela longitud de la cinta es infinita, en cada momento solo un numero finito de celdascontienen sımbolos diferentes al espacio en blanco, que pertenecen a un alfabetotambien finito. El dispositivo de lectura/escritura puede explorar(leer) el contenidode una celda y grabar(escribir) un nuevo sımbolo sobre ella, seguidamente se desplazaen una posicion hacia la izquierda o hacia la derecha. Por tanto, la M.T. dependiendodel sımbolo leıdo y del estado actual del automata, 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 unaposicion.

Con el siguiente esquema se representa una M.T. que se encuentra en un estadollamado p y cuya cabeza de lectura/escritura senala a una celda que contiene alsımbolo a

Page 126: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

108

1ª prueba

108 TEMA 7. MAQUINAS DE TURING

a

↑ p

Definicion 7.1 (Maquina de Turing)Formalmente la M.T. se define como una tupla:

MT = {Q,Σ,Γ, f, q0, b, F}

Q es el conjunto finito 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 finales

f : Q× Γ −→ Q× Γ× {I,D}

Inicialmente, en la cinta hay una coleccion finita de sımbolos de Σ precedida y seguidapor blancos (b), el estado de la M.T. es q0 y la cabeza de lectura/escritura sueleapuntar al primer sımbolo distinto de b que hay en la cinta.

Definicion 7.2 (Descripcion Instantanea de una M.T.)Llamaremos Descripcion Instantanea(D.I.) de la M.T. a α1qα2 donde q es el estadoactual de la maquina y α1α2 ∈ Γ∗ es el contenido de la cinta. La cabeza de lec-tura/escritura analiza en ese momento el primer sımbolo de α2. Dentro de la cadenaα1α2 podemos encontrar el caracter b, pero el primer caracter de α1 es el caracterdiferente de b mas a la izquierda de la cinta y el ultimo caracter de α2 es el caracterdiferente de b mas a la derecha de la cinta.

Teniendo en cuenta el concepto de D.I. los movimientos de la M.T. puedendefinirse de la siguiente forma:

Sea una M.T. cuya D.I. es x1 . . . xi−1qxi . . . xn

Si f(q, xi) = (p, y, I) entonces la nueva D.I. es x1 . . . xi−2pxi−1yxi+1 . . . xn

Podemos representar la transicion de la forma:

x1 . . . xi−1qxi . . . xn −→ x1 . . . xi−2pxi−1yxi+1 . . . xn

Page 127: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

109

1ª prueba

7.2. DEFINICION Y EJEMPLOS DE M.T.’S 109

Una representacion mas grafica serıa la siguiente:x1 . . . xi−1 xi . . . xn −→ x1 . . . xi−1 y xi+1 . . . xn

↑ q ↑ pSe puede utilizar el sımbolo −→∗ para indicar que hemos pasado de una situacion

a otra en uno o mas pasos.

Definicion 7.3 (Lenguaje aceptado por una M.T.)Esta formado por la cadenas definidas sobre el alfabeto Σ que hacen que la M.T.llegue a un estado final, partiendo de una situacion inicial en que la cadena esta enla cinta de entrada, q0 es el estado inicial y la cabeza de lectura/escritura apunta ala celda ocupada por el primer caracter de dicha cadena.

L(MT ) = {w ∈ Σ∗/ q0w −→∗ α1pα2 donde p ∈ F α1, α2 ∈ Γ∗}

Ejemplo 7.1 (Complemento binario) Esta M.T. obtiene el complemento binariode un numero binario almacenado en la cinta.

Q = {q0, q1} F = {q1} Σ = {0, 1} Γ = {0, 1, b}La funcion de transicion se define en la siguiente tabla:

0 1 bq0 q01D q00D q1bI

Ejemplo 7.2 (Paridad) Esta M.T. calcula la paridad del numero de 1’s que hay enla cadena binaria de entrada. Al final del proceso, se anade a la derecha de la cadenaun 0 para indicar que hay un numero par de 1’s y un 1 para indicar que el numerode 1’s es impar.

Q = {q0, q1, q2} F = {q2} Σ = {0, 1} Γ = {0, 1, b}La funcion de transicion se define en la siguiente tabla:

0 1 bq0 q00D q11D q20Iq1 q10D q01D q21I

Ejemplo 7.3 (Duplicar) Esta M.T. recibe una cadena formada por 1’s en la cintade entrada y duplica su tamano. El proceso comienza en el extremo derecho dela cadena. Para llevar a cabo este trabajo, cada vez que encuentra un 1 lo marcasustituyendolo por un 0 y se desplaza hasta el final de la cadena donde anade otro0 (que representa a un 1 marcado). Al final del proceso, en el estado q2 se cambiantodos los 0’s por 1’s para reconstruir la informacion.

Q = {q0, q1, q2, q3} F = {q3} Σ = {1} Γ = {0, 1, b}La funcion de transicion se define en la siguiente tabla:

Page 128: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

110

1ª prueba

110 TEMA 7. MAQUINAS DE TURING

1 0 bq0 q10D q00I q2bDq1 q11D q10D q00Iq2 q21D q3bI

Ejemplo 7.4 (Imagen especular) Esta M.T. construye la imagen especular de unnumero binario. Es decir, si recibe la cadena de entrada 100 al acabar el proceso lainformacion que hay en la cinta es 100001. Esta maquina es similar a la anterior conla diferencia de que, en este caso, hay que duplicar dos tipos de sımbolos (0 y 1) enlugar de uno. Tambien en este caso los dıgitos se procesaran de derecha a izquierda.Los 0’s y 1’s son reemplazados por A’s y B’s respectivamente cada vez que se procesan(duplican). Al final del proceso, en el estado q3 se reconstruye la cadena cambiandolas A’s y B’s por 0’s y 1’s.

Q = {q0, q1, q2, q3, q4} F = {q4} Σ = {0, 1} Γ = {0, 1, A, B, b}La funcion de transicion se define en la siguiente tabla:

0 1 A B bq0 q1AD q2BD q0AI q0BI q3bDq1 q1AD q1BD q0AIq2 q2AD q2BD q0BIq3 q30D q31D q4bI

Ejemplo 7.5 (Parentesis anidados) Esta M.T. reconoce cadenas de parentesisanidados. Las parejas de parentesis que se van procesado se marcan convirtiendolosen *. En este caso se dispone de dos estado finales f1 y f2 que indican respectiva-mente si la cadena inicial es o no correcta, ademas, a pesar de ser algo redundante seescribe en la cinta la letra ’S’ o ’N’ (si o no). Al final del proceso no se reconstruye lainformacion inicial que, por tanto, se pierde. Esta maquina puede reconocer cadenascomo estas: ((())) o (()()) pero no reconocerıa (()))(.

Q = {q0, q1, q2, q3, f1, f2} F = {f1, f2} Σ = {(, )} Γ = {(, ), ∗, S,N, b}La funcion de transicion se define en la siguiente tabla:

( ) * bq0 q0(D q1 ∗ I q0 ∗D q2bI marca un ) y pasa a q1q1 q0 ∗D q1 ∗ I f2ND marca un ( y pasa a q0q2 q3 ∗ I q2 ∗ I f1SD al final, comprueba que no quedan (q3 q3 ∗ I q3 ∗ I f2ND se llega a q3 si hay mas ( que )

7.3. Restricciones a la M.T.

La M.T. que se ha definido en la seccion anterior es la mas generica posible.Sin embargo, veremos a continuacion que se le pueden imponer restricciones a ladefinicion sin que esto afecte a la potencia computacional de la maquina.

Page 129: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

111

1ª prueba

7.3. RESTRICCIONES A LA M.T. 111

Las restricciones se aplicaran sucesivamente a:

1. el alfabeto,

2. la estructura de la cinta, y

3. la capacidad de la maquina para realizar diferentes operaciones (escribir, des-plazarse o cambiar de estado) en una sola transicion.

7.3.1. M.T. con alfabeto binario

Cualquier M.T. es equivalente (esto significa que realiza la misma tarea) a unaM.T. con un alfabeto binario Γ = {0, 1, b}. Para conseguirlo, sera necesario codificaren binario los caracteres del alfabeto original. Cada transicion original se desglosara envarias transiciones de la maquina con alfabeto binario con el consiguiente incrementode estados intermedios, como se indica en el siguiente ejemplo:

Sea Z una M.T. definida sobre el alfabeto Σ = {x, y, z, w}. Supongamos queZ � es la M.T. definida sobre un alfabeto binario, equivalente a Z, que pretendemosconstruir. Codificamos 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 maquinaZ � esta transicion se desglosarıa en las siguientes:

f �(p, 0) = (p0, 0, D) reconoce el primer 0 de xf �(p0, 0) = (px, 0, I) reconoce el segundo 0 de xf �(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 utilizartres nuevos estados p0, px, px0.

En general, si Z tiene un alfabeto de tamano m sera necesario buscar n ∈ N talque 2n−1 < m ≤ 2n de manera que todos los sımbolos del alfabeto de Z podran sercodificados mediante una cadena binaria de longitud n. El proceso que debera llevara cabo Z � sera el siguiente:

1. Analizar los n caracteres que representan a un sımbolo del alfabeto original. Enel peor de los casos seran necesarias n transiciones y 2n+2n−1+ . . .+20 nuevosestados.

2. Una vez reconocido el sımbolo, Z � debera retroceder como maximo n posicionescon el fin de poder modificar la cadena de longitud n que acaba de analizar.

3. Finalmente la cabeza de lectura/escritura debera desplazarse hasta llegar a laposicion adecuada.

Page 130: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

112

1ª prueba

112 TEMA 7. MAQUINAS DE TURING

7.3.2. M.T. con la cinta limitada en un sentido

Dada una M.T. con una cinta infinita en ambos sentidos, siempre existe unamaquina equivalente cuya cinta esta limitada por un extremo pero es infinita por elotro. Sea Z una M.T. con una cinta infinita en ambos sentidos. Se pueden numerarlas casillas de la siguiente forma:

-2 -1 1 2

Es posible construir una M.T. equivalente Z � cuya cinta tendra la siguiente es-tructura:

∗0 1 -1 2 -2

En Z � existe una nueva casilla, numerada con el 0, que contiene un sımbolo nuevo(∗). Ademas de anadir esta nueva casilla, se ha redistribuido la informacion de Z,de manera que cada casilla de Z � contiene la misma informacion que su correspon-diente casilla de Z (la que tiene la misma numeracion). Veamos con un ejemplo elfuncionamiento de Z �.Supongamos que f(p, x) = (q, y,D) es una de las transiciones de Z y supongamos

que x esta almacenado en la casilla n(n > 0), despues de realizar el cambio desımbolo hay que desplazarse a la casilla n+ 1 (que ahora esta situada dos posicionesa la derecha de n). En la maquina Z � esta transicion 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ımboloEl comportamiento de Z � serıa diferente si la casilla ocupada por x fuera la eti-

quetada con −n ya que un desplazamiento a la derecha en Z supone un doble de-splazamiento hacia la izquierda en Z �. La transicion anterior se desglosarıa en:

f �(p, x) = (p�D, y, I)f �(p�D, ?) = (q, ?, I)Si la posicion ocupada por x fuera la -1, habrıa que anadir una transicion al pasar

por la posicion 0. f �(q, ∗) = (q, ∗, D)En general, la nueva maquina tiene un numero 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 lacinta y otro tanto ocurre con la parte negativa de la cinta (q�, q�I , q

�D).

7.3.3. M.T. con restricciones en cuanto a las operaciones querealiza simultaneamente

En el modelo original de M.T., se realizan tres operaciones en cada transicion:1. Escritura de un sımbolo

2. Cambio de estado

3. Movimiento de la cabeza de lectura/escritura

Page 131: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

113

1ª prueba

7.4. MODIFICACIONES DE LA M.T. 113

Veamos, con diferentes ejemplos, como, aumentando el numero de estados, sepuede restringir el numero de operaciones que se realizaran simultaneamente.Imposibilidad para escribir y cambiar de estado simultaneamenteLa transicion 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 simultaneamenteLa transicion f(p, x) = (q, y,D) se convierte en:

f �(p, x) = (pD, y, P )f �(pD, y) = (q, y,D)

De forma analoga, dada una M.T. es posible construir otra equivalente a ella queejecute una sola operacion en cada transicion.

7.4. Modificaciones de la M.T.

Una de las razones de la gran aceptacion de la M.T. como modelo general decomputacion es que el modelo estandar definido al comienzo del tema es equivalentea otras versiones de M.T. que, sin aumentar el poder computacional del dispositivo,permiten resolver con mas facilidad determinados problemas.

7.4.1. Almacenamiento de informacion en el control finito

Es posible utilizar el estado de control (perteneciente a un conjunto finito) paraalmacenar una cantidad finita de informacion. Para ello cada estado se representacomo un par ordenado donde el primer elemento representa realmente al estado y elsegundo a la informacion que se pretende almacenar.Veamos su utilidad con un ejemplo en el que se define una M.T. que reconoce

el lenguaje L = 01∗ + 10∗. Como el primer sımbolo de la cadena no puede volvera aparecer, se almacena con el estado de control. Las transiciones no definidas sonsituaciones 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}

0 1 b[q0, b] [q1, 0]0D [q1, 1]1D[q1, 0] [q1, 0]1D [q1, b]0P este estado indica que la cadena comienza por 0[q1, 1] [q1, 1]0D [q1, b]0P este estado indica que la cadena comienza por 1

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

Page 132: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

114

1ª prueba

114 TEMA 7. MAQUINAS DE TURING

7.4.2. Pistas multiples

En este caso se considera que la cinta esta dividida en un numero k de pistas, demanera que los sımbolos de la cinta se representan como k-tuplas. Tampoco en estecaso se aumenta la potencia del modelo ya que solo hay un cambio en la representacionde los sımbolos de la M.T. En este sentido, es un caso analogo al anterior. Estavariacion de la M.T., concretamente con tres pistas, puede resultar muy util pararesolver operaciones aritmeticas con dos datos. Cada dato se almacena en una pistay el resultado se almacena en la tercera (que inicialmente esta vacıa). Por ejemplo,una M.T. que sume numeros binarios comenzarıa con la siguiente informacion en lacinta:

b 1 1 0 bb 1 1 1 bb b b b b

y finalmente la cinta quedarıa ası:

b 1 1 0 bb 1 1 1 b

b 1 1 0 1 b

Ejemplos de transiciones para esta maquina:

f(q0,

01b

) = (q0,

011

, I) f(q0,

00b

) = (q0,

000

, I)

7.4.3. Sımbolos de chequeo

Como se ha visto en ejemplos anteriores, para resolver muchos problemas es im-portante marcar aquellos sımbolos que se van procesando. Hasta ahora estos sımbolosse marcaban sustituyendolos por otros diferentes, sin embargo esta misma idea puedellevarse a cabo de una forma mas intuitiva y sencilla utilizando en la cinta una segun-da pista en la que solo se almacenan espacios en blanco y otro sımbolo (por ejemplo,∗) que solo aparece debajo del sımbolo de la primera pista (la original) que ha sidoprocesado. Esto no es mas que un caso particular de una M.T. con pistas multiples.

Veamos en el siguiente ejemplo como se utilizarıan estos sımbolos de chequeo pararesolver el problema planteado en el ejemplo 3 en el que la M.T. duplicaba el numerode 1’s que habıa en la cinta inicialmente.

Ejemplo 7.6 (Duplicar - segunda version) Q = {q0, q1, q2} F = {q2} Σ = {1}Γ = {0, 1, b}

Page 133: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

115

1ª prueba

7.4. MODIFICACIONES DE LA M.T. 115

El proceso comienza en el extremo derecho de la cinta y la funcion de transicionse define en la siguiente tabla:

�1b

� �1∗

� �bb

q0 q1

�1∗

�D q0

�1∗

�I q2

�bb

�D

q1 q1

�1∗

�D q0

�1∗

�I

7.4.4. Maquinas multicinta

En este caso la M.T. dispone de k cintas y k cabezas de lectura/escritura. Cadacabeza trabaja (lee y escribe) sobre su cinta y se mueve con total independencia delas demas. Para comprobar que este tipo de maquinas no aumenta el poder com-putacional de la M.T. estandar se puede construir una maquina equivalente a ellautilizando varias pistas y sımbolos de chequeo. Supongamos que la maquina Z disponede tres cintas y una situacion concreta puede ser representada como se indica en elsiguiente esquema:

Ai

↑ pBj

↑ qCk

↑ rEs posible construir una nueva maquina multipista que sea equivalente a ella. Esta

nueva maquina tendra un numero de pistas igual al doble de las cintas de la maquinaoriginal, en este caso seis. Las pistas pares almacenan un sımbolo de chequeo que sirvepara indicar que celda de la pista inmediatamente superior se esta procesando en esemomento. Las pistas impares tienen la misma funcion que las correspondientes cintasde la maquina original. Evidentemente, esta nueva M.T. tendra mas estados porquetiene que ir procesando secuencialmente cada pareja de pistas buscado el sımbolo dechequeo correspondiente.

Ai

∗Bj

∗Ck

Page 134: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

116

1ª prueba

116 TEMA 7. MAQUINAS DE TURING

7.4.5. M.T. no determinista

Dado un estado y un sımbolo analizado, la M.T. no determinista tiene un numerofinito de posibilidades entre las que elegir para realizar el siguiente movimiento. Ca-da eleccion consiste en un nuevo estado, un sımbolo a grabar y una direccion demovimiento de la cabeza. Por ejemplo:

f(q, a) = {(p1, a,D), (p2, b, I), (p3, a, I), . . .}Como ocurrıa con los Automatas Finitos, el No Determinismo no anade mas

potencia a la M.T., ni siquiera la combinacion del No Determinismo con cualquierade las modificaciones previamente planteadas aumenta el poder computacional de laM.T.

7.5. Tecnicas para la construccion de M.T.

De la misma forma que al programar, al disenar M.T.’s tambien es posible utilizartecnicas de diseno modular que simplifican la tarea de su construccion. De hecho, unaM.T. puede simular el comportamiento de cualquier tipo de subrutina, incluyendoprocedimientos recursivos con cualquier mecanismo conocido de paso de parametros.Para que una M.T. actue como subrutina de otra, la idea general es que su estadofinal se convierta en un estado de retorno a la maquina que la ha llamado. La llamadase efectua, por tanto, a traves del estado inicial de la subrutina y el retorno a travesde su estado final.Veamos, en primer lugar, como encadenar dos M.T. M1 y M2 de manera que

primero trabajeM1 e inmediatamente despues lo hagaM2 utilizando como entrada lasalida deM1. Para llevar a cabo este encadenamiento basta con realizar una transiciondesde el estado final de M1 hasta el inicial de M2. Es decir, si p1 y q1 son los estadosinicial y final, respectivamente de M1 y p2 y q2 son los estados inicial y final de M2,hay que incluir la transicion f(q1, x) = (p2, x, P ) ∀x ∈ Γ. Por ejemplo, si deseamosconstruir una M.T.M que calcule la funcion f() = 2x2, podrıamos construir M1 quecalcule g(x) = x2 y M2 que calcule h(x) = 2x, ası M serıa el resultado de encadenarM1 con M2.En ocasiones solo es deseable que trabaje M2 si el proceso de M1 ha terminado

bajo ciertas condiciones (simulacion de una sentencia if ). Por ejemplo M1 −→a M2

indica que M2 solo trabajara en el caso de que al acabar M1, la cabeza de lect./esc.este situada sobre el sımbolo a. De la misma forma, M1 −→a,b M2 indica que M2 solotrabajara en el caso de que al acabar M1 la cabeza de lec./esc. este situada sobreuna celda que contiene al sımbolo a o al sımbolo b. En este segundo caso, habrıa queanadir las siguientes transiciones:

f(q1, a) = (p2, a, P )f(q1, b) = (p2, b, P )

Page 135: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

117

1ª prueba

7.5. TECNICAS PARA LA CONSTRUCCION DE M.T. 117

f(q1, x) = (f, x, P ) ∀x ∈ Γ\{a, b} donde f es un nuevo estado final.

El esquema�a M2

M1

�b M3

indica que si al acabar el proceso,M1 esta senalando

a una celda que contiene el sımbolo a, la maquina M2 debe continuar el proceso, perosi la casilla contiene el sımbolo b, sera M3 la maquina que continuara trabajando. Enotro caso el proceso finaliza. Para materializar esta situacion habrıa que anadir lastransiciones:

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

Ejemplo 7.7 (Multiplicar) Este ejemplo servira para ilustrar la utilizacion de unaM.T. como subrutina de otra. Se construira una M.T. que multiplique numeros en-teros, que se representan como cadenas de 1’s. Por ejemplo, un 4 se representa como1111. Se utiliza el 0 como separador entre los datos iniciales. La M.T. se disenara demanera que si la entrada es 1m01n0 la salida debera ser 1n×m. Basicamente, la M.T.copiara al final de la cadena el segundo bloque de 1’s (1n) tantas veces como 1’s hayaen el primer bloque (1m), los 1’s de este primer bloque se van borrando (es una formasencilla de marcarlos).En primer lugar, se disena una M.T., llamada COPIAR que copia al final de la

cadena de entrada n 1’s. Es decir, si la situacion inicial de la M.T. se describeası 1m0q11

n01i, la situacion final sera 1m0q51n01i+n. Los 1’s (del segundo bloque)

que se van copiando se marcan cambiandolos temporalmente por un 2, y ademas seprocesan de izquierda a derecha.La funcion de transicion de COPIAR se define en la siguiente tabla, ademas q1 y q5

son respectivamente los estados inicial y final:

0 1 2 bq1 q40I q22D cambia un 1 por un 2 y pasa a q2q2 q20D q21D q31I se desplaza al extr. derecho y anade un 1q3 q30I q31I q12D se desplaza hacia la izq. buscando un 2q4 q50D q41I cambia los 2’s por 1’s

A continuacion, se disena la M.T. MULTIPLICAR que utiliza la maquina COPIAR

a modo de subrutina. La M.T. MULTIPLICAR va borrando los 1’s del primer datoal mismo tiempo que, mediante la M.T. COPIAR, copia n 1’s al final de la cadena.Cuando se han borrado todos los 1’s del primer dato se borran tambien los del segundoası como los 0’s que actuan de separadores de manera que finalmente en la cinta soloqueda el resultado de la operacion (1n×m). En este caso los estados inicial y final sonq0 y q12.

Page 136: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

118

1ª prueba

118 TEMA 7. MAQUINAS DE TURING

0 1 bq0 q6bD elimina un 1 del primer datoq5 q71Iq6 q10D q61D llama a COPIARq7 q80Iq8 q91I q10bDq9 q91I q0bD retrocede al extr. izq. para volver a empezarq10 q11bD borra un 0q11 q12bD q11bD 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 maquina sela llama Maquina de Turing Universal, y su forma de trabajar puede compararse conla de un ordenador que se comporta de una u otra forma dependiendo del programaque ejecuta en cada momento.

En primer lugar, veremos como se podrıa representar toda la informacion necesariapara simular el comportamiento de una M.T. llamada M.

Es necesario conocer la funcion de transicion, el estado inicial, el contenido inicialde la cinta y la posicion de la cabeza de lectura/escritura. Sin perdida de genera-lidad supondremos que M trabaja con un alfabeto binario y que necesitamos mbits para codificar cada uno de sus estados. El movimiento de la cabeza se puedecodificar con un unico bit (por ejemplo, 0=Derecha, 1=Izquierda). Ası cada transi-cion f(p, a) = (q, b,D) puede codificarse con 2m+ 3 sımbolos binarios de la formaxx . . . x� �� �

m

a yy . . . y� �� �m

b0, donde xx . . . x es una codificacion binaria del estado p y yy . . . y

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 estacadena. 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 apuntala cabeza de lectura/escritura. Esta informacion va cambiando a lo largo del procesorepresentando en cada momento el contenido de la cinta de M. El segundo bloquerepresenta el estado actual de M (q . . . q) y el sımbolo al que apunta la cabeza (d),que es el que esta a la derecha del asterisco en el bloque anterior. Esta informaciontiene longitud m+1 y tambien cambia a lo largo del proceso. A partir de este punto,

Page 137: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

119

1ª prueba

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 lafuncion de transicion.

Cada transicion puede considerarse como un registro formado por dos partes: laprimera (xx . . . xa) es una etiqueta que identifica a la transicion, la segunda (yy . . . yb0)puede ser considerada como el dato de la transicion. Por lo tanto, esta ultima parte dela cadena (> xx . . . xayy . . . yb0 > . . .) puede ser vista como una coleccion de registrosformados cada uno de ellos por una etiqueta y un dato. Con estas consideraciones,sera necesario construir una M.T. localizadora de informacion cuya mision seabuscar en esta coleccion de registros aquel que tenga una etiqueta determinada. Esevidente que, conociendo el significado de los datos que hay en la cinta, el segundobloque de informacion (< q . . . qd >) constituye la etiqueta que es necesario buscar.Una vez localizado el registro (transicion) adecuado sera necesario copiar el dato(yy . . . yb) en el segundo bloque de la cinta, y modificar adecuadamente el primerbloque. Basicamente, la M.T. Universal esta constituida por una M.T. que localizainformacion en la cinta y otra que copia informacion 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 basicamente se ocu-paban de reconocer lenguajes o de calcular funciones. Sin embargo, hay una terceraforma de utilizar una M.T. y es como generadora de cadenas. Este tipo de M.T.’sdisponen de varias cintas de forma que en una de ellas llamada cinta de salida, ini-cialmente vacıa, solo se llevan a cabo operaciones de escritura que van llenando lacinta con las palabras del lenguaje. Es necesario utilizar un sımbolo, que no perteneceal alfabeto sobre el que esta definido el lenguaje, y que actua como separador entreuna palabra y otra.

Por ejemplo, si se construyera una M.T. que generara el lenguaje formado portodas las cadenas binarias y se utilizara como separador el sımbolo �, en un momentodeterminado la informacion que habrıa en la cinta de salida serıa:

. . . b 0 � 1 � 0 0 � 0 1 � . . .

Es evidente que este tipo de M.T.’s solo para en el caso de que el lenguaje agenerar sea finito, por tanto, la maquina descrita en el ejemplo anterior no pararıanunca.

Para los lenguajes de tipo 0, que se estudian con mas detalle en el proximo tema,siempre es posible construir una M.T. que los genere. Como veremos, dentro de esteconjunto de lenguajes existe un importante subconjunto que es el de los lenguajesrecursivos. En el caso de los lenguajes recursivos es posible construir una M.T. quegenere las palabras de dicho lenguaje en orden creciente de tamanos, es decir, eltamano de la palabra generada en la posicion n + 1 es mayor o igual que el de la

Page 138: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

120

1ª prueba

120 TEMA 7. MAQUINAS DE TURING

generada en la posicion n.

7.8. La tesis de Church-Turing

Podemos decir que una M.T. es un modelo general de computacion y esto esequivalente a decir que cualquier procedimiento algorıtmico que sea ejecutable (poruna persona o una maquina) puede ser desarrollado por una M.T.“La nocion de procedimiento algorıtmico que actua sobre una secuencia de sımbo-

los es identica al concepto de un proceso que puede ser ejecutado por una M.T.” Estaafirmacion la formulo el logico Alonzo Church a principios de la decada de los 30 ysuele denominarse tesis de Church o tesis de Church-Turing. No es una afirma-cion matematica exacta, ya que carecemos de una definicion precisa para el terminoprocedimiento algorıtmico y, por lo tanto, no es algo que pueda comprobarse. Sinembargo esta tesis es aceptada de forma general, debido a diferentes motivos:

1. No se ha planteado ningun tipo de computo que pueda incluirse en la categorıade procedimiento algorıtmico y que no pueda ejecutarse en una M.T.

2. Se han propuesto mejoras al diseno de la M.T. original y en todos los casosha sido posible demostrar que el poder computacional de las M.T.’s no se veıamodificado.

3. Se han propuesto otros modelos teoricos de computo, que siempre son equiva-lentes al de las M.T.’s

La tesis de Church-Turing no puede probarse de manera precisa debido justamentea la imprecision del termino proceso algorıtmico. Sin embargo, una vez adoptada estatesis, ya podemos darle un significado preciso al termino: “un algoritmo es un proce-dimiento que puede ser ejecutado por una M.T.” Esta definicion nos proporcionaun punto de partida para analizar problemas que pueden o no resolverse con unaM.T. como veremos en los siguientes temas.

7.9. Problemas

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

7.2 Construir una M.T. con tres pistas que reciba dos numeros binarios y que in-dique cual de los dos es mayor. Consideraremos que los datos estan almacenados enlas dos primeras pistas y alineados a la derecha, es decir, los bits menos significativosde ambos estan situados en la misma columna. En la tercera pista se escribira una

Page 139: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

121

1ª prueba

7.9. PROBLEMAS 121

G, una P o una I indicando respectivamente que el primer numero es mas grande,mas pequeno o igual que el segundo.

7.3 Construir una M.T. con tres pistas que sume dos numeros binarios. Considera-remos que los datos estan almacenados en las dos primeras pistas y alineados a laderecha. El resultado se escribira en la tercera pista que inicialmente esta vacıa.

7.4 Construir una M.T. para reconocer cada uno de los siguientes lenguajes

L1 = {0n1n, n ∈ N}L2 = {ww−1, w ∈ (0 + 1)∗}L3 = {wcw�/ w,w� ∈ (a+ b)∗ w �= w�}

Page 140: Teorías de Autómatas
Page 141: Teorías de Autómatas

Manu

ales

uex

123

1ª prueba

Tema 8

Gramaticas de tipo 0 y 1

Contenido

8.1. Gramaticas de tipo 0 . . . . . . . . . . . . . . . . . . . . . 123

8.2. Lenguajes de tipo 0 . . . . . . . . . . . . . . . . . . . . . . 124

8.3. El problema de la parada . . . . . . . . . . . . . . . . . . . 126

8.4. Lenguajes y gramaticas de tipo 1 . . . . . . . . . . . . . . 126

Este capıtulo se dedica al estudio de las gramaticas menos restrictivas, las de tipo0 y las de tipo 1. Los automatas que reconocen estas gramaticas son las Maquinas deTuring (estudiadas en el capıtulo anterior) y los Automatas Linealmente Acotadosrespectivamente. La diferencia principal entre ambos automatas esta en el tamanode la cinta que utilizan. Mientras que la Maquina de Turing dispone de una cintateoricamente infinita, los Automatas Linealmente Acotados utilizan una cinta finita,aunque su longitud pueda ser tan grande como sea necesario en cada caso.

8.1. Gramaticas de tipo 0

Dentro de la jerarquıa de Chomsky, el grupo mas amplio de gramaticas, llamadasgramaticas de tipo 0 y tambien gramaticas sin restricciones son aquellas cuyas pro-ducciones tienen la siguiente forma:

u ::= v u ∈ Σ+ v ∈ Σ∗

ademas u = xAy donde A ∈ ΣN x, y ∈ Σ∗

Es decir, en la parte izquierda de las producciones hay, al menos, un sımbolo noterminal.Este conjunto de gramaticas es equivalente al de gramaticas con estructura de

frase, cuya definicion es algo mas restringida. Las producciones de las gramaticas conestructura de frase son de la forma:

123

Page 142: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

124

1ª prueba

124 TEMA 8. GRAMATICAS DE TIPO 0 Y 1

xAy ::= xvy donde A ∈ ΣN x, y, v ∈ Σ∗

En estas gramaticas es posible que la parte derecha de la produccion sea mascorta que la izquierda (cuando v = λ), en este caso se dice que es una produccioncompresora. Una gramatica compresora es la que tiene alguna regla compresora, eneste caso las derivaciones pueden ser decrecientes.

El conjunto de los lenguajes generados por las gramaticas de tipo 0 coincidecon el conjunto de los generados por las gramaticas con estructura de frase y sellaman lenguajes recursivamente enumerables. Estos lenguajes son reconocidospor Maquinas de Turing.

Ejemplo 8.1 La gramatica de tipo 0 que se describe a continuacion genera el lengua-je L = {a2i} ΣN = {S,A,B, C,D,E} ΣT = {a}

P =

S ::= ACaBCa ::= aaCCB ::= DB|EaD ::= DaAD ::= ACaE ::= EaAE ::= λ

Esta gramatica no tiene estructura de frase (debido, por ejemplo, a la quinta y septimaproducciones), sin embargo es posible encontrar una gramatica con estructura de fraseque sea equivalente a ella.

8.2. Lenguajes de tipo 0

Como ya sabemos, los lenguajes generados por las gramaticas de tipo 0 se llamanlenguajes recursivamente enumerables y son los reconocidos por las Maquinas deTuring. Pero, ademas, estos lenguajes tambien pueden ser generados por Maquinasde Turing.

El nombre de recursivamente enumerables es debido a que sus palabras pueden sergeneradas ordenadamente por una Maquina de Turing. Dicho de otra forma, existeun algoritmo que permite generar sus palabras una tras otra. Evidentemente, si ellenguaje es infinito, la Maquina de Turing que lo genera no para nunca.

Este grupo de lenguajes incluye a algunos para los que no es posible saber si unapalabra no pertenece al lenguaje. Si L es uno de estos lenguajes, cualquier Maquinade Turing que lo reconozca no parara cuando reciba como entrada algunas palabrasque no pertenecen a L. En este caso, si w ∈ L sabemos que la M.T. parara, pero si

Page 143: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

125

1ª prueba

8.2. LENGUAJES DE TIPO 0 125

la maquina no para, no podemos saber si el motivo es que la palabra no pertenece allenguaje 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 recur-sivos, que son los aceptados por Maquinas de Turing que paran siempre, sea cualsea la entrada que reciban. Por supuesto, la parada de la maquina debe ir precedidapor la aceptacion o no de la palabra. En el caso de los lenguajes recursivos siemprees posible disenar una Maquina de Turing que genere las palabras del lenguaje segunun orden creciente de tamano.A continuacion veremos unos resultados que, entre otras cosas, demuestran que

la union es una operacion cerrada para estos dos conjuntos de lenguajes.

Teorema 8.11. 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 enume-rable

Demostracion.

1. Si L y L son recursivamente enumerables existen dos Maquinas de Turing M1

y M2 que reconocen respectivamente las palabras de L y L. A partir de M1 yM2 es posible construir una nueva maquina M que se limitarıa a anotar cual delas dos maquinas M1 o M2 acepta a la cadena de entrada. Evidentemente Mreconoce a L (y tambien a L) y ademas para, sea cual sea la entrada, por lo queL (y tambien L) es un lenguaje recursivo. Si L no fuera recursivo, no podrıamosconstruir M , ya que tampoco podrıamos construir M2. M1 resulta insuficientepara construir M , ya que, en el caso de que M1 no pare no es posible saber si lamaquina ha entrado en un bucle infinito o si necesita mas tiempo para procesarla cadena.

Si L es recursivo es evidente que tambien es recursivamente enumerable, ademaspodemos afirmar que L tambien es recursivamente enumerable ya que la M.T.que reconoce a L tambien permitirıa reconocer a L.

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

3. Si L y L son recursivos existen dos Maquinas de TuringM1 yM2 que reconocenrespectivamente las palabras de L y L. A partir deM1 yM2 es posible construir

Page 144: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

126

1ª prueba

126 TEMA 8. GRAMATICAS DE TIPO 0 Y 1

una nueva maquinaM que permita reconocer a las palabras de L1∪L2. Ademasesta maquina pararıa siempre.

4. Si L y L son recursivamente enumerables existen dos Maquinas 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 maquina M que permita reconocer a laspalabras de L1 ∪L2. No es posible asegurar que M parara cuando reciba comoentrada una palabra que no pertenezca a L1 ∪L2, ya que en ese caso es posibleque no paren ni M1 ni M2. �

8.3. El problema de la parada

Dada una Maquina de Turing con un dato en la cinta de entrada, no existe ningunalgoritmo que permita conocer a priori si la maquina se detendra o no. Este problemaes, por ese motivo, indecidible.

Este problema puede enunciarse de otra forma. Teniendo en cuenta que el conjuntode las Maquinas de Turing puede enumerarse, es posible asociar a cada maquina unnumero natural. ¿Es posible construir una Maquina de Turing H que tome comodatos de entrada al par (n, x) donde n representa a la maquina pn y x a un dato paraesa maquina, y devuelva 1 o 0 dependiendo de si la maquina pn para o no teniendo ax como dato? La respuesta a esta pregunta es negativa, no es posible construir dichamaquina.

Para demostrarlo utilizaremos la tecnica de reduccion al absurdo. Supongamosque E es un lenguaje recursivamente enumerable pero no recursivo (sabemos queexisten). Sea M = pr la Maquina de Turing que reconoce a E, esta maquina nopara cuando recibe como entrada algunas de las palabras que no pertenecen a E. Porhipotesis 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 ademaspararıa siempre, pero entonces E serıa un lenguaje recursivo, lo cual es falso porhipotesis. Por lo que podemos concluir que es imposible construir H.

8.4. Lenguajes y gramaticas de tipo 1

Las gramaticas de tipo 1 de la jerarquıa de Chomsky, tambien llamadas gramaticasdependientes (o sensibles) al contexto son aquellas cuyas producciones tienen la for-ma:

Page 145: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

127

1ª prueba

8.4. LENGUAJES Y GRAMATICAS DE TIPO 1 127

xAy ::= xvy donde A ∈ ΣN x, y ∈ Σ∗ v ∈ Σ+

Es decir, en cada derivacion, un sımbolo no terminal A se sustituye por unacadena v (no nula), siempre que este se encuentre en un determinado contexto. Sepuede incluir la produccion S ::= λ, necesaria cuando λ pertenece al lenguaje. Esevidente que el conjunto de las gramaticas de tipo 1 esta incluido en el conjunto delas gramaticas con estructura de frase y que no admiten producciones compresoras.Los lenguajes de tipo 1 pueden ser reconocidos por Automatas Linealmente Aco-

tados. Estos automatas constituyen un caso particular de las Maquinas de Turingen el que la cinta esta acotada por ambos lados. Para ello, se definen dos sımbolosde la cinta especiales (por ejemplo: < y >) que delimitan el principio y el final dela zona util de la cinta que puede ser manipulada. La cabeza de lectura/escriturano podra desplazarse mas a la izquierda del sımbolo que indica el comienzo de dichazona util ni mas a la derecha del sımbolo que indica el final. Por tanto, los AutomatasLinealmente Acotados disponen de una cinta finita pero con un tamano que puedeser tan grande como sea necesario para el proceso.

Page 146: Teorías de Autómatas

128 TEMA 8. GRAMATICAS DE TIPO 0 Y 1

Page 147: Teorías de Autómatas

Manu

ales

uex

129

1ª prueba

Tema 9

Computabilidad y Maquinas deTuring

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 sepuede aplicar a aquellos problemas que pueden ser resueltos mediante un algoritmo.A partir de la definicion de maquina de Turing podremos plantear una definicionformal para este concepto. Tambien estudiaremos el concepto de recursividad y surelacion con el de calculabilidad.

9.1. Funciones calculables

La Teorıa de la Computabilidad parte de la idea inicial de hacer precisa la no-cion intuitiva de funcion calculable, es decir, una funcion que pueda ser calculadaautomaticamente mediante un algoritmo.Dada una funcion f : Nr −→ N , a veces es posible construir una Maquina de

Turing Zf que se comporte como dicha funcion.Es decir, si Zf inicia su funcionamiento con la siguiente informacion en la cinta

11 . . . 1� �� �n1

0 11 . . .1� �� �n2

0 . . . 0 11 . . . 1� �� �nr

, donde cada ristra de unos representa a un numero

natural, la maquina debe detenerse dejando en la cinta un numero α de unos, siendof(n1, n2, . . . , nr) = α.Es posible que para una tupla concreta la maquina no se detenga, en ese caso la

funcion no estarıa definida para esos valores.

129

Page 148: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

130

1ª prueba

130 TEMA 9. COMPUTABILIDAD Y MAQUINAS DE TURING

Definicion 9.1 (Funcion parcialmente calculable)Se dice que una funcion f : D ⊂ Nr −→ N es parcialmente calculable si existeuna Maquina de Turing tal que para cada tupla t ∈ D, la maquina calcula f(t)

Definicion 9.2 (Funcion calculable)Se dice que una funcion es calculable si es parcialmente calculable y esta definidasobre 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

0 si n1 < n2es calculable

Las definiciones anteriores pueden ampliarse de forma natural a funciones definidassobre otros conjuntos, por ejemplo, definidas sobre cadenas de sımbolos. De esta for-ma podemos establecer las siguientes relaciones entre lenguajes de tipo 0 y funcionescalculables o parcialmente calculables.

Dado un lenguaje L ⊆ Σ∗, definimos su funcion caracterıstica de la siguienteforma:

fL : Σ∗ −→ N

w −→ fL(w) =

�1 si w ∈ L0 si w /∈ L

La funcion caracterıstica de un lenguaje determina si una palabra pertenece o nopertenece a dicho lenguaje. Tambien es posible definir una funcion que solo indiquesi una palabra pertenece a un lenguaje, dicha funcion no estarıa definida en todo eldominio y se comportarıa de la siguiente forma:

f �L : Σ

∗ −→ Nw −→ f �

L(w) = 1 si w ∈ L

Considerando estas definiciones, podemos afirmar que:

Si L es un lenguaje recursivo, su funcion caracterıstica es calculable.

Si L es un lenguaje recursivamente enumerable, entonces es el dominio de unafuncion parcialmente calculable (f �

L).

Page 149: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

131

1ª prueba

9.2. FUNCIONES RECURSIVAS 131

Ejemplo 9.2 (Funcion no calculable) En este ejemplo no solo presentaremos unafuncion no calculable sino tambien un lenguaje que no es recursivo y otro que nisiquiera es recursivamente enumerable.El conjunto de todas las Maquinas de Turing asociadas a funciones definidas de

N en N es infinito pero numerable, basta tener en cuenta que una M.T. cualquierapuede describirse como una cadena finita de sımbolos (tal y como se explico en ladefinicion de la Maquina de Turing Universal) ası como el metodo que Godel propusopara enumerar objetos que inicialmente no parecen ser enumerables (pagina 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 maquinas, podrıamos definir la siguiente funcion:

f : N −→ N

n −→ f(n) =

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

Si suponemos que f es calculable, existe una Maquina de Turing que realiza elmismo trabajo que f . Consideremos que pr sea esta maquina.

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 maquina pr

En cualquiera de los dos casos, la situacion que se produce es absurda ya que f ypr no tienen el mismo comportamiento, por lo tanto, la suposicion inicial es falsa yf no es una funcion calculable.El conjunto L1 = {n ∈ N/ pn no para si recibe como dato a n} no es recursi-

vamente enumerable y ademas, el conjunto L2 = L1 es recursivamente enumerablepero no es recursivo. Veamos, a continuacion, como justificar estas afirmaciones. Enla seccion 8.3 quedo demostrado que L1 no es un lenguaje recursivamente enume-rable, 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 enu-merable porque la Maquina de Turing Universal permite saber si un numero pertenecea L2 y, por tanto, puede reconocer los elementos de L2, sin embargo no es recursivoya que su complementario L2 = L1 no es recursivamente enumerable (teorema 8.1).

9.2. Funciones recursivas

La recursion consiste en definir un concepto en terminos de si mismo. Esta ideapuede aplicarse a las definiciones de funciones, de conjuntos y, en particular, delenguajes.

Page 150: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

132

1ª prueba

132 TEMA 9. COMPUTABILIDAD Y MAQUINAS DE TURING

A continuacion veremos una primera definicion de funcion recursiva.

Definicion 9.3 (Funcion recursiva)Una funcion f : Nn −→ N se considera recursiva si tiene los siguientes elementos:

Definiciones basicas que establecen de manera axiomatica el valor que toma lafuncion para determinados valores del conjunto origen.

Por ejemplo, fact(0) = 1.

Una o mas reglas recursivas que permiten calcular nuevos valores de la funciona partir de otros valores conocidos.

Por ejemplo, fact(n) = n× fact(n− 1), n ≥ 1Aplicar las definiciones basicas y las recursivas un numero finito de veces debeser suficiente para calcular cualquier valor de la funcion.

A pesar de que esta definicion es muy intuitiva no es lo suficientemente estrictacomo para definir los casos mas complejos de recursividad. Por este motivo, se in-troduciran en las siguientes secciones, los conceptos de funcion recursiva primitiva yfuncion µ-recursiva.Diremos que una funcion recursiva es total si esta definida para todos los valores

del conjunto origen y parcial si lo esta solo para un subconjunto propio del conjuntoorigen.Para definir un conjunto de manera recursiva se especifican ciertos objetos del

conjunto y luego se describen uno o mas metodos generales que permiten obtenernuevos elementos a partir de los existentes.Por ejemplo, podemos definir recursivamente el lenguaje Σ∗ ası:

λ ∈ Σ∗

Para cada w ∈ Σ∗ y cada a ∈ Σ tenemos que aw ∈ Σ∗

9.2.1. Funciones recursivas primitivas

Es posible definir las funciones recursivas utilizando solo funciones basicas y cier-tas reglas que permiten mezclar funciones para construir otras mas complejas.Las funciones consideradas basicas (Kleene) son las siguientes:

Funcion constante 0 Su valor es independiente del argumento.

C(x) = 0, ∀x ∈ N

Funcion sucesor A cada numero natural le hace corresponder su sucesor siguiendoel orden habitual, de menor a mayor. Por ejemplo, S(5) = 6, S(22) = 23. Hayque hacer notar que la suma no se ha definido formalmente, por eso no puedeser utilizada en esta definicion.

Page 151: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

133

1ª prueba

9.2. FUNCIONES RECURSIVAS 133

Funciones de proyeccion Reciben n argumentos y devuelven el argumento i-esimo,es decir la proyeccion sobre la dimension i. P n

i (x1, . . . , xn) = xi

A continuacion veremos dos reglas que nos permitiran construir funciones mascomplejas a partir de las basicas.

Definicion 9.4 (Regla de composicion)Dadas las siguientes funciones: α1, . . . , αm, β definidas como

αi : Nn −→ N β : Nm −→ N

Se define la composicion de estas m+ 1 funciones como φ : Nn −→ N tal que,

φ(x1, . . . , xn) = β(α1(x1, . . . , xn), . . . , αm(x1, . . . , xn))

Definicion 9.5 (Regla de recursion primitiva)Dadas dos funciones: α, β definidas como α : Nn −→ N β : Nn+2 −→ N

Se puede definir a partir de ellas, una nueva funcion φ : 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 define ası:

φ(0) = k

φ(y + 1) = β(y, φ(y))

Definicion 9.6Decimos que una funcion es recursiva primitiva si se puede definir a partir de lasfunciones basicas mediante cero o mas aplicaciones de las reglas de composicion y derecursion primitiva.

Aunque el numero de funciones recursivas primitivas es muy amplio, existen al-gunas funciones recursivas que no son primitivas. Un ejemplo es la funcion de Acker-mann, que se define de la siguiente forma:

A(0, x) = x+ 1

A(n+ 1, 0) = A(n, 1)

A(n + 1, x+ 1) = A(n,A(n+ 1, x))

Por este motivo debemos incluir otra regla para la generacion de funciones recur-sivas que nos permitira ampliar su numero, de esta manera llegamos a la definicionde funcion µ-recursiva.

Page 152: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

134

1ª prueba

134 TEMA 9. COMPUTABILIDAD Y MAQUINAS DE TURING

9.2.2. Funciones µ-recursivas

Para ampliar el numero de funciones que podemos generar a partir de las funcionesrecursivas primitivas, anadiremos una nueva regla de composicion: la minimizacion.

Definicion 9.7 (Regla de minimizacion)Dada la funcion: α : Nn+1 −→ N se define la funcion de minimizacion

φ : Nn −→ N tal que,

φ(x1, . . . , xn) = min{y/α(x1, . . . , xn, y) = 0 ∧ ∀z < y, φ(x1, . . . , xn, y)esta definida}

En otras palabras, φ hace corresponder a cada entrada x el menor entero que cumpleque α(x, y) = 0.

Definicion 9.8 (Funcion µ-recursiva)Decimos que una funcion es µ-recursiva, o simplemente recursiva, si se puede definira partir de las funciones basicas mediante cero o mas aplicaciones sucesivas de lasreglas de composicion, recursion primitiva y minimizacion.

El concepto de recursividad esta ıntimamente unido al de computabilidad, yaque toda funcion computable es µ-recursiva. Ademas, el conjunto de las maquinasde Turing es equivalente al de las funciones µ-recursivas. Es decir un problema sepuede resolver mediante maquinas de Turing si y solo si se puede plantear utilizandofunciones recursivas.

9.3. Problemas

9.1 Define recursivamente las siguientes funciones:

1. La suma de dos numeros enteros

2. La multiplicacion de dos numeros enteros

9.2 Define recursivamente los siguientes lenguajes:

1. L1 = {ww − 1/w ∈ (0 + 1)∗}2. L2 = {0n1n/n ≥ 0}3. Dado el alfabeto Σ = {i, (, ),+,−}, considera el lenguaje formado por expre-siones aritmeticas que pueden o no tener parentesis. Por ejemplo:

(i+ i), i+ i, (i+ i)− (i+ i), etc.

9.3 Demuestra que las siguientes funciones son recursivas primitivas:

Page 153: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

135

1ª prueba

9.3. PROBLEMAS 135

1. La funcion constante K(x)= k

2. La funcion predecesor,

P (x) =

�x− 1 x > 10 x = 0

3. La funcion suma

4. La funcion producto

5. La funcion sustraccion propia,

sp(x, y) =

�x− y x > y0 x ≤ y

6. La funcion sustraccion absoluta, sa(x, y) = |x− y|7. Las funciones maximo y mınimo

8. La funcion signo,

sg(x) =

�1 x > 00 x = 0

Page 154: Teorías de Autómatas
Page 155: Teorías de Autómatas

Manu

ales

uex

137

1ª prueba

Tema 10

Introduccion a la ComplejidadComputacional

Contenido

10.1. Complejidad y Maquinas 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 queson computables, es decir, que pueden ser resueltos aplicando un algoritmo, es muypequeno. Sin embargo, no todos los problemas computables son factibles en la realidadpor 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 definir los criterios basicospara saber si un problema computable es factible, dicho de otro modo, si existe unalgoritmo eficiente para su resolucion y en este caso cual es su grado de eficiencia.

10.1. Complejidad y Maquinas de Turing

Hasta este momento hemos analizado si los problemas son solubles o insolubles,es decir, si pueden o no ser resueltos mediante una maquina de Turing (un algorit-mo). Sin embargo, en la vida real los recursos de computo disponibles son limitados ypor tanto podemos encontrarnos con problemas que son solubles, pero que podemosconsiderar intratables debido a la gran cantidad de tiempo y memoria que son ne-cesarios para resolverlos. En esta seccion introduciremos una terminologıa que nospermitira analizar preguntas como ¿cuanto tiempo tardaremos en resolver un proble-ma?

137

Page 156: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

138

1ª prueba

138 TEMA 10. INTRODUCCION A LA COMPLEJIDAD COMPUTACIONAL

A priori, establecer un criterio universal para poder saber cuan eficiente es unalgoritmo no es sencillo porque un mismo problema puede resolverse sobre diferentestipos de maquinas, con diferentes grados de eficiencia. La eficiencia de un algoritmoesta en funcion del tiempo y de la cantidad de memoria que se necesite para ejecutarel programa, y esto a su vez depende del hardware utilizado.Sin embargo, la Maquina de Turing permite que nos liberemos de la mayor parte

de estas ligaduras materiales. Recordemos que al estudiar la Maquina de Turing nose impuso ningun lımite de espacio ni de tiempo, es decir, la Maquina de Turingno padece limitaciones en cuanto a la longitud de la cinta utilizada ni en cuanto alnumero de movimientos que realiza (tiempo de ejecucion). Por esta razon utilizaremosla Maquina de Turing para medir la complejidad de un algoritmo.

10.2. Medidas de complejidad algorıtmica

La complejidad de una computacion se mide por la cantidad de espacio y detiempo que consume. Las computaciones eficientes tienen unas exigencias de recursospequenas (este calificativo debe ser considerado de una manera relativa). Los recursosque necesita una computacion que acepta cadenas de algun lenguaje, suelen dependerdel tamano (longitud) de la cadena de entrada.En los siguientes parrafos consideraremos, en primer lugar, los recursos espaciales

y despues los temporales.Si M es una maquina de Turing, denotaremos por L(M) al lenguaje que reconoce

dicha maquina.

Definicion 10.1 (Complejidad espacial)La maquina M con k pistas tiene una complejidad espacial S(n), si para cualquierentrada de longitud n, consulta como maximo S(n) casillas. Tambien podemos decirque M es una Maquina de Turing espacialmente acotada por S(n), o que L(M) es unlenguaje con complejidad espacial S(n).

Se cumple siempre que S(n) ≥ 1

Teorema 10.1Si una Maquina de Turing con k pistas y cota espacial S(n) acepta al lenguaje L,entonces existe una Maquina de Turing con una sola pista y cota espacial S(n) quetambien lo acepta.

Es decir, el numero de pistas de trabajo utilizadas para aceptar un lenguaje noafecta a la complejidad espacial de L.

Definicion 10.2 (Clases de complejidad espacial)La familia de los lenguajes aceptados por Maquinas de Turing deterministas concomplejidad espacial S(n) se llama ESPACIOD(S(n)). La familia de los lenguajes

Page 157: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

139

1ª prueba

10.2. MEDIDAS DE COMPLEJIDAD ALGORITMICA 139

aceptados por Maquinas de Turing no deterministas con esa misma complejidad es-pacial se llama ESPACION(S(n)). Estas clases se conocen como clases de complejidadespacial.

Teorema 10.2Sean 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 Maquina de Turing, eltiempo de computacion tambien lo es. Consideraremos que la complejidad temporalse mide por el numero de movimientos que hace la maquina.

Definicion 10.3 (Complejidad temporal)Supongamos que M es una maquina de Turing que realiza como maximo T(n) movimien-tos sobre una cadena de longitud n, entonces se dice que M tiene una complejidadtemporal T(n) o que es una maquina con una cota temporal T(n). Tambien se diceque L(M) es un lenguaje temporalmente acotado por T(n).

Siempre se cumple que T(n)≥ n+1 (ya que n+1 es el numero mınimo de movimien-tos necesarios para leer todos los sımbolos que inicialmente hay en la cinta)

Definicion 10.4 (Clases de complejidad temporal)La familia de los lenguajes aceptados por Maquinas de Turing deterministas concomplejidad temporal T(n), es TIEMPOD(T(n)). La familia de los lenguajes acep-tados por Maquinas de Turing no deterministas con complejidad temporal T(n) esTIEMPON(T(n)). Estas clases se conocen como clases de complejidad temporal.

Teorema 10.3Sean T1, T2 y T funciones de N en N. Supongamos que T1(n) ≤ T2(n), para todo n ∈N . Entonces se cumple:

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

2. TIEMPON(T1(n)) ⊆ TIEMPON(T2(n))

3. TIEMPOD(T(n)) ⊆ TIEMPON(T(n))

Page 158: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

140

1ª prueba

140 TEMA 10. INTRODUCCION A LA COMPLEJIDAD COMPUTACIONAL

Teorema 10.4Si L ∈ TIEMPOD(f(n)) entonces, L ∈ ESPACIOD(f(n))

Demostracion. Supongamos que M es la Maquina de Turing que reconoce a Ly que realiza, como maximo, f(n) movimientos sobre la cadena de longitud n. Esevidente que puede inspeccionar un maximo 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 funcionexacta, sino solo un indicador de la forma de variacion del espacio o del tiempoocupado, en funcion de la longitud de la entrada de datos. Habitualmente nos interesapoder comparar estas funciones con otras (habitualmente mas simples) de manera quelas tasas de crecimiento sean analogas.

Veamos a continuacion la notacion que se utiliza para comparar tasas de creci-miento.

Definicion 10.5Sean 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 expresion f = O(g) quiere decir que para valores suficientemente grandes dex, la funcion f(x) es menor o igual a una funcion proporcional a g. La constante deproporcionalidad C puede ser muy grande de forma que el valor real de f(x) puedeser 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, losdos 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) sera enultima instancia menor que g(x), pero no sabemos cuan grande tiene que ser x paraque esto ocurra.

Por ejemplo, si pretendemos estudiar la eficiencia de un algoritmo ejecutado poruna Maquina de Turing M , no existe una gran diferencia, a efectos practicos, entreque su tiempo de ejecucion T(n) sea 14n2 + 25n− 4 o que sea 3n2, ya que en amboscasos podemos decir que su tasa de crecimiento no es mayor que la de n2, es decir,T = O(n2). Diremos que la maquina es de complejidad temporal n2, o (n2)-limitadaen el tiempo. Las funciones anteriores tienden (cuando n → ∞) a las asıntotas 14n2

y 3n2 respectivamente, que son funciones del tipo cn2. Ası pues estamos hablando decomplejidad en terminos asintoticos.

Page 159: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

141

1ª prueba

10.3. PROBLEMAS P, NP Y NP-COMPLETOS 141

Cuando queremos hacer referencia al crecimiento de los recursos necesarios parala ejecucion de un determinado algoritmo utilizaremos la notacion O(f(n)), que re-presenta su comportamiento asintotico. Ası un tiempo de ejecucion 14n2 + 25n− 4,se resume en que la complejidad del algoritmo es O(n2).

Los algoritmos cuya complejidad del tipo O(n), O(n2), O(n3), en general O(nc),se llaman algoritmos polinomicos, o de complejidad polinomica. Los algoritmos quese comportan como 2n (en general cn) son algoritmos exponenciales, o de complejidadexponencial.Otro aspecto diferente y muy importante dentro de la Teorıa de la Complejidad

es el que se refiere, no a la complejidad del algoritmo, sino a la complejidad delproblema. Esto nos obliga a comparar todos los algoritmos posibles para resolverun determinado problema. Se conoce como cota superior a la complejidad de unproblema a la complejidad del mejor algoritmo que se haya podido encontrar pararesolverlo. Es posible probar, a veces, que no existe algoritmo que pueda resolver undeterminado problema sin emplear como mınimo una cierta cantidad de recursos, ala que se llama cota inferior.

10.3. Problemas P, NP y NP-completos

Diremos que un algoritmo es eficiente si existe una Maquina de Turing deter-minista que lo ejecute con una complejidad temporal polinomica. A la clase de losalgoritmos (o de los problemas que estos algoritmos resuelven) eficientes se la deno-mina clase P .Existen algoritmos no deterministas que no siguen un flujo fijo, sino que actuan en

funcion de una serie de decisiones tomadas en tiempo real. De entre los algoritmos nodeterministas existe un amplio conjunto de ellos que pueden considerarse eficientes,pero es indemostrable que esten 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 tam-bien servira para resolver el problema. Por esta razon resulta equivalente considerarque P y NP son clases de problemas o clases de lenguajes.

Definicion 10.6 (Clases P y NP)La clase P de lenguajes esta compuesta por todos los lenguajes que acepta algunaMaquina de Turing determinista que tiene una cota temporal polinomica. La claseNP se compone por todos los lenguajes que acepta alguna Maquina de Turing nodeterminista con una cota temporal polinomica.

Un ejemplo de problema NP es el conocido problema de Hamilton: dado un con-junto de puntos, ¿puede encontrase un camino que pase una sola vez por cada uno de

Page 160: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

142

1ª prueba

142 TEMA 10. INTRODUCCION A LA COMPLEJIDAD COMPUTACIONAL

los puntos?. Un algoritmo determinista para resolver el problema es muy costoso, sinembargo dada una posible solucion, resulta muy sencillo comprobar que es valida.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ıano tiene solucion. Es evidente que P ⊂ NP, pero para poder demostrar que la igualdadse cumple habrıa que demostrar que todo problema NP es tambien P, es decir, habrıaque encontrar una forma de transformar una Maquina de Turing no determinista concota temporal polinomica en una Maquina de Turing determinista con cota temporaltambien polinomica. Por otro lado, tampoco se ha podido demostrar la desigualdadentre los dos conjuntos, para ello habrıa que encontrar un lenguaje que pertenezca aNP y que no pertenezca a P.Dentro de la clase NP hay un cierto numero de problemas que pueden catalogarse

entre los mas duros, en el siguiente sentido: si se encontrase un algoritmo de tiempopolinomico para cualquiera de ellos habrıa un algoritmo de tiempo polinomico paratodo problema en NP. Se dice que cualquier problema de esta categorıa es NP-completo.

Definicion 10.7Se dice que un lenguaje L1 es reducible en tiempo polinomico a un lenguaje L2 si hayuna funcion f computable en tiempo polinomico para la cual f(u) ∈ L2 sii u ∈ L1.

Se utiliza la notacion <p para indicar que L1 es reducible en tiempo polinomicoa L2. Observar que si L1 <p L2 entonces determinar si w ∈ L1 no es mas difıcilque determinar si f(w) ∈ L2. Basandonos en la misma idea podemos decir que unproblema es reducible en tiempo polinomico a otro.

Definicion 10.8 (Problemas NP-completos)Un problema P ∈ NP es NP-completo si todos los demas problemas de la clase NPse pueden reducir a el en tiempo polinomico.

Esta clase de problemas es importante porque si pudieramos encontrar una solu-cion en tiempo polinomico en una maquina de Turing determinista para un soloproblema NP-completo habrıamos demostrado que P=NP.

Ejemplos de problemas NP-completos

SAT Dada una expresion logica, por ejemplo: p∧ (q ∨¬p), hay que determinar si esposible satisfacerla, es decir, si es posible encontrar valores para los predicadosp y q que hagan que la expresion tenga un valor verdadero.

CV - cobertura de vertices Dado un grafo G con un conjunto de vertices V y unconjunto de arcos E, y dado un numero k, se trata de averiguar si existe unsubconjunto V’ de V, con no mas de k elementos, tal que para todo arco de Ealguno de los nodos unidos por este arco pertenece a V’.

Page 161: Teorías de Autómatas

Manu

ales

uex

143

1ª prueba

Apendice A

Generadores automaticos deanalizadores lexicos y sintacticos

Contenido

A.1. Generador de analizadores lexicos . . . . . . . . . . . . . 143

A.2. Generador de analizadores sintacticos . . . . . . . . . . . 149

Existen herramientas que generan analizadores lexicos a partir de la definicion deuna serie de expresiones regulares. Estos analizadores llevan a cabo el procesamientosecuencial de una coleccion de caracteres de manera que al encontrar una cadena queencaja con una de las expresiones definidas realiza las acciones que se hayan indicadopreviamente. Internamente, los analizadores lexicos se comportan como AutomatasFinitos que reconocen expresiones regulares. Los analizadores lexicos constituyen unaparte fundamental de cualquier compilador pero tambien pueden ser utilizados conotros objetivos, por ejemplo, para modificar la estructura de un fichero de texto.Analogamente, existen herramientas que generan analizadores sintacticos a partir

de la definicion de una gramatica independiente del contexto. Concretamente, generanun reconocedor ascendente del tipo LR(1).La utilizacion conjunta de ambas herramientas simplificara el proceso de diseno y

construccion de traductores para un determinado lenguaje formal. Esta sera una desus principales aplicaciones en el ambito de esta asignatura.

A.1. Generador de analizadores lexicos

Existen diferentes programas que, con un comportamiento similar, permiten ge-nerar automaticamente analizadores lexicos. Entre los mas utilizados estan PCLEX,LEX y FLEX, estos dos ultimos son utilizados en entorno UNIX/LINUX. Todos ellos

143

Page 162: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

144

1ª prueba

144 APENDICE A. GENERACION AUTOMATICA DE ANALIZADORES

traducen la descripcion de un analizador lexico, realizada en un metalenguaje al quellamaremos Lex, a un programa escrito en C. Utilizando las opciones adecuadas esposible generar dicho programa escrito en otros lenguajes de alto nivel como C++,Java, Pascal, etc.

Lex es un lenguaje de alto nivel de proposito especıfico, disenado para representarexpresiones regulares. Ademas, el codigo puede extenderse con secciones escritas enC o en el lenguaje de programacion correspondiente.

A.1.1. Como utilizar PCLEX

PCLEX se ejecuta en lınea de comandos, de la siguiente forma:

PCLEX [opciones] nombre fichero

nombre fichero es el nombre del fichero que contiene la especificacion del anali-zador lexico en Lex. Por claridad, se recomienda que el nombre de estos ficherostenga extension .l. Por defecto se generara un fichero con el mismo nombre y conextension .c. Por ejemplo, si el fichero de entrada se llama ejemplo.l, el de salida sellamara ejemplo.c.

Se pueden utilizar las siguientes opciones a la hora de ejecutar PCLEX:-c el fichero de salida tiene el nombre yylex.c-C<nom fichero> el fichero de salida tiene el nombre que indica

<nom fichero>-h muestra una pantalla de ayuda-i construye un analizador insensible a la diferencia

mayusculas/minusculas-n suprime las directivas “#line” en el fichero de salida-p<nom fichero> utiliza <nom fichero> como fichero esqueleto para cons-

truir el fichero de salida, en lugar de utilizar el ficheropor defecto

-s suprime la regla por defecto, es decir, las entradas queno encajen con ninguna regla provocan la salida del pro-grama con el mensaje : pclex scanner jammed

Los demas programas anteriormente mencionados se utilizan de forma similaraunque el significado de las opciones puede variar.

A.1.2. Estructura de un programa Lex

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

Page 163: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

145

1ª prueba

A.1. GENERADOR DE ANALIZADORES LEXICOS 145

zona de definiciones

%%zona de reglas

%%procedimientos del programador

Zona de definiciones En esta parte del programa se pueden definir expresionesregulares que se utilizaran posteriormente. Tambien se pueden incluir todas las defini-ciones en C que sean necesarias. Las definiciones en C, deberan ir encerradas entrelos delimitadores%{ y%}. Por ejemplo:

%{#include "stdlib.h"

int x,y;

%}Las definiciones de expresiones regulares, tendran el siguiente formato:

nombre expresion regular

A partir de este momento cada vez que deseemos utilizar esa expresion podemoshacerlo escribiendo su nombre entre llaves. En el siguiente ejemplo, se define unaexpresion regular llamada digito, que representa a un dıgito cualquiera y otra, llamadaentero, que representa a una coleccion de dıgitos, o sea a un numero entero y positivo:

digito [0− 9]entero {digito}+

Zona de reglas Cada regla esta formada por una expresion regular seguida poruna serie de acciones (codificadas en C) que seran las que el analizador lexico ejecutecuando encuentre una cadena de caracteres que encaje con la expresion regular. Porejemplo:

ab* {printf("hola");}

Procedimientos del programador En esta parte del programa se incluye el pro-grama C que el usuario haya disenado. En el caso mas sencillo, en el que solo sedesee generar un analizador lexico, el programa principal debera incluir al menos unallamada al procedimiento yylex. Es decir:

void main() {yylex();

}yylex es el procedimiento que actua como analizador lexico y cuyo codigo C es

generado a partir de las especificaciones que aparecen en la zona de reglas. El

Page 164: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

146

1ª prueba

146 APENDICE A. GENERACION AUTOMATICA DE ANALIZADORES

programa principal puede ser mucho mas complejo e incluir todos los procedimientosque se deseen.

A.1.3. Como representar una expresion regular

Para describir las expresiones regulares que pueden aparecer en la zona de defini-ciones o en la zona de reglas, hay que seguir las siguientes normas:

La concatenacion entre sımbolos se representa escribiendolos uno junto a otrosin utilizar ningun sımbolo especial. Por ejemplo:

int

char

while

representarıan palabras reservadas de C.

El punto (.) es un comodın y representa a cualquier caracter (solo a uno) delcodigo ASCII salvo a la marca fin de lınea (representada por \n). Por ejemplo:

a. representa a la letra a seguida por cualquier otro caracter.

Podemos utilizar los corchetes para representar la union entre varios sımbolosy el guion para representar un rango de valores:

[a-z] representa a cualquier letra minuscula[Ff][Oo][Rr] representa a la palabra for escrita utilizando letras

mayusculas o minusculas (serıa la manera de representarpalabras reservadas en un lenguaje como Pascal)

Las repeticiones de sımbolos, o de conjuntos de sımbolos, se pueden representarutilizando diferentes operadores:

operador no de repeticiones ejemplo cadenas validas∗ 0, 1, . . . ab* a, ab, abb, . . .+ 1, 2, . . . ab+ ab, abb, . . .{n} n ab{3} abbb{n,m} n, . . .,m ab{3,5} abbb, abbbb, abbbbb? 0,1 ab? a, ab

La barra vertical (|) representa la union entre expresiones regulares. Por ejem-plo:

ab|cd representa a la cadena ab o a la cadena cd

Page 165: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

147

1ª prueba

A.1. GENERADOR DE ANALIZADORES LEXICOS 147

Marcas de contexto Si utilizamos ˆ al comienzo de una expresion, esta solo setendra en cuenta en el caso de que la cadena analizada este al comienzo de una lınea.

Si utilizamos $ al final de una expresion, esta solo se tendra en cuenta en el casode que la cadena analizada este al final de una lınea.

Si utilizamos / entre dos expresiones, solo se tendra en cuenta la primera de ellasen el caso de que aparezca seguida por la segunda. Ejemplos:

ab la cadena ab debe aparecer al comienzo de la lıneaab$ la cadena ab debe aparecer al final de la lıneaab/cd la cadena ab debe aparecer seguida por la cadena cd

Prioridades Los operadores que hemos visto tienen diferentes prioridades. Apare-cen listados a continuacion, de mayor a menor prioridad:

() parentesis[] union entre sımbolos* + ? { } repeticionesee concatenacion| union de expr. regularesˆ$ indicadores de contexto

A.1.4. Variables y procedimientos predefinidos

yylex() es el procedimiento principal a partir de las expresiones regulares definidas,actua como un analizador lexico.

yytext es una variable de tipo cadena de caracteres y almacena la cadena que acabade ser analizada por el scanner.

yyleng es una variable entera que almacena la longitud de yytext.

yyin, yyout son los nombres de los ficheros de entrada y de salida del analizadorlexico.

ECHO es una accion predefinida que escribe la cadena analizada en el fichero desalida, por tanto, es equivalente a la instruccion

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

REJECT hace que el scanner analice por segunda vez la misma cadena. En estesegundo analisis, la regla que contiene a REJECT no sera tenida en cuenta.

Page 166: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

148

1ª prueba

148 APENDICE A. GENERACION AUTOMATICA DE ANALIZADORES

A.1.5. Condiciones de comienzo

Las condiciones de comienzo se pueden activar o desactivar dependiendo de lallegada de algun sımbolo o cadena de sımbolos. Existen dos tipos, las exclusivas ylas no exclusivas.Se definen en la primera zona del programa utilizando las palabras reservadas%s,%S

o%Star para las no exclusivas, y%x para las exclusivas. Despues deberan escribirselos nombres de las condiciones que se vayan a utilizar. Por ejemplo:

%s nombre1 nombre2 . . .Para activarlas se utilizara la accion 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 solo se tendra en cuenta si la condicion nombre esta activa.

Las condiciones de comienzo exclusivas se caracterizan porque las reglas que nollevan su nombre delante solo se tienen en cuenta si la condicion esta desactivada. Enel caso de las condiciones no exclusivas, estas reglas se tienen en cuenta en cualquiercaso.

El siguiente ejemplo permite eliminar los comentarios del fichero de entrada.Suponemos que existen dos tipos diferentes de comentarios, unos encerrados entrellaves y otros entre (* y *).

%x coment1 coment2

% %

"{" BEGIN(coment1)

<coment1>"}" BEGIN(0)

"(*" BEGIN(coment2)

<coment2>"*)" BEGIN(0)

<coment1,coment2>. ;

A.1.6. Acciones

Cuando el analizador lexico encuentra una cadena de caracteres que encaja conalguna de las expresiones regulares definidas, ejecuta las acciones asociadas a estaexpresion. Estas acciones pueden ser las predefinidas ECHO o REJECT, o cualquierinstruccion escrita en C. A continuacion se describen algunas situaciones especiales:

Si los caracteres de la entrada pueden encajar con diferentes expresiones regu-lares, se elegira aquella que valide la cadena mas larga.

Page 167: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

149

1ª prueba

A.2. GENERADOR DE ANALIZADORES SINTACTICOS 149

ab accion1

ab+ accion2

Teniendo en cuenta el ejemplo anterior, si en el fichero de entrada esta incluidala cadena abb se ejecutara la accion2, ya que la primera regla solo validarıa 2caracteres y la segunda validarıa 3.

En el caso de que dos reglas diferentes validen cadenas de la misma longitud, seelegira la que aparezca en primer lugar. Por ejemplo, si la cadena hola apareceen el fichero de entrada y se han definido las dos reglas siguientes:

hola accion1

[a-z]+ accion2

Se ejecutara la accion1 simplemente porque esta escrita en primer lugar.

La accion que se ejecuta por defecto cuando un caracter (o cadena de caracteres)no encaja con ninguna de las expresiones definidas, consiste en escribir dichocaracter en el fichero de salida (yyout); salvo que se haya utilizado la opcion -sal ejecutar PCLEX.

Si detras de una expresion regular solo escribimos el sımbolo |, la accion aso-ciada a esta expresion es la misma que la asociada a la siguiente. Los siguienteejemplos son, por tanto, equivalentes:

hola | hola accion

[a-z]+ accion [a-z]+ accion

Si detras de una expresion regular solo escribimos el sımbolo ; no hay ningunaaccion asociada a esta expresion, ni siquiera escribir la cadena validada en elfichero de salida, podrıa entenderse como no hacer nada.

A.2. Generador de analizadores sintacticos

Existen programas como YACC (Yet Another Compiler-Compiler), PCYACC oBISON, este ultimo para entornos LINUX, que permiten generar automaticamenteanalizadores sintacticos de tipo LR(1), a partir de la definicion de una gramatica in-dependiente del contexto descrita con una notacion similar a la BNF(Backus NormalForm).Concretamente, se genera una funcion, llamada yyparse, que reconocera progra-

mas escritos en el lenguaje definido por la gramatica y detectara los errores si loshubiera.La funcion yyparse(), llama repetidamente al analizador lexico yylex() que

convierte cadenas de caracteres del fichero de entrada en sımbolos terminales de lagramatica (llamados tokens). Utilizando una terminologıa anglosajona, al analizador

Page 168: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

150

1ª prueba

150 APENDICE A. GENERACION AUTOMATICA DE ANALIZADORES

lexico se le denomina scanner y al sintactico se le denomina parser. La formaconvencional por la que el scanner envıa al parser informacion adicional sobre lostokens es a traves de la variable yylval. Por defecto esta variable es de tipo int pero,como veremos, esto se puede cambiar.

A.2.1. Como utilizar PCYACC

PCYACC se ejecuta en lınea de comandos, de la siguiente forma:

PCYACC [opciones] nombre fichero

nombre fichero es el nombre del fichero que contiene la especificacion de la gramatica,por claridad se recomienda que el nombre de estos ficheros tenga extension .y. Pordefecto se generara un fichero con el mismo nombre y con extension .c. Por ejemplo,si el fichero de entrada se llama ejemplo.y, el de salida se llamara ejemplo.c.

Se pueden utilizar las siguientes opciones a la hora de ejecutar PCYACC:

-c el fichero de salida tiene el nombre yytab.c-C<nom fichero> el fichero de salida tiene el nombre que indica

<nom fichero>-d se genera un fichero cabecera llamado yytab.h-D<nom fichero> se genera un fichero cabecera con el nombre que indica

<nom fichero>-h muestra una pantalla de ayuda-n suprime las directivas “#line” en el fichero de salida-p<nom fichero> utiliza <nom fichero> como fichero esqueleto para cons-

truir el fichero de salida, en lugar de utilizar el fichero pordefecto (yaccpar.c)

-r informa durante la ejecucion-s genera vectores internos cuyos elementos son de tipo short

int-S el programa se para despues de realizar la fase de analisis

sintactico-t construye un arbol parser y lo almacena en el fichero yy.ast-T<nom fichero> construye un arbol parser y lo almacena en el fichero

<nom fichero>-v genera un fichero llamado yy.lrt con informacion sobre el

proceso y la tabla parser-V<nom fichero> genera el fichero de la opcion anterior pero con el nombre

<nom fichero>Otros programas como YACC o BISON se utilizan de forma similar aunque el

significado de las opciones pueda variar.

Page 169: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

151

1ª prueba

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 significado que en el caso anterior.

1. En la primera parte, la zona de definiciones, se pueden incluir declaracionesen C, de la misma forma que se hacıa con LEX.

Ademas, es necesario realizar algunas definiciones que necesita conocer el par-ser, para ello se utilizan palabras reservadas (todas comienzan por%).

La definicion del sımbolo inicial de la gramatica se realiza utilizando lapalabra reservada%start. Por ejemplo:

%start programa

La definicion de los sımbolos terminales de la gramatica se realiza utilizan-do 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 lasiguiente notacion:

El sımbolo : se utiliza para separar la parte izquierda de una produccionde la parte derecha.

Todas las reglas que tienen la misma parte izquierda se pueden separar conel sımbolo |, sin necesidad de repetir la parte izquierda. Una coleccion deproducciones con la misma parte izquierda debe acabar con ;. Por ejemplo,las siguientes definiciones son equivalentes:

lista var: lista var var lista var: lista var varlista var: var |var

; ;

Los sımbolos de la gramatica que no hayan sido declarados como tokens,se consideraran sımbolos no terminales, excepto los caracteres simples,encerrados entre comillas que tambien se consideran sımbolos terminales.Por ejemplo: ’+’,’*’.

3. En la tercera parte del programa, procedimientos del programador es nece-sario, como mınimo llamar al procedimiento yyparse(). Tambien es necesarioque el programador defina la rutina yyerror. Esta rutina sera llamada por elanalizador cada vez que encuentre un error sintactico. Un ejemplo de definicionde yyerror puede ser:

void yyerror(char *s) {printf(" %s"\n,s);

}

Page 170: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

152

1ª prueba

152 APENDICE A. GENERACION AUTOMATICA DE ANALIZADORES

A.2.3. Gramaticas atribuidas

En ocasiones es necesario trabajar con informacion adicional sobre determinadossımbolos de la gramatica. Diremos que estos sımbolos tienen atributos. Esta informa-cion se almacena en una variable predefinida llamada yylval que es de tipo YYSTYPE.Como hemos comentado anteriormente, por defecto, ese tipo es int, pero en ocasionespuede resultar util cambiar su definicion.Este cambio en la definicion de YYSTYPE se realiza en la zona de definiciones

y se puede llevar a cabo de diferentes formas. La mas sencilla consiste en utilizar lapalabra reservada%union, de la siguiente forma:

%union {int num;

char cadena[10];

}

Suponiendo que YYSTYPE ha sido definido segun el ejemplo anterior, es nece-sario especificar que sımbolos de la gramatica van a tener atributos y de quetipo 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 definir con%token.Por ejemplo:

%token <num> NUMERO

%token <cadena> IDENTIFICADOR

En la parte derecha de una produccion es posible insertar acciones escritas enC que seran ejecutadas cuando el analizador sintactico llegue a ese punto delanalisis. Estas acciones deberan ir encerradas entre llaves.

Cuando queramos utilizar los atributos asociados a algunos sımbolos de unaproduccion, utilizaremos $$, $1, $2, . . .

$$ es el atributo del sımbolo que aparece en la parte izquierda de la produccion.

$1 es el atributo del primer sımbolo de la parte derecha, $2 el del segundosımbolo, etc. Por ejemplo:

expr:expr’+’expr {$$=$1+$2;}

A.2.4. Prioridad y asociatividad de operadores

YACC permite especificar la prioridad y la asociatividad de determinados sımbo-los de la gramatica (utilizados normalmente como operadores).

Page 171: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

153

1ª prueba

A.2. GENERADOR DE ANALIZADORES SINTACTICOS 153

Utilizando las palabras reservadas%left, %right,%nonassoc, podemos definirel tipo de asociatividad que tienen los sımbolos gramaticales. Ademas, la prioridad delos sımbolos queda implıcita al especificar su asociatividad. Los sımbolos que aparecenen la misma lınea tienen la misma prioridad entre si, y la prioridad sera mas altacuanto mas tarde(en el texto) haya sido definida la asociatividad. Por ejemplo:

%left ’+’, ’-’

%left ’∗’, ’/’Estas definiciones indican que la suma y la resta tienen la misma prioridad, ambas

tienen asociatividad por la izquierda y, ademas, tienen una prioridad menor que lamultiplicacion y la division.

Page 172: Teorías de Autómatas

154 APENDICE A. GENERACION AUTOMATICA DE ANALIZADORES

Page 173: Teorías de Autómatas

Manu

ales

uex

155

1ª prueba

Bibliografıa

[1] Hopcroft J. E. y Motwani R. y Ullman J. D. Teorıa de Automatas, Lenguajes yComputacion. Pearson-Addison Wesley, 2008.

[2] Alfonseca E. y Alfonseca M. y Moriyon R. Teorıa de Automatas y LenguajesFormales. McGraw-Hill, 2007.

[3] Isasi P. y Martınez P. y Borrajo D. Lenguajes, Gramaticas y Automatas. Unenfoque practico. Addison Wesley, 2001.

[4] Alfonseca M. y Sancho y Orga. Teorıa de Lenguajes, Gramaticas y Automatas.Ed. Universidad, 1993.

[5] Martin J. Lenguajes Formales y Teorıa de la Computacion. McGraw-Hill, 2003.

[6] Brookshear. Teorıa de la Computacion. Lenguajes Formales, Automatas y Com-plejidad. Addison Wesley, 1993.

[7] Kelley D. Teorıa Automatas y Lenguajes Formales. Prentice Hall, 1995.

[8] Apple A. Modern Compiler Implementation in Java/C. Cambridge UniversityPress, 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 Interpretes: Teorıa yPractica. Prentice-Hall, 2006.

155

Page 174: Teorías de Autómatas
Page 175: Teorías de Autómatas

TeORÍa De auTÓMaTas Y lenGuaJes FORMales

Manu

ales

uex

157

1ª prueba

Indice alfabetico

Arbol de derivacion, 21, 77

Alfabeto, 15de entrada, 40de sımbolos no terminales, 22de sımbolos terminales, 22

Analizadorlexico, 11, 143semantico, 12sintactico, 12, 149

Atributos semanticos, 98heredados, 99sintetizados, 99

Automata, 6conexo, 42equivalente, 45incompleto, 41minimizacion, 43de pila, 74finito determinista, 40finito no determinista, 47linealmente acotado, 127

Bombeolema para gr. de tipo 2, 94lema para gr. de tipo 3, 65

Chomsky, 7jerarquıa de, 8, 24

Church-Turing, tesis, 120Cierre

de Kleene, 18positivo, 19

Compilador, 10

Complejidadespacial, 138temporal, 139

Concatenacionde un lenguaje, 18de una palabra, 16

Derivacion, 20directa, 20

Descripcion instantaneade un automata de pila, 75de un reconocedor LR(1), 90de una maquina de Turing, 108

Desplazamiento, 88

Ensamblador, 10Estado

muerto, 41final, 40inicial, 40

Expresion regular, 33

Forma sentencial, 84Funcion

µ-recursiva, 134calculable, 130caracterıstica de un lenguaje, 130de transicion, 40parcialmente calculable, 130recursiva, 134recursiva primitiva, 133

Godel, 6, 106Gramatica, 6, 22

bien formada, 29

156

Page 176: Teorías de Autómatas

elena JuRaDO MÁlaGaMa

nual

es ue

x

158

1ª prueba

INDICE ALFABETICO 157

equivalente, 26limpia, 28ambigua, 78atribuida, 98L-atribuida, 101S-atribuida, 100

compresora, 124con estructura de frase, 25, 123dependiente del contexto, 25, 126independiente del contexto, 25, 74lineal, 35LL(1), 85LR(1), 92recursiva, 24recursivamente enumerable, 24, 123regular, 26, 35

Hilbert, 6Homomorfismo, 94

Interprete, 10Inversa de una palabra, 17

Lenguaje, 6, 16universal, 16recursivamente enumerable, 124recursivo, 125

Lex, 143LR-item, 89

Maquina de Turing, 107universal, 118

Myhill-Nerode, teorema, 66

Palabra, 16vacıa, 16anulable, 83

Potenciade un lenguaje, 18de una palabra, 17

Problemade clase NP, 141de clase P, 141

NP-completo, 142Produccion, 19

compresora, 20de redenominacion, 28innecesaria, 27no generativa, 28anulable, 83con prefijos comunes, 81con recursividad por la izquierda, 81

Reconocedorascendente, 87descendente, 80LL(1), 81LR(1 ), 87

Reduccion, 88Reflexion

de un lenguaje, 19de una palabra, 17

Sımboloinaccesible, 27no generativo, 27directorde una produccion, 85del LR-item, 89

inicialde una cadena, 83de una gramatica, 22

seguidor, 84Semantica, 97Shannon, 7Sustitucion, 94

Tablade acciones, 88, 89de sımbolos, 13

Turing, 6, 105

Union de lenguajes, 17

Yacc, 149