Table Of ContentElena Gaudioso Vázquez
Tomás García Saiz
INTRODUCCION
A LA TEORÍA
DE AUTÓMATAS,
GRAMÁTICAS T
1
Y LENGUAJES
ELENA GAUDIOSO VÁZQUEZ
TOMÁS GARCIA SAIZ
INTRODUCCIÓN A LA TEORÍA
DE AUTÓMATAS, GRAMÁTICAS
Y LENGUAJES
Editorial Universitaria
UnED
Ramón Ateces
Las imágenes mostradas han sido tomadas y tratadas por los autores del presente libro. El icono de
las cajas de trabajo, ha sido diseñada por Madebyoliver de Flaticon www.flaticon.com
Reservados todos los derechos.
Ni la totalidad ni parte de ese libro puede reproducirse o transmitirse por ningún procedimiento
electrónico o mecánico, incluyendo fotocopia, grabación magnética o cualquier almacenamiento de
información y sistema de recuperación, sin permiso escrito de Editorial Centro de Estudios Ramón
Areces, S. A. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.conlicencia.
com) si necesita fotocopiar o escanear algún fragmento de esta obra.
© EDITORIAL CENTRO DE ESTUDIOS RAMÓN ARECES, S.A.
Tomás Bretón, 21 - 28045 Madrid
Teléfono: 915.061.190
Fax: 914.681.952
Correo: [email protected]
Web: www.cerasa.es
ISBN-13: 978-84-9961-285-0
Depósito legal: M-23463-2017
Impreso por: Campillo Nevado, S.A.
Antonio González Porras, 35-37
28019 MADRID
Impreso en España i Printed in Spain
Indice
1. Conceptos previos 1
1.1. Conceptos fundamentales de la teoría de conjuntos.................................... 1
1.2. Conceptos fundamentales de la teoría de autómatas.................................... 4
1.3. Ejercicios....................................................................................................... 9
2. Autómatas finitos 11
2.1. Autómatas finitos........................................................................................... 11
2.2. Elementos de un autómata finito................................................................... 12
2.3. Definición formal de autómata finito determinista....................................... 14
2.4. Representaciones de los autómatas finitos deterministas.............................. 16
2.4.1. Diagrama de transiciones................................................................... 16
2.4.2. Tabla de transiciones......................................................................... 17
2.5. El lenguaje de un autómata finito determinista............................................. 18
2.6. Ejemplos de lenguajes regulares................................................................... 19
2.7. Autómatas finitos no deterministas................................................................ 21
2.8. Equivalencia entre autómatas finitos deterministas y no deterministas . . . . 23
2.9. Ejercicios....................................................................................................... 26
3. Gramáticas regulares 31
3.1. Definición de gramática............................................................... 31
3.2. Tipos de gramáticas: gramáticas regulares................................................... 34
3.3. Ejemplos de gramáticas regulares ................................................ 36
3.4. Gramáticas regulares y autómatas finitos...................................................... 38
3.5. Ejercicios....................................................................................................... 42
VII
VIII I ndice
4. Expresiones regulares 45
4.1. Introducción.................................................................................................... 45
4.2. Definición de las expresiones regulares.......................................................... 46
4.3. Lenguaje representado por una expresión regular........................................ 47
4.4. Autómatas finitos y expresiones regulares.................................................... 50
4.5. Propiedades de las operaciones de las expresiones regulares........................ 56
4.6. Ejercicios....................................................................................................... 57
5. Propiedades de los lenguajes regulares y lenguajes no regulares 59
5.1. Propiedades de los lenguajes regulares.......................................................... 59
5.1.1. Unión de lenguajes regulares............................................................. 60
5.1.2. Complementario de un lenguaje regular.......................................... 63
5.1.3. Intersección de dos lenguajes regulares.......................................... 64
5.1.4. Concatenación de dos lenguajes regulares........................................ 67
5.1.5. Estrella de Kleene de un lenguaje regular....................................... 70
5.2. Introducción a los lenguajes no regulares....................................................... 72
5.3. Introducción a la jerarquía de Chomsky....................................................... 76
5.4. Ejercicios....................................................................................................... 76
6. Lenguajes y gramáticas independientes del contexto 81
6.1. Definición de las gramáticas independientes del contexto........................... 81
6.2. Derivaciones en las gramáticas independientes del contexto........................ 85
6.3. Lenguaje de una gramática independiente del contexto .............................. 87
6.4. Introducción a los árboles de derivación....................................................... 88
6.5. Forma Normal de Chomsky............................................................................ 90
6.6. Transformación a Forma Normal de Chomsky.............................................. 92
6.7. Ejercicios....................................................................................................... 99
7. Autómatas a pila 103
7.1. Introducción a los autómatas a pila......................................................... 103
7.2. Definición formal de un autómata a p ila ....................................................... 105
7.3. Lenguajes aceptados por los autómatas a p ila ............................................. 110
7.4. Autómatas a pila y gramáticas independientes del contexto........................ 114
7.5. Autómatas a pila deterministas...................................................................... 117
7.6. Ejercicios....................................................................................................... 120
8. Propiedades de los lenguajes independientes del contexto 123
8.1. El lema de bombeo para lenguajes independientes del contexto.................. 123
8.2. Los lenguajes independientes del contexto en la jerarquía de Chomsky . . . 125
INDICE IX
8.3. Propiedades de los lenguajes independientes del contexto........................... 127
8.4. Ejercicios....................................................................................................... 129
9. Introducción a las máquinas de Hiring 133
9.1. Límites de la computación........................................................................... 133
9.2. Definición de una máquina de Turing............................................................ 134
9.3. Descripciones instantáneas............................................................................ 137
9.4. Diagramas de transiciones para las máquinas de Turing.............................. 139
9.5. El lenguaje de una máquina de Turing: lenguajes recursivamente enumerables 140
9.6. Extensiones de la máquina de Turing básica................................................ 146
9.7. Lenguajes recursivamente enumerables en la jerarquía de Chomsky . . . . 147
9.8. Ejercicios....................................................................................................... 147
10. Ejercicios de autoevaluación 149
11. Solución a los ejercicios 181
11.1. Capítulo 1 ....................................................................................................... 181
11.2. Capítulo 2 ....................................................................................................... 182
11.3. Capítulo 3 ....................................................................................................... 185
11.4. Capítulo 4 ....................................................................................................... 187
11.5. Capítulo 5 ....................................................................................................... 190
11.6. Capítulo 6 ....................................................................................................... 198
11.7. Capítulo 7 ....................................................................................................... 205
11.8. Capítulo 8 ....................................................................................................... 209
11.9. Capítulo 9 ....................................................................................................... 215
Prólogo
El objetivo del presente texto es proporcionar una introducción a la materia de las
máquinas de estado o autómatas y los diferentes tipos de lenguajes formales que reconocen.
La teoría de autómatas es un área fundamental en el campo de las Ciencias de la
Computación. Se ocupa del estudio de las máquinas de estados finitos y permite establecer
el límite computacional de los ordenadores esto es, qué es capaz de computar una máquina
actual y con qué complejidad. Las máquinas vistas en este texto, sirven de base para la
construcción de compiladores, en concreto de los módulos que se encargan de los análisis
léxico y sintáctico.
Esta materia se proporciona en la asignatura de primero de grado de Ingeniería
Informática de la Universidad Nacional de Educación a Distancia. Es por ello, que este es
un libro especialmente diseñado para la enseñanza a distancia. Por tanto, para cada capítulo,
se incluyen recomendaciones al estudio y una serie de pequeños ejercicios a realizar para
afianzar conocimientos. Con el objetivo de animar al lector a realizar estos ejercicios, la
solución de los mismos se incluye al final del texto.
Para poder dar una visión completa del temario adaptándolo a un alumno de primero de
grado, se han evitado, en la manera de lo posible, las demostraciones formales. Aquel lector
interesado en profundizar los contenidos presentados en el presente texto, puede utilizar las
siguientes dos referencias que sirven como material complementario: [Hopcroft et al., 2008]
y [Brookshear, 1993]. Así mismo, los capítulos se han organizado con la idea de seguir una
planificación concreta durante un cuatrimestre. Así, cada capítulo se correspondería con una
o a lo sumo dos semanas de estudio.
Los autores
XI
Capítulo 1_____
Conceptos previos
A lo largo del texto, se verán los lenguajes como conjuntos de cadenas que acepta
una determinada máquina teórica. Por ello, se hará uso de conceptos básicos de teoría de
conjuntos. Para ayudar al lector a recordar dichos conceptos, se ha introducido en este
capítulo alguno de los conceptos más relevantes que se utilizarán a lo largo del texto. Así
mismo, y a modo de glosario, se incluye una presentación de los conceptos fundamentales
de la materia de autómatas, gramáticas y lenguajes.
1.1. Conceptos fundamentales de la teoría de conjuntos
■ Conjunto
Un conjunto es una colección de objetos que se denominan elementos o miembros.
Normalmente, los elementos de un conjunto se representan separados por comas y
encerrados entre corchetes ({ y }).
Se dice que un conjunto es finito cuando contiene un número finito de elementos.
Algunos ejemplos de conjuntos finitos son:
• El conjunto de letras vocales del alfabeto: V = {n, e, i, o.
• El conjunto de días de la semana: S = {lunes, martes, miércoles, jueves,
viernes}.
• El conjunto formado por los números menores de 100:
N = {1,2,3,..., 97,98,99,100}.
Se dice que un conjunto es infinito cuando contiene un número infinito de elementos.
Algunos ejemplos de conjuntos infinitos son:
1
2 Conceptos fundamentales de la teoría de conjuntos
• El conjunto de números naturales: ÍV = {1,2,3,...}.
• El conjunto de números primos: P = {1,3,5,7,...}.
• El conjunto formado por los números mayores de 100:
{ , , , ,...}.
M = 101 102 103 104
La cardinalidad de un conjunto determina el tamaño de dicho conjunto, esto es, el
número de elementos que contiene. Se representa mediante dos líneas verticales, así,
si se considera el conjunto finito V = {a,e,i,o,u}, entonces su cardinalidad se
representa de la siguiente manera: |V| = 5.
■ Conjunto vacío
El conjunto vacío es aquel que no contiene ningún elemento. El conjunto vacío se
representa mediante el siguiente símbolo: 0.
■ Pertenencia
Se dice que un elemento pertenece a un conjunto cuando cumple las condiciones que
lo definen. El operador de pertenencia se representa mediante el símbolo € y en el
ejemplo del conjunto V = {a, e, i ,o, u}, se cumple que a E V.
■ Subconjunto
Se dice que A es un subconjunto áe, B (A C. B), si todos los elementos A pertenecen
también al conjunto B. Esto es, para todo elemento se cumple que tu E B. El
conjunto A es un subconjunto propio de Bis C y existen elementos de B que
no pertenecen a A. En este caso se representa la relación entre los dos conjuntos de la
siguiente forma: Ac B.Por ejemplo, dados los conjuntos:
A = {a,b,c,d} B = {c, d} C = {c, d}D = {e,/}
B es un subconjunto propio de A: Bc A.
■ Igualdad y desigualdad entre conjuntos
Dos conjuntos A y B son iguales ( A = B) si se cumple que C y C
Dos conjuntos A y B,son diferentes ( A^ B) si existen elementos de A que no
pertenecen aB y viceversa. Esto es, existen tu E A tales que w ^ By existen z 6
tales que z £ A.
Así, siguiendo el ejemplo anterior, se cumple que: = y
CONCEPTOS PREVIOS 3
■ Conjunto potencia
Dado un conjunto A, el conjunto potencia P{A) es la colección de todos los
subconjuntos que se pueden formar con los elementos de A. Por tanto, los elementos
del conjunto potencia son a su vez conjuntos.
Por ejemplo, considerando el conjunto A = {a, 6, c) entonces el conjunto potencia de
A es: P{A) = {{a}, {6}, {c}, {a, 6}, {a, c}, {£>, c), {a, b, c}}.
Dado un conjunto A, la cardinalidad de su conjunto potencia se define: P(A) =
donde |^4| es la cardinalidad del conjunto A. El conjunto potencia de un conjunto
infinito es un conjunto incontable.
■ Operaciones entre conjuntos
Las principales operaciones entre conjuntos que se van a considerar son:
- Unión
La unión de dos conjuntos A y B, representada por U es la colección de
todos los elementos que se encuentran en o en
AU B = {x :x E A o x e B}
Por ejemplo, dados los conjuntos:
A = {a,b,c,d} B = {c1d} C = { D = {e, f}
entonces:
AU B = {a,b, c,d}
B U C = {c,d} = B = C
C'J D — {c,d,e,/}
- Intersección
La intersección de dos conjuntos A y B, representada por n es la colección
de objetos que son elementos tanto de A como de B. Por consiguiente:
AC\ B = {x \ x E Ay x E B}
Por ejemplo, dados los conjuntos A = {a, = {6, c, d}, entonces:
í4í1B = { íi,c }
- Diferencia
La diferencia entre dos conjuntos Ay Bse representa mediante el signo y es
el conjunto que resulta de eliminar del conjunto A los elementos del conjunto B.
Por ejemplo, dados los conjuntos A = {a, c}, {a, c},C {a, 6}
{d, e}, entonces: