Vous êtes sur la page 1sur 214

AUTOMATAS Y LENGUAJES

Un enfoque de diseo

ab a b b

...

q7 q6 q5

q0

q1 q2 q3 Ramn Brena Tec de Monterrey Verano 2003

q4

ii

Prefacio
En aos recientes se ha visto la aparicin de un buen nmero de textos en el tema de n o u Lenguajes Formales y Autmatas (Ver al nal referencias [10], [7], [23], [8], [3], [21], etc.). Por o una parte, esto indica la importancia y riqueza que el tema tiene; por otra, ante tal variedad de oferta todo nuevo libro en el rea requiere una justicacin que indique su aporte con a o respecto a lo existente. Este texto se sita en una generacin de textos que tratan de poner el estudio de los u o lenguajes formales y autmatas al alcance de estudiantes que no necesariamente son avezados o matemticos buscando establecer nuevos teoremas, sino que buscan una iniciacin a estos a o temas, que adems les sirva como un ejercicio en el arte de formalizar, en particular en a nociones relacionadas con la computacin. Entre estos textos accesibles, encontramos, por o ejemplo, a [23]. Estos nuevos textos han reemplazado en muchas universidades a los clsicos a [6] y an [10] -que ya era ms accesible-, y han permitido que la teor de la computacin se u a a o estudie a nivel profesional en carreras relacionadas con computacin y matemticas. o a El presente libro es resultado de una experiencia de impartir el curso de Teor de la a 1 Computacin por ms de 10 semestres en el ITESM, en Monterrey, Mxico. Durante este o a e lapso, aunque ciertamente se fue enriqueciendo el contenido tcnico, el principal renamiento e consisti en ir detectando cuidadosamente las dicultades principales a las que se enfrentao ban los estudiantes, para poder estructurar y presentar el material de forma que aquellos estuvieran en condiciones de comprenderlo de manera eciente. Aqu el nfasis no est tanto e a en hacer el curso ms fcil para los estudiantes, sino en asegurarse de que stos cuenten a a e con los elementos para que ellos mismos reconstruyan estos contenidos dentro de su cabeza; no se trata, pues, simplemente de vaciar informacin en la cabeza del estudiante. o La teor educativa que sustenta esta forma de trabajo esta basada en el aprendizaje por a reestructuracin [18]. o El texto est presentado de manera tal que es posible para el alumno estudiar el material a antes de cubrir el tema en clase; de hecho esta es la forma en que se utiliza en el ITESM, contrariamente a muchas clases tradicionales, en las que el alumno se presenta a la exposicin o del profesor y ya luego estudia el texto. En el ITESM la clase no se utiliza principalmente para exposicin del profesor, sino que se hacen ejercicios, problemas en equipo, miniexmenes o a semanales, etc. Esta situacin exige del texto que sea comprensible sin tener ninguna nocin o o del tema adquirida previamente, por lo que tuvimos que incluir explicaciones claras que permitan al alumno reconstruir en su mente la idea intuitiva, y -sobre todo- ejemplos. A lo largo del texto, cada una de las nociones presentadas es seguida inmediatamente por un ejemplo ilustrativo. Este texto es aplicable tanto al nivel de maestr en computacin o equivalente, como a o a clases de nivel profesional (licenciaturas, ingenier as). De hecho en el ITESM se aplica en ambos niveles. La diferencia fundamental entre el enfoque del curso de nivel profesional y el
1

Abreviatura de Instituto Tecnolgico y de Estudios Superiores de Monterrey. o

iii de maestr estriba en que el curso de nivel ingeniero enfatiza los aspectos de saber hacer, a (por ejemplo, saber comparar dos autmatas deterministas), mientras que el curso de nivel o maestr enfatiza el saber justicar (por ejemplo, probar por induccin que una gramtica a o a es correcta). El material cuyo nivel es propiamente de maestr es identicado por medio de una a barra vertical al margen, como en el presente prrafo. Esto incluye tambin las secciones de a e ejercicios. En breve, los puntos que caracterizan a este libro, y que en cierta medida lo hacen particular, son:

La presentacin didctica ha sido -en nuestra opinin- ms pulida que en la mayor o a o a a de textos en Teor de la Computacin. Por ejemplo, primero se presentan las nociones a o de manera intuitiva, y solamente despus se procede a su formalizacin. e o Es aplicable tanto al nivel de maestr como en carreras de ingenier en computacin, a a o mostrando en forma expl cita y grca qu secciones estn destinadas a cada nivel. a e a Siendo un libro ms orientado a estudiantes de ingenier que de matemticas, se a a a enfatizan los temas que tienen comnmente aplicacin en su campo profesional, como u o los autmatas nitos. Esta es la razn por la que se cubren con mucho ms detalle estos o o a temas que otros de inters ms terico, como la calculabilidad en mquinas de Turing. e a o a Sabemos de alumnos que han conseguido un buen empleo no universitario gracias a su conocimiento de autmatas nitos. o Por la misma razn del punto anterior, ciertos temas que tradicionalmente se exponen o con una motivacin matemtica, como las propiedades de los Lenguajes Regulares, o a en este texto se presentan en el contexto de mtodos de diseo, lo que es consistente e n con nuestro enfoque ingenieril. Es este aspecto lo que justica el subt tulo un enfoque de diseo de este texto. n Ofrecemos metodologas para resolver ciertas clases de problemas, tales como el diseo n de expresiones regulares y gramticas, que no son presentadas en otros libros de teor a a de autmatas, o lo hacen de forma mucho ms escueta. Inclusive algunos temas, tales o a como las propiedades de cerradura de los lenguajes regulares a la unin de conjuntos, o se presentan aqu como una herramienta de solucin de problemas de diseo, y no o n simplemente por el inters matemtico del tema. e a Presentamos errores frecuentes de los estudiantes de esta materia, permitiendo de este modo que el lector se benecie de una extensa experiencia directa en la enseanza de n la materia. Los algoritmos no se presentan en forma de pseudocdigo, es decir, usando estruco turas de control de lenguajes imperativos (p.ej. while, for, etc.), sino que damos una

iv interpretacin intuitiva de los resultados intermedios obtenidos por los algoritmos. Peno samos que este enfoque brinda una mejor comprensin de los algoritmos, pues es ms o a fcil recordar ideas que lineas de cdigo. a o El texto est en espaol en el original! (es decir, no se trata de una traduccin de un a n o texto en ingls). Las traducciones son muchas veces desventajosas respecto al original. e El libro, en tanto que libro electrnico, es un archivo estndar de tipo PDF, con hio a perligas que permiten localizar rpidamente guras, citas, pginas del texto, etc. a a El libro es gratuito! En efecto, no se distribuye con nes de lucro. Esto no pretende atentar contra la industria editorial, sino apoyar el aprendizaje del rea de autmatas y a o lenguajes en Amrica Latina, regin que no est sobrada de recursos como para querer e o a engrosar los ujos de capital hacia los grandes centros editoriales del mundo. La estructura de este texto es la siguiente: despus de una breve revisin de las nociones e o preliminares de matemticas, en los primeros cap a tulos (2-3) veremos la clase ms simple de a lenguajes, los Lenguajes Regulares, junto con las mquinas abstractas que les corresponden a los Autmatas Finitos, y al mismo tiempo introduciremos una metodolog de anlisis de o a a las mquinas abstractas y de los lenguajes, metodolog que volveremos a utilizar en las a a siguientes secciones del curso, para otros tipos de lenguajes y de mquinas. a En los cap tulos 4 y 5 veremos los Lenguajes Libres de Contexto y los Autmatas de Pila. o Finalmente, a partir del cap tulo 6 estudiaremos el tipo de mquinas ms poderoso, las a a Mquinas de Turing, que son en cierta forma el l a mite terico de lo que es posible de hacer o con mquinas procesadoras de informacin. a o T picamente, en un curso de nivel profesional se inicia con el cap tulo de preliminares, y se contina con los cap u tulos 2-3. Se enfatizan los cap tulos 4 y 5, as como la teor de a los compiladores. A continuacin se cubren los aspectos bsicos de las Mquinas de Turing o a a (inicio de cap tulo 6). En el curso de maestr la revisin de preliminares casi se omite, y se cubren los cap a, o tulos 2 2-3, slo que en un nivel de profundidad mayor que en el caso del nivel profesional. Luego o se procede a estudiar los Autmatas de Pila, las Mquinas de Turing y la Tesis de Church o a (cap tulos 4, 5 y 6), con nfasis en las pruebas. e Agradezco la colaboracin del Dr. Jos Luis Aguirre en la correccin de los errores en o e o versiones previas, as como en sugerencias para mejorar la exposicin de ciertos temas. Tam o bin agradezco al Comit del Fondo de Apoyo a Proyectos en Didctica su apoyo nanciero. e e a Finalmente doy las gracias a muchos alumnos que ayudaron a depurar el escrito mientras sirvi como apuntes de la materia. o

Recordar que el material de nivel maestr est indicado con una barra vertical en el margen. a a

Indice general

1. Preliminares 1.1. Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1. Operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2. Operaciones con conjuntos . . . . . . . . . . . . . . . . . . . . . . . . 1.1.3. Equivalencias de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . 1.1.4. Relaciones y funciones . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.5. Conjuntos innitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Manejo lgico de enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.2.1. Tablas de verdad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Pruebas por induccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 1.4. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.1. Alfabeto, cadena de caracteres . . . . . . . . . . . . . . . . . . . . . . 1.4.2. Lenguajes, operaciones con lenguajes . . . . . . . . . . . . . . . . . . 1.5. La jerarqu de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 1.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 3 5 5 7 8 10 12 14 15 16 17 17 19 20

Lenguajes regulares y sus mquinas a

23
25

2. Autmatas nitos o v

vi

INDICE GENERAL 2.1. Modelado de sistemas discretos . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Estados nales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Mquinas de estados nitos . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2.2.1. Funcionamiento de los autmatas nitos . . . . . . . . . . . . . . . . o 2.3. Denicin formal de autmatas nitos . . . . . . . . . . . . . . . . . . . . . o o 2.4. Mtodos de diseo de AFDs . . . . . . . . . . . . . . . . . . . . . . . . . . . e n 2.4.1. Diseo por conjuntos de estados . . . . . . . . . . . . . . . . . . . . . n 2.4.2. Diseo de AFD por complemento . . . . . . . . . . . . . . . . . . . . n 2.5. Equivalencia de autmatas nitos. . . . . . . . . . . . . . . . . . . . . . . . . o 2.6. Simplicacin de Autmatas nitos . . . . . . . . . . . . . . . . . . . . . . . o o 2.6.1. Tabla de estados distinguibles . . . . . . . . . . . . . . . . . . . . . . 2.6.2. Simplicacin por clases de equivalencia . . . . . . . . . . . . . . . . o 2.7. Autmatas nitos con salida . . . . . . . . . . . . . . . . . . . . . . . . . . . o 2.7.1. Mquinas de Moore . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2.7.2. Mquinas de Mealy . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 2.7.3. Equivalencia de las mquinas de Moore y Mealy . . . . . . . . . . . . a 2.7.4. Clculo de funciones en AF . . . . . . . . . . . . . . . . . . . . . . . a 2.8. Autmatas nitos no deterministas . . . . . . . . . . . . . . . . . . . . . . . o 2.8.1. Representacin formal de los AFN . . . . . . . . . . . . . . . . . . . . o 2.8.2. Diseo de AFN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n 2.8.3. Equivalencia de AFD Y AFN . . . . . . . . . . . . . . . . . . . . . . 2.8.4. Ms diseo de AFN: Interseccin de lenguajes . . . . . . . . . . . . . a n o 2.9. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 29 30 31 32 37 39 41 43 46 48 50 53 53 55 56 56 58 59 60 62 72 73

3. Expresiones Regulares y Gramticas Regulares a

79

INDICE GENERAL 3.1. Lenguajes Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Denicin formal de Lenguajes Regulares . . . . . . . . . . . . . . . . o 3.2. Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1. Signicado de las ER . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2. Metodolog de diseo de las ER . . . . . . . . . . . . . . . . . . . . a n 3.2.3. Equivalencias de Expresiones Regulares . . . . . . . . . . . . . . . . . 3.3. L mites de las representaciones textuales . . . . . . . . . . . . . . . . . . . . 3.4. Equivalencia de expresiones regulares y autmatas nitos . . . . . . . . . . . o 3.4.1. Conversin de ER a AF . . . . . . . . . . . . . . . . . . . . . . . . . o 3.4.2. Conversin de AF a ER . . . . . . . . . . . . . . . . . . . . . . . . . o 3.5. Gramticas regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 3.5.1. Gramticas formales . . . . . . . . . . . . . . . . . . . . . . . . . . . a 3.5.2. Gramticas regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . a 3.5.3. Autmatas nitos y gramticas regulares . . . . . . . . . . . . . . . . o a

vii 79 80 81 81 83 86 88 89 90 91 95 96 96 99

3.6. Limitaciones de los lenguajes regulares . . . . . . . . . . . . . . . . . . . . . 101 3.6.1. El teorema de bombeo . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

II

Lenguajes libres de contexto y sus mquinas a

109
111

4. Gramticas y lenguajes libres de contexto a

4.1. Gramticas y la jerarqu de Chomsky . . . . . . . . . . . . . . . . . . . . . 112 a a 4.2. Lenguajes y gramticas libres de contexto (LLC y GLC) . . . . . . . . . . . 113 a 4.3. Formalizacin de las GLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 o 4.4. Diseo de GLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 n

viii

INDICE GENERAL 4.4.1. Adaptacin de GLC . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 o 4.4.2. GLC para unin de lenguajes . . . . . . . . . . . . . . . . . . . . . . 118 o 4.4.3. Mezcla de gramticas . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 a 4.4.4. GLC para la concatenacin de lenguajes . . . . . . . . . . . . . . . . 120 o

4.5. Arboles de derivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 o 4.5.1. Ambigedad en GLC . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 u 4.5.2. Derivaciones izquierda y derecha . . . . . . . . . . . . . . . . . . . . . 124 4.6. Pruebas de correccin y completez . . . . . . . . . . . . . . . . . . . . . . . . 125 o 4.7. Gramticas libres y sensitivas al contexto . . . . . . . . . . . . . . . . . . . . 128 a 4.8. Transformacin de las GLC y Formas Normales . . . . . . . . . . . . . . . . 128 o 4.8.1. Eliminacin de reglas A . . . . . . . . . . . . . . . . . . . . . . . 129 o 4.8.2. Eliminacin de reglas A B . . . . . . . . . . . . . . . . . . . . . . 131 o 4.8.3. Eliminacin de reglas inaccesibles . . . . . . . . . . . . . . . . . . . . 132 o 4.8.4. Formas Normales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 4.9. Limitaciones de los LLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 4.9.1. Teorema de bombeo para los LLC . . . . . . . . . . . . . . . . . . . . 136 4.10. Propiedades de decidibilidad de los LLC . . . . . . . . . . . . . . . . . . . . 139 4.11. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

5. Autmatas de Pila o

145

5.1. Funcionamiento de los Autmatas de Pila (informal) . . . . . . . . . . . . . 146 o 5.2. Diseo de AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 n 5.2.1. Combinacin modular de AP . . . . . . . . . . . . . . . . . . . . . . 149 o 5.3. Formalizacin de los AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 o 5.4. Relacin entre AF y AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 o

INDICE GENERAL 5.5. Relacin entre AP y LLC o

ix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

5.6. Compiladores LL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 5.6.1. Principio de previsin . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 o 5.7. Compiladores LR(0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 5.8. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

III

Mquinas de Turing y sus lenguajes a

167
169

6. Mquinas de Turing a

6.1. Funcionamiento de la mquina de Turing . . . . . . . . . . . . . . . . . . . . 169 a 6.2. Formalizacin de la MT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 o 6.2.1. Conguracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 o 6.2.2. Relacin entre conguraciones . . . . . . . . . . . . . . . . . . . . . . 177 o 6.2.3. Conguracin colgada . . . . . . . . . . . . . . . . . . . . . . . . . 178 o 6.2.4. Clculos en MT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 a 6.2.5. Palabra aceptada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 6.3. MT para clculos de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . 179 a 6.4. Problemas de decisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 o 6.4.1. Relacin entre aceptar y decidir . . . . . . . . . . . . . . . . . . . . . 182 o 6.5. Tesis de Church . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 6.5.1. Comparacin de las MT con otras mquinas . . . . . . . . . . . . . . 184 o a 6.6. Mquinas de Post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 a 6.6.1. Formalizacin de las MP . . . . . . . . . . . . . . . . . . . . . . . . . 187 o 6.6.2. Equivalencia entre MP y MT . . . . . . . . . . . . . . . . . . . . . . 188 6.7. L mites de las MT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

INDICE GENERAL

6.7.1. El problema del paro de MT . . . . . . . . . . . . . . . . . . . . . . . 191 6.8. MT en la jerarqu de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . 192 a 6.9. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

INDICE GENERAL

Cap tulo 1 Preliminares


En esta parte repasaremos brevemente algunas nociones y notaciones que sern necesarias a para comprender adecuadamente el resto del material de este libro. Debe, sin embargo, quedar claro que este repaso queda fuera del rea de autmatas y lenguajes formales. Por otra a o parte, no es nuestra intencin hacer una introduccin para un lector que no tenga ninguna o o base en matemtica, especialmente en teor de conjuntos, sino que unicamente haremos a a un repaso, ayudando al lector a detectar sus puntos dbiles, adems de recordar nociones e a que pueden no estar frescas. Un objetivo adicional del presente cap tulo es uniformizar la notacin, que var bastante de libro a libro. Para los lectores que requieran una introduccin o a o ms exhaustiva a la teor de conjuntos y temas anes, recomendamos textos como [19]. a a

1.1.

Conjuntos

El fundamento ms importante para el estudio de los lenguajes y autmatas es la Teora a o de Conjuntos. En efecto, siempre que hablemos de formalizar una nocin, estaremos dio ciendo en realidad expresar en trminos de la Teor de Conjuntos. Es por esto que en este e a cap tulo presentamos los conceptos ms bsicos de dicha Teor de Conjuntos. a a a La idea de un conjunto como una coleccin de individuos u objetos no es, para un o verdadero matemtico, sucientemente precisa, y se parece a la nocin de clase; sin embargo, a o para nuestros propsitos es suciente. o Un conjunto que vamos a utilizar con frecuencia es el de los nmeros naturales, {1, 2, 3, . . .}, u denotado por N. Los conjuntos pueden expresarse de dos maneras bsicamente: a

En extensin, lo cual quiere decir que citamos expl o citamente cada uno de sus elementos, 3

CAP ITULO 1. PRELIMINARES como en el conjunto {1, 3, 5} que contiene exactamente los nmeros 1, 3 y 5. u En intencin, dando una descripcin precisa de los elementos que forman parte del o o conjunto, en vez de citarlos expl citamente. Por ejemplo, el conjunto del punto anterior u puede ser visto como {i N|impar(i), i < 6}, donde se supone que los nmeros impares cumplen la condicin impar(i). o

Representamos a los conjuntos con letras maysculas, como en A = {2, 4}. Los conjuntos u pueden contener conjuntos como elementos, como en B = {{a}, {b, c}}. El conjunto sin elementos (vac se representa por o bien por {}. o) La notacin a B signica que a es elemento o est contenido en el conjunto B; por o a ejemplo, {2, 3} {1, {2, 3}, 4}. Para indicar que a no est en B se escribe a B. a El tamao de un conjunto es el nmero de elementos que contiene, y se representa como n u |A| para un conjunto A. Por ejemplo, el tamao de {a, b, c} es 3, y el tamao de es cero. Por n n ejemplo, el tamao de {{a}, {b, c}} es 2 y no 3, pues tiene 2 elementos, siendo el primero {a} n y el segundo {b, c}. La denicin de tamao parece muy clara, pero hay conjuntos que no o n tienen un nmero determinado de elementos; estos se llaman innitos y sern discutidos u a ms adelante. a Dos conjuntos A y B son iguales, A = B, si y slo si tienen los mismos elementos, esto o es, x A ssi x B. 1 Por ejemplo, {1, {2, 3}} = {{3, 2}, 1}; vemos que en los conjuntos el orden de los elementos es irrelevante. Se supone que en los conjuntos no hay repeticiones de elementos, y que cada elemento del conjunto es distinto de todos los otros elementos. Sin embargo, si decimos, por ejemplo, i A, j A, no estamos suponiendo que i sea distinto de j, pues tanto i como j son elementos cualquiera de A. Si necesitamos que sean distintos, hay que indicarlo expl citamente, como en la expresin i, j A, i = j. o La notacin A B signica que el conjunto A est contenido en el conjunto B, o ms o a a tcnicamente, que A es subconjunto de B. Por ejemplo, el conjunto {a, c} es subconjunto e de {a, b, c}, indicado como {a, c} {a, b, c}. En otras palabras, A B cuando siempre que x A, tenemos tambin x B. Obsrvese que de acuerdo con esta denicin, A A para e e o cualquier conjunto A: todo conjunto es subconjunto de s mismo. Un caso extremo es el conjunto vac que es subconjunto de cualquier conjunto. o, Para indicar que un subconjunto contiene menos elementos que otro, es decir, que es un subconjunto propio de ste, se escribe A B. Por ejemplo, {a, c} {a, b, c}. Claramente, e A = B ssi A B y B A. Obsrverse tambin que si A B, entonces |A| |B|, y si e e A B, entonces |A| < |B|. Las relaciones de inclusin entre conjuntos se acostumbran representar grcamente meo a diante los llamados diagramas de Venn, que denotan mediante reas cerradas (por ejemplo a
1

A ssi B se lee A si y slo siB, y signica que A implica B y tambin B implica A. o e

1.1. CONJUNTOS

Figura 1.1: Diagrama de Venn elipses) los conjuntos. Por ejemplo, en la gura 1.1 se ilustra la situacin donde un conjunto o A es subconjunto de B, y B es subconjunto de C. En los diagramas de Venn es fcil visualizar relaciones que de otra forma pueden parecer a complejas; por ejemplo, si un conjunto A es subconjunto de B y ste es subconjunto de C, e se espera que A C, como se aprecia intuitivamente en la gura 1.1, pues el rea de A a est obviamente contenida dentro de la de C. a

1.1.1.

Operaciones

Llamamos operaciones a formas estndar de combinar o transformar objetos matemticos. a a Por ejemplo, una operacin habitual es la suma, que en la expresin 3 + 7 combina los o o objetos 3 y 7 dando como resultado el objeto 10. El 3 y el 7, que son los objetos que se combinan, son los operandos, el + es la operacin, y el 10 es el resultado. Una operacin o o es binaria cuando tiene dos operandos. Es unaria si tiene un slo operando, como en la o operacin de la ra cuadrada. o z Una operacin es conmutativa si x y = y x, como es el caso de la suma o la o multiplicacin de nmeros. Se dice que es asociativa si x (y z) = (x y) z; por ejemplo, o u la suma es asociativa, pero no la resta, pues podemos ver que 8 (4 3) = (8 4) 3.

1.1.2.

Operaciones con conjuntos

Sean A y B conjuntos. Se denen las siguientes operaciones con los conjuntos: Unin de conjuntos, denotada por A B, que contiene los elementos del conjunto A y o tambin los del conjunto B, es decir, A B = {x|x A o x B}. Por ejemplo, e {1, 2, 3} {3, 4} = {1, 2, 3, 4}. La unin de conjuntos es conmutativa, lo cual se como prende fcilmente visualizando las reas correspondientes en el diagrama de Venn de a a la gura 1.2. 2 Tambin es asociativa. e
2

En seguida se presenta una prueba matemtica de esta propiedad. a

CAP ITULO 1. PRELIMINARES

Interseccin de conjuntos, escrita A B, que contiene los elementos que pertenecen sio multneamente al conjunto A y al conjunto B, es decir, A B = {x|x A y x B}. a Por ejemplo, {1, 2, 3} {3, 4} = {3}. En un diagrama de Venn la interseccin de dos o elipses se ilustra por el rea que ambas comparten, como es el rea sombreada de la a a gura 1.2. La interseccin es conmutativa y asociativa. o Diferencia de conjuntos, A B, que contiene los elementos de A que no estn en B, esto a es, A B = {x|x A y x B}. Por ejemplo, {1, 2, 3} {3, 4} = {1, 2}. La resta o diferencia de conjuntos no siempre le quita elementos al primer conjunto; por ejemplo {1, 2, 3} {4, 5} = {1, 2, 3}. La diferencia de conjuntos no es ni asociativa ni conmutativa, lo cual se puede probar fcilmente con un ejemplo (ver seccin de a o ejercicios). Complemento de un conjunto, es un caso particular de la diferencia, cuando el primer conjunto es considerado como el universo que contiene todos los elementos posibles. Sea U un universo, entonces el complemento del conjunto A, denotada por Ac contiene los elementos del universo que no estn en A. Por ejemplo, si el universo son los a nmeros naturales {1, 2, 3, . . .}, complemento de los nmeros pares son los nmeros u u u c c nones: {2, 4, 6, . . .} = {1, 3, 5, . . .}. Claramente A A = U , para todo conjunto A; adems, A Ac = . a Potencia de un conjunto A, denotada como 2A , contiene como elementos a todos los subconjuntos de A, esto es, 2A = {x|x A}. En otras palabras, 2A es un conjunto de conjuntos. Por ejemplo, 2{1,2,3} = {, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}. Recurdese que el conjunto vac siempre forma parte de todo conjunto potencia. La e o A notacin 2 recuerda que el tamao del conjunto potencia de A es 2 elevado a la o n potencia del tamao de A, esto es, |2A | = 2|A| . n Producto Cartesiano de dos conjuntos, A B, es el conjunto de pares ordenados (a, b) tales que a A y b B. Por ejemplo, {1, 2} {3, 4, 5} = {(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5)} El tamao de un producto cartesiano A B es |A| multiplicado por |B|, como se puede n vericar en el ejemplo anterior. El producto cartesiano no es conmutativo, pues no es lo mismo un par (a, b) que uno (b, a), ni asociativo, pues no es lo mismo (a, (b, c)) que ((a, b), c). Con ayuda de diagramas de Venn es fcil comprender las operaciones de conjuntos. Por a ejemplo, usando la gura 1.2 es fcil vericar una relacin tan compleja como A B = a o c c c (A B ) , identicando las dos maneras de obtener el rea sombreada de la gura, siguiendo a ya sea el lado izquierdo o derecho de la ecuacin. o A un elemento (a, b, c) de un producto cartesiano A B C se le llama tripleta, y similarmente a un elemento (a, b, c, d) de un producto cartesiano A B C D se le llama cudruplo, a un elemento (a, b, c, d, e) de un producto cartesiano A B C D E se le a llama qu ntuplo, etc.

1.1. CONJUNTOS

Figura 1.2: Interseccin de dos conjuntos o Ahora probaremos la conmutatividad de la unin de conjuntos. Esto es, queremos probar o que A B = B A para conjuntos cualesquiera A y B. La igualdad A B = B A puede descomponerse en A B B A y B A A B, por deniciones que hemos visto antes. Entonces vamos a probar una de ellas, por ejemplo A B B A, siendo la otra parte enteramente similar. Hemos visto que A B B A es equivalente a decir que si un elemento x es parte de A B, entonces x tambin debe e ser parte de B A. En consecuencia, lo que tenemos que probar es lo siguiente: suponiendo que x (A B), debemos llegar a concluir que x (B A). Vamos a hacer esta prueba enseguida. Como x (A B), entonces, de acuerdo con la denicin de unin, x A o bien x B o o (o ambos a la vez). Si x A, entonces seguramente x A B, pues A B contiene todos los elementos de A. Similarmente, si x B tendremos x A B. Es decir, en los dos casos podemos concluir que x A B, que era lo que necesitbamos para nuestra prueba. a

1.1.3.

Equivalencias de conjuntos

La igualdad A B = B A es una de las llamadas equivalencias de conjuntos, que son muy utiles para reemplazar una expresin con operaciones de conjuntos por otra equivalente o pero ms conveniente por ejemplo ms simple. En la lista siguiente presentamos algunas de a a las equivalencias de ms frecuente uso: a Leyes conmutativas A B = B A, A B = B A, para los conjuntos A y B. Leyes distributivas A (B C) = (A B) (A C), A (B C) = (A B) (A C). Leyes de De Morgan (A B)C = AC B C , (A B)C = AC B C . Doble complemento (AC )C = A. Ejemplo.- La interseccin de conjuntos puede expresarse usando la unin y el compleo o C C C C C mento, de la manera siguiente: A B = ((A B) ) = (A B ) .

CAP ITULO 1. PRELIMINARES

Las equivalencias de conjuntos pueden vericarse fcilmente usando los diagramas de a Venn, de la forma que hemos comentado antes, esto es, compaginando el rea asociada a a cada uno de los lados de la ecuacin. o

1.1.4.

Relaciones y funciones

Las nociones de relaciones y funciones pueden derivarse directamente del producto cartesiano de conjuntos. En efecto, se llama relacin a todo subconjunto de un producto cartesiao no; por ejemplo la relacin contiene los pares de nmeros naturales tales que el primer o u componente es menor o igual al segundo, esto es, = {(1, 1), (1, 2), (1, 3), (2, 3), . . .}. Esta denicin matemtica de relacin no parece tener mucho que ver con la idea intuio a o tiva de que una cosa tiene relacin con otra, pero en realidad ambas nociones s correso ponden. Por ejemplo, estamos familiarizados con la familia vista como una relacin entre o personas. Consideremos ms espec a camente la relacin x es padre de y. Dado un cono junto de personas, por ejemplo P = {Leonor, El Arturo, Marta}, el producto cartesiaas, no P P es {(Leonor, Leonor), (Leonor, El as), (Leonor, Arturo), (Leonor, Marta), (Elias, Leonor), (Elas, Elas), (Elas, Arturo), (El as, Marta), (Arturo, Leonor), (Arturo, Elas), (Arturo, Arturo), (Arturo, Marta), (Marta, Leonor), (Marta, El as), (Marta, Arturo), (Marta, Marta)}. Un subconjunto de este producto cartesiano es, por ejemplo, {(Leonor, Arturo), (Leonor, Marta), (Elas, Arturo), (El Marta)}, cuyos pares (x, y) corresponden, en la fa as, milia del autor, a relaciones x es padre de y, pues Leonor y El son padres de Arturo y as Marta. Desde luego, en el ejemplo anterior de las relaciones familiares no cualquier subconjunto del producto cartesiano podr ser candidato a corresponder a la relacin x es padre de y. a o Por ejemplo, el par (Elas, Elas) ser inaceptable, pues nadie puede ser padre de s mismo, ni a siquiera en las liberales familias modernas. Cabr preguntarnos qu caracter a e sticas deber a tener una relacin para ser aceptable como x es padre de y. A continuacin discutimos o o algunas caracter sticas que las relaciones pueden tener o no, y que nos permitir contestar an a esta pregunta (ver seccin de ejercicios). o Se llama inverso de una relacin R, denotado por R1 , a aquella en donde se invierte el o orden de los pares ordenados, esto es: R1 = {(y, x) | (x, y) R} Por ejemplo, el inverso de la relacin {(1, 2), (2, 3), (1, 3)} es {(2, 1), (3, 2), (3, 1)}. o Se dice que una relacin binaria en D D es reexiva cuando contiene todos los pares de o la forma (x, x), para x D. Por ejemplo, si D = {1, 2, 3}, la relacin en {1, 2, 3} {1, 2, 3} o con los elementos {(2, 2), (2, 3), (3, 3), (1, 2), (1, 1), (1, 3)} es reexiva, pero {(2, 2), (2, 3), (1, 2), (1, 1), (1, 3)} no lo es.

1.1. CONJUNTOS

Una relacin es simtrica si y solo si siempre que contiene un par (x, y) tambin contiene o e e (y, x). Por ejemplo, {(2, 2), (1, 2), (1, 1), (2, 1)} es simtrica, pero {(2, 2), (2, 3), (3, 3), (1, 2), e (1, 1)} no lo es. Una relacin es transitiva cuando siempre que contiene los pares (x, y) y (y, z) tamo bin contiene (x, z). Por ejemplo, la relacin {(2, 3), (1, 2), (1, 1), (1, 3)} es transitiva, pero e o {(2, 3), (1, 2), (1, 1)} no lo es. Llamamos cerradura reexiva de una relacin R, la menor extensin de R, es decir, R, o o tal que R es reexiva, aunque inicialmente R no lo haya sido. En otras palabras, a R se le agregan los pares ordenados que sean necesarios hasta que se vuelva reexiva. Por ejemplo, la cerradura reexiva de R1 = {(2, 3), (1, 2), (1, 1), (1, 3)} es {(2, 3), (1, 2), (1, 1), (1, 3), (2, 2), (3, 3)}. Decimos que la cerradura reexiva es la menor extensin de la relacin o o original porque no deben aadirse ms pares ordenados que los estrictamente necesarios para n a volverla reexiva. Por ejemplo, la relacion {(2, 3), (1, 2), (1, 1), (1, 3), (2, 2), (3, 3), (3,1)}, aunque cumple con ser una extensin de R1 y tambien con ser reexiva, no es la cerradura o reexiva de R1 , porque tiene el par (3, 1) que no era indispensable agregar. Similarmente denimos la cerradura simtrica de una relacin, aadiendo los pares ese o n trictamente necesarios para que se vuelva simtrica. Por ejemplo, la cerradura simtrica de e e {(2, 3), (1, 2), (1, 1), (1, 3)} es {(2, 3), (1, 2), (1, 1), (1, 3), (3, 2), (2, 1), (3, 1)}. La cerradura transitiva tambin se dene de una manera enteramente similar. Por ejeme plo, la cerradura transitiva de la relacin {(1, 2), (3, 1), (2, 1)} es {(1, 2), (3, 1), (2, 1), (1, 1), o (2, 2), (3, 2)}. Se pueden tener tambin combinaciones de varias cerraduras, como la cerradura reexiva e y transitiva, que en el caso de {(2, 3), (1, 2), (1, 1), (1, 3)} ser {(2, 3), (1, 2), (1, 1), (1, 3), a (2, 2), (3, 3)}. Un caso particular de las relaciones son las funciones, que son relaciones en que no hay dos pares ordenados que tengan el mismo primer componente. Es decir, los pares ordenados asocian a cada primer componente un unico segundo componente. Por ejemplo, la relacin o {(1, 2), (2, 3), (1, 3)} no es una funcin, pero {(1, 2), (2, 3), (3, 3)} s lo es. o Tomando como ejemplo las familias, la relacin de hermanos no es una funcin, pero la o o relacin de cada quien con su padre s lo es (cada quien tiene a lo ms un padre). o a La notacin habitual para las funciones es f (a) = b, en vez de (a, b) f , para una funcin o o f , pero en realidad ambas notaciones son equivalentes. Muchas veces consideramos que las funciones obtienen una salida a partir de una entrada. As si f (1) = 2, se considera que a partir de la entrada 1 se obtiene la salida 2. , Esta manera de conceptualizar las funciones no se contrapone a la idea de funciones como relaciones especiales (esto es, conjuntos de pares ordenados), sino que ms bien en ciertas a situaciones es ms util tomar uno u otro punto de vista. a

10

CAP ITULO 1. PRELIMINARES

Escribimos f : A B para indicar que si (a, b) f entonces a A y b B; decimos que A es el dominio de la funcin y B es el codominio. Una funcin f : A B puede verse como o o un mapeo que relaciona cada elemento del dominio A con un elemento del codominio B. Por ejemplo, la funcin cuadrado : N N relaciona cada nmero natural con su cuadrado, es o u decir, cuadrado = {(1, 1), (2, 4), (3, 9), . . .}. Se dice que una funcin es total cuando est denida para todos los elementos del dominio, o a como en el ejemplo de la funcin cuadrado, mientras que una funcin es parcial cuando no o o est denida para todos los elementos del dominio, como ser el caso de la funcin de resta a a o en los naturales: resta : N N N, pues por ejemplo, resta(3, 5) no tiene un resultado en los naturales, y por lo tanto el par (3, 5) no forma parte del dominio de la funcin. o Una funcin es inyectiva, tambin llamada uno a uno, cuando para cada elemento del o e dominio hay un unico elemento del codominio. Esto es, no se presenta el caso de que dos pares como (x, z) y (y, z) tengan el mismo segundo elemento. Por ejemplo, la funcin o {(1, 2), (2, 3), (3, 3)} no es inyectiva, pero {(1, 2), (2, 3), (3, 1)} s lo es. Siguiendo el ejemplo de las familias, la funcin que asocia a cada persona con su padre o no es inyectiva, pues varios hermanos comparten un mismo padre. Una funcin es sobreyectiva si cada elemento del codominio aparece en algn par ordeo u nado. Por ejemplo, la funcin cuadrado que presentamos antes no es sobreyectiva, pues hay o muchos nmeros, como el 7, que no son el cuadrado de ningn otro. u u Si una funcin f es a la vez sobreyectiva e inyectiva, entonces su inverso f 1 es tamo bin una funcin (total). A las funciones que cumplen con ambas propiedades se les llama e o biyectivas. Una secuencia es una sucesin ordenada de elementos, como 1, 3, 5, 7, 9, que es la seo cuencia de nmeros naturales impares menores que 10, ordenados de menor a mayor. La u diferencia entre un conjunto y una secuencia es que en una secuencia el orden s importa y en un conjunto no. As 1, 2, 3 = 2, 3, 1. Adems, en una secuencia s es relevante la repeticin , a o de los elementos, por lo que 1, 2, 3 = 1, 2, 2, 3.

1.1.5.

Conjuntos innitos

Adems de los conjuntos nitos esto es, con un nmero de elementos determinado a u tambin puede haber conjuntos innitos, cuyo tamao no puede expresarse con un nmero; e n u u un ejemplo es el conjunto de los nmeros naturales N = {1, 2, 3, . . .}. An a estos conjuntos u pueden aplicarse todas las operaciones antes descritas. Sin embargo, la comparacin de tamaos de conjuntos innitos no es tan simple como o n en el caso de los conjuntos nitos, pues no se puede expresar su tamao como un nmero. n u En estos casos se aplica lo que se conoce como el principio del palomar, que sirve para

1.1. CONJUNTOS

11

comprobar si dos conjuntos tienen o no el mismo tamao. Supngase que se quiere comprobar n o si en un palomar la cantidad de palomas con que se cuenta es mayor, menor o igual a la cantidad de lugares disponibles en el palomar. Una manera simple de vericarlo es asignar a cada una de las palomas un sitio disponible, y si es posible hacerlo para todas las palomas, se sabe que no hay ms palomas que lugares. Similarmente se puede ver si no hay ms lugares a a que palomas. As vericamos que el conjunto de palomas tiene el mismo tamao que el de n lugares disponibles. Esta idea tan sencilla puede aplicarse para comparar el tamao de conjuntos innitos. n As se puede vericar, por ejemplo, que el conjunto de los pares tiene el mismo tamao n que el de los naturales, un resultado dif de aceptar intuitivamente. En efecto, sean N cil y P los naturales y los pares, respectivamente. Es fcil ver que |P| |N|, pero es mucho a menos evidente que |N| |P|, cosa que vamos a mostrar usando el principio del palomar. A cada nmero natural le debemos poder asignar un nmero par distinto; esto se puede hacer u u de muchas maneras, pero una muy simple consiste en asignar a cada nmero el doble de u s mismo; por ejemplo, al 7 le asignamos el par 14, etc. Como esto se puede hacer para todos los nmeros, y no va a haber dos nmeros que compartan el mismo par, concluimos que no u u hay ms nmeros naturales que pares. a u Denicin.- Un conjunto innito es contable, tambin llamado enumerable, cuando sus o e elementos pueden ponerse en una la, o dicho de una manera ms tcnica, cuando sus a e elementos pueden ponerse en correspondencia uno a uno con los nmeros naturales. En u otras palabras, los conjuntos contables innitos tienen el mismo tamao que el conjunto de n los nmeros naturales. Adicionalmente los conjuntos nitos tambin son contables. u e Otro ejemplo de conjunto innito contable es el conjunto de pares de nmeros, esto es, u N N = {(1, 1), (2, 1), (1, 2), (1, 3), (2, 2), (3, 1), (4, 1), . . .} (La prueba de que es contable se deja como ejercicio, ver seccin de ejercicios). o Aunque resulte sorprendente, hay conjuntos innitos ms grandes que los conjuntos a innitos contables, en el sentido de que no van a alcanzar los elementos del conjunto contable para asignar uno a cada elemento del conjunto grande. A estos conjuntos se les llama incontables. Un ejemplo de conjunto incontable es 2N , esto es, el conjunto potencia de los naturales; el llamado Teorema de Kantor establece este hecho. La prueba del Teorema de Kantor es muy simple y se basa en empezar suponiendo que o 2 s es contable, y se llega a una contradiccin, concluyendo entonces que 2N en realidad es incontable.
N

En efecto, si 2N es contable, sus elementos pueden ser puestos en una sucesin como sigue: o 2N = {S1 , S2 , S3 , . . .} Supngase ahora el conjunto D = {n N|n Sn }, que est formado por aquellos nmeros o / a u

12

CAP ITULO 1. PRELIMINARES

n que no aparecen en el conjunto Sn que les corresponde. Como por hiptesis todos los subo conjuntos de los naturales fueron puestos en la sucesin S1 , S2 , . . ., tenemos que el conjunto o D, que est formado de naturales debe hallarse en dicha sucesin, es decir, debe ser igual a o a Sk para una cierta k. Ahora nos preguntamos si k aparece o no en el conjunto D: Si la respuesta es armativa, entonces, por la denicin de D, tenemos que k Sk , lo o / que es una contradiccin; o Si la respuesta es negativa, entonces, por la denicin de D, k Sk , lo que tambin es o e una contradiccin. o Concluimos que 2N es incontable. An dentro de los conjuntos incontables hay unos conjuntos ms grandes que otros. u a En efecto, se sabe que para todo conjunto innito A, se tiene que |A| < |2A |, por lo que hay toda una jerarqu de innitos: a |N| < |2N | < |22 | < . . .
N

1.2.

Manejo lgico de enunciados o

En el proceso de solucin de problemas, un aspecto clave es comprender cabalmente el o enunciado, lo cual en ocasiones no es sencillo, ya sea por la complejidad de aquel, o bien porque la forma poco rigurosa en que manejamos el lenguaje cotidiano puede provocar errores de interpretacin. Ms an, en muchas situaciones es necesario transformar el enunciado en o a u otro equivalente, de forma que la solucin al problema planteado sea ms sencilla. o a Por ejemplo, consideremos el conjunto de nmeros naturales tales que, si son pares o u terminan en 7, entonces contienen algn cero (0). Algunos de estos nmeros son el 2307, el u u 400, as como el 1023 y el 175. Hay que comprender, por ejemplo, porqu el 175 corresponde e al enunciado. La idea es que un nmero cumple la condicin cuando, ya sea contiene algn u o u cero, como el 1023, el 2307 o el 400, o bien ni es par ni termina en 7, como en el caso del 175. Razonamientos lgicos como el anterior pueden sistematizarse haciendo uso de s o mbolos que representan armaciones, que se llaman proposiciones en el llamado Clculo proposicioa nal, que es una rama de las matemticas. 3 a En el ejemplo presentado arriba es crucial comprender el signicado lgico de la llamada o implicacin: Si A es cierto, entonces tambin B es cierto. Esto se representa matemticamente o e a
No estudiaremos aqu el clculo proposicional, limitndonos a revisar los aspectos realmente indispensa a a bles para manejar el material de este texto. El lector interesado en estudiar el clculo proposicional puede a consultar textos como [19].
3

1.2. MANEJO LOGICO DE ENUNCIADOS

13

usando el s mbolo , como en A B. La implicacin A B es cierta siempre que B o es cierto independientemente de si A es cierto o no, y tambin cuando A es falso, como e era el caso del nmero 175 en el ejemplo presentado. u La implicacin no es manejada rigurosamente en el lenguaje cotidiano. Por ejemplo, si un o pap dice a su nio: Irs al cine si haces tu tarea, en realidad no est dando informacin a n a a o sobre qu pasar en caso de que el nio no haga la tarea, an cuando ambos interlocutores e a n u sobreentienden que en ese caso el nio no ir al cine. Representando ir al cine con el n a s mbolo C y hacer la tarea con T , la frase se representar con la frmula T C. Si quisiera a o el pap dar informacin para atender el caso en que no se hace la tarea, tendr que decir a o a algo como Slo si haces tu tarea irs al cine, representado por la implicacin C T , o a o aunque en este caso se deja abierta la posibilidad de que el nio no vaya al cine aunque haya n hecho su tarea. . . Si el pap quisiera considerar todos los casos posibles, tendr que decir a a algo como irs al cine si y slo si haces tu tarea. a o Resumiendo, algunas formas en que se expresa frecuentemente la implicacin A B o son las siguientes:

Si A entonces B B si A B cuando A B siempre y cuando A A slo si B o

Otras frases tales como Vamos a Yucatn o a Oaxaca o El clima es clido y seco a a tambin se pueden representar con s e mbolos matemticos, mediante la llamada disyuncin a o (), para las frases unidas con o, o bien con la conjuncin (), para las frases unidas con o y. Por ejemplo, si ir a Yucatn se representa con Y e ir a Oaxaca con O, la primera frase se a representar como Y O. Similarmente se pueden representar frases ms complejas, como a a Si vamos a Yucatn el clima ser clido pero no seco, mientras que si vamos a Oaxaca a a a ser clido y seco, con la frmula (Y (C S)) (O (C S)), donde el s a a o mbolo representa la negacin de lo que sigue a su derecha. o Otro s mbolo lgico de utilidad es la llamada doble implicacin, denotado por , o o que signica que sus dos argumentos son equivalentes lgicamente. As A B quiere decir o , que A es cierto exactamente en los mismos casos en que B es cierto. La implicacin, la negacin, la conjuncin, etc., son llamados genricamente conectivos o o o e lgicos. o

14

CAP ITULO 1. PRELIMINARES

1.2.1.

Tablas de verdad

Una herramiente util para comprender y utilizar los conectivos lgicos son las llamadas o tablas de verdad, que tienen en los renglones cada caso posible de valores cierto o falso de las proposiciones elementales, y en las columnas a la derecha aparece el valor correspondiente de la proposicin compuesta. Por ejemplo, en la siguiente tabla de verdad se dene el o comportamiento de los conectivos lgicos de conjuncin, disyuncin, negacin e implicacin: o o o o o A 0 0 1 1 B 0 1 0 1 AB 0 0 0 1 AB 0 1 1 1 A 1 1 0 0 AB 1 1 0 1

En esta tabla de verdad el valor cierto se representa con 1 y el falso con 0. Podemos ver ahi que, por ejemplo, el conectivo de disyuncin da cierto en todos los casos menos o cuando los dos argumentos son falsos. Por cierto, esto contradice la manera en que a veces se maneja la disyuncin en el lenguaje cotidiano; por ejemplo, cuando se dice O pagas lo o que debes o no te vuelvo a prestar, se sobreentiende que ambas cosas no pueden ser ciertas a la vez. Sin embargo, viendo la tabla de verdad en la columna del A B, vemos que tiene el valor cierto cuando tanto A como B son ciertos. Es importante entender que los valores que aparecen en la tabla de verdad presentada arriba son deniciones, que por lo mismo no tienen que probarse. Desde luego que no son valores arbitrarios, sino que pretenden precisar el signicado que tienen intuitivamente la disyuncin, la conjuncin, la negacin y la implicacin. En esa tabla de verdad tambin o o o o e podemos ver que la implicacin es simplemente un conectivo que tiene valor cierto en todos o los casos menos cuando A es cierto y B falso. Esto es congruente con la interpretacin que o dimos de la implicacin prrafos antes. o a Como en el caso de los conjuntos, en las frmulas con proposiciones tambin hay equio e valencias muy utiles, que nos permiten modicar enunciados, pero teniendo la garant de a que el enunciado modicado es equivalente al original. Vamos a considerar las siguientes equivalencias: Conmutatividad A B = B A, A B = B A. Distributividad A (B C) = (A B) (A C), A (B C) = (A B) (A C). Implicacin A B = (A) B. o Leyes de De Morgan (A B) = A B, (A B) = A B. Doble negacin (A) = A. o

1.3. PRUEBAS POR INDUCCION Doble implicacin A B = (A B) (B A) o

15

Ejemplo.- El conjunto de nmeros naturales tales que, si son pares o terminan en 7, u entonces contienen algn cero (0), que presentamos antes, puede ser expresado de una forma u ms simple usando las equivalencias. Sea P que el nmero es par, T que termina en 7, C a u que contiene algn cero. Entonces el enunciado original es: u (P T ) C Usando la equivalencia de la implicacin, esta frmula es equivalente a: o o ((P T )) C Aplicando una equivalencia de De Morgan, queda como: (P T ) C Esto es, ya sea que el nmero contiene algn cero (proposicin C), o bien ni es par (P ) ni u u o termina en 7 (T ). Las equivalencias de conectivos lgicos se pueden probar haciendo las tablas de verdad o para las dos frmulas que se supone que son equivalentes. Por ejemplo, probamos la equivao lencia de la implicacin con la siguiente tabla de verdad, en la que se puede observar que los o valores de A B y de (A) B son los mismos:

A 0 0 1 1

B 0 1 0 1

A 1 1 0 0

(A) B 1 1 0 1

AB 1 1 0 1

1.3.

Pruebas por induccin o

Una forma de prueba que utilizaremos repetidamente en este texto es la prueba por induccin. Sirve para probar que una cierta propiedad es vlida para todos los elementos de un o a conjunto innito contable. Hacemos notar que el material indicado como nivel profesional no incluye pruebas por induccin a lo largo del libro. Esto es debido al enfoque predominano temente ingenieril que se da al material de profesional, dejando las pruebas por induccin o para los estudiantes de posgrado. Supongamos que se quiere probar que una propiedad P es cierta para todos los elementos de un conjunto innito contable (C).

16

CAP ITULO 1. PRELIMINARES

Inicialmente se prueba que es cierta para el primer elemento de (C), sea c0 , esto es, se verica P(c0 ). Este paso se llama base de la induccin. o Despus se supone que la propiedad P es cierta para algn elemento ci de (C), y con e u base en esta suposicin, llamada hiptesis de induccin, se prueba que P tambin es cierta o o o e para el siguiente elemento, ci+1 . Con base en los dos pasos anteriores se concluye que la propiedad P es cierta para todos los elementos del conjunto (C). Esta conclusin no es gratuita. En efecto, supongamos un o elemento de (C), por ejemplo c45 . Para probar que satisface la propiedad, ya sabemos que se cumple para c0 , y como tenemos que se cumple para el siguiente elemento, entonces tambin e se cumple para c1 , y como tambin se cumple para el siguiente elemento, se cumplir para c2 , e a y as sucesivamente, hasta llegar a c45 . Lo mismo se puede hacer con cualquier otro elemento de (C). Como un ejemplo simple de la aplicacin de la induccin matemtica, supongamos que o o a queremos probar que todo nmero natural es menor que el doble de s mismo, esto es, u n < 2n, n N. Lo hacemos en dos pasos:

(base) Primero comprobamos que para el caso del 1 se cumple, pues 1 < 2.

(induccin) Ahora, suponiendo que para un nmero i la propiedad se cumple, esto es, o u i < 2i, debemos comprobar que tambin se cumple para el siguiente nmero, esto es, e u i+1 < 2(i+1). En efecto, si i < 2i, entonces i+1 < 2i+1, pero 2i+1 < 2i+2 = 2(i+1), por lo que i + 1 < 2(i + 1), como deb amos probar.

Las pruebas por induccin no siempre son, como en los ejemplos que vimos en esta o seccin, para probar propiedades de los nmeros naturales. En nuestro caso, utilizaremos o u pruebas por induccin para probar, por ejemplo, la correccin de gramticas. Por otra parte, o o a existen muchas variantes de la induccin, como tener varias bases. No entraremos aqu en o detalles de esto, postergando su estudio para las secciones donde se le utiliza directamente.

1.4.

Lenguajes

Uno de los conceptos ms importantes de este texto es el de Lenguaje. Para llegar a este a concepto es necesario denir antes otras nociones ms elementales. Para todas las deniciones a utilizaremos extensivamente la teor elemental de conjuntos. a

1.4. LENGUAJES

17

1.4.1.

Alfabeto, cadena de caracteres

La nocin ms primitiva es la de s o a mbolo, que es simplemente una representacin distino guible de cualquier informacin. Los s o mbolos pueden ser cualesquiera, como w, 9, #, etc., pero nosotros vamos a utilizar las letras a,b,c, etc. Un s mbolo es una entidad indivisible. Un alfabeto es un conjunto no vac de s o mbolos. As el alfabeto del idioma espaol, , n E = {a, b, c, . . . , z}, es slo uno de tantos alfabetos posibles. En general utilizaremos la o notacin para representar un alfabeto. o Con los s mbolos de un alfabeto es posible formar secuencias o cadenas de caracteres, tales como mxzxptlk, balks, r, etc. 4 Las cadenas de caracteres son llamadas tambin palabras. e Un caso particular de cadena es la palabra vac , la cual no tiene ninguna letra. a, La longitud de una palabra es la cantidad de letras que contiene, contando las repeticiones; se denota por |w| para una palabra w. Por ejemplo, |perro| es 5. Cuando escribimos varias palabras o caracteres uno a continuacin de otro, se supone que o forman una sola palabra (se concatenan). La notacin usada para denotar la concatenacin o o de dos cadenas y es . Por ejemplo, si w = abra y v = cada, entonces wvbra es la palabra abracadabra. La concatenacin de palabras es asociativa, esto es, (xy)z = x(yz), pero no conmutativa o en el caso general. La longitud de una concatenacin cumple la propiedad: |uv| = |u| + |v|. 5 o Una palabra v es subcadena de otra w cuando existen cadenas x, y - posiblemente vac astales que xvy = w. Por ejemplo, bora es subcadena de v bora, y es subcadena de toda palabra. El conjunto de todas las palabras que se pueden formar con un alfabeto es denotado convencionalmente por . 6 Por ejemplo, si = {a, b}, = {, a, aa, aaa, aaaa, . . . , b, bb, . . . , ab, aba, abb, . . .}. El conjunto es innito, pero enumerable. 7

1.4.2.

Lenguajes, operaciones con lenguajes

Un lenguaje es simplemente un conjunto de palabras. As {abracadabra} es un lenguaje , (de una sola palabra), {ali, baba, y, sus, cuarenta, ladrones} es otro, es otro, etc. Puesto
Las secuencias fueron denidas en la seccin de preliminares. Formalmente, la palabra casa es la o secuencia de letras c, a, s, a. 5 La prueba de estas propiedades requiere de una denicin formal de las secuencias de caracteres, lo que o nos desviar demasiado de nuestros temas. a 6 Luego veremos una operacin llamada Cerradura de Kleene, que se parece a la notacin , aunque hay o o pequeas diferencias tcnicas. n e 7 Ver seccin de ejercicios. o
4

18

CAP ITULO 1. PRELIMINARES

que los lenguajes son conjuntos, podemos efectuar con ellos todas las operaciones de los conjuntos (unin, interseccin, diferencia). Deniremos adems la operacin de concatenacin o o a o o de lenguajes, escrita como L1 L2 , como una extensin de la concatenacin de palabras: o o L1 L2 = {w|w = xy, x L1 , y L2 }. Por ejemplo, dados los lenguajes L1 = {ca, ma} y L2 = {nta, sa}, la concatenacin L1 L2 o ser {canta, casa, manta, masa}. Como se ve en este ejemplo, para calcular la concatenacin a o de dos lenguajes hay que concatenar cada palabra del primero de ellos con cada una del segundo. Una operacin ms complicada es la llamada estrella de Kleene o cerradura de Kleeo a ne, en honor al matemtico norteamericano S. C. Kleene, quien la propuso. a Denicin.- Si L es un lenguaje, L , llamado cerradura de Kleene de L, es el ms o a pequeo conjunto que contiene: n

La palabra vac a,

El conjunto L

Todas las palabras formadas por la concatenacin de miembros de L o

Por ejemplo, si L = {abra, cadabra}, L = {, abra, abraabra, abracadabra, cadabraabra, . . .} 8 Obsrvese que la denicin de la estrella de Kleene es recursiva, pues en la tercera regla e o estamos suponiendo que ya hay palabras en L , las cuales concatenamos para producir una nueva palabra. Esta nocin se puede conceptualizar fcilmente de la siguiente forma: Suo a pongamos que inicialmente L contiene slo la palabra vac y los elementos de L. Entonces o a de ah tomamos dos elementos cualesquiera, que no necesitan ser distintos, y los concate namos, para producir una palabra, la cual aadimos a L si no estaba ya. Continuando n indenidamente con esta accin, se ir obteniendo todos los elementos de L . 9 o an Esta denicin es congruente con la notacin que se utiliz para denir el conjunto de o o o todas las palabras sobre un alfabeto, pues de hecho es la cerradura de Kleene del alfabeto, tomando los s mbolos de ste como palabras de una letra. e

1.5. LA JERARQU DE CHOMSKY IA

19

LENGUAJES REGULARES LENGUAJES RECURSIVAMENTE ENUMERABLES

LENGUAJES LIBRES DE CONTEXTO

LENGUAJES

Figura 1.3: Los LR en la jerarqu de Chomsky a

1.5.

La jerarqu de Chomsky a

Llamamos clase de lenguajes a conjuntos de lenguajes que comparten una cierta propiedad dada. Esta nocin es muy abstracta, pues ya los lenguajes son en s mismos conjuntos o de secuencias de s mbolos, y las clases de lenguajes son entonces conjuntos de conjuntos de secuencias de s mbolos. La clasicacin de lenguajes en clases de lenguajes es debida a N. Chomsky [4], quien o propuso una jerarqua de lenguajes, donde las clases ms complejas incluyen a las ms sim a a ples. De las clases de lenguajes propuestas en la jerarqu de Chomsky, nosotros estudiaremos a las que aparecen en la gura 1.3, que son: Los Lenguajes Regulares, que es la clase ms pequea, e incluye a los lenguajes ms a n a simples. 10 Un ejemplo de lenguaje regular es el conjunto de todos los nmero binarios. u Los Lenguajes Libres de Contexto, que incluyen a los Lenguajes Regulares. Por ejemplo, la mayor de los lenguajes de programacin son Lenguajes Libres de Contexto. a o Los Lenguajes Recursivamente Enumerables, que incluyen a los Libres de Contexto (y por lo tanto a los Lenguajes Regulares). Todas estas clases de lenguajes son representables de manera nita (mediante cadenas de caracteres que sirven como representacin). Ahora bien, como veremos ms adelante, o a
Debe quedar claro que la descripcin de L en este ejemplo no es formal, pues los . . . dejan abierta la o puerta a muchas imprecisiones. 9 Claro que este proceso no terminar nunca, pues L es innito para cualquier L que tenga al menos un a elemento. 10 Luego veremos en qu sentido son ms simples que las otras clases de lenguajes. e a
8

20

CAP ITULO 1. PRELIMINARES

hay ms lenguajes que posibles representaciones nitas, por lo que podemos saber que hay a lenguajes ms all de los Recursivamente Enumerables. Sin embargo, desde un punto de a a vista prctico, los lenguajes ms utiles son aquellos que tienen una representacin nita, por a a o lo que los dems lenguajes son slo de inters terico. a o e o En cap tulos posteriores veremos que cada una de estas clases de lenguajes est asociada a a un tipo de autmata capaz de procesar estos lenguajes. Esto ha hecho pensar que las o categor de lenguajes de Chomsky no son completamente arbitrarias. as

1.6.

Ejercicios

1. Expresar en extensin el conjunto {x|x N, x < 10}. o 2. Expresar en intencin el conjunto {4, 6, 8, 12, 14, 16}. o 3. Cul es el tamao del conjunto {} (esto es, cuntos elementos contiene)? a n a 4. Sean los conjuntos A = {a, b}, B = {1, 2, 3}. Calcular las siguientes operaciones: a) (A B) A b) A (B A) c) 2AB d ) A (A B) 5. Calcular los conjuntos potencia de los siguientes conjuntos: a) {a, b, c} b) {a, {b, c}} c) {} d ) {, {}} 6. Sea el conjunto A = {a, b, c}. Proponer: a) Una relacin en A A o b) Una funcin en A A o c) Una relacin en A A que no sea funcin. o o 7. Proponer las caracter sticas, en trminos de reexividad, simetr y transitividad, que e a debe tener la relacin x es padre de y (se entiende que padre incluye tambin a o e madre). 8. Un juego infantil consiste en proponer simultneamente ya sea piedra, tijeras o a papel. Se supone que tijera gana sobre papel, piedra sobre tijera, y papel sobre piedra. Determinar si la relacin gana sobre, que es un subconjunto de {piedra, o tijeras, papel} {piedra, tijeras, papel} es:

1.6. EJERCICIOS a) Reexiva b) Simtrica e c) Transitiva 9. Considrese la relacin {(a, d), (b, d), (c, a), (d, d), (c, b)}. Calcular su cerradura: e o a) Reexiva b) Simtrica e c) Transitiva d ) Reexiva y transitiva e) Transitiva y simtrica e

21

f ) Reexiva, transitiva y simtrica (estas son llamadas relaciones de equivalencia. e 10. Considrese la relacin {(a, d), (b, d), (d, d), (c, b)}, siendo el dominio y el codominio el e o conjunto {a, b, c, d}. Indicar si esta relacin es: o a) Una funcin o b) Funcin total o c) Funcin inyectiva o d ) Funcin sobreyectiva o 11. Considrese la funcin madre(x), que obtiene la madre (biolgica) de cada persona. e o o Indica para esta funcin: o a) Cules son el dominio y el codominio a b) Si es una funcin total o c) Si es una funcin inyectiva, sobreyectiva o biyectiva o 12. Considera el conjunto de nmeros naturales tales que si son mayores que 5 o bien u terminan en 5, entonces contienen algn 1 o 2. u a) Propon 3 nmeros que cumplan la condicin y 3 que no la cumplan. u o b) Expresa el enunciado como una frmula proposicional, donde M signica mayores o que 5, T es terminan en 5, U es contienen algn 1 y D es contienen algn u u 2. c) Transforma la frmula del inciso anterior de manera que no tenga una implicacin, o o y aplica una ley de De Morgan al resultado. 13. Dar tres ejemplos de lenguajes basados en el alfabeto {a, b, c}. 14. Explicar la diferencia -si la hay- entre un lenguaje vac y uno que contiene slo la o o palabra vac (tomar en cuenta que dos lenguajes son distintos slamente cuando uno a o de ellos contiene una palabra que el otro no contiene).

22

CAP ITULO 1. PRELIMINARES

15. La palabra vac es elemento de cualquier alfabeto? Puede la palabra vac formar a a parte de un alfabeto? Puede un alfabeto contener palabras? 16. Calcular la concatenacin del lenguaje {, aba} con {a, bb, }. o 17. Obtener {a, bb} (dar los primeros 10 elementos). 18. Mostrar 3 elementos de 2{a,b} . 19. Probar que la resta de conjuntos no es conmutativa ni asociativa. 20. Probar que la interseccin de conjuntos es asociativa y tambin conmutativa. o e 21. Probar que la concatenacin de lenguajes es asociativa pero no conmutativa. o 22. Probar que el conjunto N N = {(1, 1), (2, 1), (1, 2), (1, 3), (2, 2), (3, 1), (4, 1), . . .} es contable. 23. Probar que el conjunto es innito contable. 24. Probar por induccin la propiedad de los naturales 1 + 2 + 3 + . . . + n = o todo n N
n(n+1) , 2

para

Parte I Lenguajes regulares y sus mquinas a

23

Cap tulo 2 Autmatas nitos o


El trmino mquina evoca algo hecho en metal, usualmente ruidoso y grasoso, que ejee a cuta tareas repetitivas que requieren de mucha fuerza o velocidad o precisin. Ejemplos de o estas mquinas son las embotelladoras automticas de refrescos. Su diseo requiere de coa a n nocimientos en mecnica, resistencia de materiales, y hasta dinmica de uidos. Al disear a a n tal mquina, el plano en que se le dibuja hace abstraccin de algunos detalles presentes en a o la mquina real, tales como el color con que se pinta, o las imperfecciones en la soldadura. a El plano de diseo mecnico de una mquina es una abstraccin de sta, que es util n a a o e para representar su forma f sica. Sin embargo, hay otro enfoque con que se puede modelar la mquina embotelladora: cmo funciona, en el sentido de saber qu secuencia de operaciones a o e ejecuta. As la parte que introduce el l , quido pasa por un ciclo repetitivo en que primero introduce un tubo en la botella, luego descarga el l quido, y nalmente sale el tubo para permitir la colocacin de la cpsula (corcholata). El orden en que se efecta este ciclo es o a u crucial, pues si se descarga el l quido antes de haber introducido el tubo en la botella, el resultado no ser satisfactorio. a El modelado de una mquina en lo relacionado con secuencias o ciclos de acciones se a aproxima ms al enfoque que adoptaremos en este curso. Las mquinas que estudiaremos a a son abstracciones matemticas que capturan solamente el aspecto referente a las secuencias a de eventos que ocurren, sin tomar en cuenta ni la forma de la mquina ni sus dimensiones, a ni tampoco si efecta movimientos rectos o curvos, etc. u En esta parte estudiaremos las mquinas abstractas ms simples, los autmatas nitos, a a o las cuales estn en relacin con los lenguajes regulares, como veremos a continuacin. a o o

25

26

CAP ITULO 2. AUTOMATAS FINITOS

2.1.

Modelado de sistemas discretos

Antes de denir los autmatas nitos, empezaremos examinando las situaciones de la o realidad que pueden ser modeladas usando dichos autmatas. De esta manera, iremos de lo o ms concreto a lo ms abstracto, facilitando la comprensin intuitiva del tema. a a o El modelado de fenmenos y procesos es una actividad que permite: o

Vericar hiptesis sobre dichos procesos; o Efectuar predicciones sobre el comportamiento futuro; Hacer simulaciones (eventualmente computarizadas); Hacer experimentos del tipo qu pasar si. . . ?, sin tener que actuar sobre el proceso e a o fenmeno f o sico.

Llamamos eventos discretos a aqullos en los que se considera su estado slo en ciertos e o momentos, separados por intervalos de tiempo, sin importar lo que ocurre en el sistema entre estos momentos. Es como si la evolucin del sistema fuera descrita por una secuencia o de fotograf en vez de un ujo continuo, y se pasa bruscamente de una fotograf a otra. as, a Usualmente se considera que la realidad es continua, y por lo tanto los sistemas discretos son solamente una abstraccin de ciertos sistemas, de los que nos interesa enfatizar su aspecto o discreto. Por ejemplo, en un motor de gasolina se dice que tiene cuatro tiempos: Admisin, o Compresin, Ignicin y Escape. Sin embargo, el pistn en realidad no se limita a pasar por o o o cuatro posiciones, sino que pasa por todo un rango de posiciones continuas. As los cuatro , tiempos son una abstraccin de la realidad. o La nocin ms bsica de los modelos de eventos discretos es la de estado. Un estado es o a a una situacin en la que se permanece un cierto lapso de tiempo. Un ejemplo de la vida real es o el de los estados civiles en que puede estar una persona: soltera, casada, viuda, divorciada, etc. De uno de estos estados se puede pasar a otro al ocurrir un evento o accin, que es el o segundo concepto bsico de la modelacin discreta. As por ejemplo, del estado soltero se a o , puede pasar al estado casado al ocurrir el evento boda. Similarmente, se puede pasar de casado a divorciado mediante el evento divorcio. En estos modelos se supone que se permanece en los estados un cierto tiempo, pero por el contrario, los eventos son instantneos. a Esto puede ser ms o menos realista, dependiendo de la situacin que se est modelando. a o a Por ejemplo, en el medio rural hay bodas que duran una semana, pero desde el punto de vista de la duracin de una vida humana, este tiempo puede considerarse despreciable. En o el caso del evento divorcio, pudiera ser inadecuado considerarlo como instantneo, pues a hay divorcios que duran aos. En este caso, el modelo puede renarse deniendo un nuevo n estado divorcindose, al que se llega desde casado mediante el evento inicio divorcio. a

2.1. MODELADO DE SISTEMAS DISCRETOS

27

soltero

boda

casado
muerte conyuge

boda divorcio boda

divorciado

viudo

Figura 2.1: Modelo de estados civiles de una persona


YD YM

COLGADO
YC OM OC

YC

TONO SUENA OTRO

OCUPADO
OC

YM

HABLANDO

OD

SONANDO
YD

Figura 2.2: Modelo en eventos discretos de un telfono e

Es sumamente prctico expresar los modelos de estados y eventos de manera grca. Los a a estados se representan por valos, y los eventos por echas entre los valos, llamadas transio o ciones. Dentro de cada estado se escribe su nombre, mientras que al lado de las transiciones se escribe el nombre del evento asociado, como en la gura 2.1. El estado donde se inicia tiene una marca >, en este caso soltero. En la gura 2.2 se presenta un modelo simplicado del funcionamiento de un aparato telefnico. En esta gura los nombres de los estados se reeren al aparato desde donde llamo, o contesto, etc., y en caso contrario se especica que es el otro (suena otro, que se reere al aparato telefnico del interlocutor). En las transiciones, la Y inicial se reere a acciones que o hace uno mismo (por ejemplo, YD, que es yo descuelgo), mientras que la O se reere al otro telfono. La C de YC se reere a colgar, mientras que la M es marcar. e As el signicado de las transiciones YC, OC, YM, OM, YD y OD deben quedar claras. , En este ejemplo suponemos que el estado en que inicia el proceso (que llamaremos estado inicial) es con el auricular colgado, sin sonar an. A partir de esa situacin, pueden ocurrir u o varios eventos que nos lleven a un nuevo estado, como por ejemplo que empiece a sonar o bien que alguien descuelgue para marcar un nmero. u Desde luego, elaborar modelos adecuados de un proceso real es un arte que requiere

28

CAP ITULO 2. AUTOMATAS FINITOS

prctica, pero en general los siguientes lineamientos pueden ser utiles: a

1. Diferenciar entre los eventos que se consideran instantneos y aquellos que tienen una a duracin considerable: estos ultimos se asocian a los estados. Los estados son la base o de un diseo de los modelos que estamos estudiando, pues recuerdan las situaciones n bsicas por las que pasa el proceso. a 2. Las condiciones asociadas a los estados deben ser excluyentes, esto es, no deben vericarse varias simultneamente. Por ejemplo, una persona no es soltera y casada a la a vez. 3. Las condiciones asociadas a los estados de un modelo bien hecho deben ser comprensivas, lo que quiere decir que entre todas ellas cubren todos los casos posibles. Por ejemplo, en el modelo de estados civiles suponemos que una persona es ya sea soltera, o bien casada, o bien divorciada, sin haber otras opciones. Si necesitamos considerar el concubinato como otra condicin, habr que modicar el modelo. o a 4. Los eventos instantneos son asociados a los eventos. En el ejemplo, el levantar el a auricular (que se supone una accin instantnea) es una transicin, mientras que se o a o supone que puede transcurrir un tiempo antes de que el usuario marque un nmero, u por lo que hay un estado entre estos dos eventos.

En el ejemplo del telfono, estamos considerando que al descolgar el auricular, el tono de e marcar est inmediatamente disponible, aunque en ciertas ciudades esta suposicin puede a o ser una simplicacin inaceptable. En cambio, en el mismo ejemplo consideramos que la o persona que contesta el telfono no lo hace inmediatamente, sino que hay un inicio y un n e del timbre -aunque mi suegra acostumbra contestar el telfono antes de que se complete el e primer timbrazo. Para los eventos con duracin, es necesario identicar un evento de inicio o y otro de terminacin, como en el ejemplo del divorcio que mencionamos antes. Desde luego, o la decisin de qu eventos son instantneos y cuales tienen duracin depende enteramente o e a o de qu es importante en el problema particular que se desea modelar. e Los errores que ms frecuentemente se cometen al hacer modelos de estados y eventos a son:

Confundir estados con eventos; por ejemplo, tener un estado salir de casa, que razonablemente corresponde a un evento instantneo. 1 a Proponer conjuntos de estados no excluyentes, esto es, que se traslapan, como ser a tener estados Se encuentra en Acapulco y Se encuentra fuera de Guadalajara, pues pueden vericarse ambos simultneamente, lo que no es posible en los estados. a
Si no se quiere que salir de casa sea un evento instantneo, se debe reexpresar de forma que su duracin a o sea evidente, como en preparndose para salir de casa. a
1

2.1. MODELADO DE SISTEMAS DISCRETOS

29

1
2 1 1 1 2 5 2 5 5 2,5

3 2
1

4
1,2,5

5
1,2,5

Figura 2.3: Modelo con estados nales Proponer conjuntos de estados no comprensivos, donde falta algn caso o situacin por u o considerar. En situaciones muy complejas, donde varios procesos evolucionan concurrentemente, el modelado de eventos discretos por medio de estados y eventos no es adecuado, pues los diagramas son demasiado grandes. En estos casos se requieren herramientas ms sosticadas, a como las llamadas redes de Petri [16].

2.1.1.

Estados nales

El propsito de algunos modelos de estados y eventos es el de reconocer secuencias de o eventos buenas, de manera que se les pueda diferencias de las secuencias malas. Supngao se, por ejemplo, que se quiere modelar el funcionamiento de una mquina automtica vena a dedora de bebidas enlatadas. Dicha mquina acepta monedas de valor 1, 2 y 5, y el precio a de cada lata es de 5. Vamos a considerar que el evento llamado 1 es la introduccin de o una moneda de valor 1 en la mquina, el evento 2 para la moneda de valor 2, etc. a La primera cuestin que hay que resolver para disear nuestro modelo es decidir cmo son o n o los estados. Una buena idea ser que cada estado recordara lo que se lleva acumulado hasta a el momento. El estado inicial, desde luego, recordar que se lleva acumulado 0. Con estas a ideas podemos hacer un diagrama de estados y eventos como el de la gura 2.3. Muchas transiciones en dicho diagrama son evidentes, como el paso del estado 1 al 3 tras la introduccin de una moneda de valor 2. En otros casos hay que tomar una decisin de diseo o o n conictiva, como en el caso en que en el estado 4 se introduzca una moneda de valor 2. En el diagrama presentado, se decidi que en ese caso se va al estado 5, lo que en la prctica o a

30

CAP ITULO 2. AUTOMATAS FINITOS


a a q0 b a q2 b b q1

Figura 2.4: Notacin grca o a puede querer decir que la mquina entrega un cambio al usuario, o bien simplemente se a queda con el sobrante. Un aspecto muy importante del modelo de la gura 2.3 es que el estado 5 es un estado especial, llamado estado nal, e identicado por un valo de doble trazo. Los estados o nales indican que cuando se llega a ellos, la secuencia de eventos que llev hasta ah puede o considerarse como aceptable. Por ejemplo, en la mquina vendedora de latas, la secuencia a de eventos meter 2, meter 1, meter 2 puede considerarse aceptable porque totaliza 5. En la gura puede observarse que dicha secuencia hace pasar por los estados 0, 2, 3 y 5, donde este ultimo es nal. De este modo el diagrama nos permite diferencias las secuencias aceptables respecto a otras que no lo son, como la secuencia meter 1, meter 2, meter 1, que lleva al estado 4, que no es nal. Obsrverse que la secuencia meter 5, meter 5, e meter 5 tambin es aceptable desde luego, desde el punto de vista de la mquina, aunque e a seguramente no lo sea desde el punto de vista del cliente.

2.2.

Mquinas de estados nitos a

A partir de ahora vamos a considerar modelos de estados y eventos un poco ms absa tractos que los que hemos visto antes. Retomemos el ejemplo de la mquina vendedora de a latas, que vimos en la seccin 2.1.1. En ese modelo pudimos reconocer secuencias de eventos o aceptables, como la secuencia de monedas 2, 2, 1 con respecto a secuencias no aceptables, como 1, 1, 1. A partir de ahora los nombres de los eventos van a estar formados por un caracter, y les llamaremos transiciones en vez de eventos. De este modo, en vez de un evento meter 1 vamos a tener una transicin con el caracter 1, por ejemplo. Desde luego, la o eleccin de qu caracter tomar como nombre de la transicin es una decisin arbitraria. o e o o Adems, las secuencias de eventos van a representarse por concatenaciones de caracteres, a esto es, por palabras. As en el ejemplo de la mquina vendedora la palabra 1121 representa , a la secuencia de eventos meter 1, meter 1, meter 2, meter 1.

2.2. MAQUINAS DE ESTADOS FINITOS

31

Figura 2.5: Componentes de una mquina abstracta a Desde el punto de vista abstracto que vamos a adoptar a partir de ahora, nuestras mquia nas pueden ser visualizadas como dispositivos con los siguientes componentes: (ver gura 2.5) Una cinta de entrada; Una cabeza de lectura (y eventualmente escritura); Un control. La cabeza lectora se coloca en los segmentos de cinta que contienen los caracteres que componen la palabra de entrada, y al colocarse sobre un caracter lo lee y manda esta informacin al control; tambin puede recorrerse un lugar a la derecha (o a la izquierda o e tambin, segn el tipo de mquina). El control (indicado por una cartula de reloj en la e u a a gura) le indica a la cabeza lectora cundo debe recorrerse a la derecha. Se supone que hay a manera de saber cuando se acaba la entrada (por ejemplo, al llegar al blanco). La aguja del control puede estar cambiando de posicin, y hay algunas posiciones llamadas nales (como o la indicada por un punto, q3 ) que son consideradas especiales, por que permiten determinar si una palabra es aceptada o rechazada, como veremos ms adelante. a

2.2.1.

Funcionamiento de los autmatas nitos o

Como se hab comentado antes, el funcionamiento de los autmatas nitos consiste en a o ir pasando de un estado a otro, a medida que va recibiendo los caracteres de la palabra de entrada. Este proceso puede ser seguido fcilmente en los diagramas de estados. Simplemente a hay que pasar de estado a estado siguiendo las echas de las transiciones, para cada caracter de la palabra de entrada, empezando por el estado inicial. Por ejemplo, supngase que o tenemos el autmata de la gura 2.4 y la palabra de entrada bb. El autmata inicia su o o operacin en el estado q0 que es el estado inicial, y al recibir la primera b pasa al estado o q2 , pues en el diagrama hay una echa de q0 a q2 con la letra b. Luego, al recibir la segunda b de la palabra de entrada, pasar del estado q2 a l mismo, pues en la gura se puede ver a e una echa que de q2 regresa al mismo estado, con la letra b.

32

CAP ITULO 2. AUTOMATAS FINITOS

Podemos visualizar el camino recorrido en el diagrama de estados como una trayectoria recorrida de estado en estado. Por ejemplo, para el autmata nito de la gura 2.4 la o trayectoria seguida para la palabra ab consiste en la secuencia de estados: q0 , q1 , q1 . Los estados son el unico medio de que disponen los AF para recordar los eventos que ocurren (por ejemplo, qu caracteres se han le hasta el momento); esto quiere decir que e do son mquinas de memoria limitada. En ultima instancia, las computadoras digitales son a mquinas de memoria limitada, aunque la cantidad de estados posibles de su memoria podr a a ser enorme.

2.3.

Denicin formal de autmatas nitos o o

Al describir una mquina de estados nitos en particular, debemos incluir las informaa ciones que var de un autmata a otro; es decir, no tiene sentido incluir descripciones an o generales aplicables a todo autmata. Estas informaciones son exactamente las que aparecen o en un diagrama de estados y transiciones, como los que hemos presentado antes. En esta seccin vamos a presentar un formato matemtico para representar las mismas o a informaciones que contiene un diagrama de estados. Como se utiliza terminolog matemtica a a en vez de dibujos, decimos que se trata de una notacin formal. En particular, utilizamos o nociones de la teor de conjuntos que fueron ya presentadas en el cap a tulo 1. Denicin.- Una mquina de estados nitos M es un qu o a ntuplo (K, , , s, F ), donde: K es un conjunto de identicadores (s mbolos) de estados; es el alfabeto de entrada; s K es el estado inicial; F K es un conjunto de estados nales; : K K es la funcin de transicin, que a partir de un estado y un s o o mbolo del 2 alfabeto obtiene un nuevo estado. La funcin de transicin indica a qu estado se va a pasar sabiendo cul es el estado actual o o e a y el s mbolo que se est leyendo. Es importante notar que es una funcin y no simplemente a o una relacin; esto implica que para un estado y un s o mbolo del alfabeto dados, habr un y a slo un estado siguiente. Esta caracter o stica, que permite saber siempre cul ser el siguiente a a estado, se llama determinismo. La denicin dada arriba corresponde a los autmatas nitos o o determin stas, abreviado AFD 3
2 3

que puede ser el mismo en el que se encontraba. Despus veremos otros autmatas nitos, llamados no determin e o stas.

2.3. DEFINICION FORMAL DE AUTOMATAS FINITOS

33

Ejemplo.- El autmata nito determinista de la gura 2.4 puede ser expresado formalo mente como: M = (K, , , q0 , F ), donde: K = {q0 , q1 , q2 } = {a, b} = {((q0 , a), q1 ), ((q0 , b), q2 ), ((q1 , a), q1 ), ((q1 , b), q1 ), ((q2 , a), q0 ), ((q2 , b), q2 )} F = {q1 , q2 } La funcin de transicin puede ser expresada mediante una tabla como la siguiente, o o para este ejemplo: q q0 q0 q1 q1 q2 q2 a b a b a b (q, ) q1 q2 q1 q1 q0 q2

Es fcil ver que la diferencia entre los diagramas de estado y los AFD en notacin formal a o es solamente de notacin, siendo la informacin exactamente la misma, por lo que es sencillo o o pasar de una representacin a la otra. o Tanto en los diagramas de estado como en la representacin formal hay que tener cuidado o en respetar las condiciones para que tengamos un autmata vlido; en particular, el nmero o a u de transiciones que salen de cada estado debe ser igual a la cantidad de caracteres del alfabeto, puesto que es una funcin que est denida para todas las entradas posibles. 4 o a Para el ejemplo de la gura 2.4, donde el alfabeto es {a, b}, de cada estado deben salir exactamente dos transiciones, una con a y otra con b. Otra condicin es que debe haber exactamente un estado inicial. En cambio, la cantidad o de estados nales puede ser cualquiera, inclusive cero, hasta un mximo de |K| (la cantidad a de estados). En la notacin formal tambin hay que seguir las transiciones, que ahora no son represeno e tadas como echas, sino como elementos del conjunto de transiciones. Tomando nuevamente el autmata de la gura 2.4 y la palabra de entrada bb, la operacin se inicia en el estado o o
Recurdese que una funcin no puede tener ms de un resultado (en este caso, un estado de llegada) e o a para cada entrada (en este caso, un estado de salida y un caracter consumido).
4

34

CAP ITULO 2. AUTOMATAS FINITOS

inicial q0 ; luego, al recibir la primera b, usando la transicin ((q0 , b), q2 ) pasa a q2 , y luego, o al recibir la segunda b de la palabra de entrada, por medio de la transicin ((q2 , b), q2 ) pasa o al estado q2 de hecho permanece en l. e De una manera ms general, si un AFD se encuentra en un estado q y recibe un caracter a pasa al estado q ssi (q, ) = q , esto es, si ((q, ), q ) .

Palabras aceptadas Los autmatas nitos que hemos visto pueden ser utilizados para reconocer ciertas palao bras y diferenciarlas de otras palabras. Decimos que un AFD reconoce o acepta una palabra si se cumplen las siguientes condiciones: 1. Se consumen todos los caracteres de dicha palabra de entrada, siguiendo las transiciones y pasando en consecuencia de un estado a otro; 2. al terminarse la palabra, el estado al que llega es uno de los estados nales del autmata o (los que tienen doble c rculo en los diagramas, o que son parte del conjunto F en la representacin formal). o As en el ejemplo de la gura 2.4, el autmata acepta la palabra bb, pues al terminar de , o consumirla se encuentra en el estado q2 , el cual es nal. El concepto de lenguaje aceptado es una simple extensin de aquel de palabra aceptada: o Denicin.- El lenguaje aceptado por una mquina M es el conjunto de palabras acepo a tadas por dicha mquina. a Por ejemplo, el autmata de la gura 2.4 acepta las palabras que empiezan con a, as como o las palabras que contienen aa, y tambin las que terminan en b, como por ejemplo abab, e aaaaa, baaa, etc. En cambio, no acepta baba ni bba, babba, etc. Ntese que tampoco acepta o la palabra vac . Para que un AFD acepte se necesita que el estado inicial sea tambin a e nal.

Formalizacin del funcionamiento de los AFD o El funcionamiento de los AF lo vamos a denir de manera anloga a como se simula el a movimiento en el cine, es decir, mediante una sucesin de fotograf As la operacin de un o as. , o AF se describir en trminos de la sucesin de situaciones por las que pasa mientras analiza a e o una palabra de entrada.

2.3. DEFINICION FORMAL DE AUTOMATAS FINITOS

35

q0

q1

q2

q3

Figura 2.6: La conguracin es como una fotograf de la situacin de un autmata en medio o a o o de un clculo a El equivalente en los AF de lo que es una fotograf en el cine es la nocin de conguracin, a o o como se ilustra en la gura 2.6. La idea bsica es la de describir completamente la situacin a o en que se encuentra la mquina en un momento dado, incluyendo el contenido de la cinta, a la cabeza lectora y el control. Las informaciones relevantes para resumir la situacin de la mquina en un instante son: o a 1. El contenido de la cinta, 2. la posicin de la cabeza lectora, o 3. el estado en que se encuentra el control. Una conguracin ser entonces un elemento de N K, donde el primer elemento o a es el contenido de la cinta, el segundo describe la posicin de la cabeza, y el tercero es el o estado. Slo nos interesar incluir en las conguraciones aquellas informaciones que tengan reo a levancia en cuanto a la aceptacin de la palabra al nal de su anlisis. As por ejemplo, o a , es evidente que, como la cabeza lectora no puede echar marcha atrs, los caracteres por los a que ya pas no afectarn ms el funcionamiento de la mquina. Por lo tanto, es suciente o a a a con considerar lo que falta por leer de la palabra de entrada, en vez de la palabra completa. Esta solucin tiene la ventaja de que entonces no es necesario representar la posicin de la o o cabeza, pues sta se encuentra siempre al inicio de lo que falta por leer. e Entonces una conguracin ser un elemento de K . Por ejemplo, la conguracin o a o correspondiente a la gura 2.5 ser (q1 , abab). a: Para hacer las conguraciones ms legibles, vamos a utilizar dobles corchetes en vez de a parntesis, como en [[q1 , abab]]. e

36

CAP ITULO 2. AUTOMATAS FINITOS

Vamos a denir una relacin entre conguraciones, C1 M C2 , que signica que de la o conguracin C1 la mquina M puede pasar en un paso a la conguracin C2 . Denimos o a o formalmente esta nocin: o Denicin.- [[q1 , w]] M [[q2 , w]] para un si y slo si existe una transicin en M o o o tal que (q1 , ) = q2 . ( es el caracter que se ley). o , o La cerradura reexiva y transitiva de la relacin M es denotada por . As la expresin o M o u u C1 C2 indica que de la conguracin C1 se puede pasar a C2 en algn nmero de pasos M (que puede ser cero, si C1 = C2 ). Ahora ya tenemos los conceptos necesarios para denir cuando una palabra es aceptada. Denicin.- Una palabra w es aceptada por una mquina M = (K, , , s, F ) ssi o a existe un estado q F tal que [[s, w]] M [[q, ]]. Ntese que no basta con que se llegue a un o estado nal q, sino que adems ya no deben quedar caracteres por leer (lo que falta por leer a es la palabra vac a). Ejemplo.- Probar que el AFD de la gura 2.4 acepta la palabra babb. Solucin.- Hay que encontrar una serie de conguraciones tales que se pueda pasar de o una a otra por medio de la relacin M . La unica forma posible es la siguiente: 5 o [[q0 , babb]]
M

[[q2 , abb]]
M

[[q0 , bb]]

[[q2 , b]]

[[q2 , ]].

Como q2 F , la palabra es aceptada. Denicin.- Un clculo en una mquina M es una secuencia de conguraciones C1 , C2 , o a a . . . , Cn , tales que Ci Ci+1 . Generalmente escribimos los clculos como C1 M C2 M . . . M a Cn . Teorema.- Dados una palabra w y una mquina M = (K, , , s, F ), slo hay un a o clculo [[s, w]] M . . . M [[q, ]]. a Prueba.- (por contradiccin): Sean dos clculos distintos: o a [[s, w]] [[s, w]]
M M

... ...

M M

[[p, w ]] [[p, w ]]

M M

[[r, w ]] [[s, w ]]

M M

. . . [[qr , ]] . . . [[qs , ]]

y sean [[r, w ]] y [[s, w ]] las primeras conguraciones distintas en los dos clculos. 6 Esto a implica que (p, ) = r y tambin (p, ) = s, y como es funcin, se sigue que r = s, lo e o que contradice la hiptesis. QED. o
En los AFDs, para cada palabra de entrada slo hay una secuencia posible de conguraciones, precisao mente porque son deterministas. 6 Es decir, los clculos son iguales hasta cierto punto, que en el peor caso es la conguracin inicial [[s, w]]. a o
5

2.4. METODOS DE DISENO DE AFDS

37

2.4.

Mtodos de dise o de AFDs e n

Considrese el problema de construir un AFD que acepte exactamente un lenguaje dado. e Este problema es comnmente llamado problema de diseo. No es conveniente proceder u n por ensayo y error, puesto que en general hay que considerar demasiadas posibilidades, y es muy fcil equivocarse. Ms an, hay dos maneras de equivocarse al disear un AFD: 7 a a u n 1. Que sobren palabras, esto es, que el autmata acepte algunas palabras que no deber o a aceptar. En este caso decimos que la solucin es incorrecta. o 2. Que falten palabras, esto es, que haya palabras en el lenguaje considerado que no son aceptadas por el AFD, cuando deber serlo. En este caso decimos que la solucin an o es incompleta. Por ejemplo, supongamos que alguien propone el autmata de la gura 2.4 para el leno guaje de las palabras en el alfabeto {a, b} que no tienen varias as seguidas. Esta solucin es o defectuosa, porque: 1. Hay palabras, como baa, que tiene as seguidas y sin embargo son aceptadas por el AFD; 2. Hay palabras, como ba, que no tienen as seguidas y sin embargo no son aceptadas por el AFD. Como se ve, es posible equivocarse de las dos maneras a la vez en un slo autmata. o o La moraleja de estos ejemplos es que es necesario disear los AFD de una manera ms n a sistemtica. a El elemento ms importante en el diseo sistemtico de autmatas a partir de un lena n a o guaje consiste en determinar, de manera expl cita, qu condicin recuerda cada uno de e o los estados del AFD. El lector debe concientizarse de que este es un principio de diseo n important simo, verdaderamente bsico para el diseo metdico de autmatas. a n o o Recurdese que la unica forma de memoria que tienen los AFD es el estado en que e se encuentran. As el diseo del AFD inicia con la propuesta de un conjunto de estados , n que recuerdan condiciones importantes en el problema considerado. Posteriormente se proponen las transiciones que permiten pasar de un estado a otro; esta ultima parte es relativamente sencilla una vez que se cuenta con los estados y sus condiciones asociadas. Ejemplo.- Disear un AFD que acepte las palabras en el alfabeto {a, b} en que la cantidad n de as es impar.
7

Estos errores no son excluyentes, y es posible que se presenten ambos a la vez.

38

CAP ITULO 2. AUTOMATAS FINITOS

P
(a) Diseo de estados n

P
a

(b) AFD completo

Figura 2.7: Diseo de AFD para palabras con nmero impar de as n u


q0 0 q1 0 1 q2

1 0 q3 0

Figura 2.8: AF para palabras que no empiezan en 00 Solucin.- Las condiciones relevantes para este problema -que deben ser recordadas por o los estados correspondientes- son:

El nmero de as recibidas hasta el momento es par (estado P); u El nmero de as recibidas hasta el momento es impar (estado I); u

Al iniciar la operacin del autmata no se ha recibido an ninguna a, por lo que debemos o o u encontrarnos en el estado P (el cero es un nmero par), y por lo tanto el estado P es inicial. u Para determinar qu estados son nales, debemos jarnos en cules corresponden con el e a enunciado original de las palabras aceptadas. En este caso vemos que el estado I es el que corresponde, por lo que es nal, mientras que P no corresponde y no es nal. Los estados P e I aparecen en la gura 2.7(a). Esta es la primera etapa del diseo de un n AFD. En nuestro mtodo de diseo es importante trazar las transiciones unicamente despus e n e de haber determinado cules son los estados y sus caracter a sticas. Ahora ya podemos trazar las transiciones, lo cual es una tarea relativamente sencilla, si ya tenemos el diseo de los n estados. Por ejemplo, si estamos en P y recibimos una a, claramente debemos irnos a I, porque la cantidad de as pasa de ser par a impar. Similarmente se hacen las otras transiciones. El resultado se muestra en la gura 2.7(b). Ejemplo.- Disear un AFD que acepte exactamente el lenguaje en el alfabeto {0, 1} en n que las palabras no comienzan con 00.

2.4. METODOS DE DISENO DE AFDS

39

Solucin.- Para emprender el diseo en forma metdica, comenzamos por determinar o n o las condiciones que es importante recordar, y asociamos un estado a cada una de estas condiciones, segn la tabla siguiente: u Estado q0 q1 q2 q3 Condicin o No se han recibido caracteres Se ha recibido un cero al inicio Se han recibido dos ceros iniciales Se recibi algo que no son dos ceros iniciales o

Claramente tanto q0 como q1 deben ser estados nales, mientras que q2 no debe ser nal. Ahora hay que completar el AF, agregando las transiciones que falten. A partir de q0 , si llega un 1 habr que ir a un estado nal en el que se permanezca en adelante; agregamos al a AF un estado nal q3 y la transicin de q0 a q3 con 1. El estado q3 tiene transiciones hacia o s mismo con 0 y con 1. Finalmente, al estado q1 le falta su transicin con 1, que obviamente o dirigimos hacia q3 , con lo que el AF queda como se ilustra en la gura 2.8. En este ejemplo se puede apreciar que en ocasiones es necesario completar el conjunto de estados al momento de hacer las transiciones.

2.4.1.

Dise o por conjuntos de estados n

Es posible llevar un paso ms all el mtodo de asociar una condicin a cada estado: a a e o vamos a asociar condiciones a grupos de estados ms que a estados individuales. De esta a manera aumentaremos el grado de abstraccin en la etapa inicial de diseo, haciendo posible o n en consecuencia atacar problemas ms complejos con menos posibilidades de equivocarse. a Este mtodo consiste en identicar inicialmente condiciones asociadas al enunciado del e problema, aunque stas no sean sucientemente espec e cas para asociarse a estados individuales. Describiremos este mtodo mediante su aplicacin a un ejemplo particular: Disear un e o n AFD que acepte las palabras del lenguaje en {0, 1} donde las palabras no contienen la subcadena 11 pero s 00. Inmediatamente a partir del enunciado identicamos las siguientes situaciones:

Las letras consumidas hasta el momento no contienen ni 00 ni 11. Contienen 00 pero no 11 Contienen 11.

40

CAP ITULO 2. AUTOMATAS FINITOS

1 0 00 pero no 11 0 1 Ni 11 ni 00 1 11 0 1
A C D E

0
B

0 0
B

1 1
F

1 0,1

(a) Grupos de estados

(b) Detalle de estados

Figura 2.9: Diseo de AFD por grupos de estados n Estas condiciones cumplen dos requisitos que siempre se deben cumplir en este tipo de diseos: n

Las condiciones deben ser excluyentes, lo que quiere decir que no deben poder ser ciertas dos o ms al mismo tiempo. a Las condiciones deben ser comprensivas, lo que quiere decir que no faltan casos por considerar.

Los grupos de estados, as como las transiciones que provocan que se pase de uno a otro, se representan como nubes en la gura 2.9(a). En dicha gura tambin se ilustran e unas nubes dobles para indicar que son condiciones nales en este ejemplo, la condicin o Contienen 00 pero no 11, as como la condicin inicial con un s o mbolo >. Estos diagramas no son an AFD, pero casi. Lo que falta por hacer es renar cada grupo u de estados, considerando lo que ocurre al recibir cada uno de los posibles caracteres de entrada. La forma en que se subdivide cada grupo de estados (nube) en estados individuales se detalla a continuacin: o

Las letras consumidas hasta el momento no contienen ni 00 ni 11. 1. Inicial, no se han recibido caracteres. 2. Se acaba de recibir un 0. 3. Se acaba de recibir un 1. Contienen 00 pero no 11.

2.4. METODOS DE DISENO DE AFDS 1. Se acaba de recibir un 0. 2. Se acaba de recibir un 1. Contienen 11 (no hay subcondiciones).

41

Esto nos da un total de 6 estados, cada uno de los cuales tiene una condicin muy o espec ca asociada (son los estados A a F en la gura 2.9(b)). El siguiente paso es hacer el diseo detallado de las transiciones, lo que por experiencia consideramos que es n relativamente fcil para cualquier alumno. El resultado se muestra en la gura 2.9(b). En a este diagrama se puede notar que los estados de una nube nal son tambin nales; esto e debe vericarse siempre. Hacemos notar que en este ejemplo en particular, encontrar directamente las condiciones asociadas a los estados puede ser algo dif por ejemplo, encontrar directamente la condicin cil; o Las letras consumidas hasta el momento no contienen ni 00 ni 11 y se ha recibido un 0 (estado B en la gura 2.9(b)) requerir ciertamente ms inventiva de la que tenemos a a derecho a presuponer en el lector. En este sentido el disear primero los grupos de estados n permite manejar la complejidad del problema de manera ms modular y gradual. a En cualquier caso, ya sea que se encuentren directamente las condiciones para cada estado, o primero para grupos de estados, consideramos importante que primero se determinen los estados con sus condiciones asociadas, y solamente despus se tracen las transiciones, en e vez de ir proponiendo sin ningn orden los estados y las transiciones a la vez, lo que muy u frecuentemente conduce a errores.

2.4.2.

Dise o de AFD por complemento n

En ocasiones, para un cierto lenguaje L, es ms sencillo encontrar un AFD para el lenguaje a exactamente contrario tcnicamente hablando, complementario Lc = L. En estos casos, e una solucin sencilla es hallar primero un AFD para Lc , y luego hacer una transformacin o o sencilla para obtener el autmata que acepta L. o Si M = (K, , , s, F ) es un autmata determinista que acepta un lenguaje regular L, o c para construir un autmata M que acepte el lenguaje complemento de L, esto es, L, o basta con intercambiar los estados nales de M en no nales y viceversa. Formalmente, M c = (K, , , s, K F ). As cuando una palabra es rechazada en M , ella es aceptada en , c 8 M y viceversa. Ejemplo.- Obtener un AF para el lenguaje en {a, b} de las palabras que no contienen la cadena abaab.
Es muy importante notar que el mtodo de diseo por complemento slo se aplica a los autmatas e n o o deterministas, y no a los llamados no deterministas, que veremos luego.
8

42

CAP ITULO 2. AUTOMATAS FINITOS

abaab

b
abaa

a,b

b
Con "abaab" b a,b

a
a

b a

a a

aba

b
(b)

Sin "abaab"

(a)

abaab

b
abaa

a,b

b
^

a
a

b a

a a

aba

b
(c)

Figura 2.10: Diseo del AF para palabras sin abaab n

2.5. EQUIVALENCIA DE AUTOMATAS FINITOS.

43

b q0 a a q2
(a)

a q1 b r0 b a
(b)

b b

a r1

Figura 2.11: Autmatas equivalentes o Solucin.- Primero obtenemos un AFD M1 para el lenguaje cuyas palabras s contienen o la cadena abaab. Diseamos M1 sistemticamente usando grupos de estados, uno que n a recuerda que la palabra no contiene aun abaab y otro que recuerda que ya se reconoci dicha o cadena, como aparece en la gura 2.10(a). Luego detallamos cada uno de estos grupos de estados, introduciendo estados individuales que recuerdan lo que se lleva reconocido de la cadena abaab, como se muestra en la gura 2.10(b) el grupo de estados que recuerda que ya se reconoci la cadena abaab tiene un slo estado, pues no hay condiciones adicionales que o o recordar. Finalmente, la solucin ser un AFD donde cambiamos los estados nales por no o a nales y viceversa en M1 , como se muestra en 2.10(c). Desde luego, el ejemplo descrito es muy sencillo, pero luego veremos otras herramientas que se pueden usar en combinacin con la obtencin del complemento de un AF, para resolver o o en forma sistemtica y exible problemas de diseo aparentemente muy dif a n ciles.

2.5.

Equivalencia de autmatas nitos. o

Decimos que dos autmatas que aceptan el mismo lenguaje son equivalentes. o Denicin.- Dos autmatas M1 y M2 son equivalentes, M1 M2 , cuando aceptan exaco o tamente el mismo lenguaje. Pero, puede haber de hecho varios AF distintos9 que acepten un mismo lenguaje? La respuesta es armativa, y una prueba consiste en exhibir un ejemplo. Por ejemplo, los autmatas (a) y (b) de la gura 2.11 aceptan ambos el lenguaje a . o En vista de esta situacin, dados dos AF distintos existe la posibilidad de que sean o
Qu se quiere decir por distintos? Si dos AF slo dieren en los nombres de los estados se considerarn e o a distintos?
9

44 equivalentes. Pero cmo saberlo? o

CAP ITULO 2. AUTOMATAS FINITOS

De acuerdo con la denicin que hemos presentado, la demostracin de equivalencia de o o dos autmatas se convierte en la demostracin de igualdad de los lenguajes que aceptan. Sin o o embargo, demostrar que dos lenguajes son iguales puede complicarse si se trata de lenguajes innitos. Es por esto que se preeren otros mtodos para probar la equivalencia de autmatas. e o El mtodo que aqu propondremos para los AF se basa en el siguiente teorema: e Teorema de Moore.- Existe un algoritmo para decidir si dos autmatas nitos son equio valentes o no. El algoritmo mencionado en el teorema de Moore consiste en la construccin de un rbol o a de comparacin de autmatas. Este rbol permite convertir el problema de la comparacin o o a o de los lenguajes aceptados en un problema de comparacin de estados de los autmatas. o o Denicin.- Decimos que dos estados q y q son compatibles si ambos son nales o ninguno o de los dos es nal. En caso contrario, son estados incompatibles. La idea del algoritmo de comparacin de AF D1 y AF D2 consiste en averiguar si existe o alguna secuencia de caracteres w tal que siguindola simultneamente en AF D1 y AF D2 e a se llega a estados incompatibles. Si dicha secuencia no existe, entonces los autmatas son o equivalentes. El unico problema con esta idea estriba en que hay que garantizar que sean cubiertas todas las posibles cadenas de caracteres w, las cuales son innitas en general. Por ello se pens en explorar todas las posibles combinaciones de estados mediante un rbol. Dicho rbol o a a de comparacin se construye de la manera siguiente, para dos autmatas M = (K, , , s, F ) o o y M = (K , , , s , F ): 1. Inicialmente la ra del rbol es el par ordenado (s, s ) que contiene los estados iniciales z a de M y M respectivamente; 2. Si en el rbol hay un par (r, r ), para cada caracter en se aaden como hijos suyos a n los pares (r , r ) donde r = (r, ), r = (r , ), si no estn ya. e 3. Si aparece en el rbol un par (r, r ) de estados incompatibles, se interrumpe la consa truccin del mismo, concluyendo que los dos autmatas no son equivalentes. En caso o o contrario se contina a partir del paso 2. u 4. Si no aparecen nuevos pares (r , r ) que no estn ya en el rbol, se termina el proceso, e a concluyendo que los dos autmatas son equivalentes. o Ejemplo.- Sean los autmatas M y M de la guras 2.11(a) y (b) respectivamente. El rbol o a de comparacin se muestra en la gura 2.12. En dicho rbol se muestran adicionalmente, o a con l nea punteada, las ramas que van a nodos ya existentes, como la que va de (q2 , r0 ) a

2.5. EQUIVALENCIA DE AUTOMATAS FINITOS.


(q0,r0)
a b

45

(q2,r0)
a b

(q1,r1)
a,b

Figura 2.12: Arbol de comparacin de AF o

1,4
a a

a
a

b
2,5

1
b b a

4
b b

b
3,6

a
6
a,b

1,6
(c)

(a)

(b)

Figura 2.13: AFDs no equivalentes

(q0 , r0 ). Estas ramas con l nas punteada no son, estrictamente hablando, parte del arbol, pero pensamos que mejoran la comprensin del diagrama. o Se concluye que M y M son equivalentes. En el caso de que los autmatas que se comparan no sean equivalentes, la construccin del o o a rbol de comparacin permite encontrar al menos una palabra en que los lenguajes aceptados o por ellos dieren. Considrense, por ejemplo, los autmatas de las guras 2.13 (a) y (b). Una e o parte del rbol de comparacin se muestra en la gura 2.13(c), hasta donde se encuentra el a o primer par de estados incompatibles. Analizando el rbol de la gura 2.13(c), vemos que para llegar desde la ra del rbol a z a hasta el par incompatible (1,6), hay que gastar los caracteres b, b y a, esto es, la palabra bba. As llegamos a la conclusin de que el autmata de la gura 2.13(a) no acepta la palabra o o bba, mientras que el de la gura 2.13(b) s la acepta, y por lo tanto sus lenguajes aceptados dieren al menos en la palabra bba.

46

CAP ITULO 2. AUTOMATAS FINITOS

Para probar que este mtodo constituye un algoritmo de decisin para vericar la equie o valencia de dos autmatas, hay que mostrar los puntos siguientes: o 1. La construccin del rbol siempre termina (no se cicla) o a 2. Si en el rbol aparecen pares de estados incompatibles (uno nal y el otro no nal), a entonces los lenguajes aceptados por los autmatas son efectivamente distintos. o 3. Si se comparan dos autmatas que no son equivalentes, entonces en el rbol aparecern o a a estados incompatibles. El punto 1 se prueba fcilmente porque, los nodos del rbol siendo todos distintos, son un a a subconjunto de K K , que es nito, por lo que el rbol no puede extenderse indenidamente. a Para probar el punto 2 basta con recorrer en el rbol la trayectoria que lleva al par a de estados incompatibles, (r, r ), r F , r F . Simplemente concatenamos los caracteres de entrada en dicha trayectoria, y obtendremos una palabra wtal que si la aplicamos como entrada al autmata M llegaremos al estado r, es decir, w ser aceptada. En cambio, o a si aplicamos la misma w a M , llegaremos al estado r , que no es nal, por lo que w no ser aceptada. Esto muestra que los lenguajes aceptados por M y por M dieren en al a menos una palabra, w. En cuanto al punto 3, si los lenguajes L(M ) y L(M ) son diferentes, entonces existe al menos una palabra, sea w, tal que es aceptada por uno y rechazada por el otro. En consecuencia, siguiendo la palabra w en el rbol, caracter por caracter, debemos llegar a un a 10 par incompatible. Por otra parte, el punto 3 implica que si no hay pares incompatibles en el rbol, entonces a los lenguajes son idnticos. En efecto, por propiedades de la lgica elemental, al negar la e o conclusin de 3 se obtiene la negacin de su premisa. QED. o o

2.6.

Simplicacin de Autmatas nitos o o

Una de las mejores cualidades de los AFD es que existen mtodos mecnicos para sime a plicarlos, hasta poder llegar al AFD ms sencillo posible para un lenguaje dado. a En el caso de los AFD, vamos a entender por simplicacin la reduccin en el nmero de o o u estados, pero aceptando el mismo lenguaje que antes de la simplicacin. Ms an, llamareo a u mos minimizacin a la obtencin de un autmata con el menor nmero posible de estados. o o o u
11

Reexione porqu se est seguro de que es posible seguir w sobre el rbol, caracter por caracter. No e a a podr atorarse el proceso?. a 11 El hecho de que para todo lenguaje regular existe un AFD m nimo, es un hecho para nada evidente, que rebasa los alcances de este libro. Esto se discute en la referencia [7].

10

2.6. SIMPLIFICACION DE AUTOMATAS FINITOS


a q1 b b

47

b q0 a a q2

Figura 2.14: Cambio de estado inicial Como un primer ejemplo, considrense los AFD de las guras 2.11 (a) y (b). En el AFD de e (a), los estados q0 y q2 son en cierto modo redundantes, porque mientras se estn recibiendo e as, el AFD contina en q0 o en q2 , y cuando se recibe una b se pasa a q1 . Se puede pensar u entonces en eliminar uno de ellos, por ejemplo q2 , y obtener el autmata de la gura 2.11(b), o que tiene un estado menos. Esta idea de estados redundantes se formaliza en lo que sigue: Denicin.- Dos estados son equivalentes, q1 q2 , ssi intercambiar uno por otro en o cualquier conguracin no altera la aceptacin o rechazo de toda palabra. o o
M

Formalmente escribimos: Dos estados p y q son equivalentes si cuando [[s, uv]] [[r, ]] y [[p, v]] [[t, ]] entonces r y t son estados compatibles. M

[[q, v]]

Esta denicin quiere decir que, si p q, al cambiar q por p en la conguracin, la o o palabra va a ser aceptada (se acaba en el estado nal t ) si y slo si de todos modos iba a o ser aceptada sin cambiar p por q (se acaba en el estado nal r ). El unico problema con esta denicin es que, para vericar si dos estados dados p y q son o equivalentes, habr que examinar, para cada palabra posible de entrada, si intercambiarlos a en las conguraciones altera o no la aceptacin de esa palabra. Esto es evidentemente impoo sible para un lenguaje innito. La denicin nos dice qu son los estados equivalentes, pero o e no cmo saber si dos estados son equivalentes. Este aspecto es resuelto por el siguiente lema: o Lema: Dado un AFD M = (K, , , q, F ) y dos estados q1 , q2 K, tendremos que q1 q2 ssi (K, , , q1 , F ) (K, , , q2 , F ). 12 Es decir, para saber si dos estados q1 y q2 son equivalentes, se les pone a ambos como estado inicial de sendos autmatas M1 y M2 , y se procede a comparar dichos autmatas. o o Si stos ultimos son equivalentes, quiere decir que los estados q1 y q2 son equivalentes. Por e ejemplo, para el autmata de la gura 2.11(a), para vericar si q0 q2 , habr que comparar o a dicho AFD con el de la gura 2.14, en el que se cambi el estado inicial por el otro estado o que se quiere comparar. En este ejemplo, dicha comparacin de AFDs da un resultado de o equivalencia, por lo que se concluye que los estados son redundantes.
12

No damos la prueba, ver seccin de ejercicios. o

48

CAP ITULO 2. AUTOMATAS FINITOS

Una vez que se sabe que dos estados son equivalentes, se puede pensar en eliminar uno de ellos, para evitar redundancias y hacer ms eciente al AFD. Sin embargo, la eliminacin de a o un estado en el AFD plantea el problema de qu hacer con las echas que conectan al estado e eliminado con el resto del autmata. Esta cuestin se resuelve con los siguientes criterios: o o 1. Las echas que salen del estado eliminado son eliminadas; 2. Las echas que llegan al estado eliminado son redirigidas hacia su estado equivalente. Por ejemplo, en el autmata de la gura 2.11(a), si vericamos que q0 y q2 son equivao lentes, y pensamos eliminar q2 , hay que redirigir la echa que va de q0 a q2 para que vaya al mismo q0 (se vuelve un ciclo). As se llega al autmata de la gura 2.11(b). o La eliminacin de estados redundantes de un AFD es una manera de simplicar AFDs, y o puede usarse iteradamente para simplicar al m nimo. Sin embargo, el trabajo que implica es mucho, y para AFDs grandes, examinar cada par de estados es poco prctico. a Vamos, en consecuencia, a examinar mtodos ms organizados para localizar los estados e a redundantes y minimizar los AFDs.

2.6.1.

Tabla de estados distinguibles

Vamos a denir la nocin de estados distinguibles, que intuitivamente quiere decir que si o dos estados son distinguibles, ya no pueden ser equivalentes. La denicin es inductiva: o Los estados p y q son distinguibles si son incompatibles (es decir, uno es nal y el otro no nal). Esta es la base de la induccin. o Si tenemos transiciones (p0 , ) = p y (q0 , ) = q donde p y q son distinguibles, entonces tambin p0 y q0 son distinguibles. Este es el paso inductivo. e Por ejemplo, considrese el AFD de la gura 2.15. Claramente los estados 1 y 3 son e distinguibles, porque no son compatibles. Puede ser menos obvio ver que los estados 4 y 3 son distinguibles, pero podemos ver que, aunque ambos son nales, el caracter b nos lleva de 4 a 2, y similarmente de 3 a 1, y vemos que 2 y 1 son distinguibles al no ser compatibles. En ocasiones se requieren varios pasos intermedios para determinar que un par de estados es distinguible (esto no ocurre en el ejemplo recin visto). e Teorema.- Dos estados son equivalentes (o redundantes) ssi no son distinguibles. Este resultado se prueba en la referencia [7]. Su utilidad estriba en que es relativamente sencillo vericar si dos estados son distinguibles.

2.6. SIMPLIFICACION DE AUTOMATAS FINITOS

49

Figura 2.15: AFD a simplicar

Una manera de organizar el trabajo de vericar qu pares de estados de un AFD son e distinguibles, consiste en construir una tabla en que los renglones y las columnas son los nombres de los estados, y en cada cruce de rengln con columna se indica con una cuando o son distinguibles. Por ejemplo, para el AFD de la gura 2.15, empezamos con la tabla vac de la gura a 2.16(a). Obsrvese que en la tabla se omite la diagonal principal, pues no tiene caso confrontar e cada estado contra s mismo. En la tabla 2.16(b) se aprecian signos en las celdas (2,1), (3,1), (4,1) y (5,1) que se obtienen directamente del hecho de que son pares de estados incompatibles por lo tanto distinguibles. En la gura 2.16(c) se ha agregado una marca en la casilla (4,2), que viene del hecho de que con el caracter b las transiciones nos llevan de 2 a 1, y de 4 a 2, pero el par (2,1) ya estaba marcado como distinguible. Finalmente, en la tabla 2.16(d) se pusieron marcas en (4,3), (5,2) y (5,3), haciendo anlisis similares. Es fcil a a convencerse de que no hay forma de hacer distinguibles los pares (3,2) y (5,4), los cuales, de acuerdo con el teorema presentado, son pares de estados equivalentes. Una vez que detectamos los pares de estados equivalentes, podemos proceder a eliminar uno de ellos, de la forma que hemos visto. En el ejemplo de la gura 2.16(d), como hay dos pares de estados redundantes, el AFD m nimo tiene 3 estados. En autmatas grandes, el procedimiento puede volverse algo complicado, pues es necesario o examinar repetidamente cada celda de la tabla para vericar que los cuadros an no marcados u siguen sin ser distinguibles, hasta que en una de las iteraciones ya no se agregue ninguna marca a la tabla.

50

CAP ITULO 2. AUTOMATAS FINITOS

2 3 4 5 1 2 3 4

2 3 4 5

(a)

(b)

2 3 4 5

2 3
X

4 5

(c)

(d)

Figura 2.16: Tabla de estados distinguibles

2.6.2.

Simplicacin por clases de equivalencia o

Existe otro mtodo de simplicacin de estados, de hecho ms comnmente usado que el e o a u que hemos presentado, debido a que permite organizar ms sistemticamente el trabajo. a a Este algoritmo, que llamaremos simplicacin por clases de equivalencia, sigue un o orden de operaciones inverso a la eliminacin gradual de estados redundantes que hemos o visto antes: en vez de ir reduciendo el nmero de estados, comienza con grupos de estados, u o clases, que se van dividiendo en clases ms pequeas, hasta que el proceso de divisin a n o ya no pueda continuarse. La idea es formar clases de estados de un autmata que, hasta donde se sabe en ese moo mento, podr ser equivalentes. Sin embargo, al examinar las transiciones de varios estados an de una misma clase, puede a veces inferirse que despus de todo no deben permanecer en e la misma clase. En ese momento la clase en consideracin se divide. Luego se examinan o las transiciones de las clases que se formaron, a ver si es necesario dividirlas nuevamente, y as en adelante, hasta que no se halle evidencia que obligue a dividir ninguna clase. Al terminar el proceso de divisin de clases, cada una de las clases representa un estado o del autmata simplicado. Las transiciones del autmata simplicado se forman a partir de o o

2.6. SIMPLIFICACION DE AUTOMATAS FINITOS las transiciones de los estados contenidos en cada clase. Antes de formalizar el proceso, vamos a explicarlo con ayuda de un ejemplo.

51

(a) AFD a simplicar

(b) Clases iniciales

(c) Clases al nal

(d) AFD simplicado

Figura 2.17: Simplicacin por clases de equivalencia o

Ejemplo.- Considrese el AFD de la gura 2.17(a). Las primeras dos clases de equivalencia e que se forman contienen, respectivamente, a los estados nales y a los estados no nales, los cuales evidentemente no podr ser equivalentes (esto es, estar en una sola clase de an 13 equivalencia ). Estas dos clases se encuentran indicadas en la gura 2.17(b). Ahora vamos a examinar si todos los estados de cada clase tienen transiciones similares, lo que en nuestro caso quiere decir que van a una misma clase de equivalencia. Por ejemplo, tomemos los estados 3 y 4 de 2.17(b). Al recibir el s mbolo a, desde 3 nos vamos a la clase {2, 3, 4, 5}, lo que tambin ocurre desde el estado 4. Hasta aqu 3 y 4 se comportan e similarmente. Ahora examinamos las transiciones con b: desde 3 nos ir amos a la clase {1}, mientras que desde 4 ir amos a la clase {2, 3, 4, 5}. Conclu mos que 3 y 4 no pueden coexistir en una misma clase de equivalencia, por lo que la clase {2, 3, 4, 5} debe dividirse. Haciendo el
13

Porqu? e

52

CAP ITULO 2. AUTOMATAS FINITOS

mismo anlisis con los dems estados, dividimos {2, 3, 4, 5} en {2, 3} y {4, 5}, como aparece a a en la gura 2.17(c). En este punto ya no es posible dividir alguna de las 3 clases existentes, pues las transiciones de sus estados son similares. Concluimos que estas son las clases de equivalencia ms nas que pueden formarse. a Tomando las clases de equivalencia de 2.17(c) como estados, formamos el AFD que aparece en 2.17(d). Obsrvese que las transiciones de 2.17(d) son las de cualquiera de los estados e contenidos en cada clase; simplemente registramos a qu clase de equivalencia se llega con e cada s mbolo de entrada. El estado inicial corresponde a la clase de equivalencia que contenga el antiguo estado inicial, y los estados nales del nuevo AFD vienen de las clases de equivalencia que contienen estados nales del antiguo AFD. Formalmente, el procedimiento es como sigue, para un AFD (K, , , s, F ): 1. Inicialmente se tienen las clases F y K F 2. Repetir para cada clase: Sea q un estado de la clase. Para cada uno de los otros estados, q , vericar si (q, ) va a dar a la misma clase de equivalencia que (q , ), para cada caracter . Si la respuesta es s la clase no necesita dividirse. , Si la respuesta es no, dividir la clase en dos subclases: la que agrupa a los estados que tuvieron transiciones similares a q, y la de los estados con transiciones diferentes a q (que no van a dar a la misma clase de equivalencia con un mismo s mbolo ). Por ejemplo, consideremos la clase {2, 3, 4, 5} de la gura 2.17(b). Tomando como referencia al estado 2, nos damos cuenta de que el estado 3 tiene transiciones similares (con a a la clase {2, 3, 4, 5}, con b a la clase {1}), mientras que los estados 4 y 5 tienen transiciones diferentes a las de 2 (con a y con b van a la clase {2, 3, 4, 5}); esto ocasiona que la clase {2, 3, 4, 5} se parta en dos. Luego habr que examinar las nuevas clases, {1}, {2, 3} y {4, 5}; a en este caso sucede que ya no se necesita dividir ninguna de ellas. En la prctica, en vez de trazar l a neas sobre el diagrama de estados, es conveniente organizar la informacin de las clases de equivalencia en rboles, en donde cada nodo contiene o a los estados de una clase de equivalencia. Inicialmente estn todos los estados del AFD en a una clase, como en la ra del rbol en la gura 2.18, para el AFD de la gura 2.17(a), e z a inmediatamente se dividen en nales y en no nales, como en el seguiente nivel en esa misma gura. Luego, para el nodo {2, 3, 4, 5} examinamos si las transiciones con los caracteres de entrada, en este caso a y b, llevan a las mismas clases, y vericamos que en el caso de b los estados 2 y 3 van a un no nal, mientras que 4 y 5 van a un nal, por lo que ese nodo se divide en dos, como se aprecia en el tercer nivel de la gura. Ah tambin se puede e apreciar un s mbolo b bajo el nodo {2, 3, 4, 5}, indicando a causa de qu caracter la clase de e

2.7. AUTOMATAS FINITOS CON SALIDA


1, 2, 3, 4, 5

53

2, 3, 4, 5

b
2, 3 4, 5

Figura 2.18: Clases de equivalencia organizadas en rbol a

equivalencia se dividi. Examinando las transiciones en las clases de equivalencia que quedan o en las hojas del rbol, vemos que ya no hay razn para dividirlas ms. Finalmente, las clases a o a de equivalencia resultantes son {1}, {2, 3} y {4, 5}, que corresponden a los 3 estados que tendr el AFD minimizado. a

2.7.

Autmatas nitos con salida o

Hasta donde hemos visto, la unica tarea que han ejecutado los autmatas nitos es la o de aceptar o rechazar una palabra, determinando as si pertenece o no a un lenguaje. Sin embargo, es posible denirlos de manera tal que produzcan una salida diferente de si o no. Por ejemplo, en el contexto de una mquina controlada por un autmata, puede a o haber distintas seales de salida que correspondan a los comandos enviados a la mquina n a para dirigir su accin. En los compiladores, 14 el analizador lexicogrco es un autmata o a o nito con salida, que recibe como entrada el texto del programa y manda como salida los elementos lexicogrcos reconocidos (tokens). Hay dos formas de denir a los autmatas a o con salida, segn si la salida depende de las transiciones o bien del estado en que se encuentra u el autmata. En el primer caso, se trata de los autmatas de Mealy, y en el segundo, de los o o autmatas de Moore, propuestos respectivamente por G. Mealy [13] y E. Moore [15]. o

2.7.1.

Mquinas de Moore a

En las mquinas de Moore la salida depende del estado en que se encuentra el autmaa o ta. Dicha salida es producida una vez, y cuando se llega a otro estado (o al mismo) por efecto de una transicin, se produce el s o mbolo de salida asociado al estado al que se llega. Algunos estudiantes encuentran util la analog de los autmatas de Moore con nociones de a o
14

Haremos una breve descripcin de los compiladores en la seccin 5.6. o o

54

CAP ITULO 2. AUTOMATAS FINITOS

1 0 q0 q1 1 0 q0

1/0

0/1

(a) Moore
1/0 0/1 q0 1/0 q1 0/1

(b) Mealy

(c) Moore transformado en Mealy

Figura 2.19: Autmatas de Moore y Mealy o electricidad: es como si cada estado tuviera un nivel de voltaje que se produce en la salida mientras el control se encuentre en dicho estado. Las mquinas de Moore se representan grcamente como cualquier AFD, al que se a a aade, al lado de cada estado, la salida asociada, que es una cadena de caracteres. Por n ejemplo, consideremos un autmata que invierte la entrada binaria recibida (esto es, cambia o un 1 por 0 y un 0 por 1). Dicho autmata se representa grcamente en la gura 2.19(a). o a Para formalizar los autmatas de Moore una idea sencilla es aadir a un AFD estndar o n a una funcin que asocie a cada estado una palabra de salida; llamaremos a esta funcin. o o Tambin vamos a agregar un alfabeto de salida , que puede ser distinto al de entrada. Todos e los dems aspectos permanecen igual que en un AFD. a Denicin.- Una mquina de Moore es un sxtuplo (K, , , , , q0 ), en donde K, y o a e son como en los AFD, y q0 es el estado inicial; adems tenemos a que es el alfabeto de a salida, y , que es una funcin de K a , que obtiene la salida asociada a cada estado; la o salida es una cadena de caracteres tomados de . Ejemplo.- La siguiente mquina de Moore formaliza el diagrama de la gura 2.19(a): a K = q0 , q1 , = = {0, 1}, (q0 ) = 0, (q1 ) = 1, y est tabulada como: a

q q0 q1

(q, 0) (q, 1) q1 q0 q1 q0

2.7. AUTOMATAS FINITOS CON SALIDA

55

La salida de una mquina de Moore M ante una entrada a1 . . . an es la concatenacin de a o (q0 ) (q1 ) . . . (qn ), donde qi = (qi1 , ai ), ai , para 0 i n.

2.7.2.

Mquinas de Mealy a

En las mquinas de Mealy la salida producida depende de la transicin que se ejecuta, y a o no solamente del estado. Por esto, en la notacin grca las etiquetas de las echas son de o a la forma /w, donde es el caracter que se consume de entrada, y w es la palabra que se produce en la salida. Por ejemplo, el diagrama para el inversor binario, implementado como mquina de Mealy, se presenta en la gura 2.19(b). a Para formalizar las mquinas de Mealy, una idea podr ser aumentarle a las transiciones a a la palabra producida en la salida. Sin embargo, por modularidad se preere denir una funcin de salida , pero que, a diferencia de las mquinas de Moore, ahora toma como o a entrada un estado y un caracter de entrada. En efecto, podemos darnos cuenta de que es lo mismo que la salida dependa del estado y un caracter, a que dependa de una transicin. 15 o Denicin.- Una mquina de Mealy es un sxtuplo (K, , , , , q0 ), en el que todos los o a e componentes tienen el mismo signicado que arriba, a excepcin de , que es una funcin o o : K , esto es, toma un elemento de K que incluye un estado y un caracter de entrada y produce una palabra formada por caracteres de . Ejemplo.- El inversor de Mealy de la gura 2.19(b) se puede representar formalmente de la siguiente forma: K = {q0 }, = {0, 1}, (q0 ) = q0 , y (q0 , 1) = 0, (q0 , 0) = 1. La salida de una mquina de Mealy ante una entrada a1 . . . an es (q0 , a1 ) (q1 , a2 ) . . . a (qn1 , an ), donde qi = (qi1 , ai ), para 1 i n. Obsrvese que, a diferencia de las mquinas de Moore, en las mquinas de Mealy la salida e a a depende de la entrada, adems de los estados. Podemos imaginar que asociamos la salida a a las transiciones, ms que a los estados. a Los criterios para disear tanto mquinas de Moore como de Mealy son bsicamente los n a a mismos que para cualquier otro AFD, por lo que no presentaremos aqu mtodos especiales e de diseo. n

15

Esto suponiendo que no hay varias transiciones distintas entre dos mismos estados.

56

CAP ITULO 2. AUTOMATAS FINITOS

f(x)

Figura 2.20: Funcin como caja negra o

2.7.3.

Equivalencia de las mquinas de Moore y Mealy a

Aunque muchas veces, para un mismo problema, la mquina de Mealy es ms simple que a a la correspondiente de Moore, ambas clases de mquinas son equivalentes. Si despreciamos la a salida de las mquinas de Moore antes de recibir el primer caracter (o sea, con entrada ), es a posible encontrar, para una mquina de Moore dada, su equivalente de Mealy, en el sentido a de que producen la misma salida, y viceversa. La transformacin de una mquina de Moore en mquina de Mealy es trivial, pues hao a a cemos M ealy (q, a) = M oore (M oore (q, a)), es decir, simplemente obtenemos qu salida proe ducir una transicin de Mealy viendo la salida del estado al que lleva dicha transicin en a o o Moore. Por ejemplo, la mquina de Mealy de la gura 2.19(b) se puede transformar de esta a manera a la mquina de Moore que aparece en la gura 2.19(c). a La transformacin de una mquina de Mealy en Moore es ms complicada, pues en o a a general hay que crear estados adicionales; remitimos al alumno a la referencia [7].

2.7.4.

Clculo de funciones en AF a

Ya que las mquinas de Mealy y de Moore pueden producir una salida de caracteres dada a una entrada, es natural aplicar dichas mquinas al clculo de funciones, donde la funcin es a a o vista como una forma de relacionar una entrada, que es una palabra de un cierto alfabeto , con una salida, que es otra palabra formada por caracteres del alfabeto de salida . Podemos as ver una funcin como una caja negra, como se ilustra en la gura 2.20, que a partir o del argumento x entrega un resultado f (x). Ejemplo.- Representamos los nmeros naturales en el sistema unario, es decir, 3 es 111, u 5 es 11111, etc. Queremos una mquina de Mealy que calcule la funcin f (x) = x + 3. Esta a o mquina est ilustrada en la gura 2.21(a). En efecto, al recibirse el primer caracter, en la a a salida se entregan cuatro caracteres; en lo subsecuente por cada caracter en la entrada se entrega un caracter en la salida, hasta que se acabe la entrada. Debe quedar claro que los tres caracteres que le saca de ventaja la salida al primer caracter de entrada se conservan hasta el nal de la entrada; de este modo, la salida tiene siempre tres caracteres ms que la a entrada, y en consecuencia, si la entrada es x, la salida ser x + 3. a Ser interesante ver si los AF pueden calcular funciones aritmticas ms complejas que a e a la simple suma de una constante. Por ejemplo, se podr multiplicar la entrada en unario a

2.7. AUTOMATAS FINITOS CON SALIDA

57

(a) f (x) = x + 3

(b) Funcin f (x) = 2x o

Figura 2.21: Funciones aritmticas en Mealy e

(a) f (x) = 2x + 3

(b) f (x) = nx + m

Figura 2.22: Funciones lineales en Mealy por una constante? La respuesta es s El AF de la gura 2.21(b) entrega una salida que es la entrada . multiplicada por dos. Aun ms, el AF de la gura 2.22(a) calcula la funcin f (x) = 2x + 3. a o Estos resultados pueden ser generalizados para mostrar que una mquina de Mealy puede a calcular cualquier funcin lineal. En efecto, el esquema de AF de la gura 2.22(b) muestra o cmo calcular una funcin f (x) = nx + m. o o Cerca del nal de este texto veremos que un AF no puede calcular funciones mucho ms a complejas que las que hemos visto; ni siquiera pueden calcular la funcin f (x) = x2 . o

Formalizacin del clculo de funciones o a Decimos que una mquina M calcula una funcin f : si dada una entrada a o x la concatenacin de los caracteres que entrega a la salida es y , donde y = f (x). o La denicin anterior puede ser formalizada en trminos de las conguraciones y del paso o e de una conguracin a otra. En efecto, la concatenacin de los caracteres a la salida puede o o ser tomada en cuenta en la conguracin, aadiendo a sta un argumento adicional en el o n e que se vaya acumulando la salida entregada. Esto nos lleva a una denicin modicada de o conguracin. o Denicin.- Una conguracin de una mquina de Mealy (K, , , , , s) es una tripleta o o a [[q, , ]] K , donde q es el estado en que se encuentra el AF, es lo que resta por leer de la palabra, y es lo que se lleva acumulado a la salida.

58
a,b abbab

CAP ITULO 2. AUTOMATAS FINITOS


a,b

Figura 2.23: AFN para palabras que contienen abbab De este modo el funcionamiento del autmata que permite concatenar caracteres a la sao lida se dene de una manera muy simple, utilizando la relacin del paso de una conguracin o o a otra, escrita , como sigue: Denicin.- [[p, u, v]] o [[q, u, v]] si q = (p, ) y = (q, ).

Por ejemplo, dado el AF de Mealy de la gura 2.19(b), tenemos que [[q0 , 101, 0]] [[q0 , 01, 00]]. Utilizando la cerradura transitiva y reexiva de la relacin , que se denota por o podemos denir formalmente la nocin de funcin calculada: o o

Denicin.- Una mquina M = (K, , , , , s) calcula una funcin f : si dada o a o una entrada x , se tiene: [[s, x, ]] [[q, , y]] donde q K, siempre que y = f (x). Por ejemplo, para el AF de Mealy de la gura 2.19(b), se pasa de una conguracin inicial o [[q0 , 1101, ]] a una conguracin nal [[q0 , , 0010]] en cuatro pasos, lo que quiere decir que o la funcin que calcula sea f es tal que f (1101) = 0010. o

2.8.

Autmatas nitos no deterministas o

Una extensin a los autmatas nitos deterministas es la de permitir que de cada nodo o o del diagrama de estados salga un nmero de echas mayor o menor que ||. As se puede u , permitir que falte la echa correspondiente a alguno de los s mbolos del alfabeto, o bien que haya varias echas que salgan de un slo nodo con la misma etiqueta. Inclusive se permite o que las transiciones tengan como etiqueta palabras de varias letras o hasta la palabra vac A a. estos autmatas nitos se les llama no determin o sticos o no deterministas (abreviado AFN), por razones que luego veremos. Al retirar algunas de las restricciones que tienen los autmatas nitos determin o sticos, su diseo para un lenguaje dado puede volverse ms simple. Por ejemplo, un AFN que acepte n a las palabras en {a, b} que contienen la subcadena abbab se ilustra en la gura 2.23. Hacemos notar en este punto que, dado que los AFN tienen menos restricciones que los

2.8. AUTOMATAS FINITOS NO DETERMINISTAS

59

AFD, resulta que los AFD son un caso particular de los AFN, por lo que todo AFD es de hecho un AFN. 16 Hasta aqu slo vemos ventajas de los AFN sobre los AFD. Sin embargo, en los autmatas o o no determin sticos se presenta una dicultad para poder saber qu camino tomar a partir e de un estado dado cuando se presenta un s mbolo, pues puede haber varias opciones. Por ejemplo, tomando el autmata de la gura 2.23, si se nos presenta una palabra como abbaba, o no sabremos si tomar la transicin del estado 1 al 2, gastando abbab, y ya en 2 gastar a, o o bien gastar en 1 todas las letras de la palabra de entrada, siguiendo las transiciones de 1 a s mismo. El problema en este ejemplo es particularmente grave porque en uno de los casos se llega a un estado nal y en el otro no. Veremos ms adelante cmo enfrentar este tipo de a o situaciones. Adems, puede ocurrir que, estando en un nodo n, y habiendo un s a mbolo de entrada a, no exista ninguna echa que salga de n con etiqueta a (esto no ocurre en el ejemplo de la gura 2.23). Estas diferencias con los AFD se deben reejar en la denicin formal de los AFN, como o se hace en seguida.

2.8.1.

Representacin formal de los AFN o

Denicin.- Un autmata nito no determinista es un qu o o ntuplo (K, , , s, F ) donde K, , s y F tienen el mismo signicado que para el caso de los autmatas determin o sticos, y , llamado la relacin de transicin, es un subconjunto nito de K K. o o Por ejemplo, el AFN de la gura 2.23 quedar representado matemticamente por el a a siguiente qu ntuplo: ({1, 2}, {a, b}, {(1, a, 1), (1, b, 1), (1, abbab, 2), (2, a, 2), (2, b, 2)}, 1, {2}) El punto esencial es que es una relacin, no una funcin. Obsrvese tambin que el o o e e segundo elemento de la relacin de transicin es una palabra, no un caracter del alfabeto. o o Esto signica que cada tripleta (q1 , w, q2 ) , que es una transicin representada como una o echa de etiqueta w en el diagrama de estados, permite pasar de q1 a q2 gastando en la entrada una subcadena w. 17 Vamos a denir la nocin de palabra aceptada en trminos de la representacin grca o e o a de los autmatas no determin o sticos. Denicin.- Una palabra w es aceptada por un autmata no determin o o stico ssi existe una
16 17

Sin embargo, la representacin formal de los AFN no es idntica a la de los AFD. o e Ntese que w puede ser la palabra vac o a.

60

CAP ITULO 2. AUTOMATAS FINITOS

trayectoria en su diagrama de estados, que parte del estado inicial y llega a un estado nal, tal que la concatenacin de las etiquetas de las echas es igual a w. 18 o Ejemplo.- Vericar si la palabra baabbaba es aceptada por el AFN de la gura 2.23. Solucin: La palabra baabbaba puede ser dividida en cuatro pedazos, p1 = b, p2 = a, p3 = o abbab, y p4 = a, cuya concatenacin produce la palabra original. Ahora bien, podemos seguir o la siguiente secuencia de estados (trayectoria) en el AFN dado: Estado Cadena que consume Produce estado 1 b 1 1 a 1 1 abbab 2 2 a 2 As probamos que la cadena baabbaba s es aceptada por el autmata. Probar que una ca o dena no es aceptada por un autmata no determin o stico es ms dif pues hay que mostrar a cil, que no existe ninguna trayectoria que satisfaga los requisitos; la cantidad de trayectorias posibles puede ser muy grande como para examinar una por una. En este ejemplo en particular es posible ver que la cadena ababab no es aceptada por el autmata, pues la transicin que o o liga el estado inicial 1 con el nal 2 incluye dos bs seguidas, que no hay en la palabra dada, por lo que no es posible llegar al estado nal y la palabra no podr ser aceptada. a

2.8.2.

Dise o de AFN n

Como sugerimos al inicio de esta seccin, en los AFN es posible aplicar mtodos modulares o e de diseo, que permiten manejar mejor la complejidad de los problemas. Son estos mtodos n e 19 modulares los que describiremos en esta seccin. o

AFN para la unin de lenguajes o Si ya contamos con dos AFN, sean M1 y M2 , es posible combinarlos para hacer un nuevo AFN que acepte la unin de los lenguajes que ambos autmatas aceptaban. o o Sean M1 = (K1 , 1 , 1 , s1 , F1 ) y M2 = (K2 , 2 , 2 , s2 , F2 ) dos autmatas que aceptan o 20 los lenguajes L1 , L2 . Podemos entonces construir un AFN M3 que acepte L1 L2 de la
Se puede expresar la denicin de palabra aceptada en trminos de la nocin de conguracin (ver o e o o ejercicios). 19 En muchos libros estos temas se agrupan, desde un punto de vista ms matemtico que ingenieril, en una a a seccin de propiedades de los lenguajes regulares, pero nosotros hemos preferido aplicarlos directamente o a mejorar las habilidades de diseo de AFN de los alumnos de computacin. n o 20 Sin prdida de generalidad podemos suponer que K1 y K2 son disjuntos. e
18

2.8. AUTOMATAS FINITOS NO DETERMINISTAS

61

Figura 2.24: AFN para la unin de dos lenguajes o siguiente manera: Sea q un nuevo estado que no est en K1 ni en K2 . Entonces hacemos un a autmata M3 cuyo estado inicial es q, y que tiene transiciones vac de q a s1 y a s2 . Esta o as simple idea le permite escoger en forma no determinista entre irse al autmata M1 o a M2 , o segn el que convenga: si la palabra de entrada w est en L1 , entonces escogemos irnos a u a M1 ,,,,, y similarmente a M2 para L2 . Formalmente M3 = (K1 K2 {q}, 1 2 , 1 2 {(q, , s1 ), (q, , s2 )}, q, F1 F2 ). En la gura 2.24 se representa grcamente M3 . a Ejemplo.- Disear un autmata no determinista que acepte las palabras sobre {a, b} que n o tengan un nmero par de a o que terminen en bb. u Solucin.- En la gura 2.25(a) se presenta un AFN que acepta las palabras que contieo nen un nmero par de as, y en 2.25(b) otro que acepta las palabras que terminan en bb. u Finalmente, en 2.25(c) est el AFN que acepta el lenguaje dado. a

AFN para la concatenacin de lenguajes o Similarmente al caso anterior, sean M1 = (K1 , 1 , 1 , s1 , F1 ) y M2 = (K2 , 2 , 2 , s2 , F2 ) dos autmatas que aceptan los lenguajes L1 , L2 respectivamente. Podemos entonces construir o un AFN M3 que acepte L1 L2 de la siguiente manera: Aadimos unas transiciones vac que n as van de cada uno de los estados nales de M1 al estado inicial de M2 ; tambin se requiere e que los estados nales de M1 dejen de serlo. Formalmente M3 = (K1 K2 , 1 2 , 1 2 {(p, , s2 )|p F1 }, s1 , F2 ) El funcionamiento de M3 es como sigue: cuando se recibe una palabra w = w1 w2 , w1 L1 , w2 L2 , entonces se empieza procesando w1 exactamente como lo har M1 , hasta llegar a hasta alguno de los antiguos estados nales de M1 ; entonces se empieza procesando w2 como lo har M2 ; forzosamente debe ser posible llegar a un estado nal de M2 , ya que por hiptesis a o M2 acepta w2 . En la gura 2.26 se representa M3 .

62

CAP ITULO 2. AUTOMATAS FINITOS

(a) Nmero par de a u

q0

(c) Combinacin de los dos o

Figura 2.25: Combinacin de AFNs o

Ejemplo.- Construir un AFN que acepte el lenguaje en {a, b} donde las as vienen en grupos de al menos dos seguidas, y los grupos de as que son repeticiones de aaa estn a a la derecha de los que son repeticiones de aa, como en baabaaa, aaa, baab o baaaaa. Esta condicin no se cumple, por ejemplo, en bbaaabaa ni en aaabaaaa. o Solucin.- Un AFN, ilustrado en la gura 2.27(a), acepta palabras que contienen bs y o grupos de aa en cualquier orden. Otro AFN gura 2.27(b) acepta un lenguaje similar, pero con grupos de aaa. La solucin es su concatenacin, que se presenta en la gura 2.27(c). o o

2.8.3.

Equivalencia de AFD Y AFN

Los autmatas nitos determin o sticos (AFD) son un subconjunto propio de los no determin sticos (AFN), lo que quiere decir que todo AFD es un AFN. 21 Podr entonces pensarse a que los AFN son ms poderosos que los AFD, en el sentido de que habr algunos lena a guajes aceptados por algn AFN para los cuales no habr ningn AFD que los acepte. Sin u a u
21

Salvo por el hecho de que es una funcin y una relacin. o o

a,b bb

q3

q4

(b) Terminan en bb

a,b q3 bb q4

b q1 a a q2 b

2.8. AUTOMATAS FINITOS NO DETERMINISTAS

63

Figura 2.26: AFN para la concatenacin de dos lenguajes o

aa

1
b

(a)
aa

aaa

1
b

2
b

(c)

Figura 2.27: Concatenacin de dos AFN o

aaa

2
b

(b)

64

CAP ITULO 2. AUTOMATAS FINITOS


a q2 a q0 b a q3 a a q1 b q4

Figura 2.28: AFN a transformar en AFD

embargo, en realidad no sucede as . Teorema.- Para todo AFN N , existe algn AFD D tal que L(N ) = L(D). u Este resultado, sorprendente, pero muy util, puede probarse en forma constructiva, pro poniendo para un AFN cmo construir un AFD que sea equivalente. o El mtodo que usaremos para pasar de un AFN a un AFD se basa en la idea de considerar e el conjunto de estados en los que podr encontrarse el AFN al haber consumido una cierta a entrada.

El mtodo de los conjuntos de estados e

Dado un AFN M , consideremos la idea de mantener un conjunto de estados Qi en los que ser posible estar en cada momento al ir consumiendo las letras de una palabra de entrada. a Por ejemplo, considrese el AFN de la gura 2.28. Queremos analizar qu sucede cuando e e este AFN recibe la palabra baaaaab. Para ello, vamos llevando registro de los conjuntos de estados en los que podr encontrarse el AFN. Inicialmente, podr encontrarse en el estado a a inicial q0 , pero sin gastar ningn caracter podr estar tambin en el estado q1 , o sea que el u a e proceso arranca con el conjunto de estados Q0 = {q0 , q1 }. Al consumirse el primer caracter, b, se puede pasar de q0 a q0 o bien a q1 (pasando por el ), mientras que del q1 slo se o puede pasar a q1 . Entonces, el conjunto de estados en que se puede estar al consumir la b es Q1 = {q0 , q1 }. Y as en adelante. La tabla siguiente resume los conjuntos de estados por los que se va pasando para este ejemplo:

2.8. AUTOMATAS FINITOS NO DETERMINISTAS Entrada b a a a a a b Estados {q0 , q1 } {q0 , q1 } {q2 , q4 } {q0 , q1 , q3 } {q1 , q2 , q4 } {q0 , q1 , q3 , q4 } {q1 , q2 , q3 , q4 } {q1 }

65

Puesto que el ultimo conjunto de estados {q1 } incluye a un estado nal, se concluye que la palabra de entrada puede ser aceptada. Otra conclusin mucho ms util que la anterior o a es darse cuenta de que si consideramos a los conjuntos de estados Qi como una especie de mega-estados de cierto autmata, entonces hemos estado en realidad siguiendo los pasos o de ejecucin de un AFD con mega-estados. o Una vez que comprendemos lo anterior, nos damos cuenta de que, si en vez de considerar una palabra en particular, como fue baaaaab, consideramos cada posible caracter que puede llegar al estar en un mega-estado, entonces podremos completar un AFD, que deber ser a 22 equivalente al AFN dado. Para poder ser exhaustivos, necesitamos organizar las entradas posibles de manera sistemtica. a Vamos a describir inicialmente el mtodo sobre un ejemplo. Considrese el problema de e e transformar a AFD el AFN de la gura 2.28. Vamos a considerar el conjunto de estados del AFN en los que podr encontrarse ste en cada momento. El conjunto inicial de estados a e estar formado por los estados del AFN de la gura 2.28 en los que se pudiera estar antes a de consumir el primer caracter, esto es, q0 y q1 . Dicho conjunto aparece en la gura 2.29(a). A partir de ah tras recibir un caracter a, el AFN pudiera encontrarse ya sea en q2 o en , q4 , los cuales inclu mos en un nuevo conjunto de estados, al que se llega con una transicin o con a, como se ilustra en la gura 2.29(b); similarmente, a partir del conjunto inicial de estados {q0 , q1 } con la letra b llegamos al mismo conjunto {q0 , q1 }, lo cual se representa con un lazo a s mismo en la gura 2.29(b). Con este mismo procedimiento se siguen formando los conjuntos de estados; por ejemplo, a partir de {q2 , q4 }, con una a se pasa a {q3 , q0 , q1 }. Continuando as al nal se llega al , diagrama de la gura 2.29(c). Un detalle importante a observar en este procedimiento es que en ocasiones no hay estados adonde ir; por ejemplo, a partir del conjunto de estados {q2 , q4 }, con b no llegamos a ningn u estado. En casos como ste, consideramos que habr una transicin con b a un nuevo conjunto e a o de estados vaco, esto es {}, como se aprecia en la gura 2.29(c). Por supuesto, este estado vac tendr transiciones con a y con b a s mismo. o a
22

La equivalencia formal se discute ms adelante. a

66

CAP ITULO 2. AUTOMATAS FINITOS

Ahora tomemos una pausa y respiremos hondo. Si nos alejamos del dibujo de manera que no observemos que son conjuntos de estados, sino que vemos los c rculos como estados, nos daremos cuenta de que hemos construido un AFD!. Unicamente falta determinar cules a de los nuevos estados son nales y cules no. Obviamente, si uno de los conjuntos de estados a contiene un estado nal del antiguo AFN, esto muestra que es posible que en ese punto el AFN hubiera aceptado la palabra de entrada, si sta se terminara. Por lo tanto, los estados e nales del nuevo autmata sern aquellos conjuntos de estados que contengan algn estado o a u nal. As en el AFD de la gura 2.29(d) marcamos los estados nales; adems borramos los , a estados del antiguo AFN de cada uno de los c rculos, y bautizamos cada conjunto de estados como un estado.

Una transformacin inofensiva o Cuando queremos aplicar el mtodo descrito en los prrafos precedentes, una dicultad e a que puede presentarse es que algunas echas del autmata tienen como etiquetas palabras de o varias letras, y desde luego no podemos tomar un pedazo de una transicin. Esta situacin o o se aprecia en el AFN de la gura 2.30. En efecto, si a partir del estado inicial intentamos consumir la entrada a, vemos que no hay una transicin que permita hacerlo, an cuando o u hay una transicin (q0 , aa, q1 ) cuya etiquete empieza con a. o Una solucin a esta dicultad es normalizar a 1 como mximo la longitud de las palabras o a que aparecen en las echas. Esto puede hacerse intercalando |w| 1 estados intermedios en cada echa con etiqueta w. As por ejemplo, de la transicin (q1 , aaa, q1 ) de la gura 2.30, , o se generan las transiciones siguientes: (q1 , a, q2 ), (q2 , a, q3 ), (q3 , a, q1 ), donde los estados q2 y q3 son estados nuevos generados para hacer esta transformacin. o Con esta transformacin se puede pasar de un AFN cualquiera M a un AFN M equivao lente cuyas transiciones tienen a lo ms un caracter. Esta transformacin es inofensiva en a o 23 el sentido de que no altera el lenguaje aceptado por el AFN. Por ejemplo, para el AFN de la gura 2.30 se tiene el AFN transformado de la gura 2.28.

Formalizacin del algoritmo de conversin o o Vamos ahora a precisar el mtodo de conversin de AFN a AFD con suciente detalle e o como para que su programacin en computadora sea relativamente sencilla. Sin embargo, o no vamos a describir el algoritmo en trminos de ciclos, instrucciones de asignacin, condie o cionales, etc., que son t picos de los programas imperativos. Ms bien vamos a presentar un a conjunto de deniciones que capturan los resultados intermedios en el proceso de conversin o de AFN a AFD. Estas deniciones permiten programar en forma casi directa el algoritmo
23

Probar que esta transformacin preserva la equivalencia (ver ejercicios). o

2.8. AUTOMATAS FINITOS NO DETERMINISTAS

67

q0 q1
(a)

q0 q1

a b

q2 q4

(b)

q0 q1

a b

q2 q4
b

b a

q0 q 1q 3
a b b

q1

q2 q 1q 4
a

a,b a b b a

q4
b

q q0 3 4 q q1
a a b

q3
a

q q2 3 4 q q1

(c)

(d)

Figura 2.29: Transformacin de AFN a AFD o

68
aa q0 b

CAP ITULO 2. AUTOMATAS FINITOS


aaa

q1 b

Figura 2.30: AFN con transiciones de varias letras


a b a q3 b q0 b q1 b q4 b a

a q2

Figura 2.31: AFN con transiciones vac as de conversin, si se utiliza un lenguaje de programacin adecuado, preferentemente de tipo o o funcional, como por ejemplo Scheme [22]. Vamos a ir presentando las deniciones partiendo de la ms sencilla, hasta llegar a la a ms compleja. a Primero introducimos una funcin transicion(q, ), que a partir de un estado q y un o caracter dado obtiene el conjunto de estados a los que se puede llegar desde q directamente gastando el caracter . Por ejemplo, tomando el AFN de la gura 2.31, tenemos que transicion(q0 , b) = {q0 , q1 }. Similarmente, transicion(q1 , b) = {q1 }, y transicion(q3 , a) = {}. Se puede denir matemticamente de la forma siguiente: a

transicion(q, ) = {p | (q, , p) } Sin embargo, esta denicin no toma en cuenta el hecho de que a veces es posible tener o transiciones que no gastan ningn caracter -aquellas marcadas con . As en la gura 2.28, u , se puede pasar de q2 a q0 y luego continuar gratis de q0 a q1 , por lo que en realidad se tiene que considerar a q1 como uno de los estados a los que se puede llegar desde {q1 , q2 } gastando una a. Por lo tanto, hay que modicar la denicin anterior. o Vamos a denir una funcin auxiliar cerr -(q) que es el conjunto de estados a los que o se puede llegar desde el estado q pasando por transiciones vac Adems, si con una tranas. a sicin vac se llega a otro estado que tambin tiene transiciones vac hay que continuar o a e as, aadiendo a cerr -(q) los estados a los que se llegue, hasta que no sea posible aadir nuen n

2.8. AUTOMATAS FINITOS NO DETERMINISTAS

69

vos estados. Por ejemplo, en la gura 2.31, cerr -(q1 ) = {q1 , q2 , q4 }, cerr -(q2 ) = {q2 , q4 }, y cerr -(q0 ) = {q0 }. cerr -(q) se acostumbra llamar cerradura al vac porque matemticamente es la cerrao a dura de q con la relacin {(x, y) | (x, , y) }. 24 o La funcin cerr -(q) se puede denir como sigue: o Denicin.- La cerradura al vac cerr -(q) de un estado q es el ms pequeo conjunto o o a n que contiene: 1. Al estado q; 2. Todo estado r tal que existe una transicin (p, , r) , con p cerr -(q). o Es fcil extender la denicin de cerradura al vac de un estado para denir la cerradura a o o al vac de un conjunto de estados: o Denicin.- La cerradura al vac de un conjunto de estados CERR-({q1 , . . . , qn }) es o o igual a cerr -(q1 ), . . . , cerr-(qn ). Ejemplo.- Sea el AFN de la gura 2.31. Entonces CERR-({q1 , q3 }) = {q1 , q2 , q3 , q4 }. Con la funcin de cerradura al vac ya estamos en condiciones de proponer una versin de o o o la funcin transicion que tome en cuenta las transiciones vac Llamaremos a esta funcin o as. o transicion-, y la denimos de forma que transicion-(q, ) sea el conjunto de estados a los que se puede llegar desde q gastando , inclusive pasando por transiciones vac El as. algoritmo es como sigue, para un estado q y un caracter : 1. Calcular Q0 = cerr -(q) 2. Para cada estado de Q0 , obtener transicion(q, ), y unir todos los conjuntos obtenidos, dando por resultado un conjunto Q1 . 3. transicion-(q, ) = CERR-(Q1 ). Por ejemplo, tomando la gura 2.31, para calcular transicion-(q1 , a), los pasos ser an como sigue: 1. Q0 = {q1 , q2 , q4 } 2. transicion(q1 , a) = {q1 }, transicion(q2 , a) = {q2 , q3 }, y transicion(q4 , a) = {}, por lo que uniendo estos conjuntos, Q1 = {q1 , q2 , q3 }.
24

Consultar la denicin de cerradura de una relacin en el cap o o tulo de preliminares.

70

CAP ITULO 2. AUTOMATAS FINITOS

3. transicion-(q1 , a) = CERR-({q1 , q2 , q3 }) = {q1 , q2 , q3 , q4 }.

Como ultima denicin, es directo extender la funcin transicion-(q, ), que se apli o o ca a un estado y un caracter, a una funcin que se aplique a un conjunto de estados y o un caracter; llamamos a esta funcin TRANSICION -(Q, ), para un conjunto de estados o Q y un caracter . Simplemente aplicamos transicion-(q, ) para cada uno de los estados q Q, y juntamos los resultados en un solo conjunto. Por ejemplo, en la gura 2.31 TRANSICION -({q0 , q2 }, a) = {q0 , q2 , q3 , q4 }. Finalmente resumimos el proceso global de transformacin de un AFN a un AFD en el o siguiente algoritmo. Algoritmo de transformacin AFN AFD: o Dado un AFN (K, , , s, F ), un AFD equivalente se obtiene por los siguientes pasos:

1. El conjunto de estados inicial es cerr -(s). 2. El alfabeto del AFD es el mismo del AFN. 3. Para cada conjunto de estados Q ya presente, hacer: a) Aadir el conjunto de estados TRANSICION -(Q, ) para cada caracter del n alfabeto, si no ha sido creado an. u b) Aadir transiciones ((Q, ), Q ) para cada conjunto de estados Q creado en el n paso anterior. 4. Los conjuntos de estados que contengan un estado en F sern nales. a

Recurdese que lo que llamamos conjunto de estados en el algoritmo se reere a cone junto de estados del AFN original, pero que sern simplemente estados en el AFD que se a est creando. a Ahora bien, se supone que el AFD que hemos construido acepta el mismo lenguaje que el AFN original. Para garantizar la infalibilidad del procedimiento descrito falta an justicar u los siguientes puntos:

1. El procedimiento de construccin del AFD termina siempre o 2. El grafo es un AFD 3. El AFD as construido acepta el mismo lenguaje que el AFN original.

2.8. AUTOMATAS FINITOS NO DETERMINISTAS

71

La construccin de este grafo tiene que acabarse en algn momento, porque la cantidad o u |K| de nodos est limitada a un mximo de 2 , donde K son los estados del AFN (Porqu?). a a e El segundo punto se justica dando la denicin completa del AFD: (KD , , D , sD , FD ), o donde:

Cada elemento de KD es uno de los conjuntos de estados que aparecen en el grafo; El alfabeto es el mismo que el del AFN original; Hay una tripleta (p, , q) en D y slo una por cada echa con etiqueta que va del o conjunto de estados p al conjunto q ; El estado inicial sD del AFD es igual a cerr-(s), donde s es el estado inicial del AFN; FD es el conjunto de conjuntos de estados tales que en ellos aparece al menos un estado nal del AFN.

Finalmente, queda pendiente probar que el AFD (que llamaremos D) acepta el mismo lenguaje que el AFN original N = (K, , , s, F ). 25 Esta prueba se puede dividir en dos partes: L(N ) L(D). Si una palabra w = 0 1 . . . n , i {}, es aceptada por N , entonces existe una secuencia estados q0 , q1 , . . . , qn+1 , por los que pasa N en el clculo: a [[q0 , 0 1 . . . n ]] [[q1 , 1 . . . n ]] ... [[qn , n ]] [[qn+1 , ]]

Esta misma secuencia de estados puede seguirse en D, de la manera siguiente (vamos a denotar con Q maysculas los estados de D): u Iniciamos el recorrido de N en q0 su estado inicial y el recorrido de D en cerr-(q0 ), que es el estado inicial de D. Hay dos posibilidades:

1. Si en N estamos en un estado q K que aparece en Q KD y se presenta una transicin vac de q a q , en D vamos a permanecer en Q, que va a contener tanto a o a q como a q . 2. Si en N estamos en un estado q K que aparece en Q KD , y de q pasamos a q con el caracter , entonces en D pasamos a Q = TRANSICION -(QD , ), que va a ser un estado de D que va a contener a q (Porqu?). e
25

Se supone que N ya sufri la transformacin inofensiva denida el la pgina 66. o o a

72

CAP ITULO 2. AUTOMATAS FINITOS

Siguiendo este procedimiento, cuando la palabra de entrada se acaba al nal del clculo, a en una conguracin [[qf , ]], qf K, habremos llegado en D a un estado Qf KD que debe o contener a qf , y que por ello es estado nal, aceptando as la palabra de entrada. L(D) L(N ). Se puede seguir el procedimiento inverso al del punto anterior para reconstruir, a partir de un clculo que acepta w en D, la secuencia de estados necesaria en N a para aceptar w. Los detalles se dejan como ejercicio. QED

2.8.4.

Ms dise o de AFN: Interseccin de lenguajes a n o

Los problemas de diseo de AFN en que se combinan dos condiciones que se deben cumplir n simultneamente son particularmente dif a ciles de resolver. Un ejemplo de estos problemas ser obtener un AFN que acepte las palabras que contengan la cadena abb un nmero a: u impar de veces y ba un nmero par de veces. u En los mtodos de diseo de AFD propusimos trabajar con grupos de estados, y desde e n luego esto es aplicable tambin a los AFN. Sin embargo, ser an mejor contar con un e a u mtodo modular que nos permitiera combinar de una manera sistemtica las soluciones e a parciales para cada una de las condiciones. Ahora bien, esto es posible, si consideramos la siguiente propiedad de la interseccin de conjuntos: o L1 L2 = (Lc Lc )c 1 2 Esta frmula sugiere un procedimiento prctico para obtener un AFN que acepte la o a interseccin de dos lenguajes dados. Esto se ilustra en el siguiente ejemplo. o Ejemplo.- Obtener un AF para el lenguaje en el alfabeto {a, b} en que las palabras son de longitud par y adems contienen un nmero par de as. Este problema parece bastante dif a u cil, pero se vuelve fcil utilizando la frmula de interseccin de lenguajes. En efecto, empezamos a o o calculando los AFD para los lenguajes que cumplen independientemente las dos condiciones. El AFD M1 de la gura 2.32(a) acepta las palabras de longitud par, mientras que M2 de 2.32(b) acepta las palabras con un nmero par de as. u Ahora obtenemos los AFD que aceptan el complemento de los lenguajes de M1 y M2 , C C cambiando los estados nales por no nales y viceversa; sean M1 y M2 . Es muy importante notar que slo es posible complementar AFDs y no cualquier AFN. o En efecto, si en un AFN simplemente cambiamos estados nales por no nales y viceversa, en general llegaremos a un resultado errneo (esto es, el autmata resultante no es equivalente o o 26 al original).
Verif quese esto tratando de hacer directamente la complementacin o del AFN ({1}, {a, b}, {(1, a, 1)}, 1, {1}), el cual originalmente acepta las palabras con as, pero al cambiar nales por no nales ya no acepta ninguna palabra, en vez de aceptar las palabras con bs, como podr amos
26

2.9. EJERCICIOS

73

b a,b a

q0
a,b

q1

q2
a

q3

(a)
a,b

(b)

q0

a,b b

q1

q5
a b b b a b

q6
b

q4

q2
a

q3

q7

q8
a

(c)

(d)

Figura 2.32: Interseccin de dos AFN o

Combinamos estos autmatas utilizando el procedimiento para la unin de lenguajes, o o dando un AFN M3 (gura 2.32(c)), el cual es convertido a un AFD M4 . Finalmente, este C AFD es simplicado y complementado, dando M4 (gura 2.32(d)), que es el autmata o buscado.

2.9.

Ejercicios

1. Trazar un diagrama de estados y eventos que modele: a) El paso de una persona de un estado civil a otro: considere al menos los estados civiles soltero, casado, divorciado, viudo. Considere al divorcio como un proceso con duracin (no instantneo). o a b) El proceso de conexin de una terminal a un servidor Unix, desde el punto de o vista del usuario (esto es, recibir mensaje pidiendo nombre de usuario, suministrar nombre de usuario, recibir peticin de password, etc.). o c) El proceso de retiro de dinero en un cajero automtico. a
haber supuesto.

74

CAP ITULO 2. AUTOMATAS FINITOS

2. Disear directamente 27 AFDs que acepten los siguientes lenguajes; para cada ejemplo, n establecer claramente lo que recuerda cada estado antes de trazar las transiciones. Escribir adems cada AFD resultante usando la notacin formal. a o a) Las palabras en {a, b} que contienen un nmero par de a. u b) Las palabras del lenguaje en {0, 1} con a lo ms un par de unos consecutivos. a c) las palabras del lenguaje en {a, b} que tienen un nmero impar de ocurrencias de u la subcadena ab. 3. Disear usando el mtodo del complemento un AFD que acepte las palabras en {a, b} n e que no inicien con abab. 4. Utilizar el mtodo de los grupos de estados (nubes) para disear directamente (sin e n pasar por AFN) AFDs para los siguientes lenguajes: a) lenguaje en {0, 1} donde las palabras no contienen la subcadena 11 pero s 00. b) lenguaje en {a, b} donde las palabras son de longitud par y tienen un nmero par u de a. c) lenguaje en {a, b} donde las palabras que contienen aba terminan en bb. 5. Minimizar cada uno de los AFDs del problema anterior: a) Por eliminacin de estados redundantes, usando la tabla. o b) Por clases de equivalencia. 6. Se puede usar el algoritmo de minimizacin para comparar dos AFD M1 y M2 : dos o AFD son equivalentes ssi sus AFD m nimos son iguales. Aqu la igualdad de M1 y M2 se entiende en cuanto a la estructura de los AFD, pero los nombres de los estados pueden ser diferentes. 7. Para simplicar un autmata M = (K, , , s, F ), que tiene dos estados equivalentes o qi , qk K, se quiere eliminar uno de ellos, sea qk . Denir formalmente cada uno de los componentes del autmata M , en que se ha eliminado de M el estado qk . Poner o especial cuidado en denir las transiciones en M . 8. Calcular en detalle los autmatas M1 , M2 y M3 del ejemplo de la seccin 2.4.2. o o 9. En comunicaciones digitales, la derivada de un tren de pulsos, p.ej. 0011100, es una seal que tiene 1 en las cifras que cambian, y 0 en las que permanecen constann tes, como 0010010 para el ejemplo. Disee un autmata de Moore para obtener la n o derivada de la entrada. 10. Disear un autmata de Mealy o de Moore que recibe un ujo de 1 y 0, y cada n o vez que recibe una secuencia 11 la reemplaza por 00.
Aqui directamente quiere decir que no se haga por transformacin de otro tipo de soluciones, tales o como las AFN.
27

2.9. EJERCICIOS

75

11. Decimos que dos AFD M1 y M2 son iguales atencin: no equivalentes si slo dieren o o eventualmente en el nombre de los estados. Denir formalemente la igualdad de AFDs como una relacin de isomorsmo entre los estados de ambos. o 12. Denir lenguaje aceptado para los AFN en trminos de las conguraciones y del e paso de una conguracin a otra. o 13. Dada la representacin formal de un AFD (K, , , s, F ), obtener la representacin o o formal de un AFN tal que los diagramas de ambos sean idnticos (esto es, hacer los e ajustes necesarios para poder considerar al AFD como AFN). 14. Decimos que los lenguajes de dos AFD son casi iguales si dieren unicamente en una palabra. Dados M1 y M2 , un procedimiento para decidir si L(M1 ) es casi igual a L(M2 ) consiste en: a) Hacer la comparacin de M1 y M2 , y detectar una palabra aceptada por M1 pero o no por M2 , sea w. b) Hacer un AFN que acepte unicamente w, sea Mw . c) Combinar M2 con Mw , dando un AFN M2 que acepta L(M2 ) {w} d ) Convertir M2 a AFD, dando M2 e) Comparar M2 con M1 . Pruebe la receta anterior con los AFD siguientes: a) M1 = ({1, 2}, {a, b}, {((1, a), 2)((1, b), 2), ((2, a), 2), ((2, b), 2)}, 1, {1}) b) M2 = ({3, 4, 5}, {a, b}, {((3, a), 4), ((3, b), 5), ((4, a), 5), ((4, b), 5), ((5, a), 5), ((5, b), 5)}, 3, {4}) 15. Sean dos autmatas nitos no deterministas AF N1 y AF N2 o a) Cmo es posible determinar si el lenguaje que acepta AF N1 es subconjunto del o que acepta AF N2 ? Justique su respuesta. Ayuda: Utilizar la propiedad de los conjuntos A B ssi A B = B. b) Aplicar el procedimiento anterior para determinar si los AFN siguientes aceptan o no lenguajes complementarios: 1) ({1, 2}, {a, b}, {(1, a, 1), (1, b, 1), (1, aa, 2), (2, a, 2), (2, b, 2)}, 1, {2}) 2) ({1, 2, 3}, {a, b}, {(1, a, 2), (1, b, 1), (2, a, 3), (2, b, 1), (3, a, 3), (3, b, 3)}, 1, {1, 2}) 16. Probar que al reemplazar toda transicin (p, uv, q) por (p, u, i) y (i, v, q), creando un o nuevo estado no nal i, el AFN seguir aceptando todas las palabras que aceptaba antes a de hacer la transformacin. (Sugerencia: hay que examinar los clculos que permit o a an aceptar una palabra antes de la transformacin, y mostrar que en el AFN transformado o debe haber un clculo modicado que permite aceptar la misma palabra). a

76

CAP ITULO 2. AUTOMATAS FINITOS

17. Suponga una variante de los autmatas nitos, los autmatas con aceptacin (AA), en o o o que, adems de los estados nales, hay estados de aceptacin, tales que si el autmata a o o pasa por uno de ellos, aunque sea una vez, la palabra ser aceptada, independientea mente del tipo de estado al que se llegue al agotar la palabra. a) Dibuje un AA que acepte las palabras sobre {a, b} que comienzan por bb o terminan con aaa. (Marque los estados de aceptacin por nodos ). o b) Dena formalmente los AA, as como la nocin de lenguaje aceptado por un o AA, usando para ello la relacin entre conguraciones C1 C2. (Evite en sus o deniciones el uso de . . . ). c) Pruebe que los AA son equivalentes a los AF, dando un procedimiento para construir un AF a partir de cualquier AA dado. d ) Pruebe su procedimiento del inciso anterior transformando el AA del primer inciso a AF. 18. Suponga otra variante de los autmatas nitos deterministas, los autmatas con reo o chazo (AR), en que, adems de los estados nales, hay estados de rechazo, tales que si a el autmata pasa por uno de ellos, aunque sea una vez, la palabra es rechazada, indeo pendientemente de que al nal se llegue o no a un estado nal o de rechazo. Se supone que si no se pasa por un estado de rechazo, la aceptacin de una palabra depende de o que al nal se llegue a un estado nal. a) Dibuje un AR que acepte las palabras sobre {a, b} que no contengan las cadenas abaab ni abba. Marque los estados de rechazo por nodos . b) Dena formalmente los AR, as como la nocin de lenguaje aceptado por un o AR, usando para ello la relacin entre conguraciones C1 o C2 . (Evite en sus deniciones el uso de . . . ). 19. Un autmata nito casi determinista (AFCD) es un AFN en el cual nunca hay la posio bilidad de elegir entre dos caminos a tomar. Los AFCD son de hecho una abreviatura de los AFD, donde se omiten los inernos, y se pueden incluir varios caracteres en un arco. Un ejemplo de AFCD est en la siguiente gura 2.33. Es posible probar que a
a b

q0

bab

q1

Figura 2.33: Ejemplo de AFCD un AFN dado es AFCD? Si es as proponga un mtodo sistemtico para probarlo. , e a 20. Suponga unos autmatas no deterministas con salida (AFNDS), en que las echas son o de la forma w/y, donde w y y son palabras formadas respectivamente con el alfabeto de entrada y de salida (pueden ser la palabra vac a).

2.9. EJERCICIOS a) Dena formalmente los AFNDS. b) Dena formalmente la nocin de funcin calculada. o o

77

c) Se dice que un AFNDS es conuente cuando la salida obtenida es la misma independientemente de qu trayectoria se siga cuando haya varias opciones. e 1) Pruebe que todo autmata de Mealy, visto como AFNDS, es conuente. o 2) Es posible decidir si un AFNDS es conuente? Pruebe su respuesta proponiendo un procedimiento para decidir, o mostrando porqu es imposible. e 21. Un estado q de un AFD es inaccesible si no hay ninguna trayectoria que, partiendo del estado inicial, llegue a q. Esta, sin embargo, no es una denicin formal. o a) Denir formalmente cundo un estado q es inaccesible, utilizando para ello la a relacin de paso entre conguraciones. o b) Proponer un procedimiento para obtener el conjunto de los estados accesibles en un AFD. (Ayuda: considerar cmo evoluciona el conjunto de estados accesibles o ante posibles transiciones). 22. Decimos que un AFN se traba cuando no hay una transicin que indique adonde ir o ante el s mbolo de entrada. Pruebe que es posible/no es posible saber, dado un AFN M en particular, si M podr o no trabarse para alguna palabra w (proponga un a mtodo de decisin). e o 23. Para una palabra w, un sujo de w es cualquier subcadena s con que termina w, es decir zs = w, tal que w, z, s . Si L es un lenguaje, Sujo(L) es el conjunto de sujos de las palabras de L. Demuestre que si hay un AFN que acepte R, Sujo(R) tambin es aceptado por algn AFN. e u 24. Hemos visto que es posible disear modularmente un AFN que acepte la interseccin n o de los lenguajes aceptados por M1 y M2 . Ser tambin posible combinar M1 y M2 de a e manera que obtengamos un AFN que acepte la diferencia L1 L2 de sus lenguajes? Proponga un mtodo para hacerlo. e 25. Es regular el reverso de un lenguaje regular? (El reverso de una palabra 1 2 . . . n es n . . . 1 ). 26. Consideremos el problema de saber si el lenguaje aceptado por un AFD M es vac o o no lo es. a) Una primera idea ser simplemente vericar si el conjunto de estados nales es a vac Porqu no funciona esta idea ? o e b) Proponga un procedimiento que s permita decidir si L(M ) = (Hint: Utilice la comparacin de autmatas). o o c) Aplique el procedimiento de (b) para vericar si el lenguaje del siguiente AFD M es vac ({1, 2, 3}, {a, b}, {((1, a), 2), ((1, b), 1), ((2, a), 2), ((2, b), 1), ((3, a), 2), o: ((3, b), 1)}, 1, {3})

78 27. Probar el lema de la seccin 2.6. o

CAP ITULO 2. AUTOMATAS FINITOS

28. Una extensin de los AF consiste en permitir que la cabeza lectora se mueva a la derecha o o a la izquierda, y no solamente a la derecha. Pruebe que este tipo de autmata no es o ms poderoso que los AF tradicionales (es trivial que no es menos poderoso). a

Cap tulo 3 Expresiones Regulares y Gramticas a Regulares


En este cap tulo estudiaremos la clase de lenguajes aceptados por los AF, la de los lenguajes regulares, que es al mismo tiempo una de las de mayor utilidad prctica. Como se a aprecia en la gura 1.3, los Lenguajes Regulares son los ms simples y restringidos dentro a de la jerarqu de Chomsky que presentamos anteriormente. Estos lenguajes pueden adems a a ser descritos mediante dos representaciones que veremos: las Expresiones Regulares y las Gramticas Regulares. a

3.1.

Lenguajes Regulares

Los lenguajes regulares se llaman as porque sus palabras contienen regularidades o repeticiones de los mismos componentes, como por ejemplo en el lenguaje L1 siguiente: L1 = {ab, abab, ababab, abababab, . . .} En este ejemplo se aprecia que las palabras de L1 son simplemente repeticiones de ab cualquier nmero de veces. Aqu la regularidad consiste en que las palabras contienen ab u algn nmero de veces. u u Otro ejemplo ms complicado ser el lenguaje L2 : a a L2 = {abc, cc, abab, abccc, ababc, . . .} La regularidad en L2 consiste en que sus palabras comienzan con repeticiones de ab, 79

80

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

seguidas de repeticiones de c. Similarmente es posible denir muchos otros lenguajes basados en la idea de repetir esquemas simples. Esta es la idea bsica para formar los lenguajes a Regulares. Adicionalmente a las repeticiones de esquemas simples, vamos a considerar que los lenguajes nitos son tambin regulares por denicin. Por ejemplo, el lenguaje L3 = {anita, lava, la, tina} e o es regular. Finalmente, al combinar lenguajes regulares unindolos o concatenndolos, tambin se e a e obtiene un lenguaje regular. Por ejemplo, L1 L3 = {anita, lava, la, tina, ab, abab, ababab, abababab, . . .} es regular. Tambin es regular una concatenacin como L3 L3 = {anitaanita, e o anitalava, anitala, anitatina, lavaanita, lavalava, lavala, lavatina, . . .} 1

3.1.1.

Denicin formal de Lenguajes Regulares o

Denicin.- Un lenguaje L es regular si y slo si se cumple al menos una de las condiciones o o siguientes:

L es nito; L es la unin o la concatenacin de otros lenguajes regulares R1 y R2 , L = R1 R2 o o o L = R1 R2 respectivamente. L es la cerradura de Kleene de algn lenguaje regular, L = R . u

Esta denicin nos permite construir expresiones en la notacin de conjuntos que repreo o sentan lenguajes regulares. Ejemplo.- Sea el lenguaje L de palabras formadas por a y b, pero que empiezan con a, como aab, ab, a, abaa, etc. Probar que este lenguaje es regular, y dar una expresin de o conjuntos que lo represente. Solucin.- El alfabeto es = {a, b}. El lenguaje L puede ser visto como la concatenacin o o de una a con cadenas cualesquiera de a y b; ahora bien, stas ultimas son los elementos de e {a, b} , mientras que el lenguaje que slo contiene la palabra a es {a}. Ambos lenguajes son o 2 regulares. Entonces su concatenacin es {a}{a, b} , que tambin es regular. o e
Recurdese que la concatenacin de dos lenguajes L1 y L2 se dene como el conjunto de las palabras e o formadas concatenando una de L1 con una de L2 , ver seccin 1.4.2. o 2 En efecto, {a} es nito, por lo tanto regular, mientras que {a, b} es la cerradura de {a, b}, que es regular por ser nito.
1

3.2. EXPRESIONES REGULARES

81

3.2.

Expresiones regulares

La notacin de conjuntos nos permite describir los lenguajes regulares, pero nosotros o quisiramos una notacin en que las representaciones de los lenguajes fueran simplemente e o texto (cadenas de caracteres). As las representaciones de los lenguajes regulares ser sim an plemente palabras de un lenguaje (el de las representaciones correctamente formadas). Con estas ideas vamos a denir un lenguaje, el de las expresiones regulares, en que cada palabra va a denotar un lenguaje regular. Denicin.- Sea un alfabeto. El conjunto ER de las expresiones regulares sobre o contiene las cadenas en el alfabeto {, +, , , (, ), } que cumplen con lo siguiente: 1. y ER 2. Si , entonces ER. 3. Si E1 , E2 ER, entonces (E1 +E2 ) ER, (E1 E2 ) ER, (E1 ) ER. Las comillas enfatizan el hecho de que estamos deniendo cadenas de texto, no expresiones matemticas 3 . Es la misma diferencia que hay entre el caracter ASCII 0, que a se puede teclear en una terminal, y el nmero 0, que signica que se cuenta un conjunto sin u ningn elemento. u Ejemplos.- Son ER en {a, b, c} las siguientes: a, ((a + b)) , ((a b) c). No son ER: ab, ((a b(c) ).

3.2.1.

Signicado de las ER

Las ER son simplemente frmulas cuyo propsito es representar cada una de ellas un o o lenguaje. As el signicado de una ER es simplemente el lenguaje que ella representa. , Por ejemplo, la ER representa el conjunto vac {}. o Para comprender intuitivamente la manera en que las ER representan lenguajes, consideremos el proceso de vericar si una palabra dada w pertenece o no al lenguaje representado por una ER dada. Vamos a decir que una palabra empata con una expresin regular si es o parte del lenguaje que esta representa. La palabra vac empata con la ER . a
3

Este ultimo es el caso de las expresiones de conjuntos para describir los conjuntos regulares.

82

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

Una palabra de una letra como a empata con una ER consistente en la misma letra a, b empata b, etc. Luego, una palabra w = uv, esto es w est formada de dos pedazos u y v, empata con a una expresin (U V ) a condicin de que u empate con U y v empate con V . Por ejemplo, o o abc empata con (a (b c)) porque abc puede ser dividida en a y bc, y a empata con a en la ER, mientras que bc empata con (b c) separando b y c de la misma manera. Similarmente, cuando la ER es de la forma (U + V ), puede empatar con una palabra w cuando esta empata con U o bien cuando empata con V . Por ejemplo, bc empata (a + (b c)). Una palabra w empata con una expresin U cuando w puede ser partida en pedazos o w = w1 w2 , . . . de tal manera que cada pedazo wi empata con U . Por ejemplo, caba empata con (((c + b) a)) porque puede partirse en los pedazos ca y ba, y ambos empatan con ((c + b) a), lo cual es fcil de vericar. a A continuacin deniremos formalmente la correspondencia entre la representacin (una o o ER) y el lenguaje representado. Denicin.- El signicado de una ER es una funcin L : ER 2 (esto es, una funcin o o o que toma como entrada una expresin regular y entrega como salida un lenguaje), denida o de la manera siguiente: 1. L() = (el conjunto vac o) 2. L() = {} 3. L() = {}, . 4. L((RS) ) = L(R)L(S), R, S ER 5. L( (R+S) ) = L(R) L(S), R, S ER 6. L( (R) ) = L(R) , R ER Para calcular el signicado de una ER en particular, se aplica a ella la funcin L. Las o ecuaciones dadas arriba se aplican repetidamente, hasta que el s mbolo L desaparezca. Ejemplo.- El signicado de la ER (((a + b)) a) se calcula de la manera siguiente: L((((a + b)) a)) = L(((a + b)) )L(a) -usando 4, = L((a + b)) {a} -por 6 y 3, = (L(a) L(b)) {a} -aplicando 5, = ({a} {b}) {a} = {a, b} {a} -usando 3 y simplicando.

3.2. EXPRESIONES REGULARES Este es el lenguaje de las palabras sobre {a, b} que terminan en a.

83

Con objeto de hacer la notacin menos pesada, vamos a simplicar las ER de la manera o siguiente: Omitiremos las comillas . Se eliminan los parntesis innecesarios. Se supone una precedencia de operadores en el e orden siguiente: primero , luego y nalmente +. Adems se supone que los a operadores y + son asociativos. Eventualmente omitiremos el operador , suponiendo que ste se encuentra impl e cito entre dos subexpresiones contiguas. Ejemplos.- a, (a + b) , abc, ac son tomados como a, ((a + b)) , ((a b) c) y (a (c) ), respectivamente. Ejemplo.- Encontrar una expresin regular para el lenguaje en {a, b} en el que inmediao tamente antes de toda b aparece una a. Solucin.- Una posible ER es (a + ab) o Una solucin aceptable para este tipo de problemas debe cumplir dos caracter o sticas: 1. Correccin.- Las palabras que represente la ER propuesta deben satisfacer la descripo cin del problema (por ejemplo, para el problema del ejemplo, la solucin a (a + b) o o no es adecuada porque representa algunas palabras, como abb, que no satisfacen la condicin de que toda b est inmediatamente precedida por una a; o e 2. Completez.- La ER propuesta debe representar todas las palabras que satisfagan la condicin. As para el problema del ejemplo, la solucin (ab) no es adecuada porque o , o hay palabras tales como aab, pertenecientes al lenguaje, que no son representadas por dicha ER.

3.2.2.

Metodolog de dise o de las ER a n

Al tratar de encontrar una ER para un lenguaje dado, mientras ms complejo sea el a lenguaje es obvio que resulta ms dif encontrar por pura intuicin dicha ER. En estos casos a cil o puede ser conveniente trabajar en forma metdica. Una tcnica que funciona en muchos casos o e consiste en determinar primero la estructura de la ER, dejando unos huecos pendientes para resolverse luego. Estos huecos, que llamaremos contextos, son tambin lenguajes para e los que habr que encontrar una ER. a

84

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

Ejemplo.- Obtener una ER para el lenguaje en el alfabeto {a, b, c} en que las palabras contienen exactamente una vez dos b contiguas. Por ejemplo, las palabras aabb, babba, pertenecen al lenguaje, pero no aaba, abbba ni bbabb. Para resolver este problema, expresamos primero la estructura de la ER de la manera siguiente: < contexto1 > bb < contexto2 > Podemos ver que en esta expresin aparecen directamente las bb que deben estar en la ER, o rodeadas por otras dos ER, que son < contexto1 > y < contexto2 >. Ahora el problema es determinar qu ER corresponden a < contexto1 > y < contexto2 >, lo cual es un subproblema e del problema original. El lenguaje de < contexto1 > comprende a las palabras que no tienen bb y adems no a 4 terminan en b. Esto es equivalente a decir que toda b est seguida de una a o una c. Esto a quiere decir que la ER de este contexto va ser de la forma: (. . . b(a + c) . . .) donde los detalles que faltan estn representados por las . . .. Lo que falta por considerar a es que puede haber cualquier cantidad de as o cs en el < contexto1 >, por lo que dicho contexto queda como: (b(a + c) + a + c) Similarmente se puede obtener la expresin para < contexto2 >, que es (a + c + (a + c)b) , o por lo que nalmente la ER del problema es: (b(a + c) + a + c) bb(a + c + (a + c)b) Un importante elemento de metodolog -que se aplic en este ejemplo- consiste en transa o formar los enunciados de lenguajes de manera que sean ms fcilmente representables por a a ER. En particular, los enunciados negativos, del tipo . . . las palabras que no contengan bb son particularmente dif ciles, porque en las ER no hay ningn operador para representar u lo que no forma parte del lenguajes, sino que los operadores (como la unin o la estrella de o Kleene) tienden a aadir ms palabras. En consecuencia, es necesario convertir un enunciado n a sobre lo que no se permite en otro enunciado sobre lo que s se permite. Por ejemplo, si en un lenguaje las palabras no deben contener la cadena bb, qu es lo que s pueden contener? e Aqu podemos hacer un anlisis por casos, considerando que podemos tener una b sola, o a tambin una b seguida de una a. Como hay dos casos, podemos pensar en utilizar el operador e + para combinar esos casos, y as en adelante. Tambin puede ser util modicar la forma lgica en que se enuncian los lenguajes. Por e o ejemplo, el enunciado palabras que si empiezan en 00, terminan en 11, puede modicarse de la manera siguiente: palabras que ya sea no empiezan en 00 o bien terminan en 11, utilizando la conocida equivalencia de lgica P Q P Q. Lo que aqu se gana es que o
4

Pues si terminaran en b, esta ultima b se juntar a la bb de la mitad, violando la condicin del problema. a o

3.2. EXPRESIONES REGULARES

85

hacemos evidente la estructura de casos, que se puede resolver usando el operador + de las ER. Por supuesto, adems apareci en este enunciado una parte expresada negativamente, a o . . . no empiezan en 00, pero sta es fcil de transformar en un enunciado positivo, como e a por ejemplo . . . son la palabra vac o bien empiezan en 1, o bien empiezan en 01, el cual a, tambin se resuelve fcilmente por casos. e a Ejemplo.- Obtener una ER que represente el lenguaje en {a, b} tal que si una palabra contiene la subcadena aa, entonces no debe contener bb. Solucin: Transformando lgicamente el enunciado, representamos la condicin contiene o o o la subcadena aa por el s mbolo Caa , y la condicin no contiene bb por Cbb . Entonces la o condicin del problema es: o Caa Cbb Por las equivalencias lgicas vistas en la seccin 1.2, esta condicin es equivalente a: o o o Caa Cbb Es decir que las palabras no contienen aa o bien no contienen bb. Esto corresponde a la estructura: < sin aa > + < sin bb > Vamos a resolver la primera parte, siendo la otra enteramente similar. Para que las palabras no contengan aa, pueden contener cualquier secuencia con b, o bien secuencias en que toda a est separada de otra a por al menos una b. Como la cantidad de as es e cualquiera, necesariamente debemos hacer intervenir una estrella de Kleene, como en la estructura siguiente: . . . (b + . . . a . . .) . . . Una idea para precisar ms esta estructura ser pensar que antes y despus de la a debe a a e haber una b, como en la expresin (b + bab) . Aunque esta ER es correcta, no es completa, o pues hay palabras como ab que no son representadas por ella. Entonces pensaremos que despus de la a est la b que la separa de otras eventuales as. La estructura as se precisa: 5 e e . . . (b + ab) . . . Ahora bien, pensando en qu puede aparecer al inicio y al nal de una palabra, la sue bexpresin (b + ab) por s misma es ya capaz de representar palabras que comiencen ya o sea con a o con b, por lo que podemos omitir el contexto del lado izquierdo. En cambio,
Los contextos aqu fueron representados simplemente con . . .. El uso de puntos suspensivos o de nombres para representar un contexto es simplemente cuestin de conveniencia en cada caso. o
5

86

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

(b + ab) no es capaz de representar palabras terminadas en a, como ba. Habr que aadir a n esta posibilidad. Pero si hacemos que el contexto derecho sea a, vamos a excluir palabras tales como ab. Entonces el contexto derecho puede ser a o b, que se resuelve con la expresin o a + b, dando como resultado: (b + ab) (a + b) Pero an esta expresin presenta un problema, que es el no poder representar a la palabra u o vac Esto se puede resolver de dos maneras: la menos elegante, que es simplemente aadir a. n + a la ER, quedando como (b + ab) (a + b) + , o una solucin ms elegante que consiste o a en observar que la expresin (b + ab) ya representaba palabras terminadas en b, por lo que o en realidad el contexto derecho consistir en agregar una a o nada en absoluto, quedando a la ER como (b + ab) (a + ). Este es un resultado correcto y completo. Dejamos pendiente la solucin del contexto < sin bb >. o En la seccin de ejercicios de este cap o tulo se proponen muchos problemas de diseo n de ER. Es importante emprender estos ejercicios siguiendo los elementos de metodolog a que hemos presentado (adaptar expresiones conocidas, disear estructuras con contextos, n transformar los enunciados), y no dejndose llevar por la primera corazonada genial, que a generalmente nos lleva a expresiones errneas, principalmente por incompletez. o

3.2.3.

Equivalencias de Expresiones Regulares

Las expresiones regulares no representan en forma unica a un lenguaje -esto es, la funcin o L : ER 2 descrita arriba no es inyectiva. Esto quiere decir que puede haber varias ER para un mismo lenguaje, lo cual desde luego no es conveniente, pues al ver dos ER distintas no podemos an estar seguros de que representan dos lenguajes distintos. Por ejemplo, las u ER (a + b) y (a b ) representan el mismo lenguaje. Peor an, a diferencia de los AFD que vimos en el cap u tulo 2, no existen procedimientos algor tmicos para comparar directamente dos ER; la comparacin tiene que hacerse pasando o por una conversin a AFD que veremos ms adelante. o a Sin embargo, en algunos casos resulta util aplicar ecuaciones de equivalencia entre las ER, que son expresiones de la forma ER1 = ER2 , cuyo signicado es que el lenguaje de ER1 es el mismo que el de ER2 (contienen las mismas palabras). Por ejemplo, la equivalencia R + S = S + R quiere decir que la suma de expresiones regulares es conmutativa, por lo que si tenemos dos ER espec cas, como a y b ab, entonces la ER a +b ab ser equivalente a la ER b ab+a , y ambas representarn las mismas palabras. a a La equivalencia R + S = S + R puede ser muy obvia, pues se basa directamente en la conmutatividad de la unin de conjuntos, pero hay otras como (R S) = + (R + S) S que o son mucho menos intuitivas.

3.2. EXPRESIONES REGULARES

87

A continuacin damos una lista de las principales equivalencias de ER, clasicadas en 9 o grupos: 1. R + S = S + R, (R + S) + T = R + (S + T ), R + = + R = R, R + R = R 2. R = R = R, R = R = , (R S) T = R (S T ) 3. R (S + T ) = R S + R T , (S + T ) R = S R + T R 4. R = R R = (R ) = ( + R) , = = 5. R = + RR 6. (R + S) = (R + S ) = (R S ) = (R S) R = R (SR ) = R + S 7. R R = RR , R(SR) = (RS) R 8. (R S) = + (R + S) S, (RS ) = + R(R + S) 9. R = SR + T ssi R = S T , R = RS + T ssi R = T S La prueba de varias de estas equivalencias sigue un mismo esquema, que vamos a ejemplicar demostrando R(SR) = (RS) R (grupo 7). Esta equivalencia se puede probar en dos partes: R(SR) (RS) R y (RS) R R(SR) . 1a. parte.- Sea x R(SR) . Entonces x es de la forma x = r0 s1 r1 s2 r2 . . . sn rn . Pero esta misma palabra puede agruparse de otra manera: x = (r0 s1 )(r1 s2 ) . . . (rn1 sn )rn . Por lo tanto, x (RS) R. 2a. parte.- Se prueba similarmente. QED. Las equivalencias de estos 9 grupos pueden usarse para vericar que dos ER denotan el mismo lenguaje. La tcnica a usar para vericar que P = Q, donde P, Q ER, es formar e una serie de equivalencias P = R1 = R2 = . . . = Rn = Q, usando las equivalencias dadas arriba para hacer reemplazamientos. Ejemplo: Vericar que las ER (ab + a) a y a(ba + a) son equivalentes, usando las equivalencias presentadas arriba.

Solucin: o (ab + a) a = (a + ab) a -por (1); = (a ab) a a -por (6); = ([a a]b) [a a] -agrupamos trminos; e

88

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

Figura 3.1: Representaciones de lenguajes = [a a](b[a a]) -por (7); = aa (baa ) - aplicando (7) a los trminos entre corchetes; e = [a][a (baa ) ] -agrupando; = a(a + ba) - por (6); = a(ba + a) - por (1). El uso de estas equivalencias para vericar que dos ER denotan el mismo lenguaje en general no es muy prctico, pues en muchos casos es dif ver intuitivamente qu equivalencia a cil e conviene aplicar, adems de que hay el riesgo de que al aplicarla nos alejemos de la solucin a o en vez de acercarnos a ella. Para empeorar la situacin, no hay metodolog generales que o as nos ayuden a disear estas pruebas. Es por esto que normalmente probaremos la equivalencia n de dos ER usando el procedimiento de conversin a AFD que veremos en la seccin 3.4. o o

3.3.

L mites de las representaciones textuales

Nos podemos preguntar qu tantos lenguajes se pueden representar con las ER. En otras e secciones mostraremos que dichos lenguajes coinciden con los que pueden ser aceptados por algn autmata nito. Por lo pronto, en esta seccin vamos a establecer un l u o o mite que existe no slamente para las ER, sino para cualquier forma de representar lenguajes mediante texto. o En la gura 3.1 se ilustra el mapeo que pretendemos entre los lenguajes, que son elementos del conjunto 2 , y las cadenas de caracteres que los representan, que son elementos de . Desde luego, quisiramos que una cadena de caracteres no pudiera representar a ms de un e a lenguaje, pues de otro modo no sabr amos a cul de ellos representa. En cambio, es aceptable a que un lenguaje tenga varios representantes. Por ejemplo, el conjunto de todas las palabras formadas por as y bs, que es el conjunto innito {, a, b, ab, ba, aaa, aab, . . .}, puede ser representado mediante la cadena de caracteres {a, b}, que es una palabra formada por caracteres del alfabeto {a,b,{,},, , }. Como vemos en este ejemplo, una cadena de caracteres de 6 caracteres puede representar

3.4. EQUIVALENCIA DE EXPRESIONES REGULARES Y AUTOMATAS FINITOS 89 todo un lenguaje innito. En vista del xito obtenido, quisiramos tener, para cada lenguaje posible, ya sea nie e to o innito, un representante que fuera una de estas cadenas nitas de caracteres. Existe sin embargo un problema: para poder hacer lo anterior se necesitar que hubiera tantos a representantes (cadenas de caracteres) como lenguajes representados. Ahora bien, aunque parezca sorprendente, hay ms lenguajes posibles que cadenas de caracteres para represena tarlos! Esto se debe a que la cantidad de lenguajes posibles es incontable, mientras que las representaciones de dichos lenguajes son contables. Vamos a probar el siguiente Teorema.- El conjunto de los lenguajes en un alfabeto nito es incontable. Nos apoyaremos en el clebre teorema de Cantor, que establece que el conjunto potencia e de los nmeros naturales, 2N , es incontable. En efecto, observamos que el conjunto de todos u los lenguajes, que es 2 , tiene el mismo tamao que 2N , pues N y son del mismo tamao, n n que es lo mismo que decir que es contable, lo cual es sencillo de probar 6 As podemos concluir que, como 2N es incontable, 2 tambin lo es. QED. e Se sabe que los conjuntos incontables son propiamente ms grandes que los contables, a en el sentido de que un conjunto contable no puede ser puesto en correspondencia uno a uno con uno incontable, pero s con subconjuntos de ste. As resulta que la cantidad de e lenguajes a representar es mayor que la cantidad de cadenas de caracteres que pudieran ser representaciones de aquellos. La conclusin es que no todos los lenguajes pueden ser o representados en forma nita.

3.4.

Equivalencia de expresiones regulares y autmatas o nitos

An cuando por varios ejemplos hemos visto que lenguajes representados por expresiou nes regulares son aceptados por autmatas nitos, no hemos probado que para cualquier o expresin regular exista un autmata nito equivalente, y viceversa. Esto se establece en el o o siguiente Teorema de Kleene.- Un lenguaje es regular si y slo si es aceptado por algn autmata o u o nito. Vamos a presentar una prueba de esta armacin, no tanto por el inters matemtio e a co que tiene, sino porque nos brinda procedimientos estndar extremadamente utiles para a transformar una expresin regular en autmata nito y viceversa. o o
6

La prueba es uno de los ejercicios al nal de esta seccin. o

90

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES


a (ab)* b

q0

q1

Figura 3.2: Una grca de transicin a o

3.4.1.

Conversin de ER a AF o

La prueba de que si un lenguaje es regular entonces es aceptado por un AF consiste en dar un procedimiento para transformar en forma sistemtica una expresin regular en un a o autmata nito que acepte su lenguaje. Dicho procedimiento se describe a continuacin: o o La idea es hacer una transformacin gradual que vaya conviertiendo la ER en AF. o Para hacer la transformacin gradual de ER a AFN se requiere utilizar alguna represeno tacin de los lenguajes regulares que sea intermedia entre las ER y los AFN. o Una posible solucin es el uso de las grcas de transicin. Estas ultimas son esencialo a o mente AFN en que las etiquetas de las echas tienen expresiones regulares, en lugar de palabras. Las grcas de transicin (GT) son por lo tanto qu a o ntuplos (K, , , s, F ) en donde K ER K. En la gura 3.2 se ilustra un ejemplo de GT. En este ejemplo en particular es fcil ver a que debe aceptar palabras que tienen primero una sucesin de as, luego repeticiones de ab, o y nalmente repeticiones de bs. Esta GT se representar formalmente como el qu a ntuplo: ({q0 , q1 }, {a, b}, {(q0 , a, q0 ), (q0 , (ab) , q1 ), (q1 , b, q1 )}, q0 , {q1 }) Los AFN son un subconjunto propio de las GT, puesto que las palabras en las etiquetas de un AFN pueden ser vistas como expresiones regulares que se representan a s mismas. Ahora procederemos a describir el procedimiento de transformacin de ER a AFN. o A partir de una ER es trivial obtener una GT que acepte el mismo lenguaje. En efecto, sea R una ER; entonces, si G1 = ({q0 , q1 }, , {(q0 , R, q1 )}, q0 , {q1 }) entonces L(G) = L(R). Por ejemplo, la GT asociada a la ER (a + ba) bb se ilustra en la gura 3.3(a). Lo que falta por hacer es transformar gradualmente G1 en G2 , luego en G3 , etc., hasta llegar a un Gn tal que en las echas no haya ms que caracteres solos (o bien la palabra a

3.4. EQUIVALENCIA DE EXPRESIONES REGULARES Y AUTOMATAS FINITOS 91 Cuadro 3.1: Eliminacin de operadores para pasar de ER a AF o

Reemplazar

Por

vac En efecto, Gn AFN. Este es un proceso de eliminacin gradual de los operadores de a). o las ER. Para eliminar los operadores de las ER en Gi , aplicamos reemplazamientos de ciertas transiciones por otras, hasta que no sea posible aplicar ninguno de estos reemplazamientos. Las transformaciones elementales se ilustran en la Tabla 3.1. Ejemplo.- Dada la ER (a + ba) bb, obtener el AFN que acepta el lenguaje de dicha ER. Solucin: Aplicamos una sucesin de transformaciones, ilustradas en las guras 3.3(a)-(d). o o La equivalencia de G1 , G2 , . . . , Gn se asegura por el hecho de que cada una de las transformaciones preserva la equivalencia.

3.4.2.

Conversin de AF a ER o

La prueba de la parte si del teorema consiste en dar un procedimiento para transformar en forma sistemtica un autmata nito en una expresin regular equivalente. Un a o o procedimiento para hacerlo consiste en ir eliminando gradualmente nodos de una GT, que inicialmente es el AFN que se quiere transformar, hasta que unicamente queden un nodo inicial y un nodo nal. Dicho procedimiento comprende los siguientes pasos: 1. El primer paso en este procedimiento consiste en aadir al autmata nito un nuevo n o estado inicial i, mientras que el antiguo estado inicial q0 deja de ser inicial, y un nuevo estado nal f , mientras que los antiguos estados nales qi F dejan de ser nales; adems se aade una transicin vac del nuevo estado inicial al antiguo, (i, , q0 ), y a n o a

92

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

q0

(a+ba) bb
(a)

q1

q0

(a+ba) * k
(b)
a+ba

bb

q1

q0

bb

q1

(c)
a

q0

bb

q1

ba

(d)

Figura 3.3: Transformacin ERAF o

3.4. EQUIVALENCIA DE EXPRESIONES REGULARES Y AUTOMATAS FINITOS 93


* 1 ( 1 + ... +k ) p1

q1

pn

k
(a) Nodo a eliminar

(c) GT tras la eliminacin de nodos intermedios o

Figura 3.4: Eliminacin de nodos o

varias transiciones de los antiguos estados nales al nuevo: {(qi , , f )|qi F }. Esta transformacin tiene por objeto que haya un estado inicial al que no llegue ninguna o transicin, y un solo estado nal, del que no salga ninguna transicin. Esta condicin o o o 7 se requiere para llevar a cabo el siguiente paso. Desde luego, hay muchos autmatas o que ya cumplen estas condiciones sin necesidad de aadir un nuevo estado inicial o un n nuevo estado nal. 2. El segundo paso consiste en eliminar nodos intermedios en la GT. Se llama nodo intermedio a aquel que se encuentra en una trayectoria entre el estado inicial y el nal. El procedimiento de eliminacin de nodos intermedios es directo. La idea es que al suprio mir el nodo en cuestin, no se alteren las cadenas que hay que consumir para pasar de o uno a otro de los nodos vecinos. En otras palabras, al suprimir dicho nodo, se deben reemplazar las transiciones que antes tomaban ese nodo como punto intermedio para ir de un nodo vecino a otro, por otras transiciones que vayan del nodo vecino origen al nodo vecino destino, pero ahora sin pasar por el nodo eliminado. Para comprender cabalmente el procedimiento, hay que seguir el ejemplo dado ms adelante. En la gura a 3.4(a) se representa un nodo q intermedio que se quiere eliminar, y los nodos entre los que se encuentra. Este esquema se adapta a todos los casos que pueden presentarse. En dicha gura, i ,i , i son expresiones regulares. Para eliminar el nodo q, reemplazamos la parte de la GT descrita en la gura 3.4(a) por el subgrafo representado en la gura
7

Mas adelante se presenta un ejemplo de cada una de las operaciones involucradas en este procedimiento.

p1

q1

* 1 ( 1 + ... +k )

...

* n ( 1 + ... +k ) 1

qm

* n ( 1 + ... +k ) pn

qm

(b) GT sin el nodo eliminado

R1

R2 Rn

94

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES 3.4(b). Los nodos intermedios se pueden eliminar en cualquier orden.

3. Cuando despus de aplicar repetidamente el paso 2 ya no sea posible hacerlo, tendremos e una GT de la forma de la gura 3.4(c). Esta GT se puede transformar en otra con una sola transicin, fusionando todas las transiciones en una sola, con etiqueta R1 + R2 + o . . . + Rn . Esta etiqueta ser la ER buscada. a

Ejemplo.- Obtener una ER para el AFD de la gura siguiente:

Paso 1.- Aadir un nuevo estado inicial y uno nal n


Paso 2.- Eliminacin de nodos intermedios. Eliminamos primero el nodo q1 . Para ello, o consideramos qu trayectorias o rutas pasan por el nodo a eliminar. Por ejemplo, en la e gura de arriba vemos solamente una trayectoria que pasa por q1 , la cual va de q0 a f . Ahora nos proponemos eliminar el nodo q1 , pero sin modicar lo que se gasta para pasar de q0 a f . Es fcil ver que para pasar de q0 a f se gasta primero una a y luego algn nmero de a u u repeticiones de a o b (para llegar de q1 a f no se gasta nada). Esto corresponde a la ER a(a + b) , que ser la etiqueta de la nueva ruta directa de q0 a f , sin pasar, por q1 , como a se aprecia en la siguiente gura:

Paso 3.- Despus eliminamos el nodo q2 : e

3.5. GRAMATICAS REGULARES


a(a+b)*

95

q0 bb * bb *a

Paso 4.- Eliminamos q0 :


(bb *a) * a(a+b) *

(bb *a) *bb *

Paso 5.- Finalmente fusionamos las expresiones que estn en paralelo: a


* (bb *a) *a(a+b)* +(bb* a)* bb i f

Por lo que nalmente la ER buscada es (bb a) a(a + b) + (bb a) bb . La correccin de cada paso de transformacin se desprende del hecho de que tanto la o o eliminacin de nodos como la fusin de transiciones que se hace al nal, preservan ambos la o o igualdad del lenguaje aceptado. Con este resultado establecemos la completa equivalencia entre las ER y los autmatas o nitos (no deterministas). Al establecer la equivalencia de los AFN con las ER, automtia camente queda establecida la equivalencia entre las ER y los AFD. Este es un resultado de gran trascendencia tanto terica como prctica, pues por una parte muestra la importancia o a de la clase de los lenguajes regulares, y por otra ofrece un grupo de herramientas prcticas, a tales como la minimizacin de AFD, que pueden ser puestas al servicio de las ER. o

3.5.

Gramticas regulares a

En esta seccin veremos otra manera de representar los lenguajes regulares, adems de o a las Expresiones Regulares que ya vimos.

96

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

3.5.1.

Gramticas formales a

La representacin de los lenguajes regulares que aqu estudiaremos se fundamenta en la o nocin de gramtica formal. Intuitivamente, una gramtica es un conjunto de reglas para o a a formar correctamente las frases de un lenguaje; as tenemos la gramtica del espaol, del a n francs, etc. La formalizacin que presentaremos de la nocin de gramtica es debida a N. e o o a Chomsky [4], y est basada en las llamadas reglas gramaticales. a Una regla es una expresin de la forma , en donde tanto como son cadenas o de s mbolos en donde pueden aparecer tanto elementos del alfabeto como unos nuevos s mbolos, llamados variables. Los s mbolos que no son variables son constantes. 8 Por ejemplo, una posible regla gramatical es X aX. La aplicacin de una regla a una o palabra uv produce la palabra uv. En consecuencia, las reglas de una gramtica pueden a ser vistas como reglas de reemplazo. Por ejemplo, si tenemos una cadena de s mbolos bbXa, le podemos aplicar la regla X aX, dando como resultado la nueva cadena bbaXa.

3.5.2.

Gramticas regulares a

Nosotros nos vamos a interesar por el momento en las gramticas cuyas reglas son de la a forma A aB o bien A a, donde A y B son variables, y a es un caracter terminal. A estas gramticas se les llama regulares. a Ejemplo.- Sea una gramtica con las siguientes reglas: a 1. S aA 2. S bA 3. A aB 4. A bB 5. A a 6. B aA 7. B bA La idea para aplicar una gramtica es que se parte de una variable, llamada s a mbolo inicial, y se aplican repetidamente las reglas gramaticales, hasta que ya no haya variables en la palabra. En ese momento se dice que la palabra resultante es generada por la gramtica, a o en forma equivalente, que la palabra resultante es parte del lenguaje de esa gramtica. a
En la terminolog de los compiladores, se les llama terminales a los elementos de , y no terminales a a las variables.
8

3.5. GRAMATICAS REGULARES

97

Por ejemplo, en la gramtica que acabamos de presentar, si consideramos que las variables a son S (que ser el s a mbolo inicial), A y B, y las constantes a y b, partiendo de S podemos producir bA (por la segunda regla), luego de bA podemos pasar a ba (por la quinta regla). Como ba tiene slo constantes, podemos concluir que la palabra ba es parte del lenguaje o generado por la gramtica dada. De hecho el lenguaje generado por esta gramtica es el de a a 9 las palabras en {a, b} de longitud par terminadas en a. Formalizamos estas nociones con las siguientes deniciones: Denicin.- Una gramtica regular es un cudruplo (V, , R, S) en donde: o a a V es un alfabeto de variables, es un alfabeto de constantes, R, el conjunto de reglas, es un subconjunto nito de V (V ). S, el s mbolo inicial, es un elemento de V . Por ejemplo, la gramtica que presentamos arriba se representar formalmente como: a a ({S, A, B}, {a, b}, {(S, aA), (S, bA), (A, aB), (A, bB), (A, a), (B, aA), (B, bA)}, S) Usualmente las reglas no se escriben como pares ordenados (A, aB), como lo requerir la a denicin anterior, sino como A aB; esto es simplemente cuestin de facilidad de notacin. o o o La aplicacin de una gramtica se formaliza con las siguientes nociones: o a Una cadena uXv deriva en un paso una cadena uv, escrito como uXv uv, si hay una regla X R en la gramtica. a Una cadena w (esto es, formada exclusivamente por constantes) es derivable a partir de una gramtica G si existe una secuencia de pasos de derivacin S 1 2 . . . a o w. A una secuencia de pasos de derivacin le llamamos simplemente derivacin. o o Dicho de otra manera, una palabra w V es derivable a partir de G ssi S w, donde denota la cerradura reexiva y transitiva de . Denicin.- El lenguaje generado por una gramtica G, L(G), es igual al conjunto de las o a palabras derivables a partir de su s mbolo inicial. Esto es, L(G) = {w |S w}.
Ms adelante veremos cmo probar rigurosamente que una gramtica efectivamente corresponde a un a o a lenguaje dado.
9

98

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

Frecuentemente es fcil mostrar que una palabra dada w es derivable a partir del s a mbolo inicial S; por ejemplo, en la gramtica presentada arriba, se puede mostrar que S . . . a bababa (esto es, que la palabra bababa puede ser derivada a partir del s mbolo inicial S, por lo que bababa L(G). Dejamos este ejemplo como ejercicio (ver seccin de ejercicios). o Ejemplo.- Proponer una gramtica que genere el lenguaje de las palabras en {a, b} que a contienen la subcadena bb, como abb, ababba, etc. Vamos a utilizar las variables de una manera similar a como se utilizaban en los AF los estados, esto es, como memorias para recordar situaciones. As tendremos las siguientes variables: A, que recuerda que an no se produce ninguna b. u B, que recuerda que se produjo una b. C, que recuerda que ya se produjeron las dos bs. Ahora podemos proponer reglas, preguntndonos a qu situacin se llega al producir una a e o a o b. Por ejemplo, a partir de A, si se produce una a se debe llegar a la misma A, pero si llega una b se llegar a la variable B. Con estas ideas se proponen las siguientes reglas: a 1. A aA 2. A bB 3. B aA 4. B bC 5. C aC 6. C bC Finalmente, para terminar la produccin de una palabra hecha solamente de constantes o es necesaria al menos una regla que no produzca variables en su lado derecho. Tal regla no se encuentra an en la gramtica dada. Como las palabras correctas tienen bb, pensamos que u a una regla adicional podr ser C a y tambin C b. En efecto, con tales reglas podemos a e producir, por ejemplo, la palabra abba, mediante la derivacin siguiente: o A aA abB abbC abba Sin embargo, tambin podemos vericar que la palabra abb, que pertenece al lenguaje, e no puede producirse con las reglas dadas. Hace falta an otra regla, B b, con la que se u completa nuestra gramtica. a

3.5. GRAMATICAS REGULARES

99

Al disear gramticas regulares, podemos incurrir en los mismos errores que en los AF, n a es decir, que sean incorrectas (producen palabras que no deber an) o bien incompletas (no pueden generar palabras que pertenecen al lenguaje), o bien ambas cosas a la vez. No vamos a examinar mtodos particulares de diseo de gramticas regulares; en vez de e n a ello mejor vamos a examinar mtodos por los que es muy simple convertir las gramticas e a regulares a AF y viceversa.

3.5.3.

Autmatas nitos y gramticas regulares o a

De manera similar a como hicimos en la seccin anterior, aqu vamos a establecer la o equivalencia entre las gramticas regulares y los lenguajes regulares -y por ende los autmatas a o nitos. Este resultado es establecido por el siguiente Teorema.- La clase de los lenguajes generados por alguna gramtica regular es exactaa mente la de los lenguajes regulares. La prueba de este teorema consiste en proponer un procedimiento para, a partir de una gramtica dada, construir un autmata nito, y viceversa. a o Dicho procedimiento es directo, y consiste en asociar a los s mbolos no terminales de la gramtica (las variables) los estados de un autmata. As para cada regla A bC en la a o , gramtica tenemos una transicin (A, b, C) en el autmata. a o o Sin embargo, queda pendiente el caso de las reglas A b. Para estos casos, se tienen transiciones (A, b, Z), donde Z es un nuevo estado para el que no hay un no terminal asociado; Z es el unico estado nal del autmata. o Ejemplo.- Obtener un autmata nito para la gramtica regular G siguiente: o a

1. S aA 2. S bA 3. A aB 4. A bB 5. A a 6. B aA 7. B bA

100

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES


a S b a Z A a a b b B

Figura 3.5: Autmata obtenido de la gramtica o a


b a, b b q0 a q1 a q2 b a q3

Figura 3.6: AFD que acepta palabras que no contienen 3 as seguidas

Dicho autmata aparece en la gura 3.5. o Similarmente, es simple obtener, a partir de un AFD (K, , , s, F ), la gramtica regular a correspondiente. Para cada transicin de la forma ((p, ), q) , habr en la gramtica una o a a regla Xp Xq , donde Xi es la variable en la gramtica que corresponde al estado i del a AFD. Queda, sin embargo, pendiente cmo obtener las reglas de la forma Xp , que son o las que permiten terminar una derivacin. Nos damos cuenta de que la aplicacin de este o o tipo de reglas debe corresponder al consumo del ultimo caracter de una palabra aceptada en el AFD. Ahora bien, al terminar una palabra aceptada en un AFD, necesariamente nos encontraremos en un estado nal. De ah conclu mos que hay que incorporar a la gramtica, a por cada transicin ((p, ), q), donde q F , una regla adicional Xp , adems de la regla o a Xp Xq que se mencion anteriormente. o Ejemplo.- Para el AFD de la gura 3.6, la gramtica regular correspondiente contiene las a reglas: 1.- Q0 aQ1 2.- Q0 bQ0 3.- Q1 aQ2 4.- Q1 bQ0 5.- Q2 aQ3 6.- Q2 bQ0 7.- Q3 aQ3 8.- Q3 bQ3 9.- Q0 a 10.- Q0 b 11.- Q1 a 12.- Q1 b 13.- Q2 b

3.6. LIMITACIONES DE LOS LENGUAJES REGULARES

101

Ntese que en este ejemplo el AFD acepta la palabra vac mientras que la GR no es o a, capaz de generarla. De hecho ninguna GR puede generar . En estos casos nos tenemos que contentar con generar un lenguaje igual al aceptado por el AFD excepto por la palabra vaca.

3.6.

Limitaciones de los lenguajes regulares

Los AF estn limitados a los estados de que disponen como unico medio para recordar a la serie de s mbolos recibidos hasta un momento dado. Puesto de otra manera, debemos considerar que, en un AF, la unica traza de los s mbolos recibidos es el estado en que se encuentra. Por lo mismo, varias secuencias distintas de caracteres que llevan a un mismo estado son consideradas como indistinguibles. Por ejemplo, para el AFD de la gura 2.4, las secuencias de caracteres bab y bbbbb son indistinguibles, pues ambas llevan al estado q2 . Esta limitacin de los AF los hace nalmente incapaces de distinguir las palabras aceptables de o las no aceptables en ciertos lenguajes, ms complicados que los lenguajes regulares. a Por ejemplo, para el lenguaje {an bn } no es posible construir un autmata nito que lo o acepte, ni representarlo por una expresin regular o gramtica regular. En efecto, supongamos o a n n que un AFD est recorriendo una palabra a b , entonces al terminar el grupo de as el a autmata debe recordar cuntas encontr, para poder comparar con el nmero de bs. Ahora o a o u bien, como la cantidad de as que puede haber en la primera mitad de la palabra es arbitraria, dicha cantidad no puede recordarse con una cantidad de memoria ja, como es la de los autmatas nitos. o

3.6.1.

El teorema de bombeo

Formalmente, vamos a establecer un teorema que precisa cul es la limitacin de los a o autmatas nitos. o Teorema.- Si L es un lenguaje regular innito, entonces existen cadenas x, y, z tales que y = , y xy n z L, para algn n 0. (Teorema de bombeo). u Lo que este resultado establece es que, suponiendo que cierto lenguaje es regular, entonces forzosamente dicho lenguaje debe contener palabras en que una subcadena se repite cualquier nmero de veces. Es decir, hay palabras del lenguaje en que podemos insertar repetidamenu te (bombear) una subcadena (y en el teorema) sin que el autmata se d cuenta. Esta o e situacin permite hacer pruebas por contradiccin de que un lenguaje dado no es regular. o o Pero veamos en primer lugar la prueba del teorema de bombeo. Supongamos que L es un lenguaje regular. Entonces existe un autmata M que lo acepta. Sea m el nmero de estados o u de M . Ahora supongamos una palabra en L, w = 1 2 . . . n , i , donde n m. Como w debe ser aceptada, debe hacer un clculo de la forma: a

102

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

[[q1 , 1 2 . . . n ]]

[[q2 , 2 . . . n ]]

[[qn+1 , ]]

Como M tiene solamente m estados, y el clculo tiene longitud n + 1, por el principio de a correspondencia debe haber algunos estados que se repitan en el clculo, es decir, qi = qj , a para 0 i < j n + 1. Entonces podemos detallar ms el calculo anterior, el cual tiene la a forma:
M M M

[[q1 , 1 2 . . . i . . . n ]]

[[qi , i . . . n ]]

[[qj , j . . . n ]]

[[qn+1 , ]]

Como M regresa al mismo estado, la parte de la entrada que se consumi entre qi y qj , que o es i . . . j1 puede ser eliminada, y por lo tanto la palabra 1 . . . i1 j . . . n ser aceptada a de todas maneras, mediante el clculo siguiente: a
M M

[[q1 , 1 . . . i1 j . . . n ]]

[[qj , j . . . n ]]

[[qn+1 , ]]

De igual manera, la subcadena i . . . j1 puede ser insertada cualquier nmero de veces; u entonces el autmata aceptar las palabras de la forma: o a 1 2 . . . i1 (i . . . j1 )k j . . . n Entonces, haciendo x = 1 2 . . . i1 , y = i . . . j1 y z = j . . . n tenemos el teorema de bombeo. Esto termina la prueba. QED.

Ejemplo.- Como un ejemplo de la aplicacin de este teorema, probaremos que el lenguaje o {a b } no es regular. En efecto, supongamos que fuera regular. Entonces, por el teorema de bombeo, debe haber palabras de la forma xyz, a partir de una cierta longitud, en que la parte y puede repetirse cuantas veces sea. Existen 3 posibilidades:
n n

1. Que y no contenga caracteres distintos a a, es decir, y = aa . . . a. En este caso, al repetir varias veces y, habr ms as que bs y la palabra no tendr la forma deseada. Es a a a n n decir, suponiendo que {a b } es regular hemos llegado a la conclusin de que contiene o palabras con ms as que bs, lo cual es una contradiccin. a o 2. Que y no contenga caracteres distintos de b. Este caso es similar al caso (1). 3. Que y contenga as y bs, es decir, y = aa . . . abb . . . b. Pero en este caso, al repetirse y, las as y bs quedarn en desorden en la palabra, la cual no tendr la forma an bn . a a Tambin en este caso hay contradiccin. e o

3.7. EJERCICIOS

103

Por lo tanto el suponer que {an bn } es regular nos lleva a contradiccin. Se concluye que o n n {a b } no es regular. Es muy importante notar que para las pruebas por contradiccin usando el teorema de o bombeo hay que explorar exhaustivamente todas las posibles maneras de dividir la palabra w en xyz, y encontrar contradiccin en cada posible divisin. Con una sola divisin posible en o o o que no se encuentre una contradiccin, la prueba fracasa. Al fracasar la prueba, no se puede o concluir ni que el lenguaje es regular ni que no lo es; simplemente no se llega a ninguna conclusin. o Otros lenguajes que tampoco son regulares son : {ww}, que es el lenguaje cuyas palabras tienen dos mitades iguales, {wwR } , que es el lenguaje cuyas palabras tienen dos mitades simtricas 10 ; el lenguaje de las palabras pal e ndromas, que se leen igual al derecho y al revs, e como por ejemplo ANITALAVALATINA, 11 el lenguaje de los parntesis bien balanceados, e como ()(()), ()()(), ((())), etc.

3.7.

Ejercicios

1. Convertir la ER a ab + b(a + ) en notacin fcil a ER estricta. o a 2. Encontrar Expresiones Regulares que representen los siguientes lenguajes (se presentan en orden de dicultad creciente): a) Conjunto de palabras en {0, 1} terminadas en 00. b) Conjunto de palabras en {0, 1} que contengan tres ceros consecutivos, como 0001000, 000001, etc. c) El lenguaje {101, 1110}. d ) El lenguaje {w |w = an bak , n, k 0} e) Conjunto de palabras en {a, b} que no contienen dos b consecutivas, como ababab, aaaa, etc. f ) Conjunto de cadenas en {a, b} que no contienen ni aa ni bb. g) El lenguaje sobre {0, 1} en que las palabras no vac empiezan o terminan en as cero. h) El conjunto de las palabras en {a, b} tales que toda a est precedida por alguna a b, como por ejemplo , b, bba, babaa, etc. 12 i ) Conjunto de palabras en {0, 1} con a lo ms un par de ceros consecutivos y a lo a ms un par de unos consecutivos. a
10 11

wR es el reverso de w, es decir, (abaa)R = aaba Atencin! este lenguaje no es igual a {wwR } o 12 La b que precede a la a no necesita estar inmediatamente antes.

104

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES j ) El lenguaje sobre {a, b} en que todas las palabras son de longitud impar. k ) Conjunto de cadenas en {a, b} que contienen un nmero impar de b. u l ) El lenguaje en {0, 1} en que las palabras contienen ms de tres ceros. a m) El lenguaje en {0, 1} en que las palabras no contienen un cero exactamente (pero pueden contener dos, tres, etc.), como 1111, 1010, etc. n) Conjunto de palabras en {0, 1} tales que no hay ningn par de ceros consecutivos u 13 despus de un par de unos consecutivos, como 0000110, 0001000, etc. e n) {w {a, b, c} | |w| = 3} o) El lenguaje en {0, 1} en que las palabras contienen un nmero de ceros distinto u de 3, por ejemplo 010, 1111, 00100, etc. p) {w {a, b, c} | w = abc}, donde y representan cualquier cadena de caracteres (esto es, las palabras en este lenguaje no deben contener la subcadena abc). q) Lenguaje en {a, b} tal que |w| es par, y adems la cantidad de as que aparecen a en w es par. r ) El lenguaje sobre {a, b} en que las palabras contienen la subcadena baaab o bien la subcadena abbba. s) El lenguaje sobre {a, b} en que las palabras pueden contener pares de as consecutivas, pero no grupos de 3 as consecutivas; por ejemplo, baabaab, pero no baaaab. t) El lenguaje en {a, b} en que toda b tiene a su izquierda y a su derecha una a (no necesariamente junto), y adems el nmero de b es impar. a u u) Lenguaje de las palabras en {a, b} que no contienen la subcadena abaab.

3. Demostrar la siguiente equivalencia por identidades de Expresiones Regulares: (ab ) a = a + a(a + b) a 4. Vericar si los siguientes pares de ER son equivalentes, usando equivalencias o bien encontrando un contraejemplo: a) a + b y (a + b) b) a y (aa ) a 5. Probar que a + b no es equivalente a (a + b) 6. Convertir la ER (a + ab) aba(a + ba) a AFN. 7. Convertir a ER el AFD siguiente: ({1, 2, 3}, {a, b}, {((1, a), 1), ((1, b), 2), ((2, a), 3), ((2, b), 1), ((3, a), 2), ((3, b), 3)}, 1, {1, 3}).
13

En cualquier posicin a la derecha o

3.7. EJERCICIOS

105

8. Demostrar la siguiente equivalencia (ab ) a = a+a(a+b) a por equivalencia de autmao tas (Primero hay que convertir las ER a AFN, luego estos a AFD, los cuales pueden ser comparados). 9. Encuentre una Expresin Regular que represente las palabras en {a, b} que no cono tienen ni la subcadena aaa ni bab y que son de longitud impar, por el mtodo e siguiente: a) Encontrar un AF que acepte las palabras que contienen aaa b) Encontrar un AF que acepte las palabras que contienen bab c) Encontrar un AF que acepte las palabras de longitud par d ) Combinar los AF de (a),(b) y (c) en un AF que acepta las palabras que contienen aaa o bab o son de longitud par e) Obtener un AF que acepte el complemento de lo que acepta (d) f ) Convertir el AF de (e) a ER 10. Para la gramtica de la pgina 96, mostrar una derivacin de la palabra bababa. a a o 11. Comprobar si la ER (a + )(ba) (b + ) es equivalente a la GR cuyas reglas son: A bB, B aA, A a, B b, convirtiendo ambas a AFN, luego a AFD, y comparando. 12. Vericar si es vac la interseccin del lenguaje representado por la ER ( + b)(a + ab) , a o con el lenguaje representado por la GR cuyas reglas son: S aS, S bT, T aS, T bU, U aU, U bU, U a, U b, utilizando el mtodo siguiente: Prie mero se convierten a AFD tanto la ER como la GR. Luego se calcula su interseccin, o utilizando el mtodo expuesto en el cap e tulo precedente. Finalmente, el resultado del paso anterior, que es un AFD, se compara con el AFD ({q0 }, {a, b}, {((q0 , a), q0 ), ((q0 , b), q0 )}, q0 , {}), que acepta el lenguaje vac o. 13. Probar las equivalencias: a) R = R = , para una ER R b) = 14. Demostrar que para todo alfabeto , es contable. (Ayuda: Tratar de ordenar las cadenas de de menor a mayor). 15. Suponer que aadimos a las ER un operador, que signica que R1 R2 representa n las palabras representadas por R1 pero no por R2 . Curiosamente, el operador no aumenta el poder de las ER, en el sentido de que para toda ER con operador hay una ER equivalente sin . a) Denir formalmente el signicado del operador , usando el mapeo L(ER) como se hizo con los dems operadores de las ER. a

106

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES b) Usando este operador, proponer una ER para el lenguaje en {a, b} donde las palabras no contienen la subcadena abaab ni la subcadena bbbab.

16. Suponer que aadimos a las ER un operador de interseccin, & que signica que n o R1 &R2 representa las palabras representadas simultneamente por R1 y por R2 . El a operador & tampoco aumenta el poder de las ER. a) Denir formalmente el signicado del operador &, usando el mapeo L(ER) como se hizo con los dems operadores de las ER. a b) Usando este operador, proponer una ER para el lenguaje en {a, b} donde las palabras contienen la subcadena abaab y un nmero impar de bs. u 17. Proponer una denicin formal de conguracin, clculo y palabra aceptada para las o o a GT. 18. Describir formalmente la construccin del autmata (K, , , s, F ) a partir de la o o gramtica regular (V, , R, S). a 19. Hacer la prueba de correccin de la gramtica de la pgina 100. Esto proveer una o a a a prueba de correccin del AFD de la gura 3.6. o 20. Usando el teorema de bombeo pruebe que los lenguajes siguientes no son regulares a) {an bm | m > n} (Ayuda: En algn momento se puede necesitar considerar las u palabras de la forma an bn+1 ). b) {an bn+m cm }. c) {an bm | |n m| 3} d ) {a, b} {an bn } 21. Pruebe que los siguientes lenguajes son / no son regulares: a) A = {w {a, b} | |w| 7} b) {an bn } A c) {w = an bn } (Ayuda: use los mtodos para combinar AFNs) e d ) {an bn | n 7} 22. Sean dos lenguajes, LA y LB tales que LA es subconjunto de LB . a) Si LA es regular, tambin lo ser necesariamente LB ? (Probar) e a b) Si LB es regular, tambin lo ser necesariamente LA ? (Probar) e a 23. Sean dos lenguajes no regulares, LA y LB . a) Su unin podr eventualmente ser regular? (Ayuda: considere dos lenguajes o a complementarios).

3.7. EJERCICIOS

107

b) Su interseccin podr eventualmente ser regular? (Ayuda: considere interseccioo a nes nitas). 24. Supngase un tipo de gramticas que llamaremos semirregulares, por asemejarse a o a las gramticas regulares, en que las reglas son de alguna de las siguientes formas: a a) A B b) A B c) A donde es un terminal, y A y B son no terminales. Sern equivalentes a las gramticas a a regulares? Pruebe su respuesta. 25. Suponga las Expresiones Regulares con Salida (ERS), que son como las ER, pero tienen asociada una salida a la entrada que representan. Se tiene la siguiente sintaxis: ER/S signica que cuando se recibe una palabra representada por ER, se produce una salida S. Las subexpresiones de una ERS se consideran similarmente. Por ejemplo, en la ERS (a/1 + b/0) /00, por cada a que se recibe se saca un 1; por cada b, un 0, y al terminarse la cadena de entrada se produce un 00. El operador / tiene la precedencia ms alta, o sea que la ERS ab/0 signica que el 0 est asociado a a a la b; puede ser necesario usar parentesis para establecer la precedencia deseada. En general hay que distinguir entre el alfabeto de entrada ({a, b} en el ejemplo) y el de salida ({0, 1} en el ejemplo). a) Dena una ERS que al recibir cada par de aa consecutivas emita un 0, mientras que al recibir un par de bb consecutivas emita un 1. (aaa contiene slo o un par). b) Dena formalmente el conjunto de las ERS (Las ERS que se denir son las an ERS formales, con todos los parentesis y operadores necesarios, sin tomar en cuenta cuestiones de precedencia de operadores, simplicaciones, etc.). c) Proponga un procedimiento general para pasar de ERS a autmatas de Mealy. o d ) Muestre su funcionamiento con la ERS del inciso (a).

108

CAP ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES

Parte II Lenguajes libres de contexto y sus mquinas a

109

Cap tulo 4 Gramticas y lenguajes libres de a contexto


Los Lenguajes Libres de Contexto (abreviado LLC) forman una clase de lenguajes ms a amplia que los Lenguajes Regulares, de acuerdo con la Jerarqu de Chomsky (ver seccin a o 1.5). Estos lenguajes son importantes tanto desde el punto de vista terico, por relacionar o las llamadas Gramticas Libres de Contexto con los Autmatas de Pila, como desde el punto a o de vista prctico, ya que casi todos los lenguajes de programacin estn basados en los LLC. a o a En efecto, a partir de los aos 70s, con lenguajes como Pascal, se hizo comn la prctica n u a de formalizar la sintaxis de los lenguajes de programacin usando herramientas basadas en o las Gramticas Libres de Contexto, que representan a los LLC. Por otra parte, el anlisis a a automtico de los LLC es computacionalmente mucho ms eciente que el de otras clases de a a lenguajes ms generales. a Retomaremos aqu las nociones relacionadas con las gramticas, que fueron introducidas a en la seccin 3.5, pero haciendo las adaptaciones necesarias para los LLC. o Una regla es una expresin de la forma , en donde tanto como son cadenas o de s mbolos en donde pueden aparecer tanto elementos del alfabeto (llamados constantes) como unos nuevos s mbolos, llamados variables. 1 Una gramtica es bsicamente un conjunto de reglas. a a
2

Consideremos, por ejemplo, la siguiente gramtica para producir un pequeo subconjunto a n del idioma espaol: n

1. < frase > < sujeto > < predicado >


Tratndose de los compiladores, se les llama terminales a los elementos de , y no terminales a las a variables. 2 Adelante precisaremos las deniciones.
1

111

112

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

2. < sujeto > < articulo > < sustantivo > 3. < articulo > el | la 4. < sustantivo > perro | luna 5. < predicado > < verbo > 6. < verbo > brilla | corre donde el s mbolo | separa varias alternativas. 3 En esta gramtica se supone que las a variables son < frase >, < sujeto >, < articulo >, < sustantivo >, < predicado > y < verbo >, mientras que las constantes son el , la, perro y luna. La variable < frase > ser considerada a el s mbolo inicial. Como vimos en la seccin 3.5, la idea para aplicar una gramtica es que se parte de una o a variable, llamada smbolo inicial, y se aplican repetidamente las reglas gramaticales, hasta que ya no haya variables en la palabra. En ese momento se dice que la palabra resultante es generada por la gramtica, o en forma equivalente, que la palabra resultante es parte del a lenguaje de esa gramtica. a Por ejemplo, podemos usar la gramtica que acabamos de presentar, para generar la frase a el perro corre. En efecto, partiendo del s mbolo inicial < frase >, aplicando la primera regla podemos obtener < sujeto > < predicado >. Luego, reemplazando < sujeto > por medio de la segunda regla, obtenemos < articulo > < sustantivo > < predicado >; aplicando la tercera regla, llegamos a el < sustantivo > < predicado >. Por la cuarta regla se llega a el perro < predicado >; por la quinta a el perro < verbo >, y nalmente, por la sexta, llegamos a el perro corre. Desde luego, usando esta misma gramtica podemos producir frases que tienen menos a sentido, como la perro brilla. Para asegurar la coherencia en el uso de art culos, sustantivos y verbos se requerir una gramtica ms sosticada, y an as ser posible producir frases a a a u a sin sentido. 4

4.1.

Gramticas y la jerarqu de Chomsky a a

Es posible restringir la forma de las reglas gramaticales de manera que se acomoden a patrones predeterminados. Por ejemplo, se puede imponer que el lado izquierdo de las reglas sea una variable, en vez de una cadena arbitraria de s mbolos. Al restringir las reglas de la gramtica se restringen tambin las palabras que se pueden generar; no es extrao a e n
La notacin | es en realidad una abreviatura; una regla X | es equivalente a las dos reglas X o y X . 4 Muchos pol ticos son versados en estas artes. . .
3

4.2. LENGUAJES Y GRAMATICAS LIBRES DE CONTEXTO (LLC Y GLC)

113

que las reglas de formas ms restringidas generan los lenguajes ms reducidos. N. Chomsky a a propuso [4] varias formas estndares de reglas que se asocian a varias clases de lenguajes, que a orden de manera tal que forman una jerarqu es decir, los lenguajes ms primitivos estn o a, a a incluidos en los ms complejos. 5 As tenemos las siguientes clases de gramticas, asociadas a a a familias de lenguajes: 1. Gramticas regulares, o de tipo 3: las reglas son de la forma A aB o bien A a, a donde A y B son variables y a es constante. 6 Estas gramticas son capaces de describir a los lenguajes regulares. 2. Gramticas Libres de Contexto (GLC), o de tipo 2: las reglas son de la forma X , a donde X es una variable y es una cadena que puede contener variables y constantes. Estas gramticas producen los lenguajes Libres de Contexto (abreviado LLC). a 3. Gramticas sensitivas al contexto o de tipo 1: las reglas son de la forma A , a donde A es una variable y , y son cadenas cualesquiera que pueden contener variables y constantes. 4. Gramticas no restringidas, o de tipo 0, con reglas de la forma , donde no a puede ser vac que generan los lenguajes llamados recursivamente enumerables. 7 o, Los lenguajes de tipo 0 incluyen a los de tipo 1, estos a los de tipo 2, etc. En la gura 1.3 ya se hab presentado la relacin entre los lenguajes de tipo 0, 2 y 3. a o

4.2.

Lenguajes y gramticas libres de contexto (LLC y a GLC)

Podemos ver que la gramtica del espaol dada arriba es una GLC, pero no podr ser a n a una gramtica regular, pues hay varias reglas que no corresponden al formato de las reglas a de las gramticas regulares. Se ve por lo tanto que el formato de las reglas es menos r a gido en las GLC que en las gramticas regulares, y as toda gramtica regular es GLC pero no a a viceversa. Por ejemplo, el lenguaje {an bn } que no es regular, como vimos en la seccin 3.6 tiene o la gramtica libre de contexto con las siguientes reglas: a 1. S aSb 2. S ab
5 6

La jerarqu de Chomsky fue presentada inicialmente en la seccin 1.5. a o Estas gramticas ya fueron discutidas en el cap a tulo 3.5. 7 Las dos ultimas clases de lenguajes sern discutidas en el cap a tulo 6.

114

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

Como vimos en el caso de las gramticas regulares, aplicar una regla X de una a gramtica consiste en reemplazar X por en una palabra. Por ejemplo, la regla S aSb a se puede aplicar a una palabra aaSbb para obtener la palabra aaaSbbb, en donde es fcil ver a que reemplazamos S por aSb. Al proceso de aplicar una regla se le conoce como paso de derivacin, y se denota o usando una echa gruesa , como en aaSbb aaaSbbb (aplicando una regla S aSb). Una secuencia de pasos de derivacin a partir de una variable especial de la gramtica o a llamada s mbolo inicial se llama simplemente derivacin. Por ejemplo, una derivacin de o o la palabra aaabbb utilizando la gramtica de {an bn } ser (suponiendo que S es el s a a mbolo inicial):

S aSb aaSbb aaabbb

Como un ejemplo adicional, la gramtica con las reglas siguientes permite generar exprea siones aritmticas con sumas y multiplicaciones de enteros: e

1. E E + T 2. E T 3. T T F 4. T F 5. F CF 6. F C 7. C 0|1|2|3|4|5|6|7|8|9

El s mbolo inicial aqu es E, las constantes son +, y las cifras 0 . . . 9; E, T, F, C son variables. Con esta gramtica podemos generar, por ejemplo, la expresin 25 + 3 12 de la manera a o siguiente:

4.3. FORMALIZACION DE LAS GLC EXPRESION E E+T T +T F +T CF + T 2F + T 2C + T 25 + T 25 + T F 25 + F F 25 + C F 25 + 3 F 25 + 3 CF 25 + 3 1F 25 + 3 1C 25 + 3 12 JUSTIFICACION S mbolo inicial, inicia derivacin o Aplicacin 1a. regla o 2a. regla, sobre la E 4a. regla, sobre la T izquierda 5a. regla, sobre F 7a. regla 6a. regla 7a. regla 3a. regla 4a. regla 6a. regla, sobre la F izquierda 7a. regla 5a. regla 7a. regla 6a. regla 7a. regla

115

Ms adelante veremos una herramienta, los rboles de derivacin, que permiten ena a o contrar ms fcilmente y visualizar mejor la derivacin de las palabras a partir del s a a o mbolo inicial, aunque su formalizacin es menos directa que la simple derivacin paso a paso que o o hemos mostrado.

4.3.

Formalizacin de las GLC o

Denicin.- Una gramtica libre de contexto es un cudruplo (V, , R, S) en donde: o a a V es un alfabeto de variables, tambin llamadas no-terminales. e es un alfabeto de constantes, tambin llamadas terminales. Suponemos que V y e son disjuntos, esto es, V = . R, el conjunto de reglas, es un subconjunto nito de V (V ) . S, el smbolo inicial, es un elemento de V . Ejemplo.- La gramtica de {an bn } que presentamos antes se representa formalmente como: a ({S}, {a, b}, {(S, aSb), (S, ab)}, S) Usualmente las reglas no se escriben como pares ordenados (X, ), sino como X ; esto es simplemente cuestin de notacin. o o

116

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

Denicin.- Una cadena (V ) es derivable a partir de una gramtica (V, , R, S) o a si hay al menos una secuencia de pasos de derivacin que la produce a partir del s o mbolo inicial S, esto es: S ... Denicin.- El lenguaje L(G) generado por una gramtica (V, , R, S) es el conjunto de o a palabras hechas exclusivamente de constantes, que son derivables a partir del s mbolo inicial: L = {w |S . . . w} Es posible formalizar la denicin de lenguaje aceptado sin tener que recurrir a los puntos o suspensivos . . . , que son un recurso poco elegante en la formalizacin matemtica desde el o a punto de vista de que recurren a la imaginacin del lector para reemplazarlos por la sucesin o o que se representa. A continuacin damos esta formalizacin alternativa. o o Las reglas permiten establecer una relacin entre cadenas en (V |Sigma) , que es la o relacin de derivacin, G para una gramtica G. Esta relacin se dene de la siguiente o o a o manera: Denicin.- G ssi existen cadenas x, y (V ) , tales que = xuy, = xvy, y o existe una regla u v en R. La cerradura reexiva y transitiva de G se denota por . Una palabra w es G derivable a partir de G si existe una secuencia de derivacin S w. o G Denicin.- El lenguaje generado por una gramtica G, esto es, L(G), es igual a {w o a | S G w}.

4.4.

Dise o de GLC n

El problema del diseo de GLC consiste en proponer, dado un lenguaje L, una GLC n G tal que su lenguaje generado es exactamente L. Decimos que una GLC G es correcta con respecto al lenguaje dado L cuando el lenguaje generado por G no contiene palabras que estn fuera de L, es decir, L(G) L, donde L(G) denota el lenguaje generado por e G. Similarmente, decimos que G es completa cuando G es capaz de generar al menos las palabras de L, es decir, L L(G) Al disear gramticas, es posible cometer las mismas dos n a clases de errores que hemos mencionado para el diseo de expresiones regulares y autmatas n o nitos: 1. Que sobren palabras, esto es, que la gramtica genere algunas palabras que no deber a a

4.4. DISENO DE GLC generar. En este caso, la gramtica ser incorrecta. a a

117

2. Que falten palabras, esto es, que haya palabras en el lenguaje considerado para las que no hay ninguna derivacin. En este caso, la gramtica ser incompleta. o a a An cuando no hay mtodos tan sistemticos para disear las GLC como los que viu e a n mos para disear Expresiones Regulares o Autmatas Finitos, es posible al menos reutilizar n o gramticas conocidas, y ya sea modicarlas para ajustar el lenguaje generado, o combinar vaa rias en una sola. Este ultimo es un mtodo particularmente ecaz, en el que profundizaremos e en esta seccin. o

4.4.1.

Adaptacin de GLC o

Muchas veces es posible hacer modicaciones sencillas a una gramtica conocida para oba tener la del lenguaje requerido. Por ejemplo, supngase que queremos obtener una gramtica o a que genere el lenguaje {an bm |n > m}. Una buena idea ser partir de la gramtica que hea a mos visto anteriormente, para el lenguaje similar {an bn }, cuya gramtica tiene las siguientes a reglas: 1. S aSb 2. S ab Observamos que es necesario prever alguna regla para producir cualquier cantidad de as antes de las bs, pues hay palabras como aaaab que necesitan ser generadas. Para esto proponemos una regla S aS. Aplicando iteradamente esta regla podemos producir palabras como la mencionada: S aS aaS aaaS aaaab Sin embargo, an aadiendo esta regla subsiste el problema de que podr u n amos generar palabras incorrectas, pues cualquier palabra con igual cantidad de as y de bs se genera utilizando unicamente las reglas de la gramtica para {an bn }. a Hay al menos dos maneras de solucionar este problema: 1. Podemos pensar en que la a que asegura que haya ms as que bs se produzca al inicio a de la derivacin, mediante la inclusin de un nuevo s o o mbolo inicial, sea S0 , que produce aS, mediante una regla S0 aS. Por ejemplo, generar amos aaaab del modo siguiente: S0 aS aaS aaaS aaaab

118

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

2. Otra manera es producir la a que garantiza ms as que bs al nal de la derivacin, a o reemplazando la regla S ab por S a. La misma palabra se derivar como: a S aS aaS aaaSb aaaab

4.4.2.

GLC para unin de lenguajes o

Muchos lenguajes pueden ser expresados en forma util como la unin de otros dos len o guajes, para los cuales conocemos las gramticas que los generan. Por ejemplo, el lenguaje a {an bm |n = m} se puede expresar como la unin de los lenguajes: o {an bm |n = m} = {an bm |n < m} {an bm |n > m} Para cada uno de los lenguajes que se unen es fcil obtener una gramtica de hecho ya a a hemos diseado aqu gramticas para lenguajes como stos. n a e La manera de combinar dos gramticas con s a mbolos iniciales S1 y S2 respectivamente, para producir la unin de los lenguajes originales, consiste en crear un nuevo s o mbolo inicial S (S1 y S2 dejan de ser iniciales), tomar las reglas tanto de una gramtica como de otra, a y aadir dos nuevas reglas, S S1 y S S2 , para que el nuevo s n mbolo inicial sea capaz de generar cualquiera de los dos antiguos s mbolos iniciales; a partir del primer paso, se contina la derivacin utilizando alguna de las dos gramticas originales, sin utilizar las u o a reglas de la otra. Para garantizar esto ultimo se supone que las dos gramticas originales no a tienen ninguna variable en comn. u Denimos formalmente la gramtica que genera la unin de lenguajes de la manera a o siguiente: Sean G1 = (V1 , 1 , R1 , S1 ) y G2 = (V2 , 2 , R2 , S2 ) dos GLC; se puede suponer, sin prdida de generalidad, que las variables de G1 y G2 son disjuntas. La GLC que genera e L(G1 ) L(G2 ) es

G = (V1 V2 {S}, 1 2 , R1 R2 {S S1 , S S2 }, S) . En efecto, para una palabra w L(G1 ) la derivacin comienza aplicando S S1 , y o 8 despus se contina con la derivacin a partir de S1 Similarmente se hace para una palabra e u o w L(G2 ). Por ejemplo, para el lenguaje {an bm |n = m} = {an bm |n < m} {an bm |n > m}, las gramticas originales tendr reglas: a an
8

recurdese que por hiptesis w L(G1 ). e o

4.4. DISENO DE GLC {an bm |n > m} 1) S1 aS1 b 2) S1 aS1 3) S1 a {an bm |n < m} 4) S2 aS2 b 5) S2 S2 b 6) S2 b

119

La gramtica combinada tendr las reglas 1-6, mas las reglas S S1 y S S2 . El a a s mbolo inicial es S. As por ejemplo, para derivar la palabra aaaab seguimos los pasos: ,

S S1 aS1 aaS1 aaaS1 aaaaS1 aaaab

4.4.3.

Mezcla de gramticas a

En ocasiones es necesario combinar dos gramticas, de una manera similar a la unin que a o acabamos de presentar, pero permitiendo que las gramticas a combinar tengan un mismo a s mbolo inicial. Llamamos a esto mezcla de gramticas. a Ejemplo.- Disear una GLC para el lenguaje {an bm , n m 2n}, esto es, donde la n cantidad de bs est entre la cantidad de as y el doble de sta, como en las palabras aabbb, a e aabb y aabbbb. Una solucin es mezclar una GLC para el lenguaje {an bn con otra para el o lenguaje {an b2n , cuyas GLC son respectivamente:

{an bn } 1) S aSb 2) S

{an b2n } 3) S aSbb 4) S

La GLC mezclada contendr simplemente la unin de todas las reglas de las dos a o 9 gramticas. As por ejemplo, para generar la palabra aabbb, se tendr la siguiente derivaa , a cin: o

S 1 aSb 3 aaSbbb 2 aabbb En esta derivacin puede apreciarse que es posible obtener una palabra intermedia o entre aabb y aabbbb, como es aabbb simplemente aplicando algunas veces la regla 1, y otras la regla 3, segn se requiera para la palabra que hay que derivar. u
Desde luego, siendo las reglas 2 y 4 idnticas, resultan en una sla regla al unir las gramticas, pues en e o a los conjuntos no hay repeticin. o
9

120

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

4.4.4.

GLC para la concatenacin de lenguajes o

En ocasiones un lenguaje L puede ser expresado como la concatenacin de otros dos L1 o n m y L2 , esto es, L = L1 L2 . Por ejemplo, el lenguaje {a b |n > m} puede ser expresado como la concatenacin de ak con {an bn }, y desde luego es fcil encontrar una gramtica para ak , o a a n n 10 mientras que la de {a b } ya la conoc amos. Ahora bien, hay una manera de combinar modularmente las gramticas de L1 y L2 para obtener la de L. a En efecto, para obtener las reglas de la nueva gramtica, simplemente juntamos las reglas a de las originales las cuales tienen s mbolos iniciales S1 y S2 y agregamos una nueva regla S S1 S2 , haciendo adems a S el nuevo s a mbolo inicial. Ejemplo.- Denimos el lenguaje de los prejos pal ndromos como aquel formado por palabras que tienen una parte izquierda de ms de un caracter que es pal a ndromo (se lee igual de izquierda a derecha que de derecha a izquierda). Por ejemplo, las palabras aabab, aba y aabaa 11 son prejos pal ndromos, mientras que las palabras baa, a y abbb no lo son. Proponer una GLC que genere exactamente el lenguaje de los prejos pal ndromos en el alfabeto {a, b}. El problema parece dif pero podemos considerar cada palabra de este lenguaje como cil, formada por dos partes: la parte pal ndroma y el resto de la palabra. Dicho de otra forma, el lenguaje LP P de los prejos pal ndromos es igual a la concatenacin de LP y LR , donde LP o es el lenguaje de los pal ndromos y LR genera la parte restante de las palabras. El lenguaje de los pal ndromos en {a, b} tiene una gramtica muy simple, con las siguientes reglas: a 1. S aSa 2. S bSb 3. S a (pal ndromos impares) 4. S b (pal ndromos impares) 5. S (pal ndromos pares) Por ejemplo, la palabra aabaa se puede derivar de la siguiente manera: S 1 aSa 1 aaSaa 4 aabaa Por otra parte, como la parte restante que viene despus de la parte pal e ndroma puede ser cualquier cosa, est claro que LR es simplemente {a, b} , que por ser regular es LLC, a
Ya hab amos obtenido la gramtica de {an bm |n > m} por modicacin de otra gramtica, pero el mtodo a o a e aqu mostrado tiene la ventaja de que es modular. 11 Esta ultima puede ser vista de dos maneras distintas como prejo pal ndromo.
10

4.5. ARBOLES DE DERIVACION


S S S ( S ) S S ( )

121

( )

( )

Figura 4.1: Parntesis bien balanceados e y que tiene una GLC con las reglas: T aT , T bT , T . La GLC de LP P es la combinacin de ambas gramticas, de acuerdo con la frmula de concatenacin dada ms o a o o a arriba. Formalmente, si tenemos las gramticas G1 = (V1 , 1 , R1 , S1 ) y G2 = (V2 , 2 , R2 , S2 ), el a lenguaje L(G1 )L(G2 ) es generado por la siguiente GLC: G = (V1 V2 {S}, 1 2 , R1 R2 {S S1 S2 }, S) .

4.5.

Arboles de derivacin o

Las GLC tienen la propiedad de que las derivaciones pueden ser representadas en forma arborescente. Por ejemplo, considrese la gramtica siguiente para producir el lenguaje de e a los parntesis bien balanceados, que tiene palabras como (()), ()(), (()())(), pero no a (() ni e )(: 12 1. S SS 2. S (S) 3. S () Usando esta gramtica, la palabra (()())() puede ser derivada de la manera que se ilustra a en la gura 4.1. En dicha gura se puede apreciar la estructura que se encuentra impl cita en
Esta gramtica puede ser diseada adaptando la de {an bn }, reemplazando a por ( y b por ), y agregando a n la primera regla, que toma en cuenta la posibilidad de tener varios grupos de parntesis anidados. e
12

122

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

la palabra (()())(). A estas estructuras se les llama rboles de derivacin, o tambin rboles a o e a de compilacin por usarse extensivamente en los compiladores y son de vital importancia o para la teor de los compiladores de los lenguajes de programacin. a o Se puede considerar que un rbol de derivacin es ms abstracto que una derivacin a o a o lineal es decir, una sucesin S . . . w en el sentido de que para un solo rbol de deo a rivacin puede haber varias derivaciones lineales, segn el orden en que se decida expandir o u los no terminales. Por ejemplo, para el rbol de la gura arriba, hay al menos las derivaciones a siguientes (anotamos como sub ndice de el nmero de regla aplicado): u

1. S 1 SS 2 (S)S 3 (S)() 1 (SS)() 3 (S())() 3 (()())(). 2. S 1 SS 3 S() 2 (S)() 1 (SS)() 3 (()S)() 3 (()())().

Formalmente, un rbol de derivacin es un grafo dirigido arborescente a o manera siguiente:

13

denido de la

Denicin.- Sea G = (V, , R, S) una GLC. Entonces un rbol de derivacin cumple las o a o siguientes propiedades:

1. Cada nodo tiene una etiqueta 2. La ra tiene etiqueta S. z

14

3. La etiqueta de los nodos que no son hojas debe estar en V , y las de las hojas en {}. 4. Si un nodo n tiene etiqueta A, y los nodos n1 , . . . , nm son sus hijos (de izquierda a derecha), con etiquetas respectivamente A1 , . . . , Am , entonces A A1 , . . . , Am R.

Denicin.- La cadena de caracteres que resulta de concatenar los caracteres terminao les encontrados en las etiquetas de los nodos hoja, en un recorrido en orden del rbol de a derivacin, se llama el producto del rbol. o a Es decir, al efectuar un recorrido en orden del rbol de derivacin recuperamos la cadena a o a partir de la cual se construy dicho rbol. As el problema de compilar una cadena de o a , caracteres consiste en construir el rbol de derivacin a partir del producto de ste. a o e
Un grafo arborescente se caracteriza por no tener ciclos, y por el hecho de que existe una trayectoria unica para llegar de la ra a un nodo cualquiera. z 14 Formalmente, una etiqueta es una funcin que va del conjunto de nodos al conjunto de s o mbolos de donde se toman las etiquetas, en este caso V {}.
13

4.5. ARBOLES DE DERIVACION

123

4.5.1.

Ambig edad en GLC u

La correspondencia entre los rboles de derivacin y sus productos no es necesariamente a o biun voca. En efecto, hay GLC en las cuales para ciertas palabras hay ms de un rbol de a a derivacin. Sea por ejemplo la siguiente GLC, para expresiones aritmticas sobre las variables o e x y y. 1. E E + E 2. E E E 3. E x 4. E y Con esta gramtica, para la expresin x + y x existen los dos rboles de derivacin de a o a o las guras 4.2(a) y (b).
E E x + y x x + y E E x

(a)

(b)

Figura 4.2: Dos rboles para x + y x a En este ejemplo, el hecho de que existan dos rboles de derivacin para una misma exprea o sin es indeseable, pues cada rbol indica una manera distinta de estructurar la expresin. o a o En efecto, en el rbol de la izquierda, al resultado de la suma (x + y) se multiplica con x, a mientras que en el de la derecha sumamos x al resultado de multiplicar x con y; por lo tanto el signicado que se asocia a ambas expresiones puede ser distinto. Se dice que una gramtica es ambigua ssi alguna palabra del lenguaje que genera tiene a ms de un rbol de derivacin. Ntese que la ambigedad, como la estamos deniendo, es a a o o u una propiedad de la gramtica, no de su lenguaje generado. Para un mismo lenguaje puede a haber una gramtica ambigua y una no ambigua. a Existen tcnicas para eliminar la ambigedad de una GLC; en general estas tcnicas cone u e sisten en introducir nuevos no-terminales de modo que se eliminen los rboles de derivacin a o no deseados. Para nuestro ejemplo de los operadores aritmticos, es clsica la solucin que e a o consiste en introducir, adems de la categor de las Expresiones (no-terminal E), la de los a a trminos (T ) y factores (F ), dando la gramtica con las reglas siguientes: e a

124

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

1. E E + T 2. E T 3. T T F 4. T F 5. F (E) 6. F x 7. F y

Con esta nueva GLC, el rbol de derivacin de la gura 4.2(a) se elimina, quedando a o nalmente una adaptacin del rbol de 4.2(b) a la GLC con trminos y factores, lo cual se o a e deja como ejercicio al lector. Sin embargo, estas tcnicas de eliminacin de ambigedad no son siempre aplicables, y de e o u hecho hay algunos LLC para los que es imposible encontrar una gramtica libre de contexto a no ambigua; estos lenguajes se llaman inherentemente ambiguos. Un ejemplo, dado en [7] junto con la prueba correspondiente, es el siguiente:

L = {an bn cm dm } {an bm cm dm }, n1, m1

4.5.2.

Derivaciones izquierda y derecha

En una gramtica no ambigua G, a una palabra w L(G) corresponde un slo rbol a o a de derivacin AG ; sin embargo, puede haber varias derivaciones para obtener w a partir del o s mbolo inicial, S . . . w. Una manera de hacer unica la manera de derivar una palabra consiste en restringir la eleccin del s o mbolo que se va a expandir en curso de la derivacin. o Por ejemplo, si tenemos en cierto momento de la derivacin la palabra (S())(S), en el paso o siguiente podemos aplicar alguna regla de la gramtica ya sea a la primera o a la segunda de a las S. En cambio, si nos restringimos a aplicar las reglas solo al no terminal que se encuentre ms a la izquierda en la palabra, entonces habr una sola opcin posible. a a o Desde luego, el hecho de elegir el no terminal ms a la izquierda es arbitrario; igual a podemos elegir el no terminal ms a la derecha. a Denicin.- Se llama derivacin izquierda de una palabra w a una secuencia S w1 o o . . . wn w en donde, para pasar de wi a wi+1 , se aplica una regla al no terminal de wi que se encuentre ms a la izquierda. Similarmente se puede denir una derivacin derecha. a o

4.6. PRUEBAS DE CORRECCION Y COMPLETEZ

125

Ejemplo.- Para la gramtica no ambigua con reglas S AB, A a, B b, la palabra a ab se produce con la derivacin izquierda: o S AB aB ab mientras que tambin se puede producir con la derivacin derecha: e o S AB Ab ab Teorema.- Para una gramtica no ambigua G, y una palabra w L(G), existe solamente a una derivacin izquierda S w. o Prueba: La derivacin izquierda corresponde a un recorrido en preorden del rbol de o a derivacin, expandiendo los no terminales que vamos encontrando en el camino. Ahora bien, o se sabe que existe un solo recorrido en preorden para un rbol dado. a

4.6.

Pruebas de correccin y completez o

Es posible en general hacer pruebas matemticas de que una gramtica corresponde a a a un lenguaje dado. Esto tiene la gran ventaja de que dicha correspondencia ya no es una simple conviccin intuitiva, sino que adquiere el rango de certeza matemtica. En ciertas o a aplicaciones, donde es extremadamente importante asegurarse de que no hay errores, las pruebas que garantizan esta certeza son de un gran valor. Las pruebas que permiten establecer la correspondencia entre un lenguaje y una gramtia ca dados requieren dos partes: 1. Prueba de correccin, que garantiza que todas las palabras que se producen al utilizar o la gramtica efectivamente corresponden a la descripcin del lenguaje dado; a o 2. Prueba de completez, que se asegura de que al producir palabras con la gramtica, no a falten palabras del lenguaje dado. En general las pruebas de correccin son ms sencillas y siguen un patrn ms predecible o a o a que las de completez, como podremos constatar en los ejemplos que siguen. Las pruebas de correccin se hacen por induccin, ms precisamente por induccin en la longitud de la o o a o derivacin. o La idea de una prueba por induccin basada en la longitud de la derivacin es esencialo o mente mostrar que todas las palabras por las que se pasa en medio del proceso de derivacin o cumplen una propiedad, que es bsicamente el enunciado del lenguaje. Dichas pruebas siguen a el siguiente esquema:

126

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

1. Lo primero que hay que hacer es establecer un enunciado, relacionado con la denicin o del lenguaje considerado, pero algo modicado de manera que se pueda aplicar a las palabras intermedias en el proceso de derivacin, las cuales pueden contener variables o tanto como constantes. 2. Luego se prueba, como base de la induccin, que para las palabras intermedias de la o derivacin producidas en al menos k0 pasos, la propiedad se cumple. o 3. A continuacin se hace el paso de induccin propiamente dicho. Para esto primero se o o supone que la propiedad se cumple tras haber hecho i pasos de derivacin (esto es la o hiptesis de induccin), y luego se prueba que tambin se cumple al hacer un paso ms o o e a de derivacin (esto es, para las palabras derivadas en i+1 pasos). Al concluir este paso, o se ha probado que todas las palabras intermedias en el proceso de derivacin cumplen o con la propiedad. 4. Finalmente, hay que particularizar la propiedad para la ultima palabra de la derivacin, o que es la que slo contiene constantes. Con esto se termina la prueba. o Ejemplo.- Probar la correccin de la gramtica de los parntesis bien balanceados, que o a e contiene las siguientes reglas: 1. S (S) 2. S SS 3. S () Prueba de correccin.- Para hacer la prueba por induccin en la longitud de la derivacin, o o o necesitamos primero generalizar el enunciado de forma que sea aplicable a las palabras con variables que aparecen a la mitad de la derivacin. Esto es, necesitamos un lenguaje extendido o donde se admita que las palabras contengan variables. Hacemos la siguiente denicin: o PX = { V |elim(S, ) P } Es decir, eliminando las S de las palabras de PX , obtenemos palabras de parntesis e bien balanceados. Base de la induccin.- En 0 pasos, se tiene (trivialmente) una palabra en PX . o Hiptesis de induccin.- En k pasos, se generan palabras en PX , de la forma S, con o o , V . Paso de induccin.- A la palabra S, generada en k pasos, se le pueden aplicar las o reglas 1-3. Evidentemente la aplicacin de las reglas 2 y 3 genera palabras SS y en o

4.6. PRUEBAS DE CORRECCION Y COMPLETEZ

127

LX. Aunque es menos evidente, la aplicacin de la regla 1 produce palabras (S), que o tambin estn en LX . e a Finalmente, la ultima regla que debe aplicarse es la 3, lo que nos da una palabra con los parntesis bien balanceados. QED e Las pruebas de completez muestran que todas las palabras del lenguaje en cuestin o pueden efectivamente ser generadas utilizando la gramtica dada. Esto puede ser en ocasiones a dif y no hay recetas tan uniformes como para las pruebas de correccin. cil, o Ntese que la completez y la correccin de una gramtica son propiedades independientes, o o a y una gramtica dada puede tener una, las dos o ninguna. Por ejemplo, si eliminamos la regla a 2 de la gramtica, de todas maneras la prueba de correccin que acabamos de hacer seguir a o a funcionando, pero en cambio no habr completez, porque algunas palabras, como (())(()) no a pueden ser generadas por la gramtica. a Vamos a presentar un ejemplo de prueba de completez para la gramtica de los parntesis a e bien balanceados dada ms arriba, para mostrar el tipo de consideraciones que hay que hacer a para llevar a trmino la prueba. e Prueba de completez.- En el caso que nos ocupa, vamos a hacer una prueba por induccin o sobre la longitud de la palabra. Base de la induccin: La gramtica puede generar todas las palabras de longitud 2 (Por o a la regla 3). Hiptesis de induccin: La gramtica puede generar todas las palabras de longitud menor o o a o igual a k. (Claramente k es par). Paso de induccin: Notamos que para una palabra dada w en P (esto es, que tiene los o parntesis bien balanceados), |w| = k + 2 slo hay dos posibilidades: 15 . e o

1. w se puede partir en w1 y w2 , w = w1 w2 , de forma tal que w1 , w2 P . 2. w no se puede partir en dos partes.

En el caso 1, aplicando inicialmente la regla S SS, se debe poder generar w1 a partir de la S de la izquierda, por hiptesis de induccin, ya que |w1 |k. Similarmente para w2 , o o con la S de la derecha. En el caso 2, w = (w ), donde w P , es decir, al quitar los dos parntesis ms externos se e a tiene una palabra con parntesis bien balanceados (Porqu?). Como |w | = k, por hiptesis e e o de induccin w se puede generar con la gramtica. La palabra w se puede entonces generar o a
15

El paso de induccin se hace en k + 2 y no en k + 1 porque todas las palabras en P tienen longitud par o

128

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

aplicando primero la regla S (S), y luego continuando con la derivacin de w que existe o por hiptesis de induccin. o o Esto completa la prueba. QED

4.7.

Gramticas libres y sensitivas al contexto a

Las GLC deben su nombre a una comparacin con otro tipo de gramticas, las llamadas o a sensitivas al contexto, denidas arriba, donde para una regla 1 A2 1 2 , el s mbolo A solo puede generar cuando se encuentra rodeado por el contexto 1 . . . 2 . En cambio, en las GLC no es necesario especicar un contexto, por esto se llaman libres de contexto. Las gramticas sensitivas al contexto son estrictamente ms poderosas que las GLC; un a a ejemplo es el lenguaje de las cadenas de la forma an bn cn , para el que no hay ninguna GLC. En cambio, una gramtica sensitiva al contexto ser la siguiente (slo damos las reglas): 16 a a o 1. 2. 3. 4. 5. S aBT c T ABT c T ABc BA BX BX Y X 6. Y X AX 7. AX AB 8. aA aa 9. aB ab 10. bB bb

En esta gramtica, las reglas 1 a 3 generan A, a, B y c no necesariamente en orden (las a A y B van a estar alternadas). Luego las reglas 4 a 7 permiten reordenar las A y B, para que todas las A queden antes que todas las B, 17 y nalmente las reglas 8 a 10 permiten generar los terminales solamente cuando las letras estn en el orden correcto. Como un ejemplo, la a palabra aaabbbccc se puede generar de la forma siguiente: S 1 aBT c 2 aBABT cc 3 aBABABccc 4 aBXBXBccc 5 aY XY XBccc 6 aAXAXBccc 7 aABABBccc 4 aABXBBccc 5 aAY XBBccc 6 aAAXBBccc 7 aAABBBccc 8 aaABBBccc 8 aaaBBBccc 9 aaabBBccc 10 aaabbBccc 10 aaabbbccc.

4.8.

Transformacin de las GLC y Formas Normales o

En muchas situaciones se considera conveniente modicar las reglas de la gramtica, a de manera que cumplan las reglas con propiedades tales como no producir la cadena vac a
Esta gramtica produce palabras de al menos 6 caracteres, o sea de el lenguaje {an bn cn |n > 1}. a De hecho bastar con una regla BA AB, salvo que sta no cumple con el formato de las gramticas a e a sensitivas al contexto.
17 16

4.8. TRANSFORMACION DE LAS GLC Y FORMAS NORMALES

129

del lado derecho, o bien simplemente por cuestiones de estandarizacin o facilidad de imo plementacin computacional. Desde luego, cuando hablamos de modicar las reglas de la o gramtica, se entiende que esto debe hacerse sin modicar el lenguaje generado. a Por ejemplo, la presencia de reglas que producen vac en la gramtica puede ser fuente de o a dicultades tales como la ambigedad, o la posibilidad de tener derivaciones arbitrariamente u largas. Tomemos por ejemplo la siguiente gramtica para los parntesis bien balanceados a e (damos slo las reglas): o 1. S SS 2. S (S) 3. S Con esta gramtica es posible hacer derivaciones arbitrariamente largas de una palabra a tan sencilla como ()(el sub ndice de las echas indica la regla utilizada): S 1 SS 1 SSS 1 . . . 3 SSS 3 SS 3 S 2 (S) 3 () Si pudiramos tener una gramtica equivalente, pero sin reglas que produzcan la cadena e a vac ya no ser posible hacer derivaciones arbitrariamente largas. Esto puede ser una a, a ventaja a la hora de determinar si una palabra se deriva o no de una gramtica (ver seccin a o 4.10).

4.8.1.

Eliminacin de reglas A o

Consideremos nuevamente la gramtica para los parntesis bien balanceados. Si queremos a e una GLC equivalente, pero sin emplear producciones vac (como S ), una idea ser as a analizar en reversa la derivacin de donde viene la S que queremos cambiar por . Slo o o hay otras dos reglas en la gramtica, de modo que esa S tuvo que ser generada ya sea por a S (S) o por S SS. En el caso de S (S), una solucin ser en vez de hacer la o a, derivacin o S . . . S (S) (), , ( V ) mejor hacer directamente la derivacin o S . . . S () agregando una regla S () a la gramtica. Y en caso de que la S provenga de la regla a S SS, se puede cambiar la derivacin o

130

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

S . . . S SS S por la derivacin o S . . . S S usando una nueva regla S S, o mejor an, simplemente reemplazarla por u S . . . S sin ninguna regla adicional (la parte de la derivacin S SS S desaparece por o completo, pues no sirve de nada). Resumiendo, la idea que permite eliminar las reglas A es la de irse un paso atrs, a para examinar de dnde provino el no-terminal A que queremos eliminar, y por cada regla o B A de la gramtica agregar una regla B , en que directamente ya se reemplaz A a o por . Una vez hecho esto, se pueden suprimir todas las reglas de la forma A , pues resultan redundantes. Por ejemplo, sea la GLC de los parntesis bien balanceados: e S (S), S SS, S . Aplicando mecnicamente la transformacin a dicha gramtica, se tiene: a o a S (S), S SS, S (), S S La regla S S es evidentemente intil y se puede eliminar, pero dejemos esto para el u siguiente prrafo, en que nos ocuparemos de la eliminacin de reglas de esa forma. a o Otra cuestin ms importante an debe haber saltado a la vista escrutadora del lector o a u perspicaz: la nueva GLC no es exactamente equivalente a la anterior! En efecto, la GLC original generaba la palabra vac , mientras que la GLC transformada no la genera. Desde a luego, el hecho de que una GLC contenga reglas de la forma A no signica que el lenguaje contenga forzosamente a la palabra vac considrese por ejemplo la siguiente gramtica: a; e a S (A), S AA, A (A), A AA, A cuyo lenguaje no contiene a la palabra vac a. En caso de que el lenguaje en cuestin realmente contenga a la palabra vac no es o a, posible estrictamente eliminar todas las producciones vac sin alterar el signicado de la as gramtica. En estos casos vamos a expresar el lenguaje como la unin {} L(G ), donde G a o es la gramtica transformada. Este pequeo ajuste no modica los resultados que obtuvimos a n arriba.

4.8. TRANSFORMACION DE LAS GLC Y FORMAS NORMALES

131

4.8.2.

Eliminacin de reglas A B o

Supongamos ahora que se tiene la gramtica con las reglas siguientes: a

S (S), S BB, S (), B S Claramente esta GLC es equivalente a la gramtica dada anteriormente para generar los a parntesis bien balanceados. La unica diferencia es que, en vez de utilizar la regla S SS, se e tiene una regla S BB, y luego las B se transforman en S por la regla B S. Pero, para que usar esos intermediarios, como B en este caso, cuando es posible generar directamente SS a partir de S? La idea de eliminar las reglas de la forma A B viene de observar que dichas reglas no producen nada util, simplemente introducen s mbolos intermediarios, que es posible eliminar. A continuacin veremos cmo. o o Supongamos que hay reglas A B y B i en la gramtica, entonces es posible aadir a n reglas A i sin modicar el lenguaje. Ahora bien, si hacemos esto siempre que sea posible, las reglas de la forma A B se vuelven intiles, pues toda derivacin: u o

. . . A B i . . . puede transformarse en:

. . . A i . . . sin modicar el lenguaje. Esto prueba que la gramtica modicada es equivalente a la original. a Por ejemplo, aplicando esta transformacin a la gramtica del ejemplo, la regla intil, o a u que tratamos de eliminar, es B S. Se producen las nuevas reglas siguientes:

B (S), al combinar B S con S (S) B BB, al combinar B S con S BB B (), al combinar B S con S ()

La gramtica queda entonces con las reglas: a S (S), S BB, S (), B (S), B BB, B ()

132

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

4.8.3.

Eliminacin de reglas inaccesibles o

Considrese una gramtica con reglas: e a S aXbb, X bSa, Y SX Es fcil comprender que la tercera regla es intil, porque no hay nadie que produzca la a u Y necesaria para que dicha regla se aplique. A reglas como stas se les llama inaccesibles. e Denicin.- Una regla X de una gramtica (V, , R, S) es inaccesible si no hay una o a derivacin S 1 X2 , donde 1 , 2 (V ) . o En trminos prcticos, si vemos que una variable X no aparece en el lado derecho de e a ninguna regla de la gramtica, podemos asegurar sin arriesgarnos que la regla X es a inaccesible. Para eliminar una regla inaccesible no se necesita hacer ninguna otra modicacin a o la gramtica mas que simplemente borrarla. La equivalencia de la gramtica sin la regla a a inaccesible y la original est garantizada por el hecho de que dicha regla no participa en a ninguna derivacin. o

4.8.4.

Formas Normales

En ocasiones es necesario expresar una GLC siguiendo un formato ms preciso de las a reglas que la simple forma A . Estos estndares reciben el nombre de formas normales. a Vamos a estudiar una de las formas normales ms conocidas, la forma normal de Chomsky a (FNCH). La FNCH consiste en que las reglas pueden tener dos formas: 1. A a, a 2. A BC, con B, C V Esta forma normal, aparentemente tan arbitraria, tiene por objeto facilitar el anlisis a sintctico de una palabra de entrada, siguiendo la estrategia siguiente: Se trata de construir a el rbol de derivacin de w de arriba hacia abajo (llamada top-down en ingls), y por a o e consiguiente se supone inicialmente que el s mbolo inicial S puede producir la palabra w. En seguida se procede a dividir la palabra de entrada w en dos pedazos, w = , para luego tomar alguna regla S AB , y tratar de vericar si se puede derivar a a partir de A y b a partir de B, es decir: S . . . w ssi: 1. w , hay una regla S w

4.8. TRANSFORMACION DE LAS GLC Y FORMAS NORMALES

133

S S X ( X ( S Y Z Z ) ) S X ( Z )

Figura 4.3: Arbol de la palabra (())() 2. w = , hay una regla S AB, con A . . . , y B . . . Por ejemplo, considrese la siguiente gramtica para el lenguaje de los parntesis bien e a e balanceados, en forma normal de Chomsky (damos sus reglas): 18 1. S XY 2. X ( 3. Y SZ 4. Z ) 5. S SS 6. S XZ Supongamos que tenemos una palabra como (())(), y queremos vericar si se puede derivar a partir de esta gramtica. Hay que partir dicha palabra en dos pedazos, y escoger alguna a regla que produzca dos variables. Escogemos la quinta regla, S SS, y partimos la palabra en los pedazos (()) y (). Para que SS pueda generar (())() ahora se necesitar que la primera a S pueda generar (()), y la segunda pueda generar (). Estos son subproblemas muy similares al problema inicial. Tomemos el primero, es decir, a partir de S generar (()). Escogemos la regla S XY , y partimos la palabra en ( y ()). Ahora X tiene la responsabilidad de generar ( y Y la de generar ()). Por la segunda regla, X genera directamente (. Ahora tomamos el
18

Luego veremos cmo calcular esta forma normal. o

134

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

problema de generar ()) a partir de Y . Escogemos la regla S SZ, y la separacin en los o pedazos () y ). Entonces Z produce directamente ), y queda por resolver cmo S produce (). o Para ello, escogemos la regla S XZ, y nalmente X produce ( y Z se encarga de ), con lo que terminamos el anlisis. El rbol de compilacin se presenta en la gura 4.3. a a o Esta manera de generar dos nuevos problemas similares al problema inicial, pero con datos ms pequeos, es t a n picamente un caso de recursin. Este hecho permite pensar en o un sencillo procedimiento recursivo para compilar palabras de un LLC. Sea CC(A, u) la funcin que verica si A . . . u. Entonces un algoritmo de anlisis sintctico ser el o a a a siguiente: CC(A, w) : 1. Si |w| > 1, dividirla en u y v, w = uv; Para cada regla de la forma A U V , intentar CC(U, u) y CC(V, v) 2. Si |w| = 1, buscar una regla A w. Si en el punto 1 la divisin de la palabra no nos llev a una compilacin exitosa (es decir, o o o los llamados recursivos CC(U, u) y CC(V, v) no tuvieron xito), puede ser necesario dividir e la palabra de otra manera. Dicho de otra forma, puede ser necesario ensayar todas las formas posibles de dividir una palabra en dos partes, antes de convencerse de que sta pertenece o e no a nuestro lenguaje. An cuando esto puede ser muy ineciente computacionalmente, es u innegable que el algoritmo es conceptualmente muy sencillo. El siguiente problema a examinar es si efectivamente es posible transformar una GLC cualquiera G en otra GLC G que est en la FNCH. Vamos a efectuar esta transformacin en a o dos etapas: en una primera etapa, llevaremos G a una forma intermedia Gtemp , para pasar despus de Gtemp a G . e En Gtemp las reglas son de las formas: 1. A a, con a 2. A , con V V En Gtemp , los lados derechos de las reglas son, ya sea un terminal, o una cadena (no vac a) de no-terminales. La manera de llevar una GLC cualquiera a la forma intermedia consiste en introducir reglas A a, B b, etc., de modo que podamos poner, en vez de un terminal a, el no-terminal A que le corresponde, con la seguridad de que despus ser posible obtener e a a a partir de A. Por ejemplo, considrese la siguiente GLC: e

1.- S aX

4.8. TRANSFORMACION DE LAS GLC Y FORMAS NORMALES 2.- S bY 3.- X Y a 4.- X ba 5.- Y bXX 6.- Y aba

135

Como se ve, el obstculo para que esta GLC est en la forma intermedia es que en los a e lados derechos de varias reglas (1, 2, 3, 5) se mezclan los terminales y los no-terminales. Por otra parte, hay reglas (4, 6) que en el lado derecho tienen varios terminales. Entonces aadimos las reglas: n

7.- A a 8.- B b

y modicamos las reglas (1,2,3,5), reemplazando a por A y b por B:

1 .- S AX 2 .- S BY 3 .- X Y A 4 .- X BA 5 .- Y BXX 6 .- Y ABA

con lo que la gramtica ya est en la forma intermedia. La equivalencia de la nueva a a gramtica con respecto a la original es muy fcil de probar. a a Luego, para pasar de Gtemp a la FNCH, puede ser necesario dividir los lados derechos

136

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

de algunas reglas en varias partes. Si tenemos una regla X X1 X2 . . . Xn , la dividimos en dos reglas, una X X1 W y otra W X2 . . . Xn , donde W es una nueva variable, es decir, no debe formar previamente parte de la gramtica. Cada vez que se aplica esta a transformacin, el lado derecho de la regla afectada se reduce en longitud en una unidad, o por lo que, aplicndola repetidas veces, se debe poder llegar siempre a reglas cuyo lado a derecho tiene exactamente dos no-terminales. Para el ejemplo visto arriba, la regla 5 se convierte en:

5 .- Y BW 5 .- W XX

Similarmente se puede transformar la regla 6 , dejando la gramtica (reglas 1 , 2 , 3 , 4 , a 5 , 5 , 6 , 6 , 7, 8) en la FNCH.

4.9.

Limitaciones de los LLC

En esta seccin veremos cmo vericar que un lenguaje dado no es LLC. Esto puede ser o o muy util, para evitarnos el trabajo de tratar intilmente de disear GLCs de lenguajes que u n no tienen ninguna. Una herramienta para esto es aplicar el llamado teorema de bombeo, que se presenta enseguida.

4.9.1.

Teorema de bombeo para los LLC

Teorema.- Existe para cada G GLC un nmero k tal que toda w L(G), donde |w| > k, u puede ser escrita como w = uvxyz, de tal manera que v y y no son ambas vac y que as, uv n xy n z L(G) para cualquier n0. Este teorema es similar en esencia al teorema de bombeo para los lenguajes regulares. Nos dice que siempre hay manera de introducir (bombear) subrepticiamente subcadenas a las palabras de los LLC. Nos sirve para probar que ciertos lenguajes no son LLC. Prueba.- Basta con probar que hay una derivacin o S uAz uvAyz uvxyz = w pues al aparecer el mismo no-terminal en dos puntos de la derivacin, es posible insertar ese o trozo de la derivacin cuantas veces se quiera (incluyendo cero). Esa parte de la derivacin, o o

4.9. LIMITACIONES DE LOS LLC

137

S u A z

v A y x
Figura 4.4: que tiene la forma uAz uvAyz, es una especie de ciclo sobre el no-terminal A, que recuerda lo que ocurr con el teorema de bombeo para los lenguajes regulares. a Para probar que existen en la derivacin ciclos de la forma uAz uvAyz, la idea o ser vericar que el tamao vertical del rbol (su profundidad) es mayor que la cantidad de a n a no-terminales disponibles. En consecuencia, algn no-terminal debe repetirse. u Primero, la cantidad de no-terminales para una gramtica (V, , R, S) es |V |. a A continuacin examinemos el problema de vericar si los rboles de derivacin pueden o a o tener una profundidad mayor que |V |. Sea m = max({|| |A R}). Ahora bien, un rbol de profundidad p tiene a lo ms a a p m hojas (porqu?), y por lo tanto un rbol Aw para w, con |w| > m tiene profundidad e a mayor que p. As toda palabra de longitud mayor que m|V | tendr necesariamente una , a profundidad mayor que |V |, y por lo tanto, algn no-terminal estar repetido en la derivacin; u a o sea A ese no-terminal. Vamos a representar el rbol de derivacin en la gura 4.4. a o
p

Como se ve, hay un subrbol del rbol de derivacin (el tringulo intermedio en la gura a a o a 4.4) en el que el s mbolo A es la ra y tambin una de las hojas. Est claro que ese subrbol z e a a puede ser insertado o quitado cuantas veces se quiera, y quedar siempre un rbol de deria a vacin vlido; cada vez que dicho subrbol sea insertado, las subcadenas v e y se repetirn o a a a una vez ms. Esto completa la prueba. En la gura se aprecia porqu es importante que v e a e y no sean ambas vac QED as. Ejemplo.- El lenguaje {an bn cn } no es LLC. Esto se prueba por contradiccin. Supngase o o que {an bn cn } es LLC. Entonces, de acuerdo con el teorema de bombeo, para una cierta k, ak/3 bk/3 ck/3 puede ser escrita como uvxyz, donde v y y no pueden ser ambas vac Existen as. dos posibilidades: 1. v o y contienen varias letras (combinaciones de a, b o c). Pero, segn el teorema, uv 2 xy 2 z u es de la forma an bn cn , lo cual es imposible, ya que al repetir v o y, forzosamente las letras quedarn en desorden; a 2. Tanto v como y (el que no sea vac contienen un slo tipo de letra (repeticiones de a, o) o n n n b o c). En este caso, si uvxyz es de la forma a b c , uv 2 xy 2 z no puede ser de la misma

138

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO forma, pues no hemos incrementado en forma balanceada las tres letras, sino a lo ms a dos de ellas.

En ambos casos se contradice la hiptesis de que {an bn cn } es LLC. o Al haberse probado que el lenguaje {an bn cn } no es LLC, podemos probar que la interseccin de dos LLC no es necesariamente un LLC: o Teorema.- La interseccin de dos LLC no es necesariamente LLC. o Prueba.- Los lenguajes L1 y L2 formados por las palabras de la forma an bn cm y am bn cn respectivamente son LLC. Sin embargo, su interseccin es el lenguaje {an bn cn }, que acabamos o de probar que no es LLC. Algo similar ocurre con respecto a la operacin de complemento del lenguaje, que si se o recuerda, en el caso de los lenguajes regulares, su complemento daba otro lenguaje regular: Teorema.- El complemento de un LLC no necesariamente produce otro LLC. Prueba.- Si el complemento de un LLC fuera tambin LLC, lo mismo ocurrir con la e a interseccin, ya que, de acuerdo con las identidades de la teor de conjuntos, L1 L2 = o a (Lc Lc )c . 19 1 2 Debe tenerse cuidado al interpretar estos resultados. En efecto, esto no quiere decir, por ejemplo, que el complemento de un LLC necesariamente no ser LLC. En el siguiente ejemplo a se da un caso espec co. Ejemplo.- Probar que el complemento del lenguaje {an bn } es LLC. Para esto, vamos a clasicar las palabras de L = {an bn }c en dos categor as:

1. Las que contienen la cadena ba, esto es, w = ba 2. Las que no contienen ba, esto es, w = ba

Claramente esta clasicacin es exhaustiva. El objetivo de esta clasicacin es distinguir o o las causas por las que una palabra en {a, b} no es de la forma an bn : la primera es que tiene letras en desorden esto es, contiene la cadena ba como en abba; la segunda es que, no habiendo letras en desorden, la cantidad de as y bs no es la misma, como en aaaa, abbb, etc. El caso (1) es muy simple, pues el lenguaje L1 cuyas palabras contienen la cadena ba es regular y por lo tanto LLC.
19

Lc es una abreviatura para L.

4.10. PROPIEDADES DE DECIDIBILIDAD DE LOS LLC

139

Es fcil ver que el caso (2) corresponde al lenguaje L2 = {an bm |n = m}, pues como a no tiene b inmediatamente antes que a, todas las a estn antes de todas las b. L2 puede a ser expresado como la unin de dos lenguajes LLC, como se vio en un ejemplo presentado o anteriormente, y por la cerradura de los LLC a la unin, se concluye que L1 es LLC. o Finalmente, {an bn }c = L1 L2 , y por la cerradura de los LLC a la unin, se concluye que o L es LLC.

4.10.

Propiedades de decidibilidad de los LLC

Hay ciertas preguntas sobre los lenguajes libres de contexto y sus gramticas que es a posible contestar, mientras que hay otras preguntas que no se pueden contestar en el caso general. Vamos a examinar primero dos preguntas que s se pueden contestar con seguridad y en un tiempo nito. Para estas preguntas es posible dar un algoritmo o receta tal que, siguindolo paso por paso, se llega a concluir un s o un no. Tales algoritmos se llaman e algoritmos de decisin, pues nos permiten decidir la respuesta a una pregunta. Las preguntas o que vamos a contestar son las siguientes: Teorema.- Dadas una gramtica G y una palabra w, es posible decidir si w L(G) a cuando las reglas de G cumplen la propiedad: Para toda regla A , || > 1, o bien , es decir, el lado derecho tiene varios s mbolos, o si tiene exactamente un s mbolo, ste es terminal. e Prueba: La idea para probar el teorema es que cada derivacin incrementa la longitud de o la palabra, porque el lado derecho de las reglas tiene en general ms de un s a mbolo. En vista de que la longitud de la palabra crece con cada paso de derivacin, slo hay que examinar o o las derivaciones hasta una cierta longitud nita. Por ejemplo, la gramtica de los parntesis a e bien balanceados cumple con la propiedad requerida: 1. S () 2. S SS 3. S (S) Como en esta gramtica el lado derecho mide 2 o ms s a a mbolos, la aplicacin de cada regla o reemplaza un s mbolo por dos o ms. Por lo tanto, para saber si hay una derivacin de la a o palabra ()(()), que mide 6 s mbolos, slo necesitamos examinar las derivaciones (izquierdas) o de 5 pasos a lo ms -y que terminan en una palabra hecha unicamente de terminales. Estas a derivaciones son las siguientes: 1 paso: S ()

140

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

2 pasos: S (S) (()) 3 pasos: S (S) ((S)) ((())) S SS ()S ()() 4 pasos: (S) ((S)) (((S))) (((()))) (S) (SS) (()S) (()()) SS ()S ()(S) ()(()) SS (S)S (())S (())() 5 pasos: (S) ((S)) (((S))) ((((S)))) ((((())))) (S) ((S)) ((SS)) ((()S)) ((()())) (S) (SS) (()S) (()(S)) (()(())) (S) (SS) ((S)S) ((())S) ((())()) SS ()S ()(S) ()((S)) ()((())) SS ()S ()SS ()()S ()()() SS (S)S (())S (())(S) (())(()) SS (S)S ((S))S ((()))S((()))() SS SSS ()SS ()()S ()()() Es fcil ver que stas son las unicas posibles derivaciones. a e
20

S S S S

S S S S S S S S S

Con base en este grupo de derivaciones es simple probar que la palabra (()()( -de 6 caracteres de longitud- no pertenece al lenguaje generado por la gramtica, pues si as fuera, a estar entre alguna de las palabras derivadas en 5 pasos o menos. a En el caso general se incluyen reglas de la forma A a, con a . Para empezar observamos que las reglas de la forma A a producen exclusivamente un terminal, por lo que, en el peor caso, se aplicaron tantas veces reglas de este tipo como letras tenga la palabra generada. Por ejemplo, sea la gramtica de las expresiones aritmticas: a e

1. E E + E 2. E E E 3. E x 4. E y
Ejercicio: hallar el mtodo que se sigui para obtener las derivaciones mostradas, y probar que no se e o puede escapar ninguna derivacin. o
20

4.11. EJERCICIOS

141

Esta gramtica tiene reglas, como E x y E y que tienen en su lado derecho un a caracter. Entonces, dada una expresin aritmtica como x y + x, que tiene 5 s o e mbolos, a lo ms se usan ese tipo de reglas en 5 ocasiones (de hecho se ve que en una derivacin de a o x y + x ese tipo de reglas se usa exactamente en 3 ocasiones). Ahora bien, para generar 5 terminales con reglas de la forma A a se requieren 5 no-terminales. Esos 5 no-terminales se generan con las reglas de la forma A a, donde |a| > 1. En el peor de los casos, |a| = 2, por lo que se requerirn 4 pasos de derivacin para llegar a los 5 no-terminales. Eso da un a o total de 5+4 = 9 pasos de derivacin. As si queremos determinar en forma segura si la o , palabra x y + x pertenece o no al lenguaje generado por la gramtica, slo tenemos que a o examinar las derivaciones de longitud menor o igual a 9. En general, para una palabra w de longitud l hay que examinar las derivaciones de longitud hasta 2 l 1. Si la palabra se encuentra al nal de alguna de esas derivaciones, la palabra pertenece al lenguaje, y en caso contrario no pertenece al lenguaje. Esto termina la prueba del teorema. QED Ntese que en el enunciado del teorema nos estamos restringiendo a las GLC que satiso facen la condicin: para toda regla A , || > 1, o bien , es decir, el lado derecho o tiene varios s mbolos, o si tiene exactamente un s mbolo, ste es terminal. Cabe preguntarse e si esto constituye una limitacin, en el sentido de que hay muchas GLC que no cumplen o dicha condicin. De hecho la respuesta es no, pues existe un procedimiento para pasar de o una GLC arbitraria a una GLC que satisfaga la condicin del teorema. o Corolario .- Dada cualquier GLC G, es posible decidir si w L(G). La prueba de este corolario consiste en dar un procedimiento para transformar una GLC cualquiera G en una GLC G que satisface las condiciones del teorema arriba enunciado.

4.11.

Ejercicios

1. Proponer una gramtica libre de contexto que genere las palabras binarias que comiena zan con 1. 2. Considerar el lenguaje en {a, b} en que las palabras tienen la misma cantidad de as que de bs. Proponer: a) Una GLC incorrecta para este lenguaje, esto es, que genere palabras que no deber a; b) Una GLC incompleta, esto es, que no pueda generar algunas de las palabras de este lenguaje; c) Una GLC que sea a la vez incorrecta e incompleta para este lenguaje. d ) Una GLC correcta y completa; e) Una derivacin izquierda de la palabra abaababb usando esta ultima gramtica. o a

142

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

3. Proponer gramticas libres de contexto para los siguientes lenguajes: a a) El lenguaje {ai bj ck | (i = j = k)} b) El lenguaje en {a, b} en que las palabras tienen la misma cantidad de as y bs. c) Las palabras en {a, b, c} en que hay ms as que cs (la cantidad de bs puede ser a cualquiera). d ) Un lenguaje de parntesis, llaves y corchetes bien balanceados. Por ejemplo, las e palabras ()[], ([]) y ()[[]] son correctas, mientras que [[] y ([)] no lo son. Ntese que en esta ultima palabra los parntesis solos estn balanceados, as como o e a los corchetes solos, pero su combinacin no lo est. o a e) {ai bj ck | i = j k} f ) El lenguaje {an bn+m cm } (Ayuda: usar la concatenacin de lenguajes). o g) El lenguaje {an bk cm , n k n + m} (Ayuda: usar la mezcla de gramticas, y la a solucin al problema anterior). o 4. Transformar las gramticas del problema 3 a la forma normal de Chomsky. Para esto, a a) Eliminar las producciones vac as, b) Las reglas intiles, u c) Las reglas inaccesibles, d ) Poner en la forma intermedia (slo variables o slo constantes en el lado derecho o o de las reglas). e) Limitar a 2 la longitud mxima del lado derecho de las reglas. a 5. Mostrar que la siguiente gramtica es / no es ambigua: G = (V, , R, S), con: a V = {PROG, IF, STAT} = {if, then, else, condicin, stat} o R = {PROG STAT, STAT if condicin then STAT, o STAT if condicin then STAT else STAT, STAT stat} o S = PROG 6. Contestar las siguientes preguntas, justicando la respuesta: a) La concatenacin de un lenguaje regular con uno libre de contexto ser necesao a riamente libre de contexto? b) Todo lenguaje libre de contexto tendr algn subconjunto que sea regular? a u c) Todo lenguaje libre de contexto ser subconjunto de algn lenguaje regular? a u d ) Si A B es libre de contexto, ser A libre de contexto? a e) La interseccin de un lenguaje regular con un libre de contexto ser regular? o a f ) La unin de un lenguaje libre de contexto con un lenguaje regular es libre de o contexto?

4.11. EJERCICIOS

143

g) La interseccin de un lenguaje libre de contexto con un lenguaje regular es reo gular? h) El reverso de un lenguaje libre de contexto es tambin libre de contexto? (Ayuda: e considerar una transformacin para obtener el reverso del lado derecho de las o reglas). 7. Probar la correccin de las gramticas propuestas en el ejercicio 3. Poner especial o a cuidado al generar el enunciado generalizado, as como al aplicarlo a los casos especiales. 8. Sea L = {an bm cp dq | n = m = p + q}. Es L libre de contexto? Proponga (y explique) una GLC o pruebe que no es posible. 9. Probar mediante el teorema de bombeo que el lenguaje {an bn+m cn+m+k , n, m, k = 1, 2, 3, . . .} no es libre de contexto. (Ayuda: las cadenas v e y se pueden repetir 0 veces). 10. Llamamos til a un s u mbolo no terminal A de una gramtica libre de contexto que a cumple con dos propiedades: a) S aAb, a, b (V ) , donde V es el alfabeto de las variables y (terminales y no terminales), b) A w, w . Dada una cierta GLC y un s mbolo no terminal A, Es decidible si A es util o no lo es? Pruebe la respuesta, y en caso armativo proponga el mtodo de decisin. e o 11. El lenguaje {w = ai bm cn | i > m > n} es libre de contexto? Probar la respuesta.

144

CAP ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO

Cap tulo 5 Autmatas de Pila o


Puesto que los autmatas nitos no son sucientemente poderosos para aceptar los LLC, o cabe preguntarnos qu tipo de autmata se necesitar para aceptar los LLC. e o a Una idea es agregar algo a los AF de manera que se incremente su poder de clculo. a Para ser ms concretos, tomemos por ejemplo el lenguaje de los parntesis bien balana e 2 ceados, que sabemos que es propiamente LLC. Qu mquina se requiere para distinguir e a las palabras de parntesis bien balanceados de las que tienen los parntesis desbalanceados? e e Una primera idea podr ser la de una mquina que tuviera un registro aritmtico que le a a e permitiera contar los parntesis; dicho registro ser controlado por el control nito, quien le e a mandar s a mbolos I para incrementar en uno el contador y D para decrementarlo en uno. A su vez, el registro mandar un s a mbolo Z para indicar que est en cero, o bien N para indicar a que no est en cero. Entonces para analizar una palabra con parntesis lo que har a e amos ser a llevar la cuenta de cuntos parntesis han sido abiertos pero no cerrados; en todo momento a e dicha cuenta debe ser positiva o cero, y al nal del clculo debe ser exactamente cero. Por a ejemplo, para la palabra (())() el registro tomar sucesivamente los valores 1, 2, 1, 0, 1, 0. a Recomendamos al lector tratar de disear en detalle la tabla describiendo las transiciones n del autmata. o Como un segundo ejemplo, considrese el lenguaje de los pal e ndromos (palabras que se leen igual al derecho y al revs, como ANITALAVALATINA). Aqu la mquina contadora e a no va a funcionar, porque se necesita recordar toda la primera mitad de la palabra para poder compararla con la segunda mitad. Ms bien pensar a amos en una mquina que tuviera a la capacidad de recordar cadenas de caracteres arbitrarias, no nmeros. Siguiendo esta idea, u podr amos pensar en aadir al AF un almacenamiento auxiliar, que llamaremos pila, donde n se podrn ir depositando caracter por caracter cadenas arbitrariamente grandes, como se a aprecia en la gura 5.1. A estos nuevos autmatas con una pila auxiliar los llamaremos o
Cuidado! Esto no impide que un LLC en particular pueda ser aceptado por un AF, cosa trivialmente cierta si tomamos en cuenta que todo lenguaje regular es a la vez LLC. 2 Propiamente LLC quiere decir que el lenguaje en cuestin es LLC pero no regular. o
1

145

146

CAP ITULO 5. AUTOMATAS DE PILA

a a
q0

q1 q2

q3

Figura 5.1: Autmata con una pila auxiliar o Autmatas de Pila, abreviado AP. o

5.1.

Funcionamiento de los Autmatas de Pila (inforo mal)

La pila funciona de manera que el ultimo caracter que se almacena en ella es el primero en salir (LIFO por las siglas en ingls), como si empilramos platos uno encima de otro, y e a naturalmente el primero que quitaremos es el ultimo que hemos colocado. Un aspecto crucial de la pila es que slo podemos modicar su tope, que es el extremo por donde entran o o salen los caracteres. Los caracteres a la mitad de la pila no son accesibles sin quitar antes los que estn encima de ellos. a La pila tendr un alfabeto propio, que puede o no coincidir con el alfabeto de la palabra de a entrada. Esto se justica porque puede ser necesario introducir en la pila caracteres especiales usados como separadores, segn las necesidades de diseo del autmata. u n o Al iniciar la operacin de un AP, la pila se encuentra vac Durante la operacin del o a. o AP, la pila puede ir recibiendo (y almacenando) caracteres, segn lo indiquen las transiciones u ejecutadas. Al nal de su operacin, para aceptar una palabra, la pila debe estar nuevamente o vac a. En los AP las transiciones de un estado a otro indican, adems de los caracteres que se a consumen de la entrada, tambin lo que se saca del tope de la pila, asi como tambin lo que e e se mete a la pila. Antes de formalizar los AP, vamos a utilizar una notacin grca, parecida a la de los o a diagramas de los autmatas nitos, como en los AP de las guras 5.2 (a) y (b). Para las o transiciones usaremos la notacin w//, donde w es la entrada (secuencia de caracteres) o que se consume, es lo que se saca de la pila, y lo que se mete a la pila. Por ejemplo, la transicin a//b indica que se consume de la entrada un caracter a, no o

5.2. DISENO DE AP

147

se saca nada de la pila, y se mete b a la pila. Se supone que primero se ejecuta la operacin o de sacar de la pila y luego la de meter. Al igual que los AF, los AP tienen estados nales, que permiten distinguir cuando una palabra de entrada es aceptada. De hecho, para que una palabra de entrada sea aceptada en un AP se deben cumplir todas las condiciones siguientes:

1. La palabra de entrada se debe haber agotado (consumido totalmente). 2. El AP se debe encontrar en un estado nal. 3. La pila debe estar vac a.

5.2.

Dise o de AP n

El problema de diseo de los AP consiste en obtener un AP M que acepte exactamente n un lenguaje L dado. Por exactamente queremos decir, como en el caso de los autmatas o nitos, que, por una parte, todas las palabras que acepta efectivamente pertenecen a L, y por otra parte, que M es capaz de aceptar todas las palabras de L. Aunque en el caso de los AP no hay metodolog tan generalmente aplicables como era as el caso de los autmatas nitos, siguen siendo vlidas las ideas bsicas del diseo sistemtico, o a a n a en particular establecer claramente qu es lo que recuerda cada estado del AP antes de e ponerse a trazar transiciones a diestra y siniestra. Para los AP, adicionalmente tenemos que establecer una estrategia clara para el manejo de la pila. En resumen, a la hora de disear un AP tenemos que repartir lo que requiere ser recorn dado entre los estados y la pila. Distintos diseos para un mismo problema pueden tomar n decisiones diferentes en cuanto a qu recuerda cada cual. e Ejemplo.- Disear un AP que acepte exactamente el lenguaje con palabras de la forma n an bn , para cualquier nmero natural n. u Una idea que surge inmediatamente es la de utilizar la pila como contador para recordar la cantidad de as que se consumen, y luego confrontar con la cantidad de bs. Una primera versin de este diseo utiliza un slo estado q, con transiciones a//a y b/a/ de q a s mismo, o n o como en la gura 5.2(a). Para vericar el funcionamiento del autmata, podemos simular su ejecucin, listando o o las situaciones sucesivas en que se encuentra, mediante una tabla que llamaremos traza de ejecucin. Las columnas de una traza de ejecucin para un AP son: el estado en que se o o

148
a/ /a b/a/ q
(a) Incorrecto

CAP ITULO 5. AUTOMATAS DE PILA

a/ /a q1

b/a/ b/a/
(b) Correcto

q2

Figura 5.2: AP para el lenguaje an bn

encuentra el autmata, lo que falta por leer de la palabra de entrada, y el contenido de la o pila. Por ejemplo, la traza de ejecucin del AP del ultimo ejemplo, para la palabra aabb, se o 3 muestra a continuacin: o Estado Por leer q aabb q abb q bb q b q Pila a aa a

Conclu mos que el AP efectivamente puede aceptar palabras como an bn . Sin embargo, hay un problema: el AP tambin acepta palabras como abab, que no tienen la forma deseada! (es e fcil construir la traza de ejecucin correspondiente para convencerse de ello). El problema a o viene de que no hemos recordado cuando se terminan las a y principian las b, por eso ha sido posible mezclarlas en abab. Una solucin es utilizar los estados para memorizar las situaciones o de estar consumiendo a o estar consumiendo b. El diagrama de estados correspondiente se muestra en la gura 5.2(b). Ejemplo.- Proponer un AP que acepte el lenguaje de los pal ndromos con un nmero u par de s mbolos, esto es, palabras que se leen igual de izquierda a derecha y de derecha a izquierda, y que tienen por tanto la forma wwR , donde wR es el reverso de w (esto es, invertir el orden), en el alfabeto {a, b}. Por ejemplo, las palabras abba, aa y bbbbbb pertenecen a este lenguaje, mientras que aab y aabaa no. Una estrategia de solucin para disear este AP ser almacenar en la pila la primeo n a ra mitad de la palabra, y luego irla comparando letra por letra contra la segunda mitad. Tendr amos dos estados s y f , para recordar que estamos en la primera o segunda mitad de la palabra. En la gura 5.2 se detalla este AP.
3

Suponemos que el tope de la pila est del lado izquierdo, aunque en este ejemplo da lo mismo. a

5.2. DISENO DE AP
b/ /b a/ /a s a/a/ b/b/ // f

149

Figura 5.3: AP para el lenguaje {wwR } Se puede apreciar en el AP de dicha gura la presencia de una transicin de s a f , en que o ni se consumen caracteres de la entrada, ni se manipula la pila. Esta transicin parece muy o peligrosa, porque se puede disparar en cualquier momento, y si no lo hace exactamente cuando hemos recorrido ya la mitad de la palabra, el AP podr llegar al nal a un estado a que no sea nal, rechazando en consecuencia la palabra de entrada. Entonces, cmo saber o que estamos exactamente a la mitad de la palabra? Conviene en este punto recordar que en un autmata no determinista una palabra es o aceptada cuando existe un clculo que permite aceptarla, independientemente de que un a clculo en particular se vaya por un camino errneo. Lo importante es, pues, que exista un a o clculo que acepte la palabra en cuestin. Por ejemplo, la siguiente tabla muestra un clculo a o a que permite aceptar la palabra w = abba:

Estado s s s f f f

Falta leer Pila abba bba a ba ba ba ba a a

Transicin o 1 2 3 5 4

5.2.1.

Combinacin modular de AP o

En los AP tambin es posible aplicar mtodos de combinacin modular de autmatas, e e o o como hicimos con los autmatas nitos. En particular, es posible obtener AP que acepten la o unin y concatenacin de los lenguajes aceptados por dos AP dados. o o En el caso de la unin, dados dos AP M1 y M2 que aceptan respectivamente los lenguajes o L1 y L2 , podemos obtener un AP que acepte la unin L1 L2 , introduciendo un nuevo estado o inicial s0 con transiciones // a los dos antiguos estados iniciales s1 y s2 , como se ilustra en la gura 5.4. 4
El procedimiento de combinacin de AP para obtener la unin de autmatas puede ser descrito en forma o o o ms precisa utilizando la representacin formal de los AP, que se estudia en la siguiente seccin; sin embargo, a o o hacer esto es directo, y se deja como ejercicio (ver seccin de ejercicios). o
4

150

CAP ITULO 5. AUTOMATAS DE PILA

//

s0
//

Figura 5.4: Unin de AP o

Ejemplo.- Obtener un AP que acepte el lenguaje {an bm |n = m}. Claramente este lenguaje es la unin de {an bm |n > m} con {an bm |n < m}, por lo que basta obtener los AP de cada o uno de ellos, y combinarlos con el mtodo descrito. e Ejemplo.- Disear un AP que acepte el lenguaje L = {ai bj ck |(i = j = k)}. Nos damos n cuenta de que L es la unin de dos lenguajes, que son: o

L = {ai bj ck |i = j} {ai bj ck |j = k}

Para cada uno de estos dos lenguajes es fcil obtener su AP. Para el primero de ellos, el AP a almacenar primero las as en la pila, para luego ir descontando una b por cada a de la pila; a las as deben acabarse antes de terminar con las bs o bien deben sobrar as al terminar con las bs; las cs no modican la pila y simplemente se verica que no haya a o b despus de la e primera c. Dejamos los detalles como ejercicio para el lector. Tambin es posible obtener modularmente un AP que acepte la concatenacin de los e o lenguajes aceptados por dos AP dados. De hecho ya vimos en el cap tulo 4 que la unin de o dos lenguajes libres de contexto es tambin libre de contexto, pues tiene una gramtica libre e a de contexto. Sin embargo, la construccin de un AP que acepte la concatenacin de dos lenguajes a o o partir de sus respectivos AP M1 y M2 , es ligeramente ms complicada que para el caso de la a unin. La idea bsica ser poner transiciones vac que vayan de los estados nales de M1 o a a as al estado inicial de M2 . Sin embargo, existe el problema: hay que garantizar que la pila se encuentre vac al pasar de M1 a M2 , pues de otro modo podr resultar un AP incorrecto. a a Para esto, es posible utilizar un caracter especial, por ejemplo @, que se mete a la pila antes de iniciar la operacin de M1 , el cual se saca de la pila antes de iniciar la operacin de o o M2 . Los detalles se dejan como ejercicio (ver seccin de ejercicios). o


F1 s1 s2 F2

5.3. FORMALIZACION DE LOS AP

151

5.3.

Formalizacin de los AP o

Un autmata de pila es un sxtuplo (K, , , , s, F ), donde: o e K es un conjunto de estados es el alfabeto de entrada es el alfabeto de la pila s K es el estado inicial F K es un conjunto de estados nales, (K ) (K ) es la relacin de transicin. o o Ahora describiremos el funcionamiento de los AP. Si tenemos una transicin de la forma o ((p, u, ), (q, )) , el AP hace lo siguiente: Estando en el estado p, consume u de la entrada; Saca de la pila; Llega a un estado q; Mete en la pila Las operaciones t picas en las pilas t picamente llamadas en ingls el push y el pop e pueden ser vistas como casos particulares de las transiciones de nuestro AP; en efecto, si slo queremos meter la cadena a la pila, se har con la transicin ((p, u, ), (q, )) o a o (push), mientras que si slo queremos sacar caracteres de la pila se har con la transicin o a o ((p, u, ), (q, )) (pop). Ahora formalizaremos el funcionamiento de los AP, para llegar a la denicin del lenguaje o aceptado por un AP. Para ello seguiremos el mismo mtodo que usamos en el caso de los e AF, mtodo que reposa completamente en la nocin de conguracin. e o o Denicin.- Una conguracin es un elemento de K . o o Por ejemplo, una conguracin podr ser [[q, abbab, aa#a]] obsrvese que seguimos o a e la misma notacin que para representar las conguraciones de los AF. Puede verse que las o transiciones se denen como una relacin, no como una funcin, por lo que de entrada se les o o formaliza como autmatas no deterministas. o Ahora denimos la relacin o entre conguraciones de la manera siguiente:

152

CAP ITULO 5. AUTOMATAS DE PILA

Denicin.- Sea M = (K, , , , s, F ) un AP, entonces [[p, ux, ]]| M [[q, x, ]] ssi o existe ((p, u, ), (q, )) . En general vamos a omitir el sub ndice de M , quedando simplemente como . La cerradura reexiva y transitiva de es . Denicin.- Un AP M = (K, , , , s, F ) acepta una palabra w ssi [[s, w, ]] o [[p, , ]], donde p F . L(M ) es el conjunto de palabras aceptadas por M .
M

Ejemplo.- Formalizar el AP de la gura 5.2, que acepta el lenguaje {wwR }, w {a, b}. Solucin.- El AP es el sxtuplo (K, , , , s, F ), donde o e K = {s, f }, F = {f }, = {a, b, c}, = {a, b} est representada en la siguiente tabla: a

(s, a, ) (s, b, ) (s, , ) (f, a, a) (f, b, b)

(s, a) (s, b) (f, ) (f, ) (f, )

5.4.

Relacin entre AF y AP o

Teorema.- Todo lenguaje aceptado por un AF es tambin aceptado por un AP e Este resultado debe quedar intuitivamente claro, puesto que los AP son una extensin o de los AF. Prueba: Sea (K, , , s, F ) un AF; el AP (K, , , , s, F ), con = {((p, u, ), (q, )) | (p, u, q) } acepta el mismo lenguaje.

5.5.

Relacin entre AP y LLC o

Ahora vamos a establecer el resultado por el que iniciamos el estudio de los AP, es decir, vericar si son efectivamente capaces de aceptar los LLC. Teorema.- Los autmatas de pila aceptan exactamente los LLC. o Vamos a examinar la prueba de esta armacin, no solamente por el inters por la rio e gurosidad matemtica, sino sobre todo porque provee un mtodo de utilidad prctica para a e a transformar una GLC en un AP. La prueba de este teorema se puede dividir en dos partes:

5.5. RELACION ENTRE AP Y LLC 1. Si M es un AP, entonces L(M ) es un LLC 2. Si L es un LLC, entonces hay un AP M tal que L(M ) = L

153

Vamos a presentar unicamente la prueba con la parte 2, que consideramos de mayor rele vancia prctica. La otra parte de la prueba (que tambin es un procedimiento de conversin) a e o puede consultarse en la referencia [21]. Sea una gramtica G = (V, , R, S). Entonces un AP M que acepta exactamente el a lenguaje generado por G se dene como sigue:

M = ({p, q}, , V , , p, {q}) donde contiene las siguientes transiciones: 1. Una transicin ((p, , ), (q, S)) o 2. Una transicin ((q, , A), (q, x)) para cada A x R o 3. Una transicin ((q, , ), (q, )) para cada o Ejemplo.- Obtener un AP que acepte el LLC generado por la gramtica con reglas: a 1. S aSa 2. S bSb 3. S c Las transiciones del AP correspondiente estn dadas en la tabla siguiente: a 1 2 3 4 5 6 7 (p, , ) (q, , S) (q, , S) (q, , S) (q, a, a) (q, b, b) (q, c, c) (q, S) (q, aSa) (q, bSb) (q, c) (q, ) (q, ) (q, )

El funcionamiento de este AP ante la palabra abcba aparece en la siguiente tabla:

154 Estado p q q q q q q q q q

CAP ITULO 5. AUTOMATAS DE PILA Falta leer abcba abcba abcba bcba bcba cba cba ba a Pila S aSa Sa bSba Sba cba ba a

Vamos a justicar intuitivamente el mtodo que acabamos de introducir para obtener un e AP equivalente a una gramtica dada. Si observamos las transiciones del AP, veremos que a solamente tiene dos estados, p y q, y que el primero de ellos desaparece del clculo en el primer a paso; de esto conclu mos que el AP no utiliza los estados para recordar caracter sticas de la entrada, y por lo tanto reposa exclusivamente en el almacenamiento de caracteres en la pila. En efecto, podemos ver que las transiciones del tipo 2 (transiciones 2-4 del ejemplo), lo que hacen es reemplazar en la pila una variable por la cadena que aparece en el lado derecho de la regla correspondiente. Dado que la (nica) transicin de tipo 1 (transicin 1 u o o del ejemplo) coloca el s mbolo inicial en la pila, a continuacin lo que hacen las reglas de o tipo 2 es realmente efectuar toda la derivacin dentro de la pila de la palabra de entrada, o reemplazando un lado izquierdo de una regla por su lado derecho. Una vez hecha la derivacin o de la palabra de entrada, la cual estar dentro de la pila, sin haber an gastado un solo a u caracter de la entrada podemos compararla caracter por caracter con la entrada, por medio de las transiciones de tipo 3. Existe sin embargo un problema tcnico: si observamos la corrida para la palabra abcba, e nos daremos cuenta de que no estamos aplicando las reglas en el orden descrito en el prrafo a anterior, esto es, primero la transicin del grupo 1, luego las del grupo 2 y nalmente las del o grupo 3, sino que ms bien en la cuarta l a nea de la tabla se consume un caracter a (aplicacin o de una transicin del grupo 3) seguida de la aplicacin de una transicin del grupo 2. Esto o o o no es casualidad; lo que ocurre es que las variables no pueden ser reemplazadas por el lado derecho de una regla si dichas variables no se encuentran en el tope de la pila. En efecto, recurdese que los AP solo pueden accesar el caracter que se encuentra en el tope de la pila. e Por esto, se hace necesario, antes de reemplazar una variable por la cadena del lado derecho de una regla, desenterrar dicha variable hasta que aparezca en el tope de la pila, lo cual puede hacerse consumiendo caracteres de la pila (y de la entrada, desde luego) mediante la aplicacin de transiciones del tipo 3. o De la construccin del AP que hemos descrito, conclu o mos con la siguiente proposicin: o

S w ssi [[p, w, ]]

M (G)

[[q, , ]]

5.6. COMPILADORES LL

155

ANALIZADOR LEXICO ANALIZADOR SINTACTICO

GENERADOR DE CODIGO

TABLA DE SIMBOLOS

Figura 5.5: Diagrama de un compilador donde M (G) denota al AP construido a partir de la gramtica G por el procedimiento a recin descrito. e Todav nos queda por probar que para todo AP hay una gramtica equivalente. A este a a respecto remitimos al lector a la referencia [10]. La equivalencia de los AP y de las GLC permite aplicar todas las propiedades de los LLC para resolver problemas de diseo de AP. n

5.6.

Compiladores LL

El mtodo que hemos visto para obtener un AP a partir de una GLC puede ser consie derado como una manera de construir un compilador para el lenguaje correspondiente a la GLC dada. De una manera muy general, un compilador como los que se usan para traducir un lenguaje de programacin al lenguaje de mquina est compuesto por las partes que se o a a ilustran en la gura 5.5. Sus principales partes son: Un analizador lxico, que recibe los caracteres del archivo de entrada, y entrega los llae mados tokens, que representan los elementos del lenguaje tales como las palabras claves (como begin, integer, etc.), los operadores (tales como +), los identicadores propuestos por el usuario, y otros elementos. Generalmente varios caracteres corresponden a un slo token. As los dems componentes del compilador ya no o , a consideran la entrada como una secuencia de caracteres, sino como una secuencia de tokens. Un benecio adicional del analizador lxico es que ltra caracteres intie u les desde el punto de vista de la traduccin que se quiere hacer, como por ejemplo o los comentarios del programador. El analizador lxico puede ser considerado como un e autmata con salida (como los autmatas de Moore y de Mealy de la seccin 2.7), y son o o o muchas veces construidos a partir de la denicin de tokens mediante Expresiones o Regulares.

156

CAP ITULO 5. AUTOMATAS DE PILA Un analizador sintctico, que toma como entrada los tokens y verica que su secuena cia corresponde a la denicin del lenguaje dada por medio de una gramtica libre de o a contexto. Mediante el uso de herramientas adecuadas, como el generador de compiladores yacc [9], es posible producir un analizador sintctico a partir de la denicin a o del lenguaje mediante una gramtica. a Un generador de cdigo, que guiado por el analizador sintctico, produce realmente o a el resultado de la compilacin, que es la traduccin del lenguaje fuente al lenguaje o o deseado (generalmente lenguaje ensamblador). Una tabla de smbolos, que registra las deniciones de identicadores dadas por el usuario en su programa, y las utiliza posteriormente para resolver las referencias que se hacen a ellos en el programa a traducir.

Para una descripcin detallada de los compiladores y de las tcnicas usadas para conso e truirlos, vase la referencia [1]. e

5.6.1.

Principio de previsin o

Desde luego, para tener un verdadero compilador se requiere que se trate de un AP determinista, pues ser inaceptable que un mismo compilador diera resultados diferentes al a compilar varias veces un mismo programa. Una manera de forzar a que un AP no determinista se vuelva determinista consiste en proveer un mtodo para decidir, cuando hay varias transiciones aplicables, cual de ellas va a e ser efectivamente aplicada. En el caso de los compiladores esto se puede hacer mediante el llamado principio de previsin. o El principio de previsin consiste en que podamos observar un caracter de la palabra de o entrada que an no ha sido le (esto es llamado en ingls lookahead, mirar hacia adelanu do e te). El caracter le por adelantado nos permite en algunas ocasiones decidir adecuadamente do cual de las transiciones del AP conviene aplicar. Ejemplo.- Supngase la GLC con reglas S aSb, S , que representa el lenguaje o {a b }. La construccin del AP correspondiente es directa y la dejamos como ejercicio. o Ahora bien, teniendo una palabra de entrada aabb, la traza de ejecucin comenzar de la o a manera siguiente:
n n

Estado Falta leer Pila p aabb q aabb S En este punto, no se sabe si reemplazar en la pila S por o por aSb, al ser transiciones aplicables tanto ((q, , S), (q, )) como ((q, , S), (q, aSb)). En cambio, si tomamos en cuenta

5.6. COMPILADORES LL

157

que el siguiente caracter en la entrada ser a, es evidente que no conviene reemplazar S a por , pues entonces la a de entrada no podr ser cancelada. Entonces hay que aplicar la a transicin ((q, , S), (q, aSb)). Continuamos la ejecucin: o o Estado ... q q q q Falta leer Pila ... ... aabb aSb abb Sb abb aSbb bb Sbb

Al ver que el siguiente caracter de entrada ser una b, nos damos cuenta de que no a conviene reemplazar en la pila S por aSb, pues la b de la entrada no podr cancelarse contra a la a de la pila. Entonces aplicamos la otra transicin disponible, que es ((q, , S), (q, )). La o ejecucin contina: o u Estado ... q q q Falta leer Pila ... ... bb bb b b

con lo cual la palabra de entrada es aceptada. Resumiendo, en este ejemplo la regla para decidir sobre la transicin a aplicar, basndose en la previsin del siguiente caracter a leer, o a o fue esta: si el siguiente caracter es a, reemplazar en la pila S por aSb, y si es b, reemplazar S por . Esta regla puede ser representada mediante la siguiente tabla: a aSb b

En esta tabla, las columnas (a partir de la segunda) se reeren al siguiente caracter que ha de ser le (la previsin), habiendo una columna marcada por si en vez de haber un do o caracter siguiente se encuentra el n de la palabra. La primera columna contiene la variable que se va a reemplazar en la pila por lo que indique la celda correspondiente en la tabla. 5 A un AP aumentado con su tabla de previsin se le llama compilador LL por las siglas o en ingls Left to right Leftmost derivation, porque efectivamente dentro de la pila se lleva e a cabo una derivacin izquierda. El lector puede comprobar esto en el ejemplo anterior. A o un compilador LL que considera una previsin de un caracter, como lo que hemos visto, se o
5

Ejercicio: hacer nuevamente la traza de ejecucin para la palabra abb, utilizando la tabla de previsin. o o

158

CAP ITULO 5. AUTOMATAS DE PILA

le llama LL(1); en general, un compilador de tipo LL que toma en cuenta una previsin o de k caracteres es LL(k). La razn por la que es necesario a veces hacer una previsin de ms de un caracter es poro o a que para ciertas gramticas no es suciente una prediccin de un solo caracter. Considrese, a o e por ejemplo, la gramtica con reglas S aSb, S ab, que tambin genera el lenguaje a e n n {a b }. Hacemos el inicio de la ejecucin del AP correspondiente: o Estado Falta leer Pila p aabb q aabb S En este punto, reemplazando S por aSb o por ab de todos modos se produce la a de la previsin, por lo que dicha prediccin no establece ninguna diferencia entre las transiciones o o ((q, , S), (q, aSb)) y ((q, , S), (q, ab)). Este ejemplo en particular puede sacarse adelante haciendo una transformacin de la gramtica, conocida como factorizacin izquierda, que o a o consiste en aadir a la gramtica una variable nueva (sea por ejemplo A), que produce lo n a que sigue despus del caracter comn, en este caso a. As la gramtica queda como (sus e u , a reglas): 1. S aA 2. A Sb 3. A b Con esta gramtica ya es posible decidir entre las distintas transiciones considerando una a previsin de un solo caracter, como se aprecia en la siguiente ejecucin del AP correspono o diente: Estado p q q q q q q q q q Falta leer Pila Comentario aabb aabb S aabb aA abb A Se decide reemplazar A por Sb. abb Sb abb aAb bb Ab Se decide reemplazar A por b. bb bb b b

La tabla de previsin entonces debe haber sido: o

5.6. COMPILADORES LL a aA Sb b b

159

S A

Ahora veremos de una manera ms sistemtica cmo construir la tabla de previsin. a a o o Supongamos una GLC sin producciones vac lo cual prcticamente no representa una as a prdida de generalidad. Necesitamos hacer las siguientes deniciones: e Denicin.- Supongamos una gramtica (V, , R, S). El operador f irst : V + 2 , o a cuyo argumento es una cadena de s mbolos (al menos uno) que puede contener variables y constantes, y cuyo resultado es un conjunto de caracteres, obtiene todos los caracteres con los que puede empezar una cadena derivable a partir de su argumento. Por ejemplo, para la GLC con reglas S aA, A Sb, A b, nos damos cuenta de que las cadenas que se pueden derivar a partir de S tienen que empezar con a, porque lo unico que puede producir S es aA, que empieza con a. Por ello, f irst(S) = {a}. f irst() se calcula sistemticamente a partir de las siguientes propiedades: a

Si = , , entonces f irst() = {} Si = xv, x (V ), v (V ) , f irst() = f irst(x) Si A V , f irst(A) = f irst(1 ) . . . f irst(n ), para todas las reglas A i , para i = 1 . . . n.

Ejemplos.- Seguimos utilizando la gramtica S aA, A Sb, A b. a f irst(aA) = f irst(a) = {a}, aplicando la segunda y luego primera regla. f irst(Ab) = f irst(A) por la segunda regla; f irst(A) = f irst(b) f irst(Sb) por la tercera regla, y f irst(Sb) = f irst(S) = f irst(aA) = f irst(a) = {a}, por lo que nalmente f irst(Ab) = {a, b}. Ahora estamos en condiciones de dar un procedimiento para construir la tabla de previsin: supongamos que estamos tratando de llenar una celda de la tabla donde el rengln o o corresponde a la variable X y la columna a la constante . Si hay en la gramtica una regla a X donde f irst(), el lado derecho se pone en dicha celda:

... ... X

...

... ... ...

... ...

160

CAP ITULO 5. AUTOMATAS DE PILA

Por ejemplo, con este procedimiento se obtiene la siguiente tabla de previsin para la o gramtica con reglas S aA, A Sb, A b: a

S A

a aA Sb

b b

Esta tabla es idntica a la que hab e amos supuesto anteriormente para la misma gramtica. a Puede ocurrir que en una celda de la tabla de previsin queden los lados derechos de o varias reglas; esto es, si la celda corresponde a la columna de la constante y al rengln de o la variable X, y hay dos reglas distintas X y X , donde y , entonces tanto como beta tendr derecho a estar en esa celda de la tabla. Cuando esto ocurre, an simplemente se concluye que la tabla no se puede construir y que la gramtica no es del tipo a LL(1).

5.7.

Compiladores LR(0)

Como se puede apreciar en toda la seccin precedente, los compiladores de tipo LL o son esencialmente predictores que tratan de llevar a cabo la derivacin en la pila, siempre o reemplazando las variables por lo que stas deban producir. Pero an en gramticas bastante e u a sencillas, se vuelve demasiado dif adivinar, an con la ayuda de la previsin, qu regla de cil u o e reemplazo hay que aplicar a una variable en el tope de la pila. Por esto, se han propuesto otros compiladores, llamados LR (Left to right Rightmost derivation), que no tratan de adivinar una derivacin, sino que tratan de ir reconociendo cadenas que correspondan o al lado derecho de una regla gramatical, para reemplazar por el lado izquierdo. As estos , compiladores encuentran la derivacin en reversa, reemplazando lados derechos de reglas o por lados izquierdos, hasta llegar eventualmente al s mbolo inicial. Entonces, los compiladores LR recorren el rbol de derivacin de abajo hacia arriba, por lo que se llaman tambin a o e compiladores ascendentes. De hecho, el reconocimiento del lado derecho de una regla no se hace respecto a la entrada, sino respecto al tope de la pila, pero para esto se necesita primero haber pasado caracteres de la entrada a la pila. Las dos operaciones bsicas de un compilador LR son: a

Desplazamiento que consiste en pasar un caracter de la entrada al tope de la pila, Reduccin que consiste en reemplazar en el tope de la pila el lado derecho de una regla o gramatical por el lado izquierdo de la misma. 6
6

De hecho se toma el reverso del lado derecho de una regla, ver ms adelante. a

5.7. COMPILADORES LR(0)

161

Estas operaciones se aplican, en un orden adecuado, hasta que en la pila quede slo o el s mbolo inicial. Desde luego, la dicultad est en encontrar las secuencias de desplazaa mientos y reducciones que llevan a la situacin nal deseada. La idea de cmo combinar los o o desplazamientos con las reducciones se comprende en el siguiente ejemplo: Supongamos la gramtica para el lenguaje {an bn } con las reglas S aA, A Sb, A b. Dada la palabra a aabb, se tendr una traza de ejecucin como sigue: a o

Falta leer Pila aabb a abb bb aa b baa Aaa b b Sa bSa Aa S

Accin o Desplazar Desplazar Desplazar Reducir por Reducir por Desplazar Reducir por Reducir por Exito

Ab S aA A Sb S aA

Obsrverse, en el quinto rengln de la tabla, que en el tope de la pila est la cadena Aa, e o a mientras que el lado derecho de la regla que corresponde es aA. Vemos as que lo que se saca de la pila es el lado derecho de la regla, pero volteado de izquierda a derecha; tcnicamente e decimos que el reverso del lado derecho de una regla coincide con el tope de la pila. Esto se reeja en las deniciones que damos en seguida. En este ejemplo en particular es relativamente fcil discernir cuando hacer cada una de las a acciones. Sin embargo, en otros ejemplos es mucho ms dif determinar qu accin llevar a cil e o a cabo; existe un procedimiento para construir una tabla de previsin para compiladores o LR(1), que puede ser consultado en la referencia [1]. Ahora formalizaremos el procedimiento para construir el AP de tipo LR a partir de una GLC (V, , R, S):

Hay 4 estados: i (inicial), f (nal), p y q. Hay una transicin ((i, , ), (p, #)) . Esta transicin coloca un marcador # en o o el fondo de la pila, para luego reconocer cuando la pila se ha vaciado. Se tienen transiciones ((p, , ), (p, )) para cada . Estas transiciones permiten hacer la accin de desplazar. o Hay transiciones ((p, , R ), (p, A)) para cada regla A R, donde R es el reverso de , esto es, volteado de izquierda a derecha. Estas transiciones efectan u las reducciones.

162

CAP ITULO 5. AUTOMATAS DE PILA

/e/ /e/ e/e/# e/ Aa/ e/ /


Figura 5.6: AP de tipo LR Tenemos una transicin ((p, , S), (q, )) ; esta transicin reconoce cuando se o o lleg al s o mbolo inicial. Finalmente hay una transicin ((q, , #), (f, )) ; esta transicin se asegura de que o o se haya vaciado la pila antes de aceptar la palabra. Este procedimiento es directo. Por ejemplo, en la gura 5.6 se representa el autmata o correspondiente a la GLC que hemos estado considerando, esto es, S aA,A Sb, A b. Ms que en la construccin del AP, las dicultades pueden estar en el uso del AP, pues al ser a o ste no determinista, en ciertas situaciones puede presentarse un conicto, en que no se sepa e si desplazar un caracter ms a la pila o bien reducir por alguna regla. Y an en este caso a u puede haber varias reducciones posibles. Por ejemplo, sugerimos hacer la traza de ejecucin o en el AP de la gura 5.6 de la palabra aabb. Una posible solucin a estos conictos puede ser adoptar una pol o tica en que por ejemplo la reduccin tenga preferencia sobre el desplazamiento. Esto funciona adecuadao mente en el ejemplo recin presentado, pero no funciona en otros casos. En el caso general, e es necesario usar tcnicas ms complicadas, que incluyen previsin de caracteres (esto es, e a o LR(1), LR(2), etc.); dichas tcnicas pueden consultarse en la referencia [1]. e

e/ /e e/bS/

e/#/e

5.8.

Ejercicios

1. Sea un autmata de pila M = (K, , , , s, F ) que acepta el lenguaje de parntesis o e bien formados, incluyendo los parntesis redondos (, ), as como los parntesis e e cuadrados [, ], es decir: L(M ) = {e, (), [], ()[], [](), (()), ([]), [()], [[]], . . .}. a) Dibujar el diagrama del AP que acepta el lenguaje descrito. b) Representar formalmente, dando K, , , , s y F . c) Dar un clculo producido por la palabra errnea ([]], con las columnas Estado, a o Por leer y pila, como en los ejemplos dados.

5.8. EJERCICIOS 2. Proponga un autmata de pila para el lenguaje: o {ai bj ck | i = j k}


7

163

3. Considere el lenguaje en {a, b} en que las palabras tienen la misma cantidad de as que de bs, que es generado por la siguiente gramtica: a 1.- S aSb 2.- S bSa 3.- S SS 4.- S a) Disear directamente (sin convertir a partir de una gramtica) un AP que acepte n a dicho lenguaje, usando una pila que almacene el exceso de as o de bs (basta con dibujar el diagrama de estados). b) Construir otro AP, convirtiendo la GLC dada a AP de tipo LL. c) Lo mismo que el anterior, para un AP de tipo LR. d ) Para cada uno de los incisos anteriores, hacer una traza de ejecucin para la o palabra abbaba, en forma de una tabla, usando las columnas estado, por leer, pila, y accin aplicada. o 4. Considere el lenguaje {an bm cp dq | n + m = p + q} a) Proponga un AP que lo acepte. b) Suponga la siguiente GLC (sus reglas) que genera dicho lenguaje: 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) <AD> <AD> <AD> <AD> <BD> <BD> <BD> <BC> <BC> <AC> <AC> <AC> a <AD> d b <BD> d e a <AC> c b <BD> d b <BC> c e b <BC> c e a <AC> c b <BC> c e

El s mbolo inicial es <AD>. Pruebe la correccin de la GLC por induccin sobre o o la longitud de la derivacin. o
Ayuda: al despejar en la ecuacin la j el problema parece ser ms fcil, pues permite aplicar un diseo o a a n modular.
7

164

CAP ITULO 5. AUTOMATAS DE PILA c) Obtenga un AP de tipo LL(1) a partir de esta gramtica a d ) Lo mismo, para un AP de tipo LR(0). e) Para los dos incisos anteriores, obtener una traza de ejecucin, en forma de tabla o con columnas estado, por leer, pila y accin, para la palabra de entrada o aaacdd.

5. Para el AP de la gura 5.6, y la palabra de entrada aabb: a) Construir una traza de ejecucin, con columnas estado, falta leer, pila, y o accin. o b) Localizar los renglones de la tabla anterior donde se presenta un conicto, e indicar si es de desplazamiento contra reduccin o bien de una reduccin contra otra o o reduccin. o 6. Considere el lenguaje L = {an bn+m cm } a) Proponga una GLC que genere L b) Elimine de la gramtica las producciones vac y las intiles, si las hay a as u c) Pruebe por induccin que la gramtica es correcta o a d ) Obtenga el AP correspondiente, del tipo LL e) Obtenga la tabla de previsin LL(1), calculando primero el f irst de cada vao riable de la gramtica a f ) Obtenga un AP de tipo LR para la gramtica a g) Indique si hay o no conictos shift-reduce o reduce-reduce en el AP del inciso anterior, utilizando la traza de ejecucin para la palabra de entrada abbbcc. Es o posible escribiendo resolver los conictos con los criterios de preferir reduce a shift, para los conictos shift-reduce, y en caso de conicto reduce-reduce preferir la transicin que reduzca ms s o a mbolos? 7. Completar y detallar formalmente el procedimiento de combinacin modular de AP o para la concatentacin de lenguajes, delineado en la seccin 5.2.1. o o 8. Formalice el procedimiento para obtener un AP que acepte la unin de los lenguajes o aceptados respectivamente por (K1 , 1 , 1 , 1 , s1 , F1 ) y (K2 , 2 , 2 , 2 , s2 , F2 ). 9. Considere una variante de los autmatas pushdown, que podr o amos llamar autmatas o de la, en los que en vez de la pila, que se accesa en orden UEPS (LIFO), se tiene una la que se accesa en orden PEPS (FIFO). a) D una denicin formal de los autmatas de la. e o o b) Pruebe que el lenguaje {an bn } es aceptado por algn autmata de la. u o c) Piensa que los autmatas de pila y de la son equivalentes? Justique de manera o informal.

5.8. EJERCICIOS

165

10. Considere una variante de los autmatas de pila, los AP por estado nal (APEF), o en los que para aceptar una palabra basta con que al nal de sta el autmata se e o encuentre en un estado nal, sin necesidad de que la pila est vac e a. a) D una denicin formal de los APEF, incluyendo la denicin de lenguaje acepe o o tado. b) Proponga un APEF que acepte el lenguaje {an bn }. 11. Proponga mquinas lo menos poderosas que sea posible para que acepten los siguientes a lenguajes: a) {(), [], <>, ([]), [< ()(<>) > ()], . . .} b) {(), (()), ((())), (((()))), . . .} c) {(), ()(), ()()(), . . .} 12. Las mquinas reales tienen siempre l a mites a su capacidad de almacenamiento. As , la pila innita de los autmatas de pila puede ser limitada a un cierto tamao jo. o n Suponga una variante de los AP, los APn, en que la pila tiene un tamao jo n. n a) Proponga una denicin de APn y de palabra aceptada por un APn. o b) Pruebe (constructivamente) que los APn son equivalentes a los AF. (Ayuda: se puede asociar a cada par (q, 1 2 . . . n ), donde q es un estado del APn y 1 2 . . . n es el contenido de la pila, un estado del AF). c) Pruebe su mtodo con el APn de pila de tamao 2 (caben dos caracteres), con e n relacin de transicin como sigue: = {((q0 , a, e), (q0 , a)), ((q0 , b, a), (q1 , e)), o o (q1 , b, a), (q1 , e))}, donde q0 es inicial y q1 es nal.

166

CAP ITULO 5. AUTOMATAS DE PILA

Parte III Mquinas de Turing y sus lenguajes a

167

Cap tulo 6 Mquinas de Turing a


As como en secciones anteriores vimos cmo al aadir al autmata nito bsico una o n o a pila de almacenamiento auxiliar, aumentando con ello su poder de clculo, cabr ahora a a preguntarnos qu es lo que habr que aadir a un autmata de pila para que pudiera e a n o analizar lenguajes como {an bn cn }. Partiendo del AP bsico (gura 6.1(a)), algunas ideas a podr ser: an 1. Aadir otra pila; n 2. Poner varias cabezas lectoras de la entrada; 3. Permitir la escritura en la cinta, adems de la lectura de caracteres. a Aunque estas ideas y otras an ms fantasiosas pueden ser interesantes, vamos a enfocar u a nuestra atencin a una propuesta en particular que ha tenido un gran impacto en el desarrollo o terico de la computacin: la Mquina de Turing. o o a A. Turing propuso [24] en los aos 30 un modelo de mquina abstracta, como una n a extensin de los autmatas nitos, que result ser de una gran simplicidad y poder a la o o o o vez. La mquina de Turing es particularmente importante porque es la ms poderosa de a a todas las mquinas abstractas conocidas (esto ultimo ser discutido en la seccin 6.5). a a o

6.1.

Funcionamiento de la mquina de Turing a

La mquina de Turing (abreviado MT, ver gura 6.1(b)) tiene, como los autmatas que a o hemos visto antes, un control nito, una cabeza lectora y una cinta donde puede haber caracteres, y donde eventualmente viene la palabra de entrada. La cinta es de longitud innita hacia la derecha, hacia donde se extiende indenidamente, llenndose los espacios con a 169

170

CAP ITULO 6. MAQUINAS DE TURING

(a) Autmata de pila o

(b) Mquina de Turing a

Figura 6.1: el caracter blanco (que representaremos con ). La cinta no es innita hacia la izquierda, por lo que hay un cuadro de la cinta que es el extremo izquierdo, como en la gura 6.1(b). En la MT la cabeza lectora es de lectura y escritura, por lo que la cinta puede ser modicada en curso de ejecucin. Adems, en la MT la cabeza se mueve bidireccionalmente o a (izquierda y derecha), por lo que puede pasar repetidas veces sobre un mismo segmento de la cinta. La operacin de la MT consta de los siguientes pasos: o 1. Lee un caracter en la cinta 2. Efecta una transicin de estado u o 3. Realiza una accin en la cinta o Las acciones que puede ejecutar en la cinta la MT pueden ser: Escribe un s mbolo en la cinta, o Mueve la cabeza a la izquierda o a la derecha Estas dos acciones son excluyentes, es decir, se hace una o la otra, pero no ambas a la vez. La palabra de entrada en la MT est escrita inicialmente en la cinta, como es habitual a en nuestros autmatas, pero iniciando a partir de la segunda posicin de la cinta, siendo el o o primer cuadro un caracter blanco. Como la cinta es innita, inicialmente toda la parte de la cinta a la derecha de la palabra de entrada est llena del caracter blanco ( ). a

q3

q2

q1

q0

a a

6.1. FUNCIONAMIENTO DE LA MAQUINA DE TURING


b/b /R

171

q0

q1

a/R

Figura 6.2: MT que acepta palabras que empiezan con a Por denicin, al iniciar la operacin de la MT, la cabeza lectora est posicionada en el o o a caracter blanco a la izquierda de la palabra de entrada, el cual es el cuadro ms a la izquierda a de la cinta. Decimos que en la MT se llega al nal de un clculo cuando se alcanza un estado a especial llamado halt en el control nito, como resultado de una transicin. Representaremos o o al halt por h. 1 Al llegar al halt, se detiene la operacin de la MT, y se acepta la palabra de entrada. As en la MT no hay estados nales. En cierto sentido el halt ser entonces el , a unico estado nal, slo que adems detiene la ejecucin. o a o Cuando queremos que una palabra no sea aceptada, desde luego debemos evitar que la MT llegue al halt. Podemos asegurarnos de ello haciendo que la MT caiga en un ciclo innito (ver ejemplos adelante). El lenguaje aceptado por una MT es simplemente el conjunto de palabras aceptadas por ella. 2 Al disear una MT que acepte un cierto lenguaje, en realidad diseamos el autmata n n o nito que controla la cabeza y la cinta, el cual es un autmata con salida (de Mealy, ver o seccin 2.7). As podemos usar la notacin grca utilizada para aquellos autmatas para o , o a o indicar su funcionamiento. En particular, cuando trazamos una echa que va de un estado p a un estado q con etiqueta /L, quiere decir que cuando la entrada al control nito (esto es, el caracter le por la cabeza de la MT) es , la cabeza lectora hace un movimiento a do la izquierda, indicada por el caracter L (left, en ingls); similarmente cuando se tiene una e echa con /R el movimiento es a la derecha. Cuando la echa tiene la etiqueta /, donde es un caracter, entonces la accin al recibir el caracter consiste en escribir el caracter o en la cinta. Con estos recursos es suciente para disear algunas MT, como en el siguiente n ejemplo. Ejemplo.- Disear (el control nito de) una MT que acepte las palabras en {a, b} que n comiencen con a. La solucin se muestra en la gura 6.2. Si la primera letra es una a, la o palabra se acepta, y en caso contrario se hace que la MT caiga en un ciclo innito, leyendo y escribiendo b. Ntese que la accin inmediatamente antes de caer en el halt es irrelevante; o o igual se pod haber puesto a/a o a/R como etiqueta de la echa. a
No traduciremos el trmino halt, que en ingls signica detener, porque es tradicional usar exactamente e e este nombre en mquinas de Turing. a 2 Ms adelante daremos deniciones formales. a
1

172

CAP ITULO 6. MAQUINAS DE TURING


b/R b/b

q0

/R

q1

/L

q2

a/a

a/R

Figura 6.3: MT que acepta palabras que terminan con a

Ejemplo.- Disear una MT que acepte las palabras en {a, b} que terminen con a. Aunque n este ejemplo parece bastante similar al precedente, en realidad es ms complicado, pues para a ver cual es la ultima letra, hay que ir hasta el blanco a la derecha de la palabra, luego regresar a la ultima letra y vericar si es una a. Una solucin se muestra en la gura 6.3. o Ejemplo.- Probar que hay lenguajes que no son libres de contexto, pero que pueden ser aceptados por una mquina de Turing. Proponemos el lenguaje an bn cn , que se sabe que no a es LLC. Ahora construiremos una MT que lo acepte. La estrategia para el funcionamiento de dicha MT consistir en ir haciendo pasadas por la palabra, descontando en cada una de a ellas una a, una b y una c; para descontar esos caracteres simplemente los reemplazaremos por un caracter . Cuando ya no encontremos ninguna a, b o c en alguna pasada, si queda alguna de las otras dos letras la palabra no es aceptada; en caso contrario se llega a halt. Es util, antes de emprender el diseo de una MT, tener una idea muy clara de cmo se quiere n o que funcione. Para eso se puede detallar el funcionamiento con algn ejemplo representativo, u como en la tabla siguiente, para la palabra aabbcc. La posicin de la cabeza se indica por el o s mbolo .

6.2. FORMALIZACION DE LA MT a a ... ... ... a a a a a a b b b b b ... ... ... b b b b b b c c c c c c c c c c c c

173

... b ... b b ...

a a

c c

Lo que falta por hacer es disear los estados de la MT, lo cual es relativamente simple y n que dejamos como ejercicio (ver seccin de ejercicios). o

6.2.

Formalizacin de la MT o

Habiendo en la seccin precedente hecho un recuento intuitivo de las caracter o sticas fundamentales de la MT, ahora procedemos a su formalizacin, esto es, a su modelizacin o o matemtica en trminos de la teor de conjuntos. a e a Una MT es un qu ntuplo (K, , , , s) donde:

K es un conjunto de estados tal que h K; es el alfabeto de entrada, donde es el alfabeto de la cinta, donde s K es el estado inicial; : (K {h} ) K ( {L, R}) es la funcin de transicin. o o ; / y

174

CAP ITULO 6. MAQUINAS DE TURING

La expresin de la funcin de transicin parece algo complicada, pero puede entenderse o o o de la siguiente manera: la funcin de transicin del control nito debe considerar como o o entradas el estado actual, que es un elemento de K pero que no puede ser h as como el caracter le en la cinta, que es elemento de . Por eso a la izquierda de la echa aparece do la expresin : (K {h} ). Luego, el resultado de la funcin de transicin debe incluir o o o el siguiente estado, que es elemento de K. Otro resultado de la funcin de transicin es la o o accin a ejecutar por la MT, que puede ser una escritura o un movimiento a la izquierda o o a la derecha. La accin mover cabeza a la izquierda se representa por el s o mbolo L, y similarmente R para la derecha. En el caso de la escritura, en vez de usar un s mbolo o comando especial, simplemente se indica el caracter que se escribe, el cual es un elemento de . Desde luego, para que no haya confusin se requiere que ni L ni R estn en . Resumiendo, o e el resultado de la funcin de transicin debe ser un elemento de K ( {L, R}). o o As si (q, a) = (p, b), donde b , esto quiere decir que estando la MT en el estado q , con la cabeza lectora sobre un caracter a, la funcin de transicin enviar al autmata a un o o a o estado p, y adicionalmente escribir el caracter b. Similarmente si (q, a) = (p, L), la cabeza a de la MT har un movimiento a la izquierda adems de la transicin de estado. a a o Por ejemplo, sea la MT siguiente: K = {s, h}, (slo est el estado inicial, adems del o a a halt), = {a}, = {a, }, (s, a) = (s, R), (s, ) = (h, R). Puede verse por la funcin de o transicin que esta MT ejecuta un ciclo repetitivo en que mueve la cabeza hacia la derecha o en tanto siga leyendo un caracter a, y se detiene (hace halt) en cuanto llega a un blanco. Ntese que, puesto que es una funcin, en principio debe tenerse por cada estado y o o cada caracter una transicin. Esto quiere decir que cada estado debe tener una cantidad o de echas de salida igual a ||. Por ejemplo, si = { , a, b}, y K = {q, h}, entonces debe haber echas de salida de q con a, de q con b y tambin de q con . 3 En la prctica, sin e a embargo, una gran cantidad de echas tiende a hacer menos comprensible un diagrama, por lo que solamente incluiremos las echas necesarias, suponiendo en consecuencia que las dems echas pueden tener una salida cualquiera, sin afectar esto el funcionamiento de la a MT. Por ejemplo, a partir del estado inicial podemos suponer, sin arriesgarnos, que no es posible encontrar ms que el caracter blanco, por lo que no tiene caso dibujar echas del a estado inicial con a, con b, etc. 4

6.2.1.

Conguracin o

Como en otros autmatas que hemos visto en secciones anteriores, en las MT la conguo racin resume la situacin en que se encuentra la MT en cualquier punto intermedio de un o o clculo, de manera tal que con slo las informaciones contenidas en la conguracin podamos a o o reconstruir dicha situacin y continuar el clculo. o a
Ntese que h es una excepcin, pues no debe tener ninguna echa de salida. o o Desde luego, si se regresa al estado inicial despus de haber ejecutado otras transiciones, s ser posible e a encontrar otros caracteres.
4 3

6.2. FORMALIZACION DE LA MT

175

Las informaciones necesarias para resumir la situacin de una MT en medio de un clculo o a son: Estado en que se encuentra la MT Contenido de la cinta Posicin de la cabeza o Ahora el problema es cmo representar formalmente cada uno de los tres componentes de o la conguracin, tratando de hacerlo en la forma ms similar posible a como representamos o a la conguracin para otros tipos de autmatas. o o No hay problema con el estado en que se encuentra la MT, que es directamente un elemento de K. Respecto al contenido de la cinta, existe la dicultad de que como es innita, no podemos representarla toda por una cadena de caracteres, que siempre ser de tamao a n nito. Vamos a tomar la solucin de tomar en cuenta unicamente la parte de la cinta hasta o antes de donde empieza la sucesin innita de blancos, pues esta ultima realmente no contiene o ninguna informacin util. Por ejemplo, en la gura 6.4(a) dicha parte de la cinta es a o b b a b. El siguiente problema es cmo caracterizar la posicin de la cabeza lectora. Recordemos o o la solucin que hab o amos adoptado para los AF y AP, en que representbamos de una vez a el contenido de la cinta y la posicin de la cabeza limitndose a representar con una cadena o a lo que falta por leer de la palabra esto es, tirando a la basura la parte a la izquierda de la cabeza lectora. El problema es que esta solucin no funciona, pues en el caso de las MT o hay movimiento de la cabeza a la izquierda, por lo que los caracteres a la izquierda de la cabeza podr eventualmente ser le an dos de nuevo o hasta modicados. Otra solucin ser o a representar la posicin por un nmero entero que indicara la posicin actual con respecto o u o a alguna referencia. Sin embargo, adoptaremos la solucin consistente en dividir la cinta o dentro de la conguracin en tres pedazos: o La parte de la cinta a la izquierda de la cabeza, que es un elemento de . El cuadro en la posicin de la cabeza lectora, que es un elemento de . o La parte de la cinta a la derecha de la cabeza lectora, hasta antes de la sucesin de o blancos que se extiende indenidamente a la derecha. La parte a la derecha de la cabeza lectora es, desde luego, un elemento de , pero podemos hacer una mejor caracterizacin de ella considerando que el ultimo caracter de o ella no es blanco. As ser un elemento de ( { }). Sin embargo, hay un problema , a tcnico: esta expresin no incluye la cadena vac la cual puede producirse cuando todos e o a, los caracteres a la derecha de la cabeza son blancos. La solucin es simplemente aadir este o n

176

CAP ITULO 6. MAQUINAS DE TURING

...

...

(a)

(b)

Figura 6.4: Contenido de la cinta en una conguracin o

a a b

( { }) U {}
b a b a ...

Figura 6.5: Conguracin en MT o

caso, por lo que nalmente la parte a la derecha de la cabeza lectora es un elemento de ( { }) {}. Por ejemplo, la cinta de la gura 6.4(a) se representa con las cadenas de caracteres a , b y bab (parte izquierda, cuadro bajo la cabeza, y parte derecha, respectivamente), mientras que la cinta de la gura 6.4(b) ser representada por , y a b a b. Finalmente, la conguracin es un elemento de: o

K ( ( { }) {}

(Ver gura 6.5) Como en los AF y los AP, en las MT vamos a indicar las conguraciones encerradas entre dobles corchetes, como en [[q, aa, a, bb]], que indica que la MT en cuestin se encuentra en el o estado q, habiendo a la izquierda de la cabeza una cadena aa, bajo la cabeza una a, y a su derecha antes de la secuencia innita de blancos una cadena bb. Para simplicar an u ms la notacin, podemos indicar por un caracter subrayado la posicin de la cabeza lectora; a o o as en vez de tener cuatro componentes la conguracin tendr unicamente dos, como por o a ejemplo en [[q, aaabb]], que es equivalente al ejemplo que acabamos de dar.

6.2. FORMALIZACION DE LA MT

177

6.2.2.

Relacin entre conguraciones o


C2 que nos indica que la MT puede pasar

Vamos a denir una relacin binaria C1 o de la conguracin C1 a la conguracin C2 . o o

Denicin.- La relacin en C C donde C es el conjunto de conguraciones se dene o o por casos, de la siguiente manera: Caso escritura: [[p, w, a, u]] ssi (p, a) = (q, b), donde b Caso de movimiento a la izquierda, parte derecha no vac a: [[p, wd, a, u]] ssi (p, a) = (q, L), donde a = o bien u = [[q, w, d, au]] [[q, w, b, u]]

Caso de movimiento a la izquierda, parte derecha vac a: [[p, wd, , ]] ssi (p, ) = (q, L) Caso de movimiento a la derecha, parte derecha no vac a: [[p, w, a, du]] ssi (p, a) = (q, R) Caso de movimiento a la derecha, parte derecha vac a: [[p, w, a, ]] ssi (p, a) = (q, R) Ejemplos: Si (q1 , a) = (q2 , b), [[q1 , bba]] [[q2 , bbb]] Si (q1 , a) = (q2 , R), [[q1 , bab]] [[q2 , bab]] [[q1 , bab]] [[q2 , bab ]] Si (q1 , a) = (q2 , L), [[q1 , aabab]] [[q2 , aabab]] [[q1 , abb]] [[q2 , abb]] [[q1 , ab ]] [[q2 , ab ]] [[q, wa, , ]] [[q, wa, d, u]] [[q, w, d, ]]

178

CAP ITULO 6. MAQUINAS DE TURING

6.2.3.

Conguracin colgada o

En el caso de que la cabeza lectora se encuentre en el cuadro de la cinta ms a la izquierda, a y se trate de hacer un movimiento a la izquierda, se produce un error llamado conguracin o colgada, que tiene como consecuencia que la MT no pueda seguir funcionando, y desde luego no podr ser aceptada la palabra de entrada. a Formalmente, si tenemos una conguracin de la forma [[p, , a, u]] y la transicin es o o (p, a) = (q, L), no existe una conguracin C tal que [[p, , a, u]] C. o En general vamos a evitar el uso intencional de las conguraciones colgadas, de modo que si no queremos que una palabra sea aceptada, se har que la MT se cicle en vez de a colgarse.

6.2.4.

Clculos en MT a

Igual que en otros tipos de autmatas que hemos visto anteriormente, en las MT un o clculo es una secuencia C1 , C2 , . . . , Cn de conguraciones tal que Ci Ci+1 . Un clculo puede a a ser visto en trminos computacionales como una traza de ejecucin, que nos describe de una e o manera muy exacta la forma en que una MT responde ante una entrada en particular. Por ejemplo, sea la MT siguiente (dada ya como ejemplo anteriormente): K = {s}, = {a, }, (s, a) = (s, R), (s, ) = (h, ). Ante la conguracin [[s, a, a, aa]] se presenta el clculo o a siguiente:

[[s, aaaa]]

[[s, aaaa]]

[[s, aaaa]]

[[s, aaaa ]]

[[h, aaaa ]]

Se puede llegar de una conguracin Ci a Cj , para i j en cero o varios pasos; esto o se indica en forma compacta utilizando la cerradura reexiva y transitiva de la relacin , o denotada por , quedando Ci Cj .

6.2.5.

Palabra aceptada

Con las deniciones dadas ahora estamos en condiciones de denir formalmente las nociones de palabra aceptada y lenguaje aceptado: Denicin.- Una palabra w , es aceptada por una MT M si o [[s, , , w]]

[[h, , a, ]]

donde a, , , . Como se ve, el unico criterio para que la palabra de entrada w se acepte es que se llegue a halt en algn momento, independientemente del contenido nal u

6.3. MT PARA CALCULOS DE FUNCIONES

179

de la cinta, el cual es visto como basura. Por ejemplo, la MT del ultimo ejemplo acepta cualquier palabra de entrada. Decimos de que un lenguaje L es Turing-aceptable si hay alguna MT que da halt para toda entrada w L.

6.3.

MT para clculos de funciones a

Hasta el momento hemos visto las MT como analizadoras de palabras cuyo n es determinar si la palabra de entrada pertenece o no al lenguaje aceptado. Sin embargo, las MT tambin pueden ser utilizadas para calcular resultados u operaciones a partir de la entrada. e En vez de considerar como basura el contenido de la cinta al llegar al halt, podr amos verlo como un resultado calculado. Para poder interpretar sin ambigedad el contenido nal de la u cinta como resultado, vamos a requerir que cumpla con un formato estricto, caracterizado por los siguientes puntos: La palabra de salida no debe contener ningn caracter blanco ( ). u La palabra de salida comienza en el segundo caracter de la cinta, teniendo a su izquierda un blanco y a su derecha una innidad de blancos. La cabeza estar posicionada en el primer blanco a la derecha de la palabra de salida. a Se puede apreciar que el formato para la palabra de salida es muy similar al de la palabra de entrada, salvo que en la primera, la cabeza est posicionada en el caracter a la derecha a de la palabra. Ejemplo.- Supongamos la funcin reverse, que invierte el orden en que aparecen las letras o en la palabra de entrada; as reverse(aabb) = bbaa. Si inicialmente el contenido de la cinta , o es de la forma aabb . . ., donde el caracter subrayado indica la posicin de la cabeza, la cinta al nal debe quedar como: bbaa . . .. Es muy importante ceirse estrictamente a este formato, y no caer en ninguno de los n siguientes errores (frecuentes, desgraciadamente): Aparece algn espacio blanco dentro del resultado, como en la cinta bbaa ab . . .. u El resultado no est posicionado empezando en el segundo cuadro de la cinta, como en a bbaa . . .. La cabeza no est ubicada exactamente en el cuadro a la derecha del resultado, como a en la cinta bbaa . . ..

180

CAP ITULO 6. MAQUINAS DE TURING Aparece basura (caracteres no blancos) en la cinta, a la derecha o izquierda del b . . .. resultado, como en la cinta bbaa

Para precisar estas nociones, utilizamos la nocin formal de conguracin : Una MT o o calcula un resultado u a partir de una entrada w si:

[[s, , , w]]

[[h, u, , ]]

Como se sabe, las funciones en matemticas sirven precisamente para describir la relacin a o entre un resultado y una entrada. Podemos relacionar esta nocin con la denicin anterior o o de la manera siguiente: Una MT M calcula una funcin f : si para toda entrada o w, M calcula un resultado u tal que f (w) = u. Si hay una MT que calcula una funcin f , decimos que f es Turing-calculable. o Ejemplo.- Construir una mquina de Turing que reste dos nmeros naturales en unario, a u esto es, f (x, y) = x y. Desde luego, como las MT reciben un solo argumento, para realizar una funcin de dos argumentos como la resta en realidad se recibe un solo argumento que o contiene un s mbolo para separar dos partes de la entrada. Por ejemplo, la resta de 5 3 quedar indicada por la cadena 11111 111, lo que ser el argumento de entrada; desde a a luego, el resultado en este caso ser la cadena 11. La cabeza lectora al nal debe estar a posicionada en el blanco a la derecha del residuo. En caso de que el sustraendo sea mayor que el minuendo, el resultado es cero. A esta forma de resta sin resultados negativos se le llama a veces monus en vez de menos. La estrategia para construir esta MT ser ir descontando cada 1 del minuendo contra a otro 1 del sustraendo, reemplazando ambos por un caracter arbitrario sea . Cuando se termine el sustraendo, se borran los caracteres intiles de manera que queden slo los restos u o del minuendo. Para evitar tener que recorrer el residuo, descontamos caracteres del minuendo de derecha a izquierda. Resumiendo, tendr amos una secuencia de conguraciones de la cinta como las siguientes (la ultima l nea indica la conguracin en la que debe dar halt). o

6.4. PROBLEMAS DE DECISION 1 1 ... 1 1 1 ... 1 ... 1 ... 1 1 1 1 1 ... 1 1 1 ... ... ... 1 1 1 1

181

1 1 1

... 1 1 1 ... 1 ... ...

1 1

Dejamos como ejercicio hacer el diagrama de estados del control nito de esta MT (ver seccin de ejercicios). o

6.4.

Problemas de decisin o

Un caso particular de funciones es aquel en que el resultado slo puede ser s o no. Si o representamos el s con 1 y el no con 0, estamos considerando funciones g : {1, 0}. En este caso, la MT sirve para decidir si la entrada tiene una propiedad P o no la tiene. Por ejemplo, si la propiedad P consiste en que la entrada es de longitud par, para una palabra de entrada como aaba la salida seria 1, y para bab ser 0. a La MT correspondiente debe generar los clculos siguientes: a

[[s, , , w]] si |w| es par, y [[s, , , w]] si |w| es non.

[[h, 1, , ]] [[h, 0, , ]]

Un diseo para la MT que decide si una entrada en el alfabeto = {a, b} es de longitud n par aparece en la gura 6.6. La estrategia en este diseo es primero recorrer la cabeza al n

182

CAP ITULO 6. MAQUINAS DE TURING

a,b/R
2 4

/R
1

/L
5

/L
3

/0 /R 0/R
h 7

a,b/

/R /1
8

/L
6

a,b/

1/R
h

Figura 6.6: MT que decide si la entrada es de longitud par extremo derecho, y luego ir borrando los caracteres de entrada, de derecha a izquierda, y recordando mediante los estados 3 y 5 si la cantidad de letras es, hasta el momento, par o impar, respectivamente. Al terminar de borrar la palabra de entrada, segn que se haya u terminado en el estado 3 o 5, se escribe 1 o 0 en la cinta, y se llega a halt. Denicin.- Decimos que un lenguaje L es Turing-decidible si hay alguna MT que entrega o un resultado 1 si la entrada w est en L, y un resultado 0 en caso contrario. a Debe quedar claro que para que una MT entregue como resultado 1 o 0, es condicin o indispensable que la palabra de entrada haya sido aceptada. Esto tiene la consecuencia siguiente: Proposicin.- Un lenguaje es Turing-decidible solamente si es Turing-aceptable. o Si un lenguaje no es Turing-decidible se dice que es indecidible. Ms adelante veremos a lenguajes indecidibles.

6.4.1.

Relacin entre aceptar y decidir o

Las siguientes propiedades que relacionan Turing-decidible con Turing-aceptable son utiles para comprender mejor ambas nociones:

1. Todo lenguaje Turing-decidible es Turing-aceptable 2. Si L es Turing-decidible, Lc es Turing-decidible 3. L es decidible ssi L y Lc son Turing-aceptables

6.5. TESIS DE CHURCH

183

La prueba de 1 es muy sencilla, pues para decidir un lenguaje L, la MT debe primero que nada llegar al halt para toda palabra de w L, con lo que necesariamente acepta w. Tambin el punto 2 es sencillo, pues dada una MT M que decide el lenguaje L, producimos e una mquina M que decide Lc cambiando en M el resultado 1 por 0 y viceversa. a La prueba de 3 es ms complicada. De hecho no probaremos que si L y Lc son Turinga aceptables entonces L es decidido por alguna MT, sino ms bien que hay un procedimiento a mecnico para decidir L. Se supone que, por la llamada Tesis de Church, que veremos luego, a ambos enunciados son equivalentes. Supongamos que tenemos dos MT, M y M c , que aceptan respectivamente los lenguajes L y Lc . Ponemos a funcionar ambas mquinas en paralelo, a analizando ambas la misma palabra w. Ahora bien, si w L, eventualmente M llegar al a c c halt. Si w L, entonces w L , y en algn momento M se detendr. Ahora consideremos / u a una MT adicional M , que observa a M y a M c , y que si M se para, entrega una salida 1, mientras que si M c se para, entrega una salida 0. Es evidente que para toda palabra w, M decidir 1 o 0, por lo que el lenguaje es decidible. a

6.5.

Tesis de Church

Ha habido diversos intentos de encontrar otros modelos de mquinas u otros formalismos a que sean ms poderosos que las MT, en el mismo sentido que las MT son ms poderosas que a a los AF y los AP. (Decimos que una tipo de mquina MA es ms poderoso que un tipo MB a a cuando el conjunto de lenguajes aceptados por alguna mquina en MB es un subconjunto a propio de los aceptados por MA ). Por ejemplo, independientemente de Turing, Emil Post propuso an otro modelo de mquina abstracta, basada en la idea de un diagrama de ujo u a [12]. Tambin se han tratado de hacer extensiones a la MT, para hacerla ms poderosa. e a Por ejemplo, se propusieron MT no deterministas. Sin embargo, todos los intentos han sido infructuosos al encontrarse que dichas extensiones son equivalentes en poder de clculo a la a MT original [10]. El mismo A. Turing propuso, en la llamada Tesis de Turing, que todo aquello que puede ser calculado, podr ser calculado en una MT, y que no podr haber una mquina abstracta a a a que calcule algo que la MT no pueda calcular [11]. Ms an, A. Church, a la sazn inventor a u o del clculo lambda uno de los sistemas competidores de la MT, propuso la conjetura de que a en realidad no puede haber ningn modelo de cmputo ms poderoso que los desarrollados u o a hasta entonces, que inclu la MT, su clculo lambda, as como otras mquinas abstractas, an a a como la mquina de Post. a Hasta nuestros d la llamada tesis de Church no ha podido ser probada ni refutada. as La tesis de Church, sin embargo, no se considera un teorema que pudiera ser eventualmente probado, sino simplemente una hiptesis de trabajo. o

184

CAP ITULO 6. MAQUINAS DE TURING

6.5.1.

Comparacin de las MT con otras mquinas o a

Podemos considerar comparaciones de la MT con: 1. Extensiones a la MT a) MT con varias cintas, varias cabezas b) MT con no determinismo 2. Otras mquinas de cinta a 3. Otros paradigmas (mquinas de Post, Gramticas) a a De todas estas posibilidades, slo consideraremos las mquinas de Post. Las comparacioo a nes restantes pueden ser encontradas en la referencia [10]. Las pruebas que vamos a considerar se basan en el principio de la simulacin. Esta consiste o informalmente en que la mquina simuladora acta como lo har la mquina simulada. a u a a Formalmente consiste en un mapeo que asocia a cada conguracin de la mquina o a simuladora Mora una conguracin de la mquina simulada Mada , y a cada accin de Mora una o a o accin de Mada , de modo tal que se cumpla la correspondencia de los tres puntos sealados o n arriba.

6.6.

Mquinas de Post a

En esta seccin presentaremos los elementos de la mquina propuesta por E. Post, de o a manera similar a como aparecen en [12]. Conceptualmente las mquinas de Post tienen poca relacin con el modelo bsico de a o a mquinas que hemos visto hasta el momento bsicamente derivaciones de los AF. Las a a mquinas de Post (MP) estn basadas en el concepto de diagramas de ujo, tan habituales en a a nuestros d por la enseanza de la programacin en lenguajes imperativos (C, Pascal, etc.). as n o La utilidad prctica de los diagramas de ujo es una de las razones para incluir el estudio de a las mquinas de Post en este texto, an cuando en muchos otros textos se preere comparar a u a las MT con los sistemas de reescritura, con el clculo lambda y otras alternativas. a En un diagrama de ujo se van siguiendo las echas que nos llevan de la ejecucin de o una accin a la siguiente; a este recorrido se le llama ujo de control. Algunas acciones o especiales son condicionales, en el sentido de que tienen varias echas de salida, dependiendo la que uno tome del cumplimiento de cierta condicin. 5 o
Pensamos que el lector est habituado a los diagramas de ujo, por lo que no abundaremos en ejemplos a y explicaciones.
5

6.6. MAQUINAS DE POST

185

Ms espec a camente, los diagramas de ujo de Post, llamados Mquinas de Post (MP), a consideran unas acciones muy elementales cuyo efecto eventualmente es alterar el valor de una unica variable x. La variable x es capaz de almacenar una cadena de caracteres arbitrariamente grande.
Inicio Rechazo Acepta Condicion
a START REJECT ACCEPT x tail(x)

Asignacion

x xa x xb

x x@

Figura 6.7: Acciones en MP En la gura 6.7 presentamos un resumen de las acciones de la MP, las cuales son:
6

Inicio. La accin START indica el punto en que empieza a recorrerse el diagrama de ujo. o Rechazo. La accin REJECT indica que la palabra de entrada no es aceptada (es rechao zada). Adems termina la ejecucin del diagrama. a o Acepta. La accin ACCEPT indica que la palabra de entrada es aceptada. Tambin tero e mina la ejecucin del diagrama. o Condicional. La accin x tail(x) tiene el efecto de quitar el primer caracter de la o palabra almacenada en la variable x; la continuacin del diagrama depender de cul o a a fue el caracter que se quit a x, habiendo varias salidas de la condicional, indicadas o con sendos s mbolos, que corresponden al caracter que se quit a la variable. En otras o palabras, si la palabra de entrada es 1 , 2 , . . . , n , el camino que tomemos para seguir el diagrama ser el indicado con un s a mbolo que coincida con 1 . Hay adems una a salida marcada con , para el caso de que la variable x contenga la palabra vac (antes a de tratar de quitarle el caracter). Asignacin. Las acciones de la forma x xa, donde a , tienen el efecto de aadir a la o n variable x el caracter a por la derecha. As si x = antes de la asignacin, despus de , o e ella tendremos x = a. Hay una instruccin x xa para cada caracter a . o
Hemos utilizado los nombres en ingls para las acciones de la MP, simplemente por compatibilidad con e la gran mayor de los textos disponibles. a
6

186

CAP ITULO 6. MAQUINAS DE TURING

START x x@

x tail(x) a

x tail(x) b @

ACCEPT

REJECT

x xa a

x tail(x)

xxb
b

REJECT

@ x x@

Figura 6.8: MP para {an bn } Ejemplo.- La MP de la gura 6.8 acepta el lenguaje {an bn }. En efecto, siguiendo dicha gura, podemos ver que la variable x toma los siguientes valores al recorrer el diagrama de ujo: Accin o START x x@ x tail(x) x tail(x) x xa x tail(x) x tail(x) x xb x tail(x) x x@ x tail(x) x tail(x) x tail(x) x x@ x tail(x) ACCEPT Valor de x aabb aabb@ abb@ bb@ bb@a b@a @a @ab ab ab@ b@ @ @

Como se puede observar en este listado, las letras a, b y el caracter @ salen de la variable x por la izquierda, por la accin de x tail(x), y luego entran por la derecha, como resultado o

6.6. MAQUINAS DE POST

187

de una accin x x, donde es el caracter u se aade a la derecha. En la MP de este o n ejemplo, comparando las l neas 2 y 10 del listado podemos ver que en la 10 ya se ha eliminado una a y una b. Iterando en el diagrama es posible cancelar cada a con cada b hasta que se agoten las letras.

6.6.1.

Formalizacin de las MP o

Recordemos antes que nada que la formalizacin de una mquina abstracta reviste dos o a aspectos: uno es formalizar los componentes de una mquina en particular, esto es, las a informaciones que hacen diferente a una mquina de las dems de su clase, 7 mientras que a a el otro aspecto es el de caracterizar el funcionamiento de las mquinas que tratamos de a formalizar. En el primer aspecto, las MP podr ser caracterizadas como grafos, donde los an nodos ser las acciones, y los vrtices ser las echas del diagrama de Post. Esto es, una an e an MP ser bsicamente un conjunto de nodos N , clasicados de acuerdo con las acciones que a a tienen asociadas, as como una funcin de transicin que determine cul es el nodo siguiente o o a en el diagrama. As tendremos: Denicin.- Una MP es una tripleta (N, , ), donde: o N = NA NC {ST ART, ACCEP T, REJECT }, siendo NA el conjunto de nodos de asignacin y NC el conjunto de nodos condicionales. En otras palabras, los nodos estn o a clasicados segn la accin que tienen asociada. Adicionalmente NA est clasicado u o a segn la letra que se aade por la derecha, es decir, NA = NA1 NA2 . . . NAn u n Como de costumbre, es el alfabeto, que no incluye el caracter @. es la funcin de transicin que nos indica cul es el siguiente nodo al que hay que ir: o o a : N {ACCEP T, REJECT } {@, } N {ST ART } Como se ve, el nodo destino de depende del nodo anterior y de un caracter (el caracter suprimido, en el caso de la accin condicional en todas las dems acciones el caracter es o a irrelevante y el destino debe ser el mismo para todo caracter). Ahora trataremos de formalizar el funcionamiento de las MP. Como habitualmente, nos apoyaremos en la nocin de conguracin. En la conguracin debemos resumir todas las o o o informaciones que caracterizan completamente la situacin en que se encuentra una MP a o mitad de un clculo. En la conguracin de una MP vamos a considerar, evidentemente, a o el punto en que nos encontramos al recorrer el diagrama de ujo lo que formalmente se representar como un nodo n N . 8 Adems necesitamos considerar el contenido de la a a variable, que es una palabra formada por letras del alfabeto, pudiendo aparecer adems el a
7 8

Este era el caso de las qu ntuplas (K, , , s, F ) para los AF. Al decir que estamos en un nodo n, signica que an no se ejecuta la accin del nodo n. u o

188

CAP ITULO 6. MAQUINAS DE TURING

caracter especial @. Entonces la conguracin es un elemento de N ({@}) . Por ejemplo, o una conguracin ser [[n, ab@aa]]. o a La relacin entre dos conguraciones C1 M C2 , que signica que se puede pasar en la o MP M de la conguracin C1 a C2 , se dene de la manera siguiente: o Denicin.- [[m, au]] o 1. Si m NT , u = bw 2. Si m NA , a = b, w = u 3. Si m = s, a = b, u = w Denicin.-Una palabra w es aceptada por una MP M ssi [[ST ART, w]] o [[ACCEP T, v]].
M

[[n, bw]], a, b {, @}, u, w ( {@}) ssi (m, a) = n, y

Una palabra puede no ser aceptada ya sea porque se cae en un REJECT o bien porque la MP cae en un ciclo innito. Ejercicio.- Denir similarmente a como se hizo con las MT la nocin de funcin calculada. o o

6.6.2.

Equivalencia entre MP y MT

El mismo Post comprob la equivalencia entre sus diagramas de ujo y las mquinas de o a Turing, lo que contribuy a reforzar la conjetura establecida por A. Church esto es, que la o MT es la ms poderosa expresin de lo algor a o tmicamente calculable. Teorema de Post.- Para toda MT hay una MP que acepta el mismo lenguaje, o que calcula la misma funcin, y viceversa. o La prueba del teorema de Post se hace mostrando que una MT puede ser simulada por una MP, y viceversa. Al simular MT en MP mostramos que estas ultimas son al menos tan poderosas como las primeras (en el sentido de que pueden hacer todo lo que haga MT); similarmente en el sentido contrario. Al establecer ambas direcciones de la prueba se muestra la equivalencia MP-MT. Por simular entendemos que, por cada accin de la MT, la MP o haga una accin correspondiente, de manera tal que al nal del clculo, una palabra sea o a aceptada en Post ssi es aceptada tambin en Turing; similarmente para el sentido contrario e de la prueba. La simulacin de la MT involucra los siguientes aspectos: o Codicar las conguraciones de la MT en conguraciones de la MP

6.6. MAQUINAS DE POST Para cada accin de MT, encontrar un diagrama en MP que haga lo mismo. o

189

La codicacin de la conguracin de la MT en una conguracin equivalente de la o o o MP involucra considerar cmo codicar cada una de las informaciones de la conguracin o o de MT. En particular, hay que pensar cmo expresar en MP el contenido de la cinta de MT, o as como la posicin de la cabeza lectora. o Sea una conguracin [[q, w, u, v]] en MT. Entonces en la variable de la MP tendr o amos: uv@w. Como se ve, el primer caracter de la variable es el mismo caracter sobre el que est la a cabeza lectora en la MT; luego sigue a la derecha la misma cadena que en la MT. En cambio, la parte izquierda de la cinta en MT es colocada en la variable de MP separada por el caracter especial @. Por ejemplo, si en MT tenemos una cinta de la forma abaabbb, la variable de MP contendr la cadena abbb@aba. a Ahora hay que considerar cmo traducir las acciones de una MT a acciones correspono dientes en una MP. Consideramos los siguientes casos: Escritura de caracter: Sea una transicin (p, d) = (q, ), donde . Al paso entre o conguraciones de MT: [[p, abcdef g]] [[q, abcef g]] corresponde el paso de x a x como sigue: x = def g@abc x = ef g@abc Para hacer la transformacin indicada (de x a x ) en MP, hay que encontrar un diao grama que la efecte. Un diagrama que cumple con esta funcin aparece en la gura u o 6.9. Movimiento a la derecha: Al paso entre conguraciones de MT: [[p, abcdef g]] corresponde el paso de x a x : x = def g@abc x = ef g@abcd Este paso de x a x se puede hacer con el (muy simple) diagrama de MP de la gura 6.10. Movimiento a la izquierda: A un paso entre conguraciones en MT: [[p, abcdef g]] corresponde el paso de x a x : x = def g@abc x = cdef g@ab El diagrama de la MP que hace dicha operacin es dejado como ejercicio (medianamente o dif cil) al lector (ver seccin de ejercicios). o [[q, abcdef g]] [[q, abcdef g]]

190

CAP ITULO 6. MAQUINAS DE TURING

{defg@abc}

x tail(x)
{efg@abc}

x x

x@
{efg@abc@}

{efg@abc@ }

x tail(x)
u=@ u=@ {abc@ efg}

x u x

x @
{abc@ efg@}

x tail(x)
u=@ u=@ { efg@abc}

xu

Figura 6.9: Escritura en MP

xtail(x)

x x

Figura 6.10: Movimiento a la derecha en MP

6.7. L IMITES DE LAS MT

191

La prueba de equivalencia MT-MP en el otro sentido esto es, la simulacin por parte o de una MT de una MP es mucho ms simple. Primero se toma el contenido inicial de la a variable de entrada como palabra de entrada de la MT. Luego cada una de las operaciones de MP (x x, x tail(x), ACCEP T , REJECT ) pueden ser simuladas por la MT correspondiente. Dejamos nuevamente los detalles de esta prueba al lector (ver seccin de o ejercicios).

6.7.

L mites de las MT

Aunque parezca incre ble, hay problemas que no se pueden resolver como una secuencia determinista de operaciones elementales, que es lo esencial de las MT. Estos problemas son llamados algortmicamente irresolubles. Vamos a concentrar nuestra atencin en problemas o del tipo: dados una palabra w y (la descripcin de) un lenguaje L, decidir si w L, que son o llamados problemas de pertenencia de palabras (word problems). Decimos que un lenguaje L es decidible si hay una MT para decidir el problema de la pertenencia de palabras. Muchos otros problemas que no son del tipo mencionado pueden sin embargo expresarse en trminos e de stos mediante una transformacin adecuada; por ejemplo, el problema de determinar si e o dos gramticas G1 y G2 son equivalentes, puede expresarse de la manera siguiente: Para toda a w L(G1 ), decidir si w L(G2 ).

6.7.1.

El problema del paro de MT

Ahora vamos a considerar un problema irresoluble que histricamente tuvo mucha imo portancia porque fue el primer problema que se prob irresoluble. Una vez que se cuenta con o un primer problema irresoluble, la prueba de que otros problemas son irresolubles consiste en probar que stos pueden ser reducidos al problema de referencia. Este primer problema e irresoluble es el del paro de la MT. El problema del paro de la MT consiste en determinar algor tmicamente esto es, mediante una MT si una MT dada M va a parar o no cuando analiza la palabra de entrada w. Desde luego, como una MT analiza el comportamiento de otra, se requiere que esta ultima sea dada como entrada a la primera; esto puede ser hecho mediante una codicacin de la o MT que debe analizarse. Una manera simple de codicar una MT es considerando la cadena de s mbolos de su representacin como cudruplo (K, , , s). Denotaremos con d(M ) la o a 9 codicacin de una MT M . o Teorema.- No existe ninguna MT tal que, para cualquier palabra w y cualquier MT M , decida si w L(M ).
Esta solucin para codicar una MT no es perfecta, pues el alfabeto usado para codicar una MT o arbitraria no puede determinarse de antemano; no haremos por el momento caso de este detalle tcnico. e
9

192
d(M) w 1 0

CAP ITULO 6. MAQUINAS DE TURING


M para con w M no para con w

Figura 6.11: El problema del paro de una MT En la gura 6.11 se muestra cmo deber funcionar la MT que resolver el problema o a a del paro. Prueba 10 Por contradiccin.- Sea A la MT de la gura 6.12(a). Entonces construimos o otra MT B, como se representa en la gura 6.12(b), esto es, se tiene una unica entrada con la codicacin d(M ) de la MT M , y se pasa esta palabra a una MT copiadora, que duplica la o entrada d(M ). La salida de la copiadora ser dos veces d(M ). Esto es pasado como entrada a a una mquina A que es A modicada 11 de la siguiente manera: a la salida 1 de A la a cambiamos de forma que en vez de dar el halt se cicle; debe quedar claro que esto siempre puede hacerse. Ahora bien, comparando A con A se ve que la salida 1 corresponde al hecho de que M para con d(M ). Finalmente supongamos que aplicamos la mquina B a una entrada formada por la misma a mquina codicada, esto es, d(B). Entonces cuando B se cicla, esto corresponde a la salida a que indica que B se para con d(B), lo cual es contradictorio. Similarmente, B entrega un resultado 0 esto es, se para en el caso que corresponde a B no se para con d(B), que tambin es contradictorio. Esto se ilustra en la gura 6.12(c). e Utilizando el problema del paro de la MT como referencia, se ha probado que otros problemas son tambin insolubles. Entre los ms conocidos, tenemos los siguientes: e a El problema de la equivalencia de las gramticas libres de contexto. a La ambigedad de las GLC. u El problema de la pertenencia de palabras para gramticas sin restricciones. a No haremos la prueba de estos resultados; remitimos al lector a las referencias [10], [7].

6.8.

MT en la jerarqu de Chomsky a

En conclusin, las MT no son capaces de aceptar todos los lenguajes posibles en 2 . Sin o embargo, este hecho puede ser establecido simplemente a partir de la enumerabilidad de las
10 11

Esta prueba es debida a M. Minsky [14], aunque la primera prueba data de Turing [24]. Obsrvese que la segunda repeticin de d(M ) es de hecho la palabra w que se supone que es sometida a e o

M.

6.8. MT EN LA JERARQU DE CHOMSKY IA


193

(a) Mquina A a

copia

(b) Mquina B a

copia

(c) Contradiccin o

Figura 6.12: Prueba del paro de MT

MT: puesto que las MT son cudruplos (K, , , s) -y por lo tanto elementos de un producto a cartesiano-, al ser enumerable cada uno de los componentes necesariamente el cudruplo es a tambin enumerable. En efecto: e

Los conjuntos de los estados posibles son enumerables si estandarizamos los nombres de los estados a q0 , q1 , q2 , etc., lo cual evidentemente no altera ningn aspecto del u funcionamiento de la MT (ver seccin de ejercicios). o Similarmente, un alfabeto estndar 0 , 1 , 2 , etc., puede codicar cualquier alfabeto a en particular. As tambin los alfabetos son enumerables. , e La funcin de transicin es parte de otros productos cartesianos de estados y caracteres, o o por lo que es tambin enumerable. e Los estados iniciales trivialmente son enumerables, siguiendo la estandarizacin del o primer punto.

d(B)d(B)

d(M)d(M)

d(M) w

M para con w M no para con w

d(M) cicla 0 M para con d(M) M no para con d(M)

d(B) cicla 0 B para con d(B) B no para con d(B)

194

CAP ITULO 6. MAQUINAS DE TURING

Ahora bien, al ser enumerables las MT, resulta que no puede mapearse un elemento de 2 con una MT distinta, y por lo tanto hay lenguajes que no tienen una MT que los acepte.

Desde luego, el resultado anterior no ayuda a localizar exactamente qu lenguajes no e son aceptados por ninguna MT; esto ya se hab hecho para algunos lenguajes en la seccin a o precedente. Resulta util entonces ubicar la parte de los lenguajes que s pueden aceptar las MT con respecto a otras clases de lenguajes, siguiendo la estructura de clases de lenguajes llamada jerarqu de Chomsky, que presentamos en las secciones 1.5 y 4.1 a Recordando la jerarqu de Chomsky, que clasica los lenguajes en categor y la forma a as, en que se asocian distintos tipos de mquinas a dichas categor de lenguajes, ahora estamos a as en condiciones de renar la tabla que fue presentada en la seccin 4.1, de la manera siguiente o (indicamos entre parntesis las secciones de este libro donde se presenta cada tema): e

Tipo de autmata o Autmatas nitos o (2.2) Autmatas de Pila o (5) Autm. linealmente acotados o Mq. de Turing decidiendo a (6.4) Mq. de Turing aceptando a (6.2.5)

Lenguaje que Gramtica que a procesa lo genera Lenguajes Regulares Gramticas regulares a (3) (3.5) Lenguajes Libres de Contexto Gram. libres de contexto (4) (4) Leng. Sensitivos al Contexto Gram. sensitivas al contexto (4.7) (4.7) Lenguajes Recursivos Leng.Recursiv. Enumerables Gram. no restringidas (4.1)

En esta tabla hemos diferenciado la clase de lenguajes que pueden ser decididos por una MT, que son llamados recursivos, de los lenguajes que pueden ser aceptados por una MT, que son los recursivamente enumerables, aunque no hemos denido ninguno de ellos ms a que por su relacin con las MT. 12 o Asimismo hemos mencionado, por completez, la clase de los lenguajes Sensitivos al Contexto, que fueron citados en la seccin 4.7, aunque no hemos estudiado los autmatas lio o nealmente acotados en este libro; pueden estudiarse en las referencias [21] o [7]. De acuerdo con la presentacin de la jerarqu de Chomsky que hicimos al estudiar las o a gramticas en la seccin 4.1, las MT son equivalentes en poder de clculo a las gramticas a o a a no restringidas. La prueba de esto puede ser consultada en diversas referencias [10], [7].
12

Recursivamente enumerables es solamente otro nombre para Turing aceptable, usado en textos como

[7].

6.9. EJERCICIOS

195

As de acuerdo con la Tesis de Church, los lenguajes recursivamente enumerables son el , ms extenso conjunto de lenguajes que pueden ser algor a tmicamente analizados.

6.9.

Ejercicios

1. Disee un diagrama de estados para la MT del ejemplo de la seccin 6.2.5, esto es para n o aceptar el lenguaje an bn cn . Obtenga tambin la representacin formal de dicha MT. e o 2. Disee un diagrama de mquina de Turing para calcular la funcin |log2 n|, usando las n a o mquinas bsicas vistas. Describa las acciones efectuadas sobre la cinta. a a 3. Complete el diseo de la MT para el ejemplo de la seccin 6.3, esto es para calcular n o restas de nmeros en unario. Exprese esta MT usando la representacin formal. u o 4. Disear una MT que decida si la entrada es de longitud par, para palabras en {a, b} . n 5. Proponga una MT (o diagrama) que: a) Acepte las palabras de la forma an bm , n, m > 0. b) Decida si en una palabra an bm se cumple m < n. 6. Proponer una MT (su diagrama) que: a) Acepte el lenguaje vac () o b) Decida el lenguaje vac o c) Acepte el lenguaje {} d ) Decida el lenguaje {} 7. Representar formalmente la MP de la gura 6.8. 8. Probar la enumerabilidad de los conjuntos de estados con nombres uniformizados q0 , q1 , q2 , etc. Ayuda: Considere una representacin binaria de cada conjunto de estados, o tomando 1 si el estado en cuestin est presente, y 0 si no est. o a a 9. Una variante de la MT consiste en hacer que la mquina haga un movimiento y tambin a e escriba en cada accin. Dichas mquinas son de la forma (K, , , s), pero es una o a funcin de (K S) a (K {h}) {L, R, S}, donde el movimiento S signica que o la cabeza permanece en el lugar en que estaba. D la denicin formal de la relacin e o o (produce en un paso). 10. Supongamos unas MTCE que son como las MT, pero en vez de tener una cinta innita a la derecha, tienen una cinta estirable, que inicialmente contiene slo cuadros o en la cinta para la palabra de entrada y para un blanco a cada lado de dicha palabra, y que cuando se se mueve a la derecha fuera de la cinta, automticamente es creado a un nuevo cuadrito, segn se va requiriendo. Formalizar las MTCE, en particular la u denicin de palabra aceptada. o

196

CAP ITULO 6. MAQUINAS DE TURING

11. Denir formalmente, en trminos de conguraciones de MP y MT, qu quiere decir e e que una accin de MP hace lo mismo que la accin correspondiente de MT. (Este o o problema completa el enunciado del Teorema de Post). 12. Un autmata de dos pilas (A2P) es una extensin directa de un autmata de pila, pero o o o que tiene dos pilas en vez de una, como en la gura 6.13. Formalice los A2P en la forma

w
Figura 6.13: Automta de dos pilas (A2P) a ms similar posible a los AP vistos en clase. Dena formalmente las nociones de: a a) Conguracin. o b) Palabra aceptada y lenguaje aceptado. c) Proponga un A2P que acepte el lenguaje {an bn cn }. d ) Tienen los A2P el poder de clculo de las MT? (Es decir, todo lenguaje Turinga aceptable es aceptado por algn A2P?). Pruebe su respuesta. Ayuda: mostrar u cmo simular una MT con A2P. o e) Adapte las deniciones de A2P, conguracin y palabra aceptada para A2Pn. o f ) Dos A2Pn son equivalentes ssi aceptan el mismo lenguaje. Demuestre que el problema de la equivalencia de los A2Pn es / no es decidible.

START

xtail(x) a a
REJECT

ACCEPT

b x tail(x)

ACCEPT

Figura 6.14: Mquina de Post a 13. Suponga un subconjunto MP1 de las mquinas de Post, con la restriccin de que no a o tienen las instrucciones x x. Ahora bien, MP1 es equivalente a AF. a) Demuestre esta armacin constructivamente, proponiendo un mtodo sistemtio e a co para pasar de una MP1 a un AF que acepte el mismo lenguaje.

6.9. EJERCICIOS b) Pruebe el mtodo propuesto en (a) con la MP1 dada en la gura 6.14. e

197

c) Pruebe si la MP1 del inciso anterior acepta o no el lenguaje (abba), basndose en a algn procedimiento sistemtico (explicar cul es dicho procedimiento sistemtiu a a a co). d ) Si en una variante MP2 se permiten asignaciones x , donde , a qu tipo de autmata corresponde MP2? Porqu? e o e 14. Si a las mquinas de Post les cambiamos ligeramente las asignaciones para que sean a de la forma x x , siguen siendo equivalentes a las MT? Pruebe su armacin; ya o sea: a) Si son equivalentes, probando que pueden hacer lo mismo (por ejemplo, por simulacin). o b) Si no son equivalentes a Turing, pero son equivalentes a alguna mquina inferior, a probando dicha equivalencia. c) Si no son equivalentes a Turing, encontrando algn lenguaje que una s puede u aceptar y la otra no (habr que probar esto). a 15. Suponga una variante de las mquinas de Turing, las MT2 en que se tienen dos cintas a (cinta 1 y cinta 2) en vez de una; ambas son innitas hacia la derecha y tienen sendas cabezas lectoras. Por cada transicin, se leen a la vez los caracteres de las dos cintas, o y el control nito determina la accin a realizar (simultneamente) en las cintas, que o a pueden ser movimientos o escrituras, como en una MT normal. Las acciones en las dos cintas son independientes, esto es, en la cinta 1 puede tener una accin L y en la cinta o 2 escribir, etc., en un solo movimiento. La palabra de entrada se escribe en la cinta 1. a) Proponga una denicin formal de las MT2 o b) Dena las nociones de conguracin y palabra aceptada. o c) Dena funcin calculada, suponiendo que el resultado queda en la cinta 2. o 16. Suponga una variante de las MT, las MTS en que se puede al mismo tiempo escribir en la cinta y hacer los movimientos a la izquierda y a la derecha (L y R); cuando se quiere solamente escribir (sin mover la cabeza) se hace un movimiento nulo (N). a) Dena las MTS, as como su funcionamiento (hasta denir palabra aceptada). b) Pruebe que las MTS son tan poderosas como la MT clsica (muestre cmo obtener a o a partir de una MT la MTS equivalente). c) Pruebe ahora lo rec proco, mostrando cmo obtener una MT clsica a partir de o a una MTS dada. 17. Conteste las siguientes preguntas, justicando la respuesta: a) El complemento de un lenguaje Turing-decidible es tambin Turing-decidible? e b) El complemento de un lenguaje Turing-decidible es Turing-aceptable?

198

CAP ITULO 6. MAQUINAS DE TURING c) Todo lenguaje Turing-decidible ser subconjunto de algn lenguaje libre de cona u texto? d ) La interseccin de un Turing-aceptable con un libre de contexto ser libre de o a contexto?

18. Es sabido que el problema de la equivalencia de MT es indecidible. Sin embargo, para algunos subconjuntos de las MT s es posible decidir la equivalencia. Para las siguien tes MT (no deterministas), probar rigurosamente su equivalencia / no equivalencia respecto a la aceptacin / rechazo de palabras (es decir, que los lenguajes aceptados o son iguales), describiendo el mtodo utilizado para esta prueba: e M T1 = ({f, g, j, k, m}, {a, b}, {a, b, }, 1 , f ) f g g g f f j j k k k m m g h L f f f m k m f h m k L L L L L L L L L L L

a b a b a b a b a b

M T2 = ({o, q, n, p}, {a, b}, {a, b, }, 2 , q) q o o o n n p p o h n p n o p p L L L L L L L

a b a b a b

19. Si limitamos el tamao de la cinta de una mquina de Turing a una cantidad ja k de n a cuadros, dando una variante que llamaremos MTk, a) disminuye por ello el poder de clculo? A qu tipo de autmatas ser equivaa e o an lentes las MTk ? Pruebe su respuesta. b) Es posible decidir si dos MTk son equivalentes? Pruebe su respuesta, y en el caso armativo, proponga el mtodo de decisin correspondiente. e o

6.9. EJERCICIOS

199

20. Realizar el diagrama de MP que simula el movimiento de la cabeza a la izquierda en una MT (esto es parte de la prueba de equivalencia de MP y MT). 21. Completar la prueba de equivalencia de las MP y las MT, detallando la simulacin de o la MP en una MT, siguiendo las ideas esbozadas en la pgina 191. a

200

CAP ITULO 6. MAQUINAS DE TURING

Bibliograf a
[1] A. Aho, J. Ullman.- Principles of Compiler Design, Addison-Wesley, Reading, Mass., 1978. [2] J. Barwise, J. Etchemendy.- Turings World 3.0 -An Introduction to Computability Theory, CSLI Publications, Stanford, CA, 1993. [3] G. Brookshear.- Teora de la Computacin, Addison Wesley Iberoamericana, 1993. o [4] N. Chomsky.- Aspects of the Theory of Syntax, Cambridge, MIT Press, 1965. [5] V. Drobot.- Formal languages and automata theory, Computer Science Press, 1989. [6] J. Hopcroft, J. Ullman.- Introduction to Automata Theory, Languages and Computation, Addison Wesley, 1979. [7] J. Hopcroft, R. Motwani, J. Ullman.- Introduction to Automata Theory, Languages and Computation, Second Edition, Addison Wesley, 2001. [8] D. Kelley.- Teora de Autmatas y Lenguajes Formales, Prentice Hall Hispanoamericana, o 1995. [9] J. Levine, T. Mason, D. Brown.- Lex & Yacc, OReilly & Associates, 1992. [10] H.R. Lewis, Ch.H. Papadimitriou.- Elements of the Theory of Computation, Prentice Hall, 1981. [11] P. Linz.- An Introduction to Formal Languages and Automata, D. C. Heath and Company, 1990. [12] Z. Manna.- Mathematical Theory of Computation, McGraw Hill, 1974. [13] G. Mealy.- A method for synthesizing sequential circuits, BSTJ n.34, 1955, pp1045-1079. [14] M. Minsky.- Computation: Finite and Innite Machines, Prentice Hall, 1967. [15] E. Moore.- Gedanken-experiments on sequential machines, en Automata Studies (C. Shannon, J. McCarthy eds.), Princeton Univ. Press, 1956. [16] J.L. Peterson.- Petri Net Theory and the Modeling of Systems, Prentice Hall, 1981. 201

202

BIBLIOGRAF IA

[17] C. Petri.- Kommunication mit Automaten, Universidad de Bonn, 1962. [18] J.I.. Pozo.- Teoras cognitivas del aprendizaje, 2da Ed., Morata, Madrid, Espaa, 1993. n [19] S. Sahni.- Concepts in Discrete Mathematics, Camelot Publishing Co. 1985. [20] M. Silva.- Las Redes de Petri en la Automtica y la Informtica, Editorial AC, 1985. a a [21] M. Sipser.- Introduction to the Theory of Computation, PWS Pub. Co., 1997. [22] G. Springer, D.P. Friedman.- Scheme and the Art of Programming, The MIT Press, 1989. [23] T. Sudkamp.- LANGUAGES AND MACHINES.- An Introduction to the Theory of Computer Science, Addison Wesley, 1994. [24] A. Turing.- On computable numbers with an application to the Entscheidungs-problem, Proc. London Math. Soc., v.2, n.42, pp230-265.

Indice alfabtico e
a rbol de comparacin, 44 o de compilacin, 122 o de derivacin, 122 o AFD, 32 AFN, 58 alfabeto, 17 de constantes, 115 de entrada, 32 de variables, 115 algoritmos de decisin, 139 o ambigedad, 123 u ambigua, 123 analizador lxico, 155 e analizador sintctico, 156 a arboles de derivacin, 115 o autmata nito determinista, 32 o autmatas o de Mealy, 53 de Moore, 53 de pila, 146 nitos, 25 no deterministas, 58 autmatas equivalentes, 43 o Cantor, 89 cerradura al vac 69 o, de Kleene, 18 reexiva, 9 simtrica, 9 e transitiva, 9 Chomsky, 96, 113, 132 Chomsky, N., 19 Church, 183 clases de equivalencia, 50 203 codominio, 10 compilador LL, 157 LR, 160 compiladores, 155 completa, 116 completez, 125 concatenacin, 17 o concatenacin de lenguajes, 120 o condiciones comprensivas, 40 excluyentes, 40 conectivos lgicos, 13 o conguracin, 35, 151, 174 o conguracin colgada, 178 o conjuncin, 13 o conjunto contable, 11 elemento, 4 conjuntos, 3 complemento, 6 diferencia, 6 en extensin, 3 o en intencin, 4 o interseccin, 6 o potencia, 6 producto cartesiano, 6 unin, 5 o conmutatividad, 14 constantes, 96, 111 correccin, 125 o correcta, 116 De Morgan, 14 decidible, 191 derivable, 97, 116 derivacin o

204 derecha, 124 izquierda, 124 determinismo, 32 diagramas de Venn, 4 distributividad, 14 disyuncin, 13 o dominio, 10 equivalencias de proposiciones, 14 equivalencias de expresiones regulares, 86 ER, 81 estado, 26 nal, 30, 32 inicial, 32 estado inicial, 27 estados compatibles, 44 incompatibles, 44 estados distinguibles, 48 evento, 26 eventos discretos, 26 expresiones regulares, 79 FNCH, 132 forma normal de Chomsky, 132 funcin de transicin, 32 o o funciones, 8, 9, 56 inyectivas, 10 sobrelyectivas, 10 totales, 10 generador de cdigo, 156 o grcas de transicin, 90 a o gramtica a ambigua, 123 completa, 116 correcta, 116 incompleta, 117 incorrecta, 117 gramtica formal, 96 a gramticas a de tipo 0, 113 de tipo 1, 113 de tipo 2, 113

INDICE ALFABETICO de tipo 3, 113 libres de contexto, 113 no restringidas, 113 regulares, 79, 96, 113 sensitivas al contexto, 113, 128 GT, 90 halt, 171 implicacin, 12 o incompleta, 37, 117 incorrecta, 37, 117 induccin, 15, 125 o jerarqu de Chomsky, 19, 113, 194 a Kantor, teorema, 11 Kleene, 89 lenguaje, 17 aceptado, 34 generado, 97, 116 lenguajes decidibles, 191 libres de contexto, 19, 111 recursivamente enumerables, 19, 113, 194 regulares, 19, 79 lenguajes recursivos, 194 libres de contexto, 113 LIFO, 146 LL, 157 LLC, 111 lookahead, 156 LR, 160 mquina a de Turing, 169 mquina de estados nitos, 32 a mquinas a de Mealy, 55 de Moore, 53 de Post, 185 Mealy, 53 mezcla de gramticas, 119 a minimizacin, 46 o modelado, 26

INDICE ALFABETICO Moore, 53 MP, 185 MT, 169 no restringidas, 113 no terminales, 96 notacin formal, 32 o nubes, 40 pal ndromos, 148 palabra, 17 aceptada, 34, 178 generada, 96 palabra vac 17 a, paro de la mquina de Turing, 191 a pila, 146 Post, 184 principio de previsin, 156 o problemas irresolubles, 191 proposiciones, 12 recursivamente enumerables, 113, 194 regla, 111 reglas gramaticales, 96 inaccesibles, 132 regulares, 96, 113 relacin o de derivacin, 116 o inverso, 8 simtrica, 9 e transitiva, 9 relaciones, 8 reverso, 148 s mbolo, 17 s mbolo inicial, 96 sensitivas al contexto, 113, 128 simplicacin, 46 o subcadena, 17 subconjunto, 4 tabla de s mbolos, 156 tablas de verdad, 14 teorema de bombeo, 101 de Cantor, 89 de Kleene, 89 teorema de bombeo, 136 terminales, 96 tesis de Church, 183 tipo 0, 113 tipo 1, 113 tipo 2, 113 tipo 3, 113 tokens, 155 transiciones, 27 Turing, 169 Turing, Alan, 169 Turing-aceptable, 179 Turing-decidible, 182 unin de lenguajes, 118 o variables, 96, 111

205

Vous aimerez peut-être aussi