Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Automatas Y Lenguajes
Automatas Y Lenguajes
Y LENGUAJES
Un enfoque de diseo
ab a b b
q7
q0
q6
q5
...
q1
q2
q4
q3
Ramn Brena
Tec de Monterrey
Verano 2003
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. La teor
o
a
educativa que sustenta esta forma de trabajo esta basada en el aprendizaje por 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
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:
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 hiperlio
a
gas 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
12
14
15
1.4. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
17
17
19
1.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2. Autmatas nitos
o
23
25
INDICE GENERAL
vi
26
29
30
31
32
37
39
41
42
47
48
50
53
54
55
56
56
58
59
60
64
72
2.9. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
79
INDICE GENERAL
vii
79
80
81
81
83
86
3.3. L
mites de las representaciones textuales . . . . . . . . . . . . . . . . . . . .
88
89
3.4.1. Conversin de ER a AF . . . . . . . . . . . . . . . . . . . . . . . . .
o
90
3.4.2. Conversin de AF a ER . . . . . . . . . . . . . . . . . . . . . . . . .
o
91
95
96
96
99
II
109
111
INDICE GENERAL
viii
5. Autmatas de Pila
o
145
INDICE GENERAL
5.5. Relacin entre AP y LLC
o
ix
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
III
6. Mquinas de Turing
a
167
169
INDICE GENERAL
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
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
CAP
ITULO 1. PRELIMINARES
1.1. CONJUNTOS
1.1.1.
Operaciones
1.1.2.
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
1.1.3.
Equivalencias de conjuntos
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
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 carteo
siano; 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 intuo
a
o
itiva de que una cosa tiene relacin con otra, pero en realidad ambas nociones s correo
sponden. 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 cartesiano
as,
P P es {(Leonor, Leonor), (Leonor, El
as), (Leonor, Arturo), (Leonor, Marta), (Elias,
Leonor), (Elas, Elas), (Elas, Arturo), (El
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
CAP
ITULO 1. PRELIMINARES
10
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
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
CAP
ITULO 1. PRELIMINARES
12
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
1.2.
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 proposia
cional, 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
3
No estudiaremos aqu el clculo proposicional, limitndonos a revisar los aspectos realmente indispens
a
a
ables para manejar el material de este texto. El lector interesado en estudiar el clculo proposicional puede
a
consultar textos como [19].
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
CAP
ITULO 1. PRELIMINARES
14
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
15
Doble implicacin A B = (A B) (B A)
o
A
0
0
1
1
1.3.
B
0
1
0
1
A
1
1
0
0
(A) B
1
1
0
1
AB
1
1
0
1
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).
CAP
ITULO 1. PRELIMINARES
16
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
(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
1.4.1.
17
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.
CAP
ITULO 1. PRELIMINARES
18
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 Kleene,
o
a
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
amos que inicialmente L contiene slo la palabra vac y los elementos de L. Entonces de
o
a
ah tomamos dos elementos cualesquiera, que no necesitan ser distintos, y los concatenamos,
para producir una palabra, la cual aadimos a L si no estaba ya. Continuando indenidan
mente 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
19
LENGUAJES
REGULARES
LENGUAJES
LIBRES DE
CONTEXTO
LENGUAJES
RECURSIVAMENTE
ENUMERABLES
LENGUAJES
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 de
o
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
CAP
ITULO 1. PRELIMINARES
20
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.6. EJERCICIOS
21
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
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).
CAP
ITULO 1. PRELIMINARES
22
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).
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
o
de estas mquinas son las embotelladoras automticas de refrescos. Su diseo requiere de
a
a
n
conocimientos 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
25
CAP
ITULO 2. AUTOMATAS FINITOS
26
2.1.
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
soltero
27
casado
boda
boda
divorcio
boda
muerte
conyuge
viudo
divorciado
COLGADO
TONO
YC
SUENA
OTRO
YC
OM
YM
OCUPADO
OC
OC
HABLANDO
OD
SONANDO
YD
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
CAP
ITULO 2. AUTOMATAS FINITOS
28
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.
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
1
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
29
1
2
1
5
2
5
2,5
4
1,2,5
5
1,2,5
2.1.1.
Estados nales
CAP
ITULO 2. AUTOMATAS FINITOS
30
a
q1
a
b
q0
b
b
a
q2
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.
2.2. MAQUINAS DE ESTADOS FINITOS
31
2.2.1.
CAP
ITULO 2. AUTOMATAS FINITOS
32
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.
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
2.3.
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
2
33
estado, se llama determinismo. La denicin dada arriba corresponde a los autmatas nitos
o
o
3
determin
stas, abreviado AFD
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).
3
CAP
ITULO 2. AUTOMATAS FINITOS
34
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
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 palo
abras 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.
35
q0
q1
q2
q3
CAP
ITULO 2. AUTOMATAS FINITOS
36
Para hacer las conguraciones ms legibles, vamos a utilizar dobles corchetes en vez de
a
parntesis, como en [[q1 , abab]].
e
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
C1 C2 indica que de la conguracin C1 se puede pasar a C2 en algn nmero de pasos
o
u u
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]]
[[q2 , b]]
[[q0 , bb]]
[[q2 , ]].
...
[[p, w ]]
[[r, w ]]
. . . [[qr , ]]
[[s, w]]
5
...
[[p, w ]]
[[s, w ]]
. . . [[qs , ]]
En los AFDs, para cada palabra de entrada slo hay una secuencia posible de conguraciones, precisao
mente porque son deterministas.
37
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
2.4.
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 lenguao
je 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 lenguaa
n
a
o
je consiste en determinar, de manera expl
cita, qu condicin recuerda cada uno de los
e
o
estados del AFD. El lector debe concientizarse de que este es un principio de diseo imporn
tant
simo, verdaderamente bsico para el diseo metdico de autmatas.
a
n
o
o
6
7
Es decir, los clculos son iguales hasta cierto punto, que en el peor caso es la conguracin inicial [[s, w]].
a
o
Estos errores no son excluyentes, y es posible que se presenten ambos a la vez.
CAP
ITULO 2. AUTOMATAS FINITOS
38
P
a
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.
Solucin.- Las condiciones relevantes para este problema -que deben ser recordadas por
o
los estados correspondientes- son:
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.
q0
39
q1
q2
1
0
q3
1
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.
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
CAP
ITULO 2. AUTOMATAS FINITOS
40
1
0
00 pero no 11
0
B
A
Ni 11 ni 00
1
11
0,1
F
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
41
2.4.2.
CAP
ITULO 2. AUTOMATAS FINITOS
42
2.5.
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
equivalentes. Pero cmo saberlo?
o
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
8
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.
9
Qu se quiere decir por distintos? Si dos AF slo dieren en los nombres de los estados se considerarn
e
o
a
distintos?
2.5. EQUIVALENCIA DE AUTOMATAS FINITOS.
43
abaab
a,b
abaa
b
Con "abaab"
b
a,b
a
a
a
a
aba
Sin "abaab"
(a)
(b)
abaab
a,b
abaa
b
^
a
a
b
a
a
a
aba
b
(c)
CAP
ITULO 2. AUTOMATAS FINITOS
44
b
q0
q1
b
r0
a
q2
(a)
r1
b
a
(b)
Teorema de Moore.- Existe un algoritmo para decidir si dos autmatas nitos son equivo
alentes 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 cona
struccin del mismo, concluyendo que los dos autmatas no son equivalentes. En caso
o
o
contrario se contina a partir del paso 2.
u
2.5. EQUIVALENCIA DE AUTOMATAS FINITOS.
45
(q0,r0)
b
(q2,r0)
(q1,r1)
a,b
b
1,4
a
b
2,5
b
b
b
3,6
a
6
1,6
a,b
(a)
(b)
(c)
e
a
4. Si no aparecen nuevos pares (r , r ) que no estn ya en el rbol, se termina el proceso,
concluyendo que los dos autmatas son equivalentes.
o
46
CAP
ITULO 2. AUTOMATAS FINITOS
o
o
bba, mientras que el de la gura 2.13(b) s la acepta, y por lo tanto sus lenguajes aceptados
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
10
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
2.6.
47
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
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
Formalmente escribimos: Dos estados p y q son equivalentes si cuando [[s, uv]]
[[q, v]]
o
son equivalentes, habr que examinar, para cada palabra posible de entrada, si intercama
biarlos en las conguraciones altera o no la aceptacin de esa palabra. Esto es evidentemente
o
imposible para un lenguaje innito. La denicin nos dice qu son los estados equivalentes,
o
e
pero no cmo saber si dos estados son equivalentes. Este aspecto es resuelto por el siguiente
o
lema:
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
11
CAP
ITULO 2. AUTOMATAS FINITOS
48
b
q0
a
a
q2
q1
b
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.
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
49
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.
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
CAP
ITULO 2. AUTOMATAS FINITOS
50
(a)
(b)
(c)
(d)
2.6.2.
51
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
las transiciones de los estados contenidos en cada clase.
Antes de formalizar el proceso, vamos a explicarlo con ayuda de un ejemplo.
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,
CAP
ITULO 2. AUTOMATAS FINITOS
52
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
Porqu?
e
2.7. AUTOMATAS FINITOS CON SALIDA
53
1, 2, 3, 4, 5
2, 3, 4, 5
b
2, 3
4, 5
e
apreciar un s
mbolo b bajo el nodo {2, 3, 4, 5}, indicando a causa de qu caracter la clase de
e
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.
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
14
para dirigir su accin. En los compiladores,
o
el analizador lexicogrco es un autmata
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
14
CAP
ITULO 2. AUTOMATAS FINITOS
54
1/0
1
0
0
q1
q0
q0
0/1
(a) Moore
(b) Mealy
1/0
0/1
0/1
q1
q0
1/0
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
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
2.7. AUTOMATAS FINITOS CON SALIDA
55
(q, 0) (q, 1)
q1
q0
q1
q0
2.7.2.
Mquinas de Mealy
a
Esto suponiendo que no hay varias transiciones distintas entre dos mismos estados.
CAP
ITULO 2. AUTOMATAS FINITOS
56
f(x)
2.7.3.
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 haceo
a
a
mos 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
2.7. AUTOMATAS FINITOS CON SALIDA
(a) f (x) = x + 3
57
(a) f (x) = 2x + 3
(b) f (x) = nx + m
CAP
ITULO 2. AUTOMATAS FINITOS
58
a,b
a,b
abbab
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
2.8.
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
2.8. AUTOMATAS FINITOS NO DETERMINISTAS
59
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
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.
CAP
ITULO 2. AUTOMATAS FINITOS
60
de los autmatas no determin
o
sticos.
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
o
o
que 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
2.8. AUTOMATAS FINITOS NO DETERMINISTAS
61
CAP
ITULO 2. AUTOMATAS FINITOS
62
a,b
bb
q3
q4
(b) Terminan en bb
a,b
bb
q3
q4
q0
b
q1
a
a
q2
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 .
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. AUTOMATAS FINITOS NO DETERMINISTAS
63
aa
aaa
2
b
(a)
(b)
aa
aaa
(c)
CAP
ITULO 2. AUTOMATAS FINITOS
64
a
q2
a
q4
q3
a
q0
a
q1
2.8.3.
2.8. AUTOMATAS FINITOS NO DETERMINISTAS
Entrada
b
a
a
a
a
a
b
65
Estados
{q0 , q1 }
{q0 , q1 }
{q2 , q4 }
{q0 , q1 , q3 }
{q1 , q2 , q4 }
{q0 , q1 , q3 , q4 }
{q1 , q2 , q3 , q4 }
{q1 }
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
22
CAP
ITULO 2. AUTOMATAS FINITOS
66
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.
2.8. AUTOMATAS FINITOS NO DETERMINISTAS
(a)
q0
q1
(b)
q2
q4
b
q0
q 1q 3
a
q1
q2
q 1q 4
b
a,b
q
q0 3 4
q
q1
b
b
a
q3
q4
b
q
q2 3 4
q
q1
q2
q4
q0
q1
q0
q1
67
(c)
(d)
CAP
ITULO 2. AUTOMATAS FINITOS
68
aaa
aa
q0
q1
b
q3
b
q0
q1
a
q2
b
q4
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 nuevos
n
n
2.8. AUTOMATAS FINITOS NO DETERMINISTAS
69
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 cero
a
radura 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
CAP
ITULO 2. AUTOMATAS FINITOS
70
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:
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 , ]]
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.
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).
26
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
2.9. EJERCICIOS
73
a,b
q0
q2
q1
q3
a,b
(a)
(b)
a,b
q0
q4
q1
q6
a,b
q5
q2
q3
q7
q8
(c)
(d)
2.9.
Ejercicios
CAP
ITULO 2. AUTOMATAS FINITOS
74
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 constantes,
n
como 0010010 para el ejemplo. Disee un autmata de Moore para obtener la derivan
o
da 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.
27
Aqui directamente quiere decir que no se haga por transformacin de otro tipo de soluciones, tales
o
como las AFN.
2.9. EJERCICIOS
75
11. Decimos que los lenguajes de dos AFD son casi iguales si dieren unicamente en
CAP
ITULO 2. AUTOMATAS FINITOS
76
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 reco
o
hazo (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
q0
bab
q1
2.9. EJERCICIOS
77
78
CAP
ITULO 2. AUTOMATAS FINITOS
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
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
80
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.
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
1
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.
3.2.
81
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.
83
3.2.2.
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
84
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
Pues si terminaran en b, esta ultima b se juntar a la bb de la mitad, violando la condicin del problema.
a
o
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
. . . (b + ab) . . .
Ahora bien, pensando en qu puede aparecer al inicio y al nal de una palabra, la subexe
presin (b + ab) por s misma es ya capaz de representar palabras que comiencen ya sea con
o
a o con b, por lo que podemos omitir el contexto del lado izquierdo. En cambio, (b + ab) no
5
Los contextos aqu fueron representados simplemente con . . .. El uso de puntos suspensivos o de
86
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
es capaz de representar palabras terminadas en a, como ba. Habr que aadir esta posibilia
n
dad. 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 a + b, dando
o
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
3.2.3.
Las expresiones regulares no representan en forma unica a un lenguaje -esto es, la funcin
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.
87
Solucin:
o
(ab + a) a = (a + ab) a -por (1);
= (a ab) a a -por (6);
= ([a a]b) [a a] -agrupamos trminos;
e
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
88
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
3.4.
An cuando por varios ejemplos hemos visto que lenguajes representados por expreu
siones 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 matemtico que
o
e
a
tiene, sino porque nos brinda procedimientos estndar extremadamente utiles para transfora
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
90
q0
(ab)*
q1
3.4.1.
Conversin de ER a AF
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.
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
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
92
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
(a+ba) bb
q0
q1
(a)
(a+ba) *
q0
bb
q1
k
(b)
a+ba
q0
bb
q1
(c)
a
q0
bb
ba
(d)
q1
3.4. EQUIVALENCIA DE EXPRESIONES REGULARES Y AUTOMATAS FINITOS 93
*
1 ( 1 + ... +k )
p1
n
pn
p1
q1
*
1 ( 1 + ... +k )
*
n ( 1 + ... +k ) 1
*
n ( 1 + ... +k )
qm
...
q1
pn
qm
R1
R2
Rn
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 suprimo
ir 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.
94
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
3.4(b). Los nodos intermedios se pueden eliminar en cualquier orden.
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:
3.5. GRAMATICAS REGULARES
95
a(a+b)*
q0
bb *
bb *a
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.
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
96
3.5.1.
Gramticas formales
a
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
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
Ms adelante veremos cmo probar rigurosamente que una gramtica efectivamente corresponde a un
a
o
a
lenguaje dado.
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.
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
a
a
b
b
b
a
Z
q1
q2
q3
en el AFD. Ahora bien, al terminar una palabra aceptada en un AFD, necesariamente nos
encontraremos en un estado nal. De ah conclu
8.- Q3 bQ3
9.- Q0 a
10.- Q0 b
11.- Q1 a
12.- Q1 b
13.- Q2 b
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.
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
3.6.1.
El teorema de bombeo
102
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
[[q1 , 1 2 . . . n ]]
[[q2 , 2 . . . n ]]
[[qn+1 , ]]
[[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
[[q1 , 1 . . . i1 j . . . n ]]
[[qj , j . . . n ]]
[[qn+1 , ]]
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
11
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}
3.7. EJERCICIOS
105
106
CAP
ITULO 3. EXPRESIONES REGULARES Y GRAMATICAS REGULARES
c) Probar que el operador no aumenta el poder de las ER, en el sentido de que
para toda ER con operador hay una ER equivalente sin .
16. Lo mismo del problema anterior, con un operador de interseccin, & tal que R1 &R2
o
representa las palabras representadas simultneamente por R1 y por R2 . En este caso
a
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
n n+1
palabras de la forma a b ).
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).
b) Su interseccin podr eventualmente ser regular? (Ayuda: considere interseco
a
ciones nitas).
c) Su concatenacin podr ser regular? (Ayuda: tomar {an bm |n m} como LA , y
o
a
buscar un LB adecuado).
3.7. EJERCICIOS
107
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
Tratndose de los compiladores, se les llama terminales a los elementos de , y no terminales a las
a
variables.
2
Adelante precisaremos las deniciones.
111
112
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
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.
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. . .
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.
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
a
tulo 6.
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):
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
115
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
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.
116
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
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
generar. En este caso, la gramtica ser incorrecta.
a
a
4.4. DISENO DE GLC
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
a
varias en una sola. Este ultimo es un mtodo particularmente ecaz, en el que profundizare
e
mos en esta seccin.
o
4.4.1.
Adaptacin de GLC
o
Muchas veces es posible hacer modicaciones sencillas a una gramtica conocida para
a
obtener la del lenguaje requerido. Por ejemplo, supngase que queremos obtener una gramtica
o
a
n m
que genere el lenguaje {a b |n > m}. Una buena idea ser partir de la gramtica que hemos
a
a
visto anteriormente, para el lenguaje similar {an bn }, cuya gramtica tiene las siguientes rea
glas:
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
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
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
118
4.4.2.
Muchos lenguajes pueden ser expresados en forma util como la unin de otros dos lengua
o
jes, 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
despus se contina con la derivacin a partir de S1 8 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
{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
4.4. DISENO DE GLC
119
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
gramticas. 9 As por ejemplo, para generar la palabra aabbb, se tendr la siguiente derivacin:
a
,
a
o
4.4.4.
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
10
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.
120
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
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
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)
.
11
Esta ultima puede ser vista de dos maneras distintas como prejo pal
ndromo.
4.5. ARBOLES DE DERIVACION
121
S
S S
( S )
( )
S 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
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
o
a
derivacin puede haber varias derivaciones lineales, segn el orden en que se decida exo
u
pandir los no terminales. Por ejemplo, para el rbol de la gura arriba, hay al menos las
a
derivaciones siguientes (anotamos como sub
ndice de el nmero de regla aplicado):
u
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
122
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
14
2. La ra tiene etiqueta S.
z
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 termio
nales encontrados en las etiquetas de los nodos hoja, en un recorrido en orden del rbol
a
de 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
4.5.1.
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
13
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 {}.
4.5. ARBOLES DE DERIVACION
123
E
x
E
y
(a)
(b)
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
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.
124
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
4.5.2.
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 CORRECCION Y COMPLETEZ
4.6.
125
o
que es la que slo contiene constantes. Con esto se termina la prueba.
o
126
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
, 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
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
4.7. GRAMATICAS LIBRES Y SENSITIVAS AL CONTEXTO
127
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
4.7.
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
15
16
El paso de induccin se hace en k + 2 y no en k + 1 porque todas las palabras en P tienen longitud par
o
Esta gramtica produce palabras de al menos 6 caracteres, o sea de el lenguaje {an bn cn |n > 1}.
a
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
128
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
4.8.
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):
17
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.
4.8. TRANSFORMACION DE LAS GLC Y FORMAS NORMALES
129
4.8.1.
Eliminacin de reglas A
o
130
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
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), 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.2.
Eliminacin de reglas A B
o
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
4.8. TRANSFORMACION DE LAS GLC Y FORMAS NORMALES
131
4.8.3.
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
132
4.8.4.
Formas Normales
4.8. TRANSFORMACION DE LAS GLC Y FORMAS NORMALES
133
S
S
X
(
S
Y
X
Z
Z )
134
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
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
2.- S bY
3.- X Y a
4.- X ba
5.- Y bXX
6.- Y aba
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
4.8. TRANSFORMACION DE LAS GLC Y FORMAS NORMALES
135
8.- B b
1 .- S AX
2 .- S BY
3 .- X Y A
4 .- X BA
5 .- Y BXX
6 .- Y ABA
5 .- Y BW
5 .- W XX
136
4.9.
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
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.- 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
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 gua
a
o
a
ra 4.4) en el que el s
mbolo A es la ra y tambin una de las hojas. Est claro que ese
z
e
a
137
S
u A
v A y
x
Figura 4.4:
subrbol puede ser insertado o quitado cuantas veces se quiera, y quedar siempre un rbol
a
a
a
de derivacin vlido; cada vez que dicho subrbol sea insertado, las subcadenas v e y se repeo a
a
tirn una vez ms. Esto completa la prueba. En la gura se aprecia porqu es importante
a
a
e
que v 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
n n n
que {a b c } 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
n n n
es de la forma a b c , 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
b o c). En este caso, si uvxyz es de la forma an bn cn , uv 2 xy 2 z no puede ser de la misma
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
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
138
n n
las causas por las que una palabra en {a, b} no es de la forma a b : 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.
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.
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:
19
139
S
S
S
S
4 pasos:
(S) ((S)) (((S))) (((())))
(S) (SS) (()S) (()())
SS ()S ()(S) ()(())
SS (S)S (())S (())()
S
S
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)) ()((()))
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
140
S
S
S
S
SS
SS
SS
SS
20
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
Ejercicio: hallar el mtodo que se sigui para obtener las derivaciones mostradas, y probar que no se
e
o
puede escapar ninguna derivacin.
o
4.11. EJERCICIOS
141
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
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
142
CAP
ITULO 4. GRAMATICAS Y LENGUAJES LIBRES DE CONTEXTO
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
4.11. EJERCICIOS
143
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 balanceaa
e
2
dos, que sabemos que es propiamente LLC. Qu mquina se requiere para distinguir las
e a
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
1
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
145
CAP
ITULO 5. AUTOMATAS DE PILA
146
a
a
q0
q1
q2
q3
5.1.
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:
5.2.
Dise o de AP
n
CAP
ITULO 5. AUTOMATAS DE PILA
148
a/ /a
b/a/
a/ /a
q1
q
(a) Incorrecto
b/a/
b/a/
q2
(b) Correcto
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 primera
o
n
a
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
149
b/ /b
a/a/
a/ /a
s
b/b/
//
Estado
s
s
s
f
f
f
5.2.1.
bba
a
ba
ba
ba
ba
a
a
Transicin
o
1
2
3
5
4
Combinacin modular de AP
o
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
CAP
ITULO 5. AUTOMATAS DE PILA
150
F1
s1
s0
//
//
s2
F2
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
5.3. FORMALIZACION DE LOS AP
5.3.
151
Formalizacin de los AP
o
CAP
ITULO 5. AUTOMATAS DE PILA
152
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 .
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)
5.4.
(s, a)
(s, b)
(f, )
(f, )
(f, )
Relacin entre AF y AP
o
5.5.
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 rigo
e
urosidad 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
153
(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, )
CAP
ITULO 5. AUTOMATAS DE PILA
154
Estado
p
q
q
q
q
q
q
q
q
q
Falta leer
abcba
abcba
abcba
bcba
bcba
cba
cba
ba
a
Pila
S
aSa
Sa
bSba
Sba
cba
ba
a
S w ssi [[p, w, ]]
M (G)
[[q, , ]]
5.6. COMPILADORES LL
155
ANALIZADOR
LEXICO
GENERADOR
DE CODIGO
ANALIZADOR
SINTACTICO
TABLA DE
SIMBOLOS
5.6.
Compiladores LL
El mtodo que hemos visto para obtener un AP a partir de una GLC puede ser conside
erado 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 intiles
e
u
desde el punto de vista de la traduccin que se quiere hacer, como por ejemplo los
o
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
o
o
o
son muchas veces construidos a partir de la denicin de tokens mediante Expreo
siones Regulares.
CAP
ITULO 5. AUTOMATAS DE PILA
156
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 cono
e
struirlos, vase la referencia [1].
e
5.6.1.
Principio de previsin
o
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
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
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
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
CAP
ITULO 5. AUTOMATAS DE PILA
158
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
o
o
a
porque para ciertas gramticas no es suciente una prediccin de un solo caracter. Cona
o
sidrese, por ejemplo, la gramtica con reglas S aSb, S ab, que tambin genera el
e
a
e
n n
lenguaje {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 correspondio
o
ente:
Estado
p
q
q
q
q
q
q
q
q
q
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
5.6. COMPILADORES LL
159
S
A
a
aA
Sb
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.
...
...
X
...
...
...
...
...
...
CAP
ITULO 5. AUTOMATAS DE PILA
160
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
5.7.
Compiladores LR(0)
De hecho se toma el reverso del lado derecho de una regla, ver ms adelante.
a
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
a
abb
bb
aa
b
baa
Aaa
b
b
Sa
bSa
Aa
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
CAP
ITULO 5. AUTOMATAS DE PILA
162
/e/
/e/
e/e/#
e/ /e
e/ Aa/
e/#/e
e/bS/
e/ /
5.8.
Ejercicios
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
163
<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
7
Ayuda: al despejar en la ecuacin la j el problema parece ser ms fcil, pues permite aplicar un diseo
o
a a
n
modular.
CAP
ITULO 5. AUTOMATAS DE PILA
164
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.
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
CAP
ITULO 6. MAQUINAS DE TURING
q2
q1
q0
q3
a
a
170
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
6.1. FUNCIONAMIENTO DE LA MAQUINA DE TURING
171
b/b
q0
/R
q1
a/R
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
1
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
CAP
ITULO 6. MAQUINAS DE TURING
172
b/R
b/b
q0
/R
q1
/L
q2
a/a
a/R
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
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
...
...
b
...
...
...
b
173
...
...
...
...
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
;
/
s K es el estado inicial;
: (K {h} ) K ( {L, R}) es la funcin de transicin.
o
o
CAP
ITULO 6. MAQUINAS DE TURING
174
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
3
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
6.2. FORMALIZACION DE LA MT
175
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
CAP
ITULO 6. MAQUINAS DE TURING
176
...
(a)
...
(b)
( { }) U {}
...
K ( ( { }) {}
o
a
ejemplo en [[q, aaabb]], que es equivalente al ejemplo que acabamos de dar.
6.2. FORMALIZACION DE LA MT
6.2.2.
177
[[q, w, b, u]]
[[q, w, d, au]]
o bien u =
[[q, w, d, ]]
[[q, wa, , ]]
CAP
ITULO 6. MAQUINAS DE TURING
178
6.2.3.
Conguracin colgada
o
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 ]]
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, ]]
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
6.3.
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 . . ..
CAP
ITULO 6. MAQUINAS DE TURING
180
[[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
6.4. PROBLEMAS DE DECISION
1
...
1
...
1
...
1
...
1
...
...
1
...
1
...
...
181
...
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
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]]
[[h, 1, , ]]
[[s, , , w]]
[[h, 0, , ]]
si |w| es par, y
si |w| es non.
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
CAP
ITULO 6. MAQUINAS DE TURING
182
a,b/R
2
4
/R
/L
/L
/0
a,b/
/R
/L
/1
a,b/
/R
0/R
h
1/R
h
6.4.1.
183
6.5.
Tesis de Church
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
CAP
ITULO 6. MAQUINAS DE TURING
184
6.5.1.
6.6.
Mquinas de Post
a
Pensamos que el lector est habituado a los diagramas de ujo, por lo que no abundaremos en ejemplos
a
y explicaciones.
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
START
Rechazo
REJECT
Acepta
ACCEPT
x tail(x)
Condicion
a
Asignacion
x xa
x xb
x x@
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 rechazo
ada). 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
6
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
CAP
ITULO 6. MAQUINAS DE TURING
186
START
x x@
x tail(x)
x tail(x)
b @
REJECT
xxb
x tail(x)
REJECT
ACCEPT
x xa
a
x x@
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
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:
CAP
ITULO 6. MAQUINAS DE TURING
188
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]].
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
189
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
CAP
ITULO 6. MAQUINAS DE TURING
190
{defg@abc}
x tail(x)
{efg@abc}
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
xtail(x)
x x
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
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.
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 ).
9
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
CAP
ITULO 6. MAQUINAS DE TURING
192
d(M)
w
M para con w
M no para con w
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
M.
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 para con w
M no para con w
d(M)
w
193
(a) Mquina A
a
d(M)
copia
cicla
d(M)d(M)
(b) Mquina B
a
d(B)
copia
cicla
d(B)d(B)
(c) Contradiccin
o
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.
CAP
ITULO 6. MAQUINAS DE TURING
194
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.
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 lino
o
ealmente 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
[7].
Recursivamente enumerables es solamente otro nombre para Turing aceptable, usado en textos como
6.9. EJERCICIOS
195
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
CAP
ITULO 6. MAQUINAS DE TURING
196
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)
ACCEPT
x tail(x)
REJECT
ACCEPT
6.9. EJERCICIOS
197
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?
CAP
ITULO 6. MAQUINAS DE TURING
198
a
b
a
b
a
b
a
b
a
b
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
o
h
n
p
n
o
p
p
L
L
L
L
L
L
L
6.9. EJERCICIOS
199
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
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
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
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
De Morgan, 14
decidible, 191
derivable, 97, 116
derivacin
o
203
INDICE ALFABETICO
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
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
205
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