SlideShare una empresa de Scribd logo
Cuadernillo de apuntes Teor´ıa de la
computaci´on
Magaly Gonz´alez Mota
30 de junio de 2010
2
´Indice general
1. INTRODUCCION 5
1.1. Aut´omatas computabilidad y complejidad . . . . . . . . . . . 5
1.1.1. Representaciones estructurales . . . . . . . . . . . . . . 7
1.1.2. Aut´omatas y la complejidad . . . . . . . . . . . . . . . 7
1.2. Nociones Matem´aticas . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1. Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2. Funciones y relaciones . . . . . . . . . . . . . . . . . . 12
1.2.3. Inducci´on matem´atica . . . . . . . . . . . . . . . . . . 17
1.3. Cadenas y lenguajes . . . . . . . . . . . . . . . . . . . . . . . 19
2. Lenguajes regulares 25
2.1. Aut´omatas finitos . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1. Aut´omatas finitos deterministicos AFD . . . . . . . . . 26
2.1.2. Aut´omatas finitos no deterministicos AFND . . . . . . 29
2.2. Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . 31
2.3. Lenguajes Regulares . . . . . . . . . . . . . . . . . . . . . . . 35
3. Lenguajes libres de contexto 37
3.1. Gram´aticas libres de contexto . . . . . . . . . . . . . . . . . . 37
3.2. ´Arboles de derivaci´on . . . . . . . . . . . . . . . . . . . . . . . 41
3.3. Formas normales de Comsky . . . . . . . . . . . . . . . . . . . 45
3.4. Forma normal de Greibach . . . . . . . . . . . . . . . . . . . . 45
3.5. Ambig¨uedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.6. Aut´omatas de Pila . . . . . . . . . . . . . . . . . . . . . . . . 47
3.7. Lenguajes no regulales . . . . . . . . . . . . . . . . . . . . . . 55
4. M´aquinas de Turing 61
4.1. Definici´on de una M´aquina de Turing . . . . . . . . . . . . . . 63
3
4 ´INDICE GENERAL
4.2. Construcci´on modular de una MT . . . . . . . . . . . . . . . . 66
4.3. El lenguaje de una M´aquina de Turing . . . . . . . . . . . . . 70
4.4. Variantes de una M´aquina de Turing . . . . . . . . . . . . . . 71
4.4.1. M´aquina de Turing con varias cintas . . . . . . . . . . 71
4.4.2. M´aquinas con pilas multiples . . . . . . . . . . . . . . 72
4.4.3. M´aquinas contadoras . . . . . . . . . . . . . . . . . . . 73
5. Decibilidad 77
5.1. Lenguajes Decidibles . . . . . . . . . . . . . . . . . . . . . . . 78
5.2. El problema de Halting . . . . . . . . . . . . . . . . . . . . . . 79
5.3. Decibilidad de teor´ıas l´ogicas . . . . . . . . . . . . . . . . . . . 80
6. Reducibilidad 83
6.1. Problemas insolubles para la teor´ıa de lenguajes . . . . . . . . 83
6.2. Un problema simple insoluble . . . . . . . . . . . . . . . . . . 85
6.2.1. Algoritmo de Kruskal . . . . . . . . . . . . . . . . . . . 85
6.3. Funciones computables . . . . . . . . . . . . . . . . . . . . . . 88
Cap´ıtulo 1
INTRODUCCION
Objetivo de la Unidad Situar la importancia del estudio de los
aut´omatas dentro del proceso de desarrollo de software, y algunas aplica-
ciones. Presentar las nociones b´asicas de matem´aticas necesarias para comen-
zar a estudiar la materia.
1.1. Aut´omatas computabilidad y compleji-
dad
Se conoce como teor´ıa de aut´omatas el estudio de las m´aquinas o dispos-
itivos abstractos con capacidad de computaci´on.
En la decada de 1930 el matem´atico ingles Alan Mathison Turing estudi´o una
m´aquina con el objetivo de determinar con presici´on cu´al era la frontera entre
lo que podia o no pod´ıa hacer una m´aquina computadora.
En las decadas de 1940 y 1950 se estudiar´on otro tipo de m´aquinas
sencillas conocidas con el nombre de aut´omatas finitos, los cuales inicial-
mente pretendian modelar las funciones cerebrales. A finales de la decada de
1950 el ling¨uista estadounidense Noam Chomsky comenz´o el estudio de las
gram´aticas formales, las cuales no son m´aquinas, pero son componentes de
software importantes por su relaci´on con los aut´omatas abstractos. En 1969
el matem´atico estadounidense Stephen Arthur Cook separo los problemas
que se pueden resolver de manera eficiente en una computadora de aquellos
que en la practica necesitarian tanto tiempo que no tendr´ıa utilidad emplear
una computadora, salvo en casos particulares, a los cuales llamo problemas
5
6 CAP´ITULO 1. INTRODUCCION
NP-dificiles.
Algunos de los conceptos de aut´omatas y gram´aticas se emplean en el
dise˜no y construcci´on de aplicaciones de software, o decidir sin un problemas
es factible de ser resuelto mediante el uso de un algoritmo computable.
Entre las razones por las cuales es conveniente estudiar la teoria de aut´omatas,
est´an:
1. El dise˜no y verificaci´on del comportamiento de circuitos digitales (soft-
ware)
2. El analizador l´exico de un compilador (la parte del compilador que des-
compone el texto inicial en unidades l´ogicas tales como identificadores,
palabras reservadas y signos de puntuaci´on).
3. Software para encontrar apariciones de ciertas palabras, frases u otros
patrones en textos grandes dentro de paginas web.
4. Software para comprobar la correcci´on de cualquier tipo de sistemas
que tengan un n´umero finito de estados diferentes, como los protocolos
de comunicaci´on o los protocolos para el intercambio seguro de infor-
maci´on.
Existen muchos sistemas o componenetes de los cuales se puede decir en
todo momento que estan en cierto estado entre un n´umero finito de ellos.
El objetivo de un estado es recordar la parte significativa de la historia de
un sistema. Dado que solo disponemos de un n´umero finito de estados, nor-
malmente no es posible recordar la historia completa, por lo cual el sistema
deber´a ser dise˜nado de tal forma que recuerde las cosas que son importantes
y omita las que no lo son.
Ejemplo 1 Un interruptor de encendido y apagado, el cual es capaz de recor-
dar si est´a en el estado de encendiddo o apagado, y permite que el usuario
pulse el boton consiguiendo efectos diferentes que dependen de cual era el
estado del interruptor.
Algunas veces, un estado recuerda cosas m´as complejas. Por ejemplo el
aut´omata finito cuyo trabajo sea reconocer la palabra reservada while, para
lo cual necesitar´a 6 estados, cada uno de los cuales representa una posici´on
dentro de la palabra, desde la palabra vac´ıa (estado inicial), y donde cada uno
1.2. NOCIONES MATEM ´ATICAS 7
produce una transici´on desde el prefijo existente hasta la siguiente letra de
la palabra (cada estado est´a etiquetado con el prefijo de la palabra while que
ya se analizo), el estado denominado while, es alcanzado cuando el aut´omata
ha deletreado la palabra while, y el estado while es el ´unico aceptado por el
automata.
1.1.1. Representaciones estructurales
Existen otros dos tipos de notaciones que desempe˜nan un papel impor-
tante en el estudio de los aut´omatas y sus aplicaciones
1. Las gram´aticas que se emplean para el desarrollo de software destinado
a procesar datos con estructura recursiva, por ejemplo el analizador
sint´actico que se ocupa de las caracteristicas recursivas de los lenguajes
de programaci´on, como las expresiones aritm´eticas, condicionales etc.
2. Las expresiones regulares que nos indican la estructura de los datos,
principalmente cadenas de texto.
1.1.2. Aut´omatas y la complejidad
Los aut´omatas nos sirven para resolver dos pregntas muy importantes en
la computaci´on que son:
¿Qu´e puede hacer una computadora?
Qu´e puede hacer una computadora eficientemente?
El como nos permite determinar la respuesta a ´estas preguntas ser´a parte
del estudio de nuestro curso y se abordara principalmente en la unidad 5 y
6.
1.2. Nociones Matem´aticas
1.2.1. Conjuntos
Para el estudio de los aut´omatas es necesario recordar algunos de los con-
ceptos vistos en Matem´aticas para computadora, debido a que muchas de
las definiciones relacionados con los aut´omatas estan dados en terminos de
8 CAP´ITULO 1. INTRODUCCION
conjuntos, a continuaci´on se presenta un breve recordatorio.
Definici´on 1 Conjunto es una colecci´on de objetos que puede ser finito o in-
finito. Totalidad de los elementos o cosas poseedores de una propiedad com´un,
que los distingue de otros.
En el caso de ser finito y si el conjunto no es muy extenso se puede
representar mediante todos sus elementos.
A = {lunes, martes, mi´ercoles, jueves, viernes}
Si es finito o tiene muchos elementos se representa de la siguiente forma
B = {xx es un n´umero entero positivo}
Para que exista un conjunto debe basarse en lo siguiente:
La colecci´on de elementos debe estar bien definida.
Ning´un elemento del conjunto se debe contar m´as de una vez, gene-
ralmente, estos elementos deben ser diferentes, si uno de ellos se repite
se contar´a s´olo una vez.
El orden en que se enumeran los elementos que carecen de importancia.
Notaci´on 1 A los conjuntos se les representa con letras may´usculas A, B,
C,... y a los elementos con letras min´usculas a, b, c,...
Tipos de conjuntos
Conjunto vac´ıo o nulo: Es aquel que no tiene elementos y se simboliza por
∅ o { }, por ejemplo:
A = x2
+ 1 = 0x ∈ R
El conjunto A, es un conjunto vac´ıo por que no hay ning´un n´umero real
que satisfaga x2
+ 1 = 0. Una propiedad imortante del conjunto vac´ıo
es que est´a contenido en cualquier conjunto.
Conjunto universal: Es el conjunto de todos los elementos considerados en
una poblaci´on o universo, en un problema en especial. No es ´unico,
depende de la situaci´on, y se representa por U o Ω.
1.2. NOCIONES MATEM ´ATICAS 9
Relaciones u operaciones entre conjuntos
Pertenencia: Si un elemento esta en la descripci´on de un conjunto, se dice
que pertenece al conjunto, y se denota por el s´ımbolo ∈
x ∈ A
Para denotar que un elemento no pertence a un conjunto escribimos
x /∈ A
Cardinalidad:Es el n´umero de elementos de un conjunto y se denota por
|A|
por ejemplo si A es el conjunto de los d´ıas de la semana entonces |A| = 7
Igualdad de conjuntos: Dos conjuntos A y B son iguales si tienen los mis-
mos elementos es decir, si cada elemento que pertenece a A tambi´en
pertenece a B y viceversa si cada elemento que pertenece a B pertenece
tambi´en a A.
A = B
Subconjunto: Si todo elemento de un conjunto A es tambi´en elemento de
un conjunto B, entonces se dice que A es un subconjunto de B, y se
denota por el s´ımbolo ⊂.
A ⊂ B o B ⊂ A
Subconjunto propio: Se dice que B es un subconjunto propio de A s´ı todos
los elementos de un conjunto B se encuentran incluidos en ´el A, y se
denota por el s´ımbolo ⊆.
A ⊆ B o B ⊆ A
Conjunto potencia: La familia de todos los subconjuntos de un conjunto
se llama conjunto potencia. Si un conjunto es finito con n elementos,
entonces el conjunto potencia tendr´a 2n
subconjuntos. Un conjunto es
subconjunto de el mismo,y el vacio es subconjunto de cualquier con-
junto.
A = {0, 1}
El total de subconjuntos es: 22
= 4 los cuales son:
P(A) = {{1, 2} , {1} , {2} , ∅}
10 CAP´ITULO 1. INTRODUCCION
Uni´on: Es una operaci´on entre dos conjuntos A y B y est´a formada por
todos los elementos que pertencen a el conjunto A o al conjunto B o
ambos y se representa de la siguiente manera:
A ∪ B = {xx ∈ A o x ∈ B}
Intersecci´on: Es una operaci´on entre dos conjuntos A y B y est´a formada
por todos los elementos que pertenecen a el conjunto A y tambi´en al
conjunto B y se representa de la siguiente forma
A ∩ B = {xx ∈ A y x ∈ B}
Conjuntos disjuntos: Son aquellos que no tienen elementos en com´un, es
decir, cuando no existen elementos que pertenezcan a ambos, y se rep-
resenta de la siguiente forma:
A ∩ B = ∅
Por ejemplo F = {1, 2, 3, 4, 5, 6} y G = {a, b, c, d, e, f} son disjuntos.
Partici´on: Cuando un conjunto X es dividido en subconjuntos que no se
intersectan entre si y que adem´as al unirlos forman todo el conjunto
X, se le denomina partici´on.
Diferencia de dos conjuntos A−B: Consta de todos los elementos de A que
no est´an en B y se representa de la siguiente forma:
A − B = {xx ∈ A y x /∈ B}
Complemento: Dado el conjunto universo y un subconjunto A del universo
el complemento de A es el conjunto de todos los elementos del universo
que no pertenecen a A y se denota por:
Ac
= U − A
Ejemplo 2 Sea U = {0, 1, 2, 3, 4, 5, 6, 7, 9} el conjunto universo y
A = {0, 2, 4, 6} , B = {1, 3, 5, 7, 9} , C = {1, 2, 3, 4, 5} y D = {6, 7, 8, 9}
subconjuntos de U
A ∪ C = {0, 1, 2, 3, 4, 5, 6}
1.2. NOCIONES MATEM ´ATICAS 11
B ∩ C = {1, 3, 5}
D − B = {6, 8, 0}
Ac
= {1, 3, 5, 7, 8, 9}
A ∩ B = ∅
de donde podemos concluir que A y B son disjuntos.
Ejemplo 3 Sea A = {a, b, c, d}
|A| = 4 entonces la cardinalidad del conjunto potencia es |P(A)| = 24
= 16
P(A) = {∅, {a} , {b} , {c} , {d} , {a, b} , {a, c} , {a, d} , {b, c} , {b, d} , {c, d} , {a, b, c} ,
{c, d} , {a, b, c} , {a, b, d} , {b, c, d} , {a, c, d} , {a, b, c, d}}
Los siguientes son ejemplos de algunas particiones del conjunto A
P1 = {{a, b} , {c, d} , ∅}
P2 = {{a, b, ∅} , {c, d}}
P1 = {{a} , {b, d, c} , ∅}
Actividad 1 Realice lo siguiente:
1. Los conjuntos tambi´en se pueden representar de manera gr´afica medi-
ante los diagramas de Veen, investigar que son y como se representan
las diferentes operaciones entre conjuntos por medio de diagramas de
Veen.
2. Investigar la biografia de Georg Cantor y mencionar cuales fuer´on sus
aportaciones a la teor´ıa de conjuntos.
3. Investigar las leyes de D’Morgan para conjuntos.
4. Sea U = {a, b, c, d, e, f, g, h, i, j } el conjunto universo y A =
{a, b, e, i, j}, B = {f, b, c, g, j}, C = {a, c, d, h, j} y D = {h, i, j, c}
Calcular
12 CAP´ITULO 1. INTRODUCCION
a) A ∪ B
b) B ∩ D
c) A ∪ C
d) C ∩ B
e) Ac
f) (A ∪ B)c
g) (Ac
∩ B) ∪ C
h) (A ∪ B) ∩ (C ∩ D)
i) ((A ∪ B) ∩ (C ∩ D))c
j) (D ∩ (B ∪ A)c
) ∪ (Ac
∩ B)
1.2.2. Funciones y relaciones
Definici´on 2 Una pareja ordenada es un par de n´umeros los cuales se pueden
encontrar en el plano cartesiano, donde el orden de los terminos que la con-
forman si es importante y se denota por
(a, b)
Actividad 2 Investigar como se da la igualdad de las parejas ordenadas,
cual es su inverso aditivo y cual es su neutro multiplicativo La raz´on por la
cual son de nuestro interes las aprejas ordenadas es porque nos ayudan a
definir una operaci´on entre conjuntos llamada producto cartesiano.
Definici´on 3 El producto cartesiano de dos conjuntos X y Y se define como:
X × Y = {(x, y)x ∈ X y y ∈ Y }
Ejemplo 4 Si X = {1, 2, 3}, Y = {a, b} entonces:
X × Y = {(1, a), (1, b), (2, a), (2, b), (3, b), (3, a)}
Y × X = {(b, 1), (a, 1), (b, 2), (a, 2), (b, 3), (a, 3)}
Y × Y = {(a, a), (a, b), (b, a), (b, b)}
X × X = {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)}
En este ejemplo se obsreva que X × Y = Y × X
1.2. NOCIONES MATEM ´ATICAS 13
Actividad 3 Dados C = {a, c, d, h, j}, A = {α, β, γ} y D = {h, i, j, c}
hallar
1. C × D
2. A × C
3. D × D
4. Si X × Y × Z = {(x, y, z)x ∈ X, y ∈ Y, z ∈ Z} hallar
a) C × D × A
b) A × D × C
Teorema 1 Para cualquier par de conjuntos finitos no vac´ıos A y B
|A × B| = |A| |B|
Una Relaci´on es un conjunto de pares ordenados, donde el primer ele-
mento est´a relacionado con el segundo elemento del par ordenado, mas for-
malmente
Definici´on 4 Una Relaci´on (binaria) R de un conjunto X en un conjunto Y
es un subconjunto del producto cartesiano X × Y . Si (x, y) ∈ R, escribimos
xRy y decimos que x est´a relacionado con y; adem´as si X = Y entonces
decimos que R es una relaci´on binaria sobre X
Ejemplo 5 Sean X = {1, 2, 3, 4}, Y = {2, 4, 5} dos conjuntos, definimos la
relaci´on R como
R = {(x, y)  x + y sea par}
entonces
R = {(1, 5), (3, 5), (2, 2), (2, 4), (4, 2), (4, 4)}
Definici´on 5 Al conjunto
{x ∈ X(x, y) ∈ R para algun y ∈ Y }
se le conocee con el nombre de Dominio de la relaci´on (DR) y al conjunto
{y ∈ y(x, y) ∈ R para algun x ∈ X}
14 CAP´ITULO 1. INTRODUCCION
se le conoce con el nombre de Rango o imagen de la relaci´on (ImR)
Para el ejemplo anterior tenemos que:
DR = {1, 2, 3, 4}
ImR = {2, 4, 5}
Propiedades de las relaciones
Definici´on 6 Una relaci´on binaria sobre X tiene las siguientes propiedades:
Una relaci´on R sobre un conjunto X es reflexiva si (x, x) ∈ R para cada
x ∈ X
Una relaci´on R sobre un conjunto X es irreflexiva si (x, x) /∈ R para cada
x ∈ X
Una relaci´on R sobre un conjunto X es sim´etrica si para todo x, y ∈ X y
si (x, y) ∈ R, entonces (y, x) ∈ R
Una relaci´on R sobre un conjunto X es antisim´etrica si para todo x, y ∈ X,
si (x, y) ∈ R y si x = y, entonces (y, x) /∈ R
Una relaci´on R sobre un conjunto X es transitiva si para toda x, y, z ∈ X,
si (x, y) y (y, z) ∈ R, entonces (x, z) ∈ R
Una relaci´on R sobre un conjunto X es un orden parcial si R es reflexiva,
transitiva y antisim´etrica
Una relaci´on R sobre un conjunto X es una relaci´on de equivalencia si R
es reflexiva, transitiva y sim´etrica
Sea R una relaci´on de X en Y . La inversa de R que se denota por R−1
, es
la relaci´on de Y a X definida como:
R−1
= {(y, x)(x, y) ∈ R}
Sea R1 una relaci´on de X a Y y R2 una relaci´on de Y a Z, la composici´on
de R1 y R2 que se denota por R2 ◦R1 es una relaci´on de X a Z definida
como
R2 ◦ R1 = {(x, z)(x, y) ∈ R1 y (y, z) ∈ R2 para alguna y ∈ Y }
1.2. NOCIONES MATEM ´ATICAS 15
No hay que olvidar que las relaciones son conjuntos, por lo cual se pueden
aplicarles las operaciones entre conjuntos.
Ejemplo 6 Consideremos la siguiente relaci´on sobre X = {1, 2, 3, 4, 5}
R = {(x, y)x + y es par}
R = {(1, 1), (1, 3) (1, 5), (2, 2), (2, 4), (3, 1), (3, 3), (3, 5), (4, 2), (4, 4), (5, 1), (5, 3), (5, 5)}
De la relaci´on se tiene lo siguiente
DR = {1, 2, 3, 4, 5}
ImR = {1, 2, 3, 4, 5}
Adem´as: la relaci´on es reflexiva pues las parejas (1, 1), (2, 2), (3, 3), (4, 4),
(5, 5) pertenecen a la relaci´on.
La relaci´on es simetrica pues
(1, 3) ∈ R y tambi´en (3, 1) ∈ R
(1, 5) ∈ R y tambi´en (5, 1) ∈ R
(3, 1) ∈ R y tambi´en (1, 3) ∈ R
(3, 5) ∈ R y tambi´en (5, 3) ∈ R
(5, 1) ∈ R y tambi´en (1, 5) ∈ R
(2, 4) ∈ R y tambi´en (4, 2) ∈ R
(4, 2) ∈ R y tambi´en (2, 4) ∈ R.
La relaci´on es transitiva pues
(1, 1) ∈ R y (1, 3) ∈ R (x = 1, y = 1 y z = 3) entonces (1, 3) ∈ R
(1, 1) ∈ R y (1, 5) ∈ R (x = 1, y = 1 y z = 5) entonces (1, 5) ∈ R
(1, 3) ∈ R y (3, 1) ∈ R (x = 1, y = 3 y z = 1) entonces (1, 1) ∈ R
(1, 3) ∈ R y (3, 3) ∈ R (x = 1, y = 3 y z = 3) entonces (1, 3) ∈ R
(1, 3) ∈ R y (3, 5) ∈ R (x = 1, y = 3 y z = 5) entonces (1, 5) ∈ R
(1, 5) ∈ R y (5, 3) ∈ R (x = 1, y = 5 y z = 3) entonces (1, 3) ∈ R
(1, 5) ∈ R y (5, 5) ∈ R (x = 1, y = 5 y z = 5) entonces (1, 5) ∈ R
(1, 5) ∈ R y (5, 1) ∈ R (x = 1, y = 5 y z = 1) entonces (1, 1) ∈ R
(2, 4) ∈ R y (4, 2) ∈ R (x = 2, y = 4 y z = 2) entonces (2, 2) ∈ R
(2, 4) ∈ R y (4, 4) ∈ R (x = 2, y = 4 y z = 4) entonces (2, 4) ∈ R
(2, 2) ∈ R y (2, 2) ∈ R (x = 2, y = 2 y z = 2) entonces (2, 2) ∈ R
16 CAP´ITULO 1. INTRODUCCION
(2, 2) ∈ R y (2, 4) ∈ R (x = 2, y = 2 y z = 4) entonces (2, 4) ∈ R
(3, 1) ∈ R y (1, 3) ∈ R (x = 3, y = 1 y z = 3) entonces (3, 3) ∈ R
(3, 1) ∈ R y (1, 5) ∈ R (x = 3, y = 1 y z = 5) entonces (3, 5) ∈ R
(3, 1) ∈ R y (1, 1) ∈ R (x = 3, y = 1 y z = 1) entonces (3, 1) ∈ R
(3, 3) ∈ R y (3, 3) ∈ R (x = 3, y = 3 y z = 3) entonces (3, 3) ∈ R
(3, 3) ∈ R y (3, 1) ∈ R (x = 3, y = 3 y z = 1) entonces (3, 1) ∈ R
(3, 3) ∈ R y (3, 5) ∈ R (x = 3, y = 3 y z = 5) entonces (3, 5) ∈ R
(3, 5) ∈ R y (5, 1) ∈ R (x = 3, y = 5 y z = 1) entonces (3, 1) ∈ R
(3, 5) ∈ R y (5, 3) ∈ R (x = 3, y = 5 y z = 3) entonces (3, 3) ∈ R
(3, 5) ∈ R y (5, 5) ∈ R (x = 3, y = 5 y z = 5) entonces (3, 5) ∈ R
(4, 2) ∈ R y (2, 2) ∈ R (x = 4, y = 2 y z = 2) entonces (4, 2) ∈ R
(4, 4) ∈ R y (4, 2) ∈ R (x = 4, y = 4 y z = 2) entonces (4, 2) ∈ R
(4, 2) ∈ R y (2, 4) ∈ R (x = 4, y = 2 y z = 4) entonces (4, 4) ∈ R
(4, 4) ∈ R y (4, 4) ∈ R (x = 2, y = 4 y z = 4) entonces (4, 4) ∈ R
(5, 1) ∈ R y (1, 3) ∈ R (x = 5, y = 1 y z = 3) entonces (5, 3) ∈ R
(5, 1) ∈ R y (1, 1) ∈ R (x = 5, y = 1 y z = 1) entonces (5, 1) ∈ R
(5, 1) ∈ R y (1, 5) ∈ R (x = 5, y = 1 y z = 5) entonces (5, 5) ∈ R
(5, 3) ∈ R y (3, 1) ∈ R (x = 5, y = 3 y z = 1) entonces (5, 1) ∈ R
(5, 3) ∈ R y (3, 5) ∈ R (x = 5, y = 3 y z = 5) entonces (5, 5) ∈ R
(5, 3) ∈ R y (3, 3) ∈ R (x = 5, y = 3 y z = 3) entonces (5, 3) ∈ R
(5, 5) ∈ R y (5, 1) ∈ R (x = 5, y = 5 y z = 1) entonces (5, 1) ∈ R
(5, 5) ∈ R y (5, 3) ∈ R (x = 5, y = 5 y z = 3) entonces (5, 3) ∈ R
(5, 5) ∈ R y (5, 5) ∈ R (x = 5, y = 5 y z = 5) entonces (5, 5) ∈ R
Como nuestra relaci´on es sim´etrica entonces no puede ser antisim´etrica,
es importante observar que si la relaci´on no es simetrica no necesariamente
sera antisimetrica.
en otros casos tampoco es necesario probar si todos los elementos de la
relaci´on cumplen con encontrar uno que no cumpla ser transitivo, reflexivo,
sim´etrico o antisim´etrico (dependiendo de que estemos buscando) la relaci´on
ya no tendra la propiedad buscada.
Por ´ultimo y como conclusi´on de nuestro ejemplo la relaci´on por ser transi-
tiva, reflexiva y simetrica es una relacvi´on de equivalencia.
Actividad 4 en los siguientes ejercicios determine: los elementos de la relaci´on,
la inversa de la relaci´on, el dominio e imagen de la relaci´on, si es reflexiva,
sim´etrica, antisim´etrica, transitiva, relaci´on de equivalencia o es una relaci´on
de orden parcial.
1.2. NOCIONES MATEM ´ATICAS 17
Sea X = {1, 2, 3, 4, 5}
1. R = {(x, y) 3 divide a x − y}
2. R = {(x, y) ; x + y ≤ 6}
3. R = {(x, y) x − y < 3}
4. R = {(x, y) x2
≤ y}
5. R = {(x, y) x divide a 2y}
Funciones
Definici´on 7 Una funci´on de X a Y es una relaci´on que posee las siguientes
propiedades
El dominio de f es X
Si (x, y) y (x, y ) ∈ f, entonces y = y
Actividad 5 1. Buscar 5 ejemplos de relaciones binarias que son fun-
ciones y 5 ejemplos de relaciones binarias que no lo sean y explicar
cual de las dos condiciones de la definici´on no se cumplen y porque.
2. Investigar que es una funci´on inyectiva (o uno a uno), suprayectiva (o
sobre) y biyectiva.
La raz´on por la cual no nos adentramos mucho mas en el estudio de las
funciones es porque las hemos empleado en los cursos de matem´aticas que se
imparten a lo largo del tronco com´un en el tecnol´ogico.
1.2.3. Inducci´on matem´atica
En computaci´on, a veces es necesario que los programas se prueben de
manera formal, y sin perder de vista su objetivo. La materia de teor´ıa de la
computaci´on se caracteriza por ser una materia con un enfoque conceptual,
donde todos los resultados que se presentan se fundamentan en demostra-
ciones formales, empleando principalmente el m´etodo inductivo, esto debido
18 CAP´ITULO 1. INTRODUCCION
a que tanto las cadenas como los aut´omatas son elementos de conjuntos fini-
tos.
Existen varios m´etodos para realizar demostraciones en matem´aticas entre
los cuales destacan:
Demostraciones deductivas: Las cuales consisten en una secuencia de afir-
maciones o proposiciones, cuya validez nos conduce a una conclusi´on,
a partir de las proposiciones iniciales llamadas hip´otesis o postulados.
Las hip´otesis se suponen falsas o verdaderas al inicio de la demostraci´on
y con la ayuda de proposiciones, postulados o deducciones anteriores
se verifica la veracidad de la mismas. La hip´otesis estan formadas por
varias afirmaciones independientes que se relacionan entre si mediante
un operador l´ogico.(Los teoremas demostrados mediante este m´etodo
normalmente tienen la forma si “H” entonces “C” y se dice que C se
deduce de H )
Demostraci´on de equivalencias entre conjuntos. En ocaciones se debe probar
que dos o m´as conjuntos son iguales o representan lo mismo, para este
tipo de demostraciones se deberan pobrar las siguientes proposiciones
A ⊂ B y B ⊂ A, y una vez que se demostrar´on podermos concluir la
igualdad.
Demostraci´on por contradicci´on: Est´a es similar a el m´etodo deductivo,
solo que en lugar de probar si “H” entonces “C”, probamos si no “C”
entonces “H”, que es su proposici´on contradictoria (no confundirla con
la inversa de la proposici’´on).
Demostraci´on por reducci´on al absurdo: Est´a demostraci´on comienza suponien-
do que son ciertas tanto la hip´otesis H como la negaci´on de la conclusi´on
C y la demostraci´on se completa probando algo que se sabe falso y que
se deriva de la proposici´on “H” y no“C”(la cual implica falsedad).
Contraejemplos: En programaci´on (sobre todo para estructuras recursivas)
no siempre es posible demostrar todos los casoso que se nos presenten,
sin embargo con probar que uno o m´as casos no se cumplen podemos
demostrar que una afirmaci´on es falsa. Por ejemplo la afirmaci´on de
que todos los n´umeros primos son impares es falsa pues el n´umero 2 es
par y es un n´umero primo.
1.3. CADENAS Y LENGUAJES 19
Otra forma de demostraci´on importante para nuestra materia es la de-
mostraci´on por inducci´on; este m´etodo ayuda principalmente cuando tenemos
definiciones recursivas ´arboles, expresiones regulares, cadenas etc. Primero
que nada es necesario explicar que este m´etodo se emplea para proposiciones
que ocurren una, dos, tres, . . ., n veces y que tiene un patron que se repite en
cada una de las veces a dicha proposici´on la denotamos mediante S(n), donde
n nos dira en que n´umero de repetici´on nos encontramos. El procedimiento
que se emplea en este m´etodo es el siguiente:
Supongase que se tiene una proposici´on S(n) para cada entero positivo n, la
cual es verdadera o falsa, necesitamos probar dos cosas:
1. Base: debemos probar que la proposici´on es cierta (o falsa) para n =
0 y n = 1, o para los valores a partir de los cuales se marque que
esta es verdadera ( en el caso de que existen afirmaciones que no son
ciertas para n´umeros peque˜nos), en terminos matem´aticos S(i) es cierta
cuando i = 0 o i = 1
2. Paso de inducci´on: en este paso suponemos que para algun valor n
arbitrario la proposici´on S(n) es cierta, y posteriormente procedemos
a probar que esta proposici´on tambi´en se cumple para su consecutivo
S(n + 1)
Por ejemplo las filas de fichas de domin´o cuando caen: hemos demostrado
que la primera ficha cae (primer paso), y que si cae una ficha tambi´en debe
caer la siguiente (si es cierta para n, debe serlo para n+1, segundo paso). La
idea de la inducci´on es muy clara: si un n´umero cumple algo, y si cuando
un n´umero lo cumple el siguiente tiene que cumplirlo, entonces todos los
n´umeros lo cumplen.
Actividad 6 Investigar 5 ejemplos en los que se empleen demostraciones
por el m´etodo inductivo
1.3. Cadenas y lenguajes
Si nosotros observamos las siguientes l´ıneas podemos observar algunas
cosas en com´un:
Programas escritos en lenguajes de alto nivel.
20 CAP´ITULO 1. INTRODUCCION
Palabras o frases en espa˜nol.
Los n´umeros usados por una calculadora
Lo primero que podemos observar es que cada una de ellas est´a compuesta
por una secuencia de s´ımbolos que pertenecen a alg´un conjunto finito; para
el caso de la segunda l´ınea el conjunto {a, b, c, ..., x, y, z} junto con todos los
s´ımbolos de puntuaci´on correspondientes, de manera an´aloga para la tercera
l´ınea, donde el conjunto son los d´ıgitos {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}. Los progra-
mas escritos en lenguajes de alto nivel tambi´en est´an compuestos por un
conjunto finito de palabras reservadas, identificadores y s´ımbolos especiales
(como fin de archivo, abrir archivo, retorno de carro etc.)
En general cada una de ellas est´a formada por una secuencia de elementos
de un conjunto finito no vac´ıo llamado alfabeto que denotaremos por Σ; a los
elementos de dicho alfabeto los llamaremos letras y los denotaremos por σ,
adem´as supondremos que las letras se escriben con un solo car´acter.
Ejemplo 7 Entre los alfabetos m´as comunes en computaci´on se encuentran
Σ = {0, 1} el alfabeto binario.
El conjunto de todos los caracteres ASCII, o el conjunto de todos los
caracteres ASCII imprimibles.
Definici´on 8 Sea Σ un alfabeto, una palabra o cadena sobre el alfabeto es
una secuencia finita de s´ımbolos del alfabeto Σ. En caso de que no se ten-
ga ningun caracter la cadena ser´a llamada cadena vac´ıa y la denotaremos
mediante la letra λ.
Ejemplo 8 001101010, 110101, 1, 00, son cadenas del alfabeto binario
Entre las cadenas es posible hacer operaciones, a continuaci´on describi-
mos algunas de ellas:
Sea Σ un alfabeto, se define la concatenaci´on de palabras como una ope-
raci´on:
· : Σ∗
× Σ∗
→ Σ∗
para todo ω, ϕ ∈ Σ∗
: ω · ϕ = (ω1, ω2, . . . , ωnϕ1, ϕ2, . . . , ϕn)
1.3. CADENAS Y LENGUAJES 21
En la palabra resultante, a la palabra ω la llamaremos prefijo y a la palabra
ϕ, la llamaremos sufijo Si ω = hola y ϕ = peluza entonces
ω · ϕ = holapeluza
aqui el prefijo es hola mientras que el sufijo es peluza, y de este mismo
ejemplo podemos observar que
ϕ · ω = peluzahola
de donde podemos concluir que la concatenaci´on de cadenas no es conmuta-
tiva
ϕ · ω = ϕ · ω
a menos que una de las palabras sea la palabra vac´ıa
λ · ω = ω · λ = ω
En ocaciones es ´util clasificar las cadenas por su longitud, es decir el n´umero
de caracteres que conforman la cadena, por ejemplo la cadena
for(i = 1; i <= 40; i + +)
tiene 18 caracteres, de manera m´as formal:
Definici´on 9 Sea Σ un alfabeto y ω = (ω1, ω2, ..., ωn) una palabra sobre Σ.
La longitud de una palabra de Σ es una funci´on: |·| : Σ∗
→ N definida as´ı:
|ω| = n
Derivado de la definici´on tenemos lo siguiente
1. La longitud de la cadena vac´ıa es cero |λ| = 0
2. La longitud de la concatenaci´on de dos cadenas es la suma de las lon-
gitudes de cada cadena,si ϕ, ω ∈ Σ: |ω · ϕ| = |ω| + |ϕ|
A continuaci´on se muestra un ejemplo de como se usa el m´etodo inductivo
en la teoria de aut´omatas, para desmostrar la ´ultima afirmaci´on
Demostraci´on:
22 CAP´ITULO 1. INTRODUCCION
Procederemos por inducci´on sobre ϕ
Base: Si ϕ = λ entonces
|ω · ϕ| = |ω · λ| = |ω| + 0 = |ω| + |λ| = |ω| + |ϕ|
Hip´otesis de inducci´on: Supongamos que para cualquier palabra α, |α| ≤ n
se tiene que:
|ω · α| = |ω| + |α|
Ahora sea ψ = α · β una palabra de longitud n + 1 con α ∈ Σ∗
y β ∈ Σ
|ϕ · ψ| = |ϕ · α · β| = |ϕ · α| + 1 = |ϕ| + n + 1 = |ϕ| + |α · β| = |ϕ| + |ψ|
Actividad 7 Investigar las propiedades de asociatividad e identico entre
concatenaci´on de cadenas
Definici´on 10 Si Σ es un alfabeto podemos expresar el conjunto de todas las
cadenas del alfabeto empleando la siguiente notaci´on Σk
que es el conjunto de
todas las cadenas de longitud k, tales que todos los s´ımbolos que las conforman
pertenecen a el alfabeto Σ
Ejemplo 9 si Σ = {0, 1} entonces:
Σ0
= λ
Σ1
= {0, 1}
Σ2
= {00, 01, 10, 11}
Σ3
= {000, 001, 010, 011, 100, 101 110, 111}
y as´ı sucesivamente.
Es importante hacer enf´asis en el hecho de que Σ y Σ1
no son lo mismo, el
primero representa el conjunto formado por los s´ımbolos 0 y 1 y del segundo
sus miembros son las cadenas 0 y 1, cada una de las cuales tiene longitud
uno.
Definici´on 11 Al conjunto de todas las cadenas tomadas de un alfabeto lo
llamaremos lenguaje. El lenguaje compuesto por todas las palabras sobre el
alfabeto, se le conoce como diccionario y se denota por Σ∗
, donde:
Σ∗
= Σ0
∪ Σ1
∪ Σ2
∪ Σ3
∪ . . .
1.3. CADENAS Y LENGUAJES 23
En el caso de que el diccionario no incluya la cadena vac´ıa se escribira como
Σ+
y tenemos que Σ∗
= Σ+
∪ {λ}
Algunos ejemplos de lenguajes son:
El conjunto de los n´umeros binarios que representan un n´umero primo
El lenguaje de programaci´on C
el conjunto de todas las cadenas con igual cantidad de ceros y unos.
Una aplicaci´on de los lenguajes es un analizador l´exico de un compilador
de algun lenguaje de programaci´on particular, en el cual se proporciona una
cadena ASCII y deseamos saber si dicha cadena pertenece o no al conjunto
de todos los programas validos para el lenguaje de programaci´on.
24 CAP´ITULO 1. INTRODUCCION
Cap´ıtulo 2
Lenguajes regulares
Objetivo de la unidad: Conocer el concepto de expres´on regular, su
representaci´on mediante aut´omatas finitos y sus aplicaciones en procesos de
computo y el entorno donde se desenvuelve el alumno
2.1. Aut´omatas finitos
Para iniciar esta unidad se presentar´a un ejemplo pr´actico, tomado del
libro Introducci´on a la teor´ıa de aut´omatas, lenguajes y computaci´on, de John
E.Hopcroft
Ejemplo 10 Los protocolos que ayudan a manejar el dinero electr´onico (son
archivos que se utilizan para pagar compras en Internet y que el vendedor
recibe con la garant´ıa de que el dinero es real)
La parte de asegurar el dinero le corresponde al banco el cual debera encriptar
sus archivos para garantizar que la falsificaci´on no sea un problema, adem´as
de mantener una base de datos con todo el dinero valido que ha emitido, para
asegurar que el dinero que va a dar a la tienda sea real (es decir que en la
cuenta del cliente existan fondos), este proceso de compra, venta e intercam-
bio de dinero puede ser modelado mediante aut´omatas finitos
Otro ejemplo de un proceso que podemos modelar empleando aut´omatas
finitos es el siguiente
Ejemplo 11 Las m´aquinas expendedoras de refrescos, dulces o caf´e requieren
25
26 CAP´ITULO 2. LENGUAJES REGULARES
que se introduzca cierto importe para poder despachar alg´un producto, primero
requieren de selecci´onar el producto posteriormente se necesita insertar la
cantidad de dinero necesario dependendiendo de la selecci´on realizada, la
maquina debera contabilizarlo para guardar en un estado la cantidad de dinero
que fue introducido y en caso de que sea necesario dar cambio y que ´este sea
devuelto correctamente, en este caso la entrada de nuestro aut´omata es no
tener dinero acumulado ni opci´on seleccionada, despu´es se siguen una se-
cuencia de movimientos que nos llevan a obtener nuestro producto finaluna
vez que se ha completado la cantidad que cuesta el producto (este ejemplo se
analizar´a con m´as detalle en el transcurso del c´apitulo)
En muchas otras m´aquinas se emplean los aut´omatas, as´ı que necesitamos
estudiar ?Qu´e es? y todas sus caracter´ısticas.
Actividad 8 Investigue dos ejemplos donde sea posible modelar un compor-
tamiento mediante aut´omatas.
2.1.1. Aut´omatas finitos deterministicos AFD
Para comenzar mencionares que el aut´omata finito deterministico es aquel
que siempre est´a en un s´olo estado despu´es de leer cualquier secuencia de
entradas; la palabra determinista nos dice que para cada entrada existe un
´unico estado al que el aut´omata puede llegar partiendo del estado actual;
comencemos dando la definici´on formal
Definici´on 12 Un Aut´omata Finito Determin´ıstico (AFD) es una quintu-
pla: M = (Q, Σ, q0, f, F), donde
Q Es un conjunto finito no vac´ıo (los elementos de Q son llamados estados)
Σ es un conjunto de s´ımbolos de entrada al que llamaremos alfabeto.
qI ∈ Q, es un estado al que llamaremos estado inicial.
f Es una funci´on Q×Σ → Q que se llama funci´on de transici´on; ´esta recibe
como argumentos un estado y una entrada y devuelve un estado.
qF ⊂ Q es un conjunto de estados a los cuales llamaremos estados finales o
de aceptaci´on.
2.1. AUT ´OMATAS FINITOS 27
Un aut´omata puede ser representado mediante un grafo dirigido (digrafo)
el cual se conoce como diagrama de transiciones, donde los v´ertices del mismo
corresponden a los estados del aut´omata, en el caso del estado inicial ´este
tendr´a una flecha que apunta hacia ´el, y los estados finales se representar´an
mediante un c´ırculo con l´ınea doble; si existe una transici´on del estado q al p
sobre la entrada a entonces existe un arco con etiqueta a que va del estado q
al estado p en el diagrama de transici´on. El aut´omata acepta una cadena ω
si la secuencia de transiciones correspondientes a los s´ımbolos de ω conducen
del estado inicial a un estado final.
Ejemplo 12 Sea Q = {q0, q1, q2, q3} el conjunto de estados, qI = {q0} el
estado inicial, qF = {q0} el conjunto de estados finales, Σ = {0, 1} el alfabeto
de entrada y la funci´on
f q0 q1 q2 q3
q0 ∅ 1 0 ∅
q1 1 ∅ ∅ 0
q2 0 ∅ ∅ 1
q3 ∅ 0 1 ∅
El digrafo asociado al automata anterior es:
Figura 2.1: Grafo asociado a un aut´omata
la funci´on de transici´on tambi´en se puede escribir de la siguiente forma
f(q0, 1) −→ q1
f(q0, 0) −→ q2
f(q1, 1) −→ q0
f(q1, 0) −→ q3
f(q2, 1) −→ q3
f(q2, 0) −→ q0
f(q3, 1) −→ q2
f(q3, 0) −→ q2
o mediante la siguiente
28 CAP´ITULO 2. LENGUAJES REGULARES
Definici´on 13 Sea M = (Q, Σ, q0, f, F) un AFD definimos la iteraci´on de
f sobre Σ∗
as´ı:
f∗
: Q × Σ → Q
∀q ∈ Q : f∗
(q, λ) := q
∀q ∈ Q ,∀σ ∈ Σ y ∀ϕ ∈ Σ∗
: f∗
(q, σϕ) := f∗
(f (q, σ) , ϕ)
Algo que es importante en la teor´ıa de aut´omatas, es como decide si acepta
o no una secuencia de s´ımbolos de entrada (cadena). El lenguaje de un AFD
es el conjunto de todas las cadenas que acepta el aut´omata, formalmente:
Definici´on 14 Sea M = (Q, Σ, q0, f, F) un AFD, el lenguaje de M se define
como:
L(M) := {w ∈ Σ∗
|f∗
(q0, w) ∈ F}
Observaci´on 1 Sean L(A) y L(B) dos lenguajes sobre el alfabeto Σ, en-
tonces L(A) = L(B) si y s´olo si L(A) ⊆ L(B) y L(B) ⊆ L(A).
Observaci´on 2 Sean L(A) y L(B) dos lenguajes sobre el alfabeto Σ, en-
tonces
(L(A) · L(B))R
= L(B)R
· L(A)R
.
Definici´on 15 Dos aut´omatas finitos se dicen equivalentes si reconocen el
mismo lenguaje, es decir: Dados Mp = (Q, Σ, p0, f, F), Mq = (Q, Σ, q0, f, F)
AFD
MP ≡ Mq ⇔ L(Mp) = L(Mq)
2.1.2. Aut´omatas finitos no deterministicos AFND
Ahora, si se modifica el modelo del aut´omata finito, para permitirle ningu-
na, una o m´as transiciones de un estado sobre el mismo s´ımbolo de entrada,
al nuevo modelo lo conoceremos como aut´omata finito no determin´ıstico.
Definici´on 16 Un Aut´omata Finito No Determin´ıstico (AFND) es una quin-
tupla M = (Q, Σ, I, R, F), donde
2.1. AUT ´OMATAS FINITOS 29
Q es un conjunto de estados
Σ es un alfabeto.
I ⊂ Q es un conjunto de estados a los cuales llamaremos estados iniciales.
R es una relaci´on sobre Q × Σ × Q que se llama relaci´on de transici´on.
F ⊂ Q es un conjunto de estados a los cuales llamaremos estados finales.
Observaci´on 3 Si I se reduce a un solo estado y R es tal que sus elementos
pueden escribirse mediante una funci´on entonces el aut´omata ser´a deter-
min´ıstico.
Definici´on 17 Sea M un AFND y sea ω ∈ Σ∗
un camino que empieza en
q0, inducido por ω = σ1σ2, · · · , σn en un aut´omata es una n + 1-ada de es-
tados (q0, q1, · · · , qn) tales que ∀k ∈ [1, 2, · · · , n], (qk−1, σk, qk) ∈ R. Tambi´en
diremos que el camino empieza en q0 e induce λ es (q0).
Definici´on 18 Una palabra ω se dice reconocida por un AFND M, si ω
induce un camino que empieza en un estado inicial y termina en alg´un estado
final.
Definici´on 19 El lenguaje del AFND M, es el conjunto de todas las palabras
en Σ∗
que son reconocidas por M
L(M) = {ω ∈ Σ∗
|ω induce un camino (q0, · · · , qn) tal que q0 ∈ I y qn ∈ F}
Observaci´on 4 Dado un AFND M = (Q, Σ, I, R, F) entonces existe un
AFD M tal que L(M) = L(M ).
Ejemplo 13 Sea M = ({q0, q1} , {0, 1} , δ, q0, {q1}) un AFND en el que :
δ (q0, 0) = {q0, q1}
δ (q0, 1) = {q1}
δ (q1, 0) = ∅
δ (q1, 1) = {q0, q1}
30 CAP´ITULO 2. LENGUAJES REGULARES
Podemos construir un AFD M = (Q, {0, 1} , δ , [q0] , F) que acepte a L (M)
de la siguiente forma: Q esta dado por todos los subconjuntos de {q0, q1}, a
los cuales denotaremos as´ı:
[q0] , [q1] , [q0, q1] , ∅
como δ (q0, o) = {qo, q1}
tenemos: δ ([q0] , 0) = [q0, q1] de la misma forma:
δ ([q0] , 1) = [q1]
δ ([q1] , 0) = ∅
δ ([q1] , 1) = [q0, q1]
δ (∅, 0) = δ (∅, 1) = ∅
Por lo tanto el conjunto de estados finales es {[q1] , [q0, q1]}
2.2. Expresiones regulares
Las expresiones regulares son importantes porque tambi´en pueden ser
consideradas como un lenguaje de programaci´on, que nos permite realizar
acciones importante como las de busqueda de elementos en los compiladores
(errores como la falta de signos de puntuaci´on o palabras reservadas mal
escritas). Las expresiones regulares estan directamente relacionadas con los
aut´omatas finitos deterministicos y no deterministicos, y en muchas oca-
ciones son empleadas para describir componentes de software debido a que
son m´as faciles de entender que los aut´omatas finitos. Otras caracteristicas
importantes de las expresiones regulares es que estas nos permiten definir a
los lenguajes descritos por las distintas familias de aut´omatas, los lenguajes
regulares, con la ventaja de que las expresiones regulares ofrecen una forma
declarativa de expresar las cadenas que pretendemos aceptar, lo que permite
que se utilicen como lenguaje de entrada en muchos sistemas de proceso de
cadenas.
Definici´on 20 Las Expresiones regulares sobre un alfabeto, se definen as´ı :
1. ∅ es una expresi´on regular.
2.2. EXPRESIONES REGULARES 31
2. {λ} es una expresi´on regular y se escribe: λ
3. ∀σ ∈ Σ : σ es expresi´on regular y se escribe: σ.
Ahora, si α y β son expresiones regulares, entonces tambi´en lo ser´an:
4. α ∪ β que escribiremos: α + β
5. α · β
6. α∗
S´olo las expresiones que se obtienen por composici´on finita de las reglas
anteriores son expresiones regulares.
Proposi´on 1 Sea α una expresi´on regular. Entonces αR
tambi´en es una
expresi´on regular
Demostraci´on:
Se proceder´a por inducci´on sobre la construcci´on de expresiones regulares
1. ∅R
= ∅
2. λR
= {λ}R
= λR
= {λ} = λ
3. Sea σ ∈ Σ entonces por la definici´on de inversa)
σR
= (σλ)R
= λR
σ = λσ = σ
por lo tanto
σR
= {σ}R
= {σR
} = {σ} = σ
(1), (2) y (3) son expresiones regulares.
4. Supongamos que α, β, son expresiones regulares y que αR
, βR
tambi´en
lo son, entonces
(α + β)R
= {ωR
|ω ∈ α + β} = {ωR
|ω ∈ α} ∪ {ωR
|ω ∈ β} = αR
∪ βR
por lo tanto (α + β)R
es expresi´on regular.
32 CAP´ITULO 2. LENGUAJES REGULARES
5. Si ϕ, ψ son palabras queremos probar que ψR
ϕR
= (ϕψ)R
Base: si ϕ = λ
(ϕψ)R
= (λψ)R
= ψR
= ψR
λ = ψR
λR
= ψR
ϕR
Hip´otesis de inducci´on: Sea α ∈ Σ∗
con |α| = n, n ≥ 1 entonces
(ϕψ)R
= {βR
|β ∈ ϕψ} = {βR
|β = a · b, a ∈ ϕ, b ∈ ψ} = ψR
ϕR
Ahora para α, σ ∈ Σ∗
((ασ) ψ)R
= (σ (αψ))R
= (αψ)R
σ
por la hip´otesis de inducci´on
(αψ)R
σ = ψR
αR
σ = ψR
(σα)R
que es una expresi´on regular.
6. (α∗
)R
= αR ∗
base (α0
)
R
= λn
= λ = αR 0
hip´otesis de inducci´on (α∗
)R
= αR ∗
Para n + 1
αn+1 R
= (αn
α)R
= αR
(αn
)R
= αR
αR n
= αR n+1
ahora
(α∗
)R
=
∞
n=0
αn
R
=
∞
n=0
(αn
)R
=
∞
n=0
αR n
= (αn
)∗
que es una expresi´on regular.
Por lo tanto, la inversi´on de una expresi´on regular es una expresi´on regular.
2.2. EXPRESIONES REGULARES 33
Probablemente la definici´on anterior nos haga pensar que las expresiones
regualres no son tan comprensibles, pero quiza el siguiente ejemplo permita
que se pueda cambiar de opini´on
Ejemplo 14
01∗
+ 10∗
denota el lenguaje de todas las cadenas que comienzan con cero y estan
seguidas por cualquier cantidad de unos o comienzan con uno y estan seguidas
de cualquier cantidad de ceros.
Cerradura de Kleene
La Cerradura o clausura o estrella de Kleene de un lenguaje se denota por
L∗
y representa el conjunto de las cadenas que se pueden formar tomando
cualquier n´umero de cadenas de L, por ejemplo si L = {0, 11}, L∗
consta de
aquellas cadenas de ceros y unos en las que los unos se encuentran en pares,
como 001, 11110; sin embargo cadenas como 101 y 01011 no estan dentro de
la cerradura.
Ejemplo 15 Si L = {a, bb} entonces
L0
= {λ}
L1
= {a, bb}
L2
= {aa, abb, bba, bbbb}
L3
= {aaa, aabb, abba, abbbb, bbbbbb, bbbba bbaabb, bbaa}
observe que aqui a corresponde a un caracter y bb corresponde a otro caracter.
Para calcular L∗
debemos calcular Li
para todo i y hacer la uni´on de
estos lenguajes.
Construcci´on de expresiones regulares
Se mostrar´a un ejemplo de como se construyen las expresiones regulares
utilizando la definici´on de las mismas
34 CAP´ITULO 2. LENGUAJES REGULARES
Ejemplo 16 Sea E el conjunto formado por todas las cadenas que tienen
cero o m´as repeticiones de la cadena 01 alternados. Primero se desarrolla
una expresi´on regular para el lenguaje formado por la cadena ´unica 01, pos-
teriormente con ayuda del operador ∗, podermos obtener una expresi´on para
todas las cadenas de la forma 010101010 . . . 0101010
Lo primero que se debe contemplar es que por la definici´on de expresi´on reg-
ular 0 y 1 son expresiones regulares, y representan los lenguajes {0} y {1},
por el inciso 5 de la definici´on la concatenaci´on de expresiones regulares es
una expresi´on regular, por lo cual 01 es una expresi´on regular que generael
lenguaje {01}. Para obtener todas las cadenas que constan de ceros y unos
usamos 6 de la definici´on y obtenemos la expresi´on regular (01)∗
. Sin em-
bargo el lenguaje asociado a (01)∗
s´olo reconoce cadenas que empiecen con
cero y terminan en uno, pero que pasa con las cadenas que comienzan en
uno y terminen con cero o con uno, para contemplar todas las posiblilidades
ser´a necesario construir tres expresiones regulares m´as
(10)∗
0(10)∗
1(01)∗
y la expresi´on regular completa ser´a
(01)∗
+ (10)∗
+ 0(10)∗
+ 1(01)∗
aqui el operador + nos ayuda a unir los cuatro lenguajes formados por cada
una de las expresiones regulares.
Es importante denotar que los operadores en las expresiones regulares y
en las expresiones regulares conservan cierta precedencia dada de la siguiente
forma
El operador ∗ tiene la mayor precedencia, se aplica s´olo a la secuencia
m´as peque˜na de s´ımbolos a su izquierda que constituyen una expresi´on
regular bien formada.
El siguiente en precedencia es el operador concatenaci´on; una vez apli-
cados todos los ∗ aplicamos la concatenaci´on.
Por ´ultimo se aplican los operadores de uni´on.
2.3. LENGUAJES REGULARES 35
2.3. Lenguajes Regulares
Los Lenguajes regulares son elementos de la teor´ıa de la computaci´on que
estan directamente vinculados con las expresiones regulares y los aut´omatas
finitos deterministicos. Aunque las expresiones regulares describen los lengua-
jes de manera diferente a como lo hacen los aut´omatas finitos, ambas nota-
ciones representan exactamente el mismo conjunto de lenguajes (lenguajes
regulares), adem´as tambi´en se vio que es posible construir aut´omatas finitos
deterministicos asociados a aut´omatas finitos no deterministicos, con lo cual
los lenguajes regulares tambi´en se encongraran vinculados con ´esta clase de
aut´omatas.
Todo lenguaje definido mediante un aut´omata finito deterministico,
tambi´en puede definirse mediante una expresi´on regular.
Todo lenguaje definido por una expresi´on regular tambi´en puede definirse
mediante un aut´omata finito deterministico.
Definici´on 21 Un conjunto A ∈ Σ∗
se dice regular si existe un AFD M tal
que L(M) = A
Observaci´on 5 Sea M un aut´omata finito, entonces existe una expresi´on
regular r para la cual L(r) = L(M)
Observaci´on 6 Un lenguaje es regular si y s´olo si es aceptado por un aut´oma-
ta finito
Es importante recordar que los lenguajes son conjuntos, con lo cual se
les pueden aplicar las operaciones asociadas a los conjuntos y describir medi-
ante las mismas algunas propiedades que nos ayuden a construirlos y enten-
derlos de manera mas sencilla; a continuaci´on mencionamos algunas de las
propiedades de los lenguajes regulares
1. La uni´on de dos lenguajes regulares es regular.
2. La intersecci´on de dos lenguajes regulares es regular.
3. El complemento de un lenguaje regular es regular.
4. La diferencia de dos lenguajes regulares es regular.
5. La reflexi´on de un lenguaje regular es regular.
36 CAP´ITULO 2. LENGUAJES REGULARES
6. La cerradura de Kleen de un lenguaje regular es regular.
7. La concatenaci´on de dos lenguajes regulares es regular.
Cap´ıtulo 3
Lenguajes libres de contexto
Objetivo de la unidad: Conocer el concepto de lenguaje independiente
del contexto, cuales son las caracteristicas que posee y sus aplicaciones
Las Gram´aticas independientes del contexto o libres de contexto juegan un
papel muy importante en la tecnologia de las computadoras desde la decada
de 1960, ya que optimizaron e hicieron m´as barata la tarea de implementar
el analizador sint´actico de los compiladores; posteriormente nos permitieron
describir formatos de documentos mediante la definici´on del tipo de docu-
mentos en la red.
3.1. Gram´aticas libres de contexto
El lenguaje es el medio de comunicaci´on entre los seres humanos a trav´es
de signos orales y escritos que poseen un significado. Para que exista el lengua-
je se requieren ciertos factores como la sintaxis, que da estructura al lenguaje
y la sem´antica, que le da significado al lenguaje. Adem´as de manera conjun-
ta con los lenguajes tenemos la gram´atica que estudia los elementos de un
lenguaje y sus combinaciones. As´ı como es importante podernos comunicar
con otras personas, actualmente tambi´en es importante podernos comunicar
con las computadoras; es decir establecer un lenguaje y una gram´atica para
facilitar el uso de las mismas. Introduciremos de manera natural el concepto
de gram´atica mediante una analog´ıa con el lenguaje espa˜nol y su gram´atica.
37
38 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
Ejemplo 17 Suponga que tenemos la siguiente frase:
La gata gris duerme en la cama diariamente
Observamos que la frase se divide en dos partes esenciales sujeto y predicado;
el sujeto a su vez se divide en art´ıculo, sustantivo y adjetivo; y el predicado se
divide en verbo, preposici´on, art´ıculo y advervio. Nosotros podemos decir que
existe una variable llamada < frase > que genera 2 variables < sujeto > y
< predicado > es decir:
< frase >−→< sujeto >< predicado >
(sustituimos la palabra produce por la flecha) a su vez las variables
< sujeto >−→< articulo >< sustantivo >< adjetivo >
< predicado >−→< verbo >< preposicion >< articulo >< advervio >
por ´ultimo las variables
< articulo >−→ la | el
< sustantivo >−→ gata | cama
< adjetivo >−→ gris
< verbo >−→ duerme
< preposicion >−→ en
< advervio >−→ diariamente
a las variables la, el, gata, cama, gris, duerme, en, diariamente las llamamos
s´ımbolos terminales, mientras que a las variables escritas entre < > las
conocemos como s´ımbolos no terminales; el proceso que sustituye unas vari-
ables por otras se le conoce como producci´on y a la variables < frase > se
le conoce como s´ımbolo inicial.
De manera formal tenemos
Definici´on 22 Una Gram´atica es una cuadrupla G = (N, T, P, S) donde
N es un alfabeto a cuyos s´ımbolos llamamos no terminales.
T es un alfabeto a cuyos s´ımbolos llamamos terminales.
3.1. GRAM ´ATICAS LIBRES DE CONTEXTO 39
P es un subconjunto finito de (N T)∗
×N∗
→ N∗
y a los elementos (u, v)de
P los conocemos como producciones de G.
S es el s´ımbolo inicial.
En el p´arrafo previo a la definici´on se describe cuales son los conjuntos
N, y T as´ı como cual es el elemento S y las producciones correspondientes
al ejemplo (2).
Notaci´on 2 A los s´ımbolos no terminales se les representa mediante letras
may´usculas, mientras que los s´ımbolos terminales ser´an representados medi-
ante letras min´usculas.
Definici´on 23 Para ω, ω ∈ N∗
escribimos ω =⇒ ω si existen x, y ∈ N∗
y
una producci´on u −→ v en P tal que
ω = xuy
y
ω = xvy
Decimos que ω deriva ω
Escribimos ω
∗
=⇒ z si ω = z o existen ω1, ω2, · · · , ωn con n ≥ 2 en N∗
tales que
ω = ω1, z = ωn y ωi =⇒ ωi+1
sin p´erdida de generalidad a esta transformaci´on la llamaremos derivaci´on
en G y decimos que ω deriva a z.
Definici´on 24 El lenguaje L(G) generado por G es el conjunto de palabras
en T, que puede ser derivado a partir de S
L(G) = ω ∈ T∗
|S
∗
=⇒ ω
Ahora, regresando al ejemplo anterior observamos que las producciones
pueden generar frases como la siguiente
El cama gris duerme en la gata diariamente
La cual no es sem´anticamente aceptable, pues carece de significado, pero
es aceptada por la sintaxis de la gram´atica; debido a este comportamien-
to ser´a necesario hacer modificaciones para que el lenguaje s´olo reconozca
oraciones que posean significado (es decir analizar el contexto de la oraci´on).
40 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
Definici´on 25 Una gram´atica es regular si cada producci´on P es de la forma
α −→ xβ con (x ∈ T∗
, α, β ∈ N  T)
o de la forma
α −→ y con (α ∈ N  T, y ∈ T∗
)
Decimos que una gram´atica G es independiente del contexto si todas las
producciones son de la forma
α −→ z con z ∈ (T ∪ N)∗
Ejemplo 18 Sea G = (N, T, P, S) donde T = {a, b} N  T = {S, B} y P
consiste de las producciones
S −→ aSb | λ
entonces L(G) = {an
bn
|n ≥ 1} que es un lenguaje independiente del contexto.
Ejemplo 19 Sea G = (N, T, P, S) con T = {a, b}, N  T = {S} y P tenga
las producciones
S −→ aSa | bSb | a | b | λ
Tenemos que L(G) = ω ∈ T∗
|ω = ωR
que es el lenguaje de los pal´ındro-
mos, en el alfabeto T.
Definici´on 26 Sea G una gram´atica independiente del contexto, una produc-
ci´on A −→ α en la gram´atica se llama regla de G. El s´ımbolo no terminal
A es la parte izquierda de la regla, y la cadena α es la parte derecha de la regla.
En una producci´on de la forma A −→ xβ, la letra x ∈ N ∪ T se llama
manipuladora de la producci´on. Una producci´on de la forma A −→ B con A
y B s´ımbolos no terminales, se llama producci´on no generativa. Si G permite
la derivaci´on
A
∗
=⇒ Aϕ
entonces la letra no terminal A se dice recursiva izquierda. Si G permite la
derivaci´on
A
∗
=⇒ ϕA
entonces A se dice recursiva derecha. Si G permite la derivaci´on
A
∗
=⇒ A
en uno o m´as pasos entonces se dice que A es un no terminal c´ıclico.
3.2. ´ARBOLES DE DERIVACI ´ON 41
3.2. ´Arboles de derivaci´on
Cuando trabajamos con un lenguaje de alto nivel en una computadora
es necesario usar traductores que permitan a la m´aquina interpretar las ins-
trucciones que el usuario programa; en los traductores de lenguajes se usan
varios estados de procesamiento. Cuando las frases o instrucciones v´alidas
del lenguaje son especificadas por una gram´atica de estructura de frases, el
primer estado del proceso de traducci´on construye un ´arbol de derivaci´on
para la frase dada; una vez que esta es clara tendr´a asignado un ´unico ´arbol
de derivaci´on para cada tipo sint´actico, de esta manera es posible asociar un
significado a cada frase de acuerdo con la gram´atica de la misma. Al an´alisis
anterior se le conoce con el nombre de an´alisis de sintaxis.
Cuando tenemos una gram´atica independiente del contexto es muy ´util
presentar sus producciones mediante ´arboles de derivaci´on; sus v´ertices est´an
etiquetados con s´ımbolos terminales o variables de la gram´atica.
Sea G = (N, T, P, S) una gram´atica independiente del contexto, un ´arbol
se llama de derivaci´on (o de an´alisis gramatical) para G si:
1. Cada v´ertice tiene una etiqueta que es un s´ımbolo de N ∪ T ∪ .
2. La etiqueta de la ra´ız es S.
3. Si un v´ertice es interior y tiene etiqueta A, entonces A debe de estar
en N.
4. Si el v´ertice n tiene etiqueta A y los v´ertices n1, n2, n3, . . . , nk son los
hijos del v´ertice, de izquierda a derecha con etiquetas x1, x2, x3, . . . , xk
respectivamente, entonces A −→ x1|x2|x3| . . . |xk debe ser una produc-
ci´on de P.
5. Si el v´ertice n tiene etiqueta , entonces es una hoja y es el ´unico hijo
de su padre.
Ejemplo 20 G = ({S, A} , {a, b} , P, S) en donde:
S −→ aAS | a
A −→ SbA | SS | ba
42 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
Figura 3.1: ´Arbol de derivaci´on
3.2. ´ARBOLES DE DERIVACI ´ON 43
Podemos extender el ordenamiento desde la izquierda de los hijos para
producir un ordenamiento de izquierda a derecha de todas las hojas.
Un ´arbol de derivaci´on es una descripci´on natural de una oraci´on parti-
cular de la gram´atica G; si leemos las etiquetas de las hojas de izquierda a
derecha se tendr´a dicha oraci´on y la cadena resultante ser´a el producto del
´arbol de derivaci´on.
Un sub´arbol de un ´arbol de derivaci´on es un v´ertice particular con todos
sus descendientes, las aristas que los conectan y sus etiquetas; la diferencia
es que la ra´ız puede no ser el s´ımbolo inicial de la gram´atica. Si en cada paso
de una derivaci´on se aplica una producci´on a la variable que se encuentra
m´as a la izquierda la derivaci´on se llama extrema izquierda, esto se aplica de
manera an´aloga para la derecha.
Si ω ∈ L(G) tiene al menos un ´arbol de an´alisis gramatical particular, ω
tiene una derivaci´on izquierda y derecha ´unicas. Como puede existir m´as de
un ´arbol de derivaci´on para ω puede haber varias derivaciones izquierda y
derecha.
Una gram´atica independiente del contexto G de la que alguna palabra ten-
ga dos ´arboles de an´alisis gramatical se dice que es ambigua. No hay que
perder de vista que es posible que una gram´atica produzca derivaciones que
nos lleven a una cadena compuesta ´unicamente de s´ımbolos terminales, pero
que no necesariamente representan una oraci´on con significado alguno, o no
representan la instrucci´on que el programa necesita, como se observa en el
siguiente ejemplo.
Ejemplo 21 Consideremos la siguiente gram´atica:
GE : S → A
S −→ if B then A else S
B −→ A = A
A −→ T
A −→ T + A
T −→ x|y|z
44 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
Ahora empleando la gram´atica anterior construyamos un ´arbol de derivaci´on
para la instrucci´on:
if x = y then x else x + y
trazaremos los pasos de la producci´on de la frase anterior
S −→ if B then A else S
−→ if A = A then A else S
−→ if T = A then A else S
−→ if x = A then A else S
−→ if x = T then A else S
−→ if x = y then A else S
−→ if x = y then T else S
−→ if x = y then z else S
−→ if x = y then z else A
−→ if x = y then z else T + A
−→ if x = y then z else x + A
−→ if x = y then z else x + T
−→ if x = y then z else x + y
Cada cadena en los pasos de derivaci´on comienza con el s´ımbolo S; pero
observamos que para la producci´on
E −→ A
E −→ if x = y then x else x + y
tenemos dos candidatos, y ser´a necesario elegir qu´e producci´on usar alternan-
do con las diferentes posibilidades. Hasta agotar todas y llegar a la secuencia
de movimientos que acepten la cadena correcta (esto es importante pues es
posible obtener frases como la siguiente: if x = y then x = y else x = y, que
3.3. FORMAS NORMALES DE COMSKY 45
es diferente a la frase que se va a revisar). A dicho m´etodo se le conoce con el
nombre de arriba a abajo1
porque la derivaci´on comienza a construirse desde
el nodo ra´ız al tope del ´arbol bajando a trav´es de los niveles. Al proceso
inverso se le conoce como de abajo a arriba2
.
3.3. Formas normales de Comsky
Una gram´atica formal est´a en Forma normal de Chomsky si todas sus
reglas de producci´on son de alguna de las sigientes formas:
A −→ BC
o
A −→ α
donde A, B y C son elementos del conjunto de s´ımbolos no terminales y α es
un s´ımbolo terminal.Adem´as es importante mencionar que todo lenguaje de
programaci´on que no posee a la cadena vac´ıa, se puede expresar por medio
de una gram´atica en la forma normal de Chomsky, y dada una gram´atica
independiente del contexto es posible construir a partir de ella una gram´atica
de Chomsky que reconozca el mismo lenguaje, para lo cual necesitaremos
realizar ciertos pasos:
1. Hay que eliminar los s´ımbolos inutiles: las variables o s´ımbolos termi-
nales que no aparecen en ninguna derivaci´on de una cadena terminal
que parta del s´ımbolo inicial.
2. Hay que eliminar las producciones con la forma A −→ para alguna
variable A.
3. Hay que eliminar las producciones unitarias de la forma A −→ B para
las variables A y B.
3.4. Forma normal de Greibach
Existe otra forma normal interesante para los lenguajes independientes
del contexto no vac´ıos y sin la palabra vac´ıa. Se dice que una gram´atica
1
en ingles top-down
2
en ingles buttom-up
46 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
independiente del contexto est´a en Forma normal de Greibach, si todas y
cada una de sus reglas de producci´on tienen un consecuente que empieza
por un s´ımbolo terminal. Formalmente, cualquiera de las reglas tendr´a la
estructura:
A −→ αω
aqui α ser´a un s´ımbolo terminal y ω una cadena de cero o m´as terminales
Existe un teorema que prueba que cualquier GIC, cuyo lenguaje no con-
tiene a la palabra vac´ıa, si no lo est´a ya, se puede transformar en otra equiv-
alente que s´ı est´e en forma normal de Greibach.
3.5. Ambig¨uedad
En secciones anteriores, se menciono que una palabra derivada de una
gram´atica puede ser representada mediante un ´arbol de derivaci´on, pero
en muchas ocaciones el ´arbol de derivaci´on asociado a la palabra no es
´unico, existen dos o mas derivaciones, esto nos genera una estructura que
llamamos Gram´atica ambigua. Sea G = {{E, I} , T, P, E} donde T =
{+, ∗, (, ), a, b, 0, 1} con producciones
(1) E −→ I
(2) E −→ E + E
(3) E −→ E ∗ E
(4) E −→ (E)
(5) I −→ a
(6) I −→ b
(7) I −→ Ia
(8) I −→ Ib
(9) I −→ I0
(10) I −→ I1
Esta gram´atica nos permite generar expresiones con cualquier secuencia de
operadores ∗ y + y las producciones dos y tres en el orden que nosotros
deseemos.
3.6. AUT ´OMATAS DE PILA 47
Ejemplo 22 Observe que la cadena E+E∗E puede derivarse de dos formas
diferentes
E =⇒ E + E =⇒ E + E ∗ E
E =⇒ E ∗ E =⇒ E + E ∗ E
en el primer caso reemplazamos la segunda E por E ∗ E, mientras que en
la segunda reemplazamos la primera E por E + E, esto generar´a dos ´arboles
de derivaci´on diferentes, si nosostros asociaramos valores n´umericos a estos
dos diferentes derivaciones generariamos diferentes resultados, pues en la
primera solicita que la primera operaci´on que se realice sea la multiplicaci´on
y luego la sum, mientras que la otra realiza primero la suma y despu´es mul-
tiplica el resultado de la suma.
Para que sea posible utilizar ´esta gram´atica dentro de un compilador es
necesario modificarla, para que seleccione o propiorcione unicamente agru-
pamientos adecuados.
¿C´omo eliminar la ambig¨uedad de la gram´aticas?
No existe un algorimto que nos permita eliminar la ambig¨uedad de las
gram´aticas en general, sin embargo exiten proceso que nos permiten en al-
gunos casos eliminarla; para ´esto es necesario detectar primero cuales son las
causas m´as importantes que generan la ambig¨uedad en una gram´atica
No se respeta la precedencia de los operadores.
Una secuencia de operadores id´enticos puede agruparse desde la izquier-
da o desde la derecha.
El primer problema se resuelve introduciendo m´as variables cada una
de las cuales representa las expresiones que comparten el mismo nivel, y
el segundo problema se resolvera, respetando s´olo un tipo de derivaci´on de
preferencia izquierda.
3.6. Aut´omatas de Pila
En el cap´ıtulo anterior se menciona que las expresiones regulares tienen
asociado un aut´omata finito; de manera an´aloga las gram´aticas independien-
tes del contexto tambi´en tienen asociado un aut´omata al cual conoceremos
48 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
como Aut´omata de Pila. Debido a esta similitud con las gram´aticas indepen-
dientes del contexto necesitaremos emplear dos estructuras que son funda-
mentales en la definici´on y uso de los aut´omatas de pila.
La primera es la cinta de entrada que es un arreglo en donde ser´a guarda-
da la cadena de s´ımbolos terminales que acepta el aut´omata, se guardar´a un
s´ımbolo por casilla del arreglo y se tendr´a una marca en la siguiente casilla
del ´ultimo s´ımbolo escrito en la cinta; la segunda es una pila, en la cual es-
cribiremos los s´ımbolos pertenecientes al alfabeto de la pila, para que estos
a su vez puedan ser sustituidos o revisados por los s´ımbolos terminales en
la cinta de entrada. En la pila el s´ımbolo que se encuentre m´as a la derecha
ser´a el tope de la pila.
En los aut´omatas de pila se producen dos tipos de movimientos: el primero
introduce o saca un s´ımbolo de la pila, y dependiendo de cual sea la acci´on
realizada el tope de la pila avanzar´a o retroceder´a un lugar. El segundo
movimiento no afecta directamente el tope de la pila, pero revisa un s´ımbolo
de la cinta de entrada.
Es posible definir un lenguaje para los aut´omatas de pila para lo cual exis-
ten dos maneras; la primera consiste en definir el lenguaje aceptado como el
conjunto de todas las entradas para las cuales una sucesi´on de movimientos
provoca que el aut´omata de pila vac´ıe su pila. La segunda manera consiste en
designar algunos estados como estados finales y definimos el lenguaje acepta-
do como el conjunto de todas las entradas para las cuales alguna selecci´on de
movimientos provoca que el aut´omata alcance un estado final. Ambas formas
son equivalentes en el sentido de que si un conjunto es aceptado mediante
el vaciado de la pila por alg´un aut´omata, puede ser aceptado mediante el
acceso de un estado final por otro aut´omata y viceversa.
Definici´on 27 Un Aut´omata de Pila (AP) se define como una sextupla
M = (Q, S, U, P, I, F)
donde:
Q es un conjunto finito de estados
S es un alfabeto al que llamaremos alfabeto de entrada.
3.6. AUT ´OMATAS DE PILA 49
U es un alfabeto al que llamaremos alfabeto de pila .
P es el programa de M
I ⊆ Q es el conjunto de estado iniciales
F ⊆ Q es el conjunto de estados finales.
Definici´on 28 La forma de representar un estado v´alido en un aut´omata de
pila es la siguiente: (qi, ϕ, σ) a la cual llamaremos configuraci´on, donde el
estado en que nos encontramos o estado de control est´a dado por qi, ϕ es el
prefijo que se encuentra en la cinta de entrada y ya fue revisada y σ es la
cadena contenida en la pila.
El programa P tiene una secuencia finita de instrucciones con las siguien-
tes formas
q]scan(s, q )
La cual aplicada en la configuraci´on (qi, ϕ, σ), (con ϕ la cadena ya
revisada en la cinta de entrada) escribe el s´ımbolo s en la primera
casilla a la derecha despu´es del ´ultimo s´ımbolo de ϕ; y nos lleva al
estado qi, esta transformaci´on se representa de la siguiente forma:
(qi, ϕ, σ)
s
−→ (qi, ϕs, σ)
En otras palabras esta instrucci´on revisa el s´ımbolo que entra en la cinta
y lo coloca inmediatamente despu´es de la palabra que ya se encontraba
guardada.
q]write(u, q )
La cual aplicada en la configuraci´on (qi, ϕ, σ) mueve el tope de la pila
una posici´on a la derecha y escribe un s´ımbolo u en esa nueva posici´on,
pasando al estado qi dicho movimiento es representado de la siguiente
forma:
(qi, ϕ, σ)
w
−→ (qi, ϕ, σu)
Este movimiento introduce a la pila un nuevo s´ımbolo.
q]read(u, q )
50 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
La cual aplicada en la configuraci´on (qi, ϕ, σ u) mueve el tope de la pila
a la izquierda y entra en el estado qi, dicho movimiento es representado
de la siguiente forma:
(qi, ϕ, σ)
r
−→ (qi, ϕ, σ)
Este movimiento sacar´a un s´ımbolo de la pila.
Notaci´on 3 Es posible representar una secuencia de instrucciones en un
aut´omata de pila
(q0, ϕ0, σ0) −→ (q1, ϕ1, σ1) −→ · · · −→ (qk, ϕk, σk)
donde cada movimiento es un movimiento de lectura, escritura o revisi´on se
denotar´a de la siguiente forma:
(q0, ϕ0, σ0) =⇒ (qk, ϕk, σk)
Un aut´omata de pila comienza su funcionamiento con el tope de la pi-
la y de la cinta de entrada en la primera posici´on. La cadena que analiza
pasa a trav´es de una secuencia de movimientos, mientras la secuencia no sea
rechazada; si en alg´un momento todos los s´ımbolos de la cadena ya fueron
revisados, la pila se encuentra vac´ıa, y la ´ultima posici´on de la cinta de en-
trada corresponde a un estado final; entonces concluimos que la cadena es
reconocida.
Definici´on 29 Una configuraci´on inicial v´alida para un aut´omata de pila es
una configuraci´on (q, λ, λ) en donde q es un estado inicial del aut´omata; y
la configuraci´on final es (q , ϕ, λ), donde q es un estado final, ϕ la cadena
escrita en la cinta de entrada, de donde decimos que una cadena es aceptada
por el aut´omata s´olo si M tiene la secuencia de movimientos:
(q, λ, λ) =⇒ (q , ϕ, λ)
Donde q es el estado inicial, q es un estado final; el conjunto de cadenas
aceptadas ser´a el lenguaje reconocido por el aut´omata.
Ejemplo 23 Sea Mcm un aut´omata de pila con S = {a, b, c} y U = {a, b} el
alfabeto de la pila, el programa del aut´omata ser´a el siguiente:
3.6. AUT ´OMATAS DE PILA 51
1]scan (a,2)(b,3)(c,4)
2]write(a,1)
3]write(b,1)
4]scan (a,5)(b,6)
5]read (a,4)
6]read (b,4)
Donde el estado 1 es el estado inicial a menos que se especifique otra cosa;
y el estado final es el 6.
En la figura a cada estado se le coloc´o una etiqueta la cual est´a relacionada
con el nombre de la instrucci´on del programa que ejecuta.
El lenguaje reconocido por el aut´omata de pila es:
Lcm = ϕcϕR
ϕ ∈ (a ∪ b)∗
a este lenguaje lo conocemos como el lenguaje del reflejo con el centro mar-
cado o lenguaje de los pal´ındromos con el centro marcado.
Observamos que en este lenguaje la letra c est´a en el centro de la cadena
y su sufijo es igual a la inversa de su prefijo, con lo cual aceptar´a cadenas
como abcba mediante la siguiente secuencia de movimientos:
(1, λ, λ)
s
→ (2, a, λ)
w
→ (1, a, a)
s
→ (3, ab, a)
w
→ (1, ab, ab)
s
→ (4, abc, ab)
s
→ (6, abcb, ab)
r
→ (4, abcb, a)
s
→ (5, abcba, a)
r
→ (4, abcba, λ)
La cual es una secuencia de movimientos aceptada por el aut´omata.
El lenguaje Lcm es generado por la gram´atica independiente del contexto:
Gcm : Σ → S
S → aSa
S → bSb
S → c
52 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
Figura 3.2: AP para el lenguaje del pal´ındromo con el centro marcado
3.6. AUT ´OMATAS DE PILA 53
Movimientos propios y aut´omatas sin ciclos
En los aut´omatas de pila existen varias subclases entre las que se encuen-
tran los aut´omatas con buen comportamiento, los cuales sin p´erdida de gen-
eralidad reconocen los mismos lenguajes que toda la clase de los aut´omatas
de pila; a esta subclase se le conoce como Aut´omatas de pila propios y a con-
tinuaci´on se presenta una justificaci´on de la equivalencia entre esta subclase
y los aut´omatas de pila.
Aut´omatas de pila propios
Cuando se ejecuta el programa de un aut´omata de pila se pueden producir
comportamientos que carecen de sentido y son improductivos, en particular:
1. Revisar m´as all´a del fin de la cadena en la cinta de entrada.
2. Intentar leer un s´ımbolo como primer movimiento en la pila, es decir,
intentar mover el tope de la pila a la izquierda en el inicio de la pila.
3. Escribir un s´ımbolo en la pila, y que el siguiente movimiento sea la
lectura del mismo s´ımbolo.
· · · (q, ϕ, σ)
w
−→ (q , ϕ, σu)
r
−→ (q , ϕ, σ)
Observamos que el ´unico efecto es movernos del estado q al estado q , lo
cual s´olo puede ocurrir si el aut´omata tiene una instrucci´on de escritura
q]write(u, q )
para la cual la etiqueta del estado q es la instrucci´on read.
4. Repetici´on infinita de movimientos de escritura (un ciclo).
Los primeros tres tipos se analizar´an en esta secci´on, el ´ultimo tipo de
movimiento improductivo se analizar´a en la siguiente secci´on.
Definici´on 30 En el programa de un aut´omata de pila M una instrucci´on
de escritura es impropia, si el siguiente estado al que apunta est´a etiquetado
con una instrucci´on de lectura. Un aut´omata se dice propio si no contiene
movimientos impropios.
54 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
Las instrucciones impropias pueden ser eliminadas sin que esto altere el
lenguaje reconocido por el aut´omata, es decir, dado un aut´omata M es posi-
ble construir un aut´omata propio M , a˜nadiendo y borrando instrucciones de
la siguiente forma:
Paso 1: Sean q y q dos estados para los cuales el aut´omata tiene la secuencia
de movimientos
(q, ϕ, σ)
k mov write
=⇒ (q , ϕ, στ)
k mov read
=⇒ (q , ϕ, σ)
tenemos k movimientos de escritura seguidos del mismo n´umero de mo-
vimientos de lectura, en otras palabras, el contenido de la pila no se
modifica del estado q al estado q y adem´as no se revisa ning´un s´ımbolo
en la cinta de entrada.
Siempre que
p ] mov (−, q)
con mov un movimiento permitido por el programa del aut´omata, sea
una instrucci´on en M, a˜nadimos la instrucci´on
p ] mov (−, q )
En caso de que el estado q sea el estado inicial en M entonces q ser´a el
estado inicial en M . El procedimiento anterior puede realizarse para
cada par de estados q y q para los cuales M presenta una secuencia de
movimientos impropios.
Paso 2: Borrar cada instrucci´on impropia. Las instrucciones restantes son
el programa de M
Proposi´on 2 Sea M un aut´omata de pila con movimientos impropios; es
posible construir un aut´omata de pila M propio tal que L(M) = L(M ).
Aut´omatas de pila sin ciclos
El ´ultimo tipo de movimiento impropio se analizar´a en esta secci´on.
Definici´on 31 Un aut´omata de pila propio M se dice sin ciclos si el progra-
ma de ´este no contiene ciclos de instrucciones de escritura:
3.7. LENGUAJES NO REGULALES 55
q0]write(u0, q1)
q1]write(u1, q2)
...
qn]write(un, qn + 1) · · ·
Suponga que se tiene un aut´omata con un ciclo de instrucciones de escrit-
ura, estas imprimen los s´ımbolos u0, u1, · · · , un · · · de manera infinita, as´ı los
estados: q0, q1, · · · , qn no pueden aparecer como una secuencia de movimientos
aceptados.
Proposi´on 3 Para alg´un aut´omata de pila determin´ıstico M es posible cons-
truir un aut´omata de pila M sin ciclos tal que L(M) = L(M ).
3.7. Lenguajes no regulales
Los lenguajes no regulares o lenguajes independientes del contexto est´an
vinculador con las gram´aticas independientes del contexto y adem´as tienen
propiedades de cerradura similares a las de los lenguajes de las expresiones
regulares, las cuales se presentan a continuaci´on.
Primero se estudiar´a la intersecci´on de los lenguajes independientes del
contexto L con el conjunto regular R.
Sea
Mf = (Qf , T, Pf , If , Ff )
un aut´omata finito para R y
Mp = (Qp, T, U, Pp, Ip, Fp)
un aut´omata de pila para L. Al realizar la intersecci´on de estos dos aut´omatas
obtenemos el aut´omata de pila
M = (Q, T, U, P, I, F)
donde Q = Qp × Qf , I = Ip × If , F = Fp × Ff
El programa de M ser´a el siguiente:
56 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
Si Mp tiene y Mf tiene entonces M tiene
q]scan(s, q ) p
s
−→ q (q, p)]scan(s, (q , p ))
q]write(u, q ) p ∈ Qf (q, p)]write(u, (q , p))
q]read(u, q ) p ∈ Qf (q, p)]read(u, (q , p ))
Cuadro 3.1: Programa de L(Mp) ∩ L(Mf )
Teorema 2 El aut´omata M reconoce la secuencia de movimientos para ω
((q, p).λ, λ)
T
=⇒ ((q , p ), ω, λ)
con (q, p) ∈ y (q , p ) ∈ F si y s´olo si
(q, λ, λ)
T
=⇒ (q , ω, λ)
est´a en Mp y
p
ω
=⇒ p
est´a en Mf
Puesto que el complemento de un conjunto regular es regular, y L − R =
L ∩ Rc
entonces L − R ser´a un lenguaje independiente del contexto. Para
poder trabajar con la cerradura de los lenguajes independientes del contexto
y las operaciones de conjuntos (uni´on, concatenaci´on e inversa) utilizamos su
relaci´on con las gram´aticas independientes del contexto.
Dadas dos gram´aticas
G1 = (T, N1, P1, Σ1)
G2 = (T, N2, P2, Σ2)
dos gram´aticas independientes del contexto con el mismo alfabeto terminal
T, pero con conjuntos no terminales disjuntos, N1 ∩ N2 = ∅ entonces la
gram´atica para el lenguaje resultante de concatenar L = L(G1) · L(G2) se
obtendr´a usando nuevos s´ımbolos terminales A1, A2 en lugar de Σ1, Σ2 y
a˜nadiendo la producci´on
Σ −→ A1A2
a la ´union de P1 y P2, y para completar agregamos la producci´on Σ −→ λ si
G1 tiene Σ1 −→ λ y Σ2 −→ λ.
3.7. LENGUAJES NO REGULALES 57
La clase de los lenguajes independientes del contexto no son cerradas bajo
las operaciones de intersecci´on y complemento, lo cual demostraremos por
medio de un contraejemplo; sean
L1 = {an
bn
cm
|m, n ≥ 0}
L2 = {am
bn
cn
|m, n ≥ 0}
La intersecci´on de L1 y L2 es
L1 ∩ L2 = {an
bn
cn
|n ≥ 0} = Ldm
el lenguaje de doble correspondencia, el cual no es independiente del contex-
to.
Ahora, si el complemento de un lenguaje independiente del contexto fuera
siempre independiente del contexto, podr´ıamos demostrar la cerradura bajo
intersecci´on usando las leyes de De Morgan.
L1 ∩ L2 = (Lc
1 ∪ Lc
2)c
con lo cual el complemento no es independiente del contexto.
Para estudiar el traductor de estado finito de un lenguaje independiente
del contexto es ´util pensar en t´erminos de un aut´omata de pila que genere
lenguajes independientes del contexto, un aut´omata de pila generador (APG)
es un aut´omata en el cual consideramos la cinta de entrada como cinta de
salida (impresi´on) y reemplazamos cada movimiento scan
q]scan(s, q )
con un movimiento print
q]print(s, q )
que escribe el s´ımbolo s en la cinta de salida. Claramente el APG genera una
cadena ω (esto es, escribe ω en la cinta de salida) por la traves´ıa
(q, λ, λ)
T
=⇒ (q , ω, λ)
si y s´olo si la m´aquina que representa un aut´omata reconoce ω por la misma
secuencia de movimientos.
El aut´omata generador
Mg = (Qg, S, U, Pg, Ig, Fg)
58 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
genera cadenas en L que son procesadas por un traductor secuencial genera-
lizado.
Mt = (Qt, S, R, Pt, It, Ft)
La combinaci´on de Mg y Mt es un nuevo APG
M = (Q, R, U, P, I, F)
con
q = Qg × Qt, F = fg × Ft, I = Ig × It
que justamente generan las cadenas en R∗
que son traducidas por M en
cadenas en L. Esto es, M genera ϕ, por la traves´ıa
((q, p), λ, λ)
T
=⇒ ((q , p ), ϕ, λ)
con (q, p) ∈ I, (q , p ) ∈ F si y s´olo si Mg genera alguna cadena ω por la
traves´ıa
(q, λ, λ)
T
=⇒ (q , ω, λ)
y ϕ es la traducci´on de ω para M
p
ω/ϕ
=⇒ p
el programa de M se especifica en la tabla (3.2) y se a˜nade una instrucci´on
adicional
q]null(q )
La cual nos coloca en el estado q del aut´omata sin hacer movimientos en el
tope de la pila. La instrucci´on null es an´aloga a la transici´on λ en un aut´omata
de estado finito y puede ser reemplazada con el par de instrucciones
q]write(u, q )
q ]read(u, q )
donde q es un nuevo estado auxiliar y u es un s´ımbolo arbitrario en la pila
(los movimientos impropios despu´es pueden ser eliminados)
3.7. LENGUAJES NO REGULALES 59
Teorema 3 La clase de los lenguajes independientes del contexto con al-
fabeto terminal T es cerrada bajo las operaciones de uni´on, concatenaci´on,
cerradura e inversi´on (reversa), intersecci´on y diferencia con un conjunto
regular. Esto es si L1 y L2 son lenguajes independientes del contexto y R es
un conjunto regular entonces
L1 ∪ L2 LR
1 L1 · L2
L1 ∩ R L∗
1 L1 − R
son independientes del contexto, sin embargo
L1 ∩ L2 L∗
1 = T∗
− L1
no necesariamente son independientes del contexto.
Si Mg tiene y Mt tiene Entonces M tiene
q]write(u, q ) p ∈ Qt (q, p)]write(u, (q , p))
q]read(u, q ) p ∈ Qt (q, p)]read(u, (q , p))
q]print(s, q ) p]scan(s, p ) (q, p)]null(q , p )
q ∈ Qg p]print(r, p ) (q, p)]print(r, (q, p ))
Cuadro 3.2: Especificaci´on del programa de un APG para la traducci´on de
L(Mg) por M
60 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
Cap´ıtulo 4
M´aquinas de Turing
Objetivo de la unidad: Comprender y conocer el funcionamiento de
una m´aquina de Turing y para que se puede utilizar
Ahora vamos a abordar la cuesti´on de que lenguajes pueden definirse por
medio de dispositivos computacionales, sean cuales fueren. Esta cuesti´on es
equivalente a preguntarnos que pueden hacer los computadores, dado que el
reconocimiento de las cadenas que forman parte de un lenguaje es un modo
formal de expresar cualquier problema y la resoluci´on es un equivalente ra-
zonable de lo que hacen los computadores.
Un problema que ning´un computador puede resolver se denomina inde-
cidible. Supongamos que se desea determinar si un computador puede re-
solver o no alg´un otro problema. Podemos intentar escribir un problema que
lo resuelva, pero, si no se nos ocurre como hacerlo, podr´ıamos intentar que
tal programa no puede existir. Quiz´a ser´ıa posible demostrar que este nue-
vo problema es indecidible suponiendo que existe un programa que resuelve
el problema y desarrollar otro programa parad´ojico que tenga que efectuar
dos acciones contradictorias. Supongamos que se debe que el problemaP1 es
indecidible y que P2 es un programa nuevo que nos gustar´ıa demostrar que
tambi´en es indecidible. Supongamos que existe un programa representado
en la siguiente imagen por el rombo con la etiqueta decide que imprime si
o no dependiendo de si la codificaci´on del problema P2 (que constituye su
entrada) pertenece o no al lenguaje de dicho problema.
Para demostrar que el problema P2 es indecidible, es necesario que nos in-
ventemos un procedimiento de construcci´on, representado por la caja cuadra-
61
62 CAP´ITULO 4. M ´AQUINAS DE TURING
Figura 4.1: Reducci´on de un problema P1 a un problema P2
da de la figura que convierta los problemas P1 en problemas P2 que tengan la
misma respuesta. Esto es cualquier cadena del lenguaje P1 se convertir´a en
una cadena perteneciente a P2, y cualquier cadena construida sobre el alfa-
beto de P1 que no est´e en el lenguaje P1 se convertir´a en una cadena que no
forme parte del lenguaje P2. Una vez que disponemos de este procedimiento
de construcci´on P1 se puede resolver como sigue:
1. Dado un problema P1, esto es dado una cadena ω que no puede pertenecer
al lenguaje P1, se aplica el algoritmo de construcci´on para producir una
cadena x.
2. Se comprueba x est´a en P2, y se aplica la misma respuesta a ω y P1.
Si ω esta en P1, entonces x esta en P2, asi que este algoritmo dice si; si ω
no esta en P1, entonces x no esta en P2, y el algoritmo dice no. De cualquier
modo dice la verdad acerca de ω. Dado que sabemos que no existe ning´un
algoritmo capaz de decidir la pertenencia de una cadena P1, disponemos
de una demostraci´on por reducci´on al absurdo de que no existe el algoritmo
hipot´etico de decisi´on, para P2 o, lo que es lo mismo, de que P2 es indecidible.
¿Puede realmente una computadora hacer todo esto? Al examinar
un programa podr´ıamos preguntarnos si en realidad, buscar contraejemplos
es ´util. Si el contraejemplo m´as peque˜no estuviera en el orden de magnitud
de los billones, se producir´a un error de desbordamiento antes de que fuera
posible encontrar una posible soluci´on. De hecho, se podr´ıa argumentar que
un computador con 128 megabytes de memoria principal de memoria prin-
cipal y 30 gigabytes de disco s´olo tiene 2563
0128000000 estados, y es, por
lo tanto, un aut´omata finito. Sin embargo, no es productivo considerar que
los computadores se comporten como aut´omatas finitos, como tampoco lo es
considerar que el cerebro lo hace (aunque la idea original del aut´omata finito
fuera esta). El n´umero de estados implicados es tan grande, y los limites tan
poco claros, que no se obtendr´a ninguna conclusi´on ´util. De hecho, existen
razones para creer que es posible expandir el conjunto de estados de una
computadora tanto como se quiera.
Es un error habitual intentar demostrar que un problema P2 es indecidible
mediante la reducci´on de P2 a alg´un problema P1 que se sabe que es inde-
cidible. Esto equivale a demostrar la proposici´on si P1 es decidible, entonces
4.1. DEFINICI ´ON DE UNA M ´AQUINA DE TURING 63
P1 es decidible. Esa proposici´on, aunque ciertamente es verdadera, no es ´util,
ya que su hip´otesis, P1 es decidible, es falsa. La ´unica manera de demostrar
que un problema nuevo P2 es indecidible es reducir a P2 un problema P1
que se sabe es indecidible. De esta forma se demuestra la proposici´on si P2
es decidible, entonces P1 es decidible. La conversi´on contradictoria de esta
proposici´on es si P1 es indecidible, podemos deducir que P2 es indecidible.
Dado que sabemos que P1 es indecible, podemos deducir que P2 es indecidi-
ble.
4.1. Definici´on de una M´aquina de Turing
La teor´ıa de los problemas indecidibles no solo tiene por objeto estable-
cer la existencia de dichos problemas, sino proporcionar a los programadores
una gu´ıa sobre lo que se puede o no llevar a cabo mediante la programaci´on.
Esta teor´ıa tambi´en tiene un gran impacto pr´actico si se trata de discu-
tir, problemas que, aun siendo decidibles, requieren un tiempo muy grande
para su resoluci´on. Para los programadores y dise˜nadores de sistemas, estos
problemas, llamados problemas intratables tienden a presentar m´as dificul-
tades que los problemas indecidibles. La raz´on para ello es que, mientras que
suele ser obvio que los problemas indecidibles efectivamente lo son y, en la
pr´actica, raramente se intentan resolver, los problemas intratables aparecen
continuamente. Adem´as, a menudo dan lugar a peque˜nas modificaciones de
los requisitos o a soluciones heur´ısticas. Por tanto, los dise˜nadores tienen que
enfrentarse frecuentemente al hecho de tener que decidir si un problema es o
no intratable, y que hacer si lo es.
A finales del siglo XIX, el matem´atico David Hilbert se pregunto si
era posible encontrar un algoritmo para determinar la verdad o falsedad de
cualquier proposici´on matem´atica. En particular, se preguntaba si existir´ıa
un modo de determinar si cualquier f´ormula del c´alculo de predicados de
primer orden, aplicada a enteros, es verdadera. Dado que el c´alculo de predi-
cados de primer orden sobre los enteros es suficientemente potente como para
expresar frases como esta gram´atica es ambigua, si Hilbert hubiera tenido ´exi-
to, existir´ıan algoritmos para dichos problemas, que ahora sabemos que no
existen ´esta proposici´on se conoce con el nombre de problema de Hilbert.
En 1963, Alan Mathinson Turing propuso la m´aquina que lleva su nombre
64 CAP´ITULO 4. M ´AQUINAS DE TURING
como modelo de cualquier computaci´on posible. Este modelo se parece m´as a
una computadora que a un programa, aunque las verdaderas computadoras
electr´onicas, o incluso los electromec´anicas, tardaron varios a˜nos en ser con-
struidas.
La m´aquina de Turing consta de una unidad de control, que pueda estar
en cualquier estado tomado de un conjunto infinito. Hay una cinta dividida
en cuadrados o casillas, y cada casilla puede contener un s´ımbolo, tomado de
otro conjunto infinito. Inicialmente, se sit´ua en la cinta de entrada, que es
una cadena de s´ımbolos de longitud infinita, elegidos del alfabeto de entrada.
El resto de las casillas de la cinta, que se extiende infinitamente hacia la
derecha y hacia la izquierda, contiene, inicialmente, un s´ımbolo denominado
espacio en blanco. El espacio en blanco es un s´ımbolo de cinta, pero no un
s´ımbolo de entrada, y puede haber tambi´en otros s´ımbolos de cinta adem´as
de los s´ımbolos de entrada y del espacio en blanco. Existe una cabeza de
la cinta que siempre est´a situada sobre una de las casillas de la cinta. Se
dice que la m´aquina de Turing est´a se˜nalando dicha casilla. Al principio, la
cabeza de la cinta se encuentra en la casilla de la entrada situada m´as a la
izquierda. Un movimiento de la m´aquina de Turing es una funci´on del estado
de la unidad de control y del s´ımbolo de la cinta al que se˜nala la cabeza. En
un movimiento, la m´aquina de Turing:
1. Cambiar´a de estado, el siguiente estado puede ser el mismo que el
actual.
2. Escribir´a un s´ımbolo de cinta en la casilla se˜nalada por la cabeza. Este
s´ımbolo de cinta sustituye al s´ımbolo que estuviera anteriormente en la
casilla, el s´ımbolo escrito puede ser el mismo que hab´ıa en dicha casilla.
3. Mover´a la cabeza de la cinta hacia la izquierda o hacia la derecha.
Es necesario que haya un movimiento, y no se permite que la cabeza
permanezca en el mismo lugar. Esta limitaci´on no restringe lo que una
m´aquina de Turing puede computar, dado que cualquier secuencia de
movimientos con la cabeza estacionaria podr´ıa condensarse, junto con
el movimiento siguiente de la cabeza, en un ´unico cambio de estado, un
nuevo s´ımbolo de cinta y un movimiento hacia la izquierda o hacia la
derecha.
La notaci´on formal para una M´aquina de Turing (MT) es similar a la utilizada
para los aut´omatas finitos o para los aut´omatas a pila.
4.2. CONSTRUCCI ´ON MODULAR DE UNA MT 65
Definici´on 32 Una M´aquina de Turing MT es una sextupla M = (Q, Σ, Γ, δ, q0, B, F)
donde
Q El conjunto finito de estados de la unidad de control.
Σ El conjunto finito de s´ımbolos de entrada.
Γ El conjunto completo de s´ımbolos de la cinta; Σ siempre es un subconjunto
de Γ
δ La funci´on de transici´on. Los argumentos de δ(q, X) son un estado q y un
s´ımbolo de la cinta X. el valor de δ(q, X), si est´a es una tupla (p, Y, S)
donde
1. p es el estado siguiente de Q
2. Y es el s´ımbolo de Γ, que se escribe en la casilla se˜nalada por la
cabeza de la cinta y que sustituye al s´ımbolo que se encontraba en
dicha casilla.
3. S es un sentido I o D (izquierda o derecha) que nos indica en que
sentido se mueve la cabeza
q0 Es el estado inicial.
B Es el s´ımbolo del espacio en blanco B ∈ Γ, y aparecera inicialmente
en todas las casillas de la cinta, menos en aquellas que contienen los
s´ımbolos de entrada
F ⊂ es el conjunto de estados finales o de aceptaci´on
4.2. Construcci´on modular de una MT
Para describir formalmente lo que hace una m´aquina de Turing, es nece-
sario desarrollar una notaci´on para describir sus configuraciones o descrip-
ciones instant´aneas, parecida a la notaci´on que desarrollo para los aut´omatas
a pila.
En principio una m´aquina de Turing dispone de una cinta de longitud in-
finita, por lo cual podr´ıa suponerse que no es posible describir especificamente
su configuraci´on. Sin embargo, despu´es de un n´umero finito de movimientos,
la m´aquina de Turing solo habr´a recorrido un n´umero finito de casillas. Por
66 CAP´ITULO 4. M ´AQUINAS DE TURING
tanto, para cualquier configuraci´on existe un prefijo y un sufijo infinito de
casillas que no se han recorrido nunca. El contenido de dichas casillas debe
ser
espacios en blanco o
s´ımbolos del conjunto finito de s´ımbolos de entrada.
por lo tanto, en una configuraci´on solo se muestran las casillas que se
encuentren entre el s´ımbolo m´as a la izquierda y el s´ımbolo m´as a la derecha
de la cinta que no sean espacios en blanco, adem´as, habr´a que incluir un
n´umero finito de espacios en blanco en la configuraci´on, si se da la condici´on
especial de que la cabeza de la cinta se˜nale a uno de los espacios en blanco
situados antes o despu´es de la cadena de entrada.
Adem´as de la representaci´on de la cinta, debe ser posible representar el
estado de la unidad de control, as´ı como la posici´on de la cabeza de la cin-
ta. Para ello, insertaremos el estado en la cinta, situ´andolo inmediatamente
a la izquierda de la casilla se˜nalada por la cabeza. Para que la cadena que
representa el contenido de la cinta junto con el estado de la unidad de con-
trol no resulte ambigua, es necesario asegurarse de que no se utiliza como
estado ning´un s´ımbolo que forme parte del conjunto de s´ımbolos de cinta.
Sin embargo, es sencillo cambiar los nombres de los estados de forma que no
tengan nada en com´un con los s´ımbolos de la cinta, dado que la operaci´on
de la m´aquina de Turing no depende de c´omo se llamen sus estados. Por
tanto, utilizaremos la cadena x1x2 . . . xi−1qxixi+1 . . . xn para representar una
configuraci´on en la que:
1. q es el estado de la m´aquina de Turing.
2. La cabeza de la cinta se˜nala al i-´esimo s´ımbolo a partir de la izquierda.
3. x1x2 . . . xn es la porci´on de la cinta que se encuentra entre los s´ımbolos
no blancos situados m´as a la izquierda y m´as a la derecha. Como ex-
cepci´on, si la cabeza se˜nala a alguna casilla a la izquierda del s´ımbolo
no blanco que se encuentre m´as a la izquierda, o a alguna casilla a la
derecha del s´ımbolo no blanco que se encuentre m´as a la derecha, en-
tonces algunos caracteres prefijos o sufijos de x1x2 . . . xn ser´an espacios
en blanco, siendo i = 1 o i = n, respectivamente.
4.2. CONSTRUCCI ´ON MODULAR DE UNA MT 67
Los movimientos de una m´aquina de Turing se describen utilizando la
notaci´on →M .
Ejemplo 24 La siguiente m´aquina de Turing acepta el lenguaje {0n
1n
|n ≥ 1}.
Inicialmente, sobre la cinta se escribe una secuencia finita de ceros y unos,
precedida y seguida por un n´umero finito de espacios en blanco. Alternativa-
mente, la m´aquina de Turing cambiara primero un 0 por una x y luego un 1
por una y, hasta que se hayan cambiado todos los ceros y unos. La m´aquina
de Turing repite los pasos que se describen a continuaci´on m´as detallada-
mente, y comenzando por el extremo izquierdo de la entrada. Cambia un 0
por una x y se mueve hacia la derecha, pasando por encima de todos los ceros
e y que encuentre, hasta llegar a un 1. Cambia el 1 por una y y se mueve
hacia la izquierda, pasando por encima de todas las y y de todos los ceros
que vaya encontrando, hasta llegar a una x. Entonces, busca el primer 0 que
se encuentre inmediatamente a su derecha y, si lo encuentra, lo sustituye
por una x y repite el proceso igual que antes, cambiando un 1 por una y. Si
la entrada no es de la forma 0∗
1∗
, la m´aquina de Turing no conseguir´a fi-
nalmente realizar ning´un movimiento, y dejara de operar sin aceptar. Sin
embargo, si termina cambiando todos los ceros por x en la misma pasada en
la que cambia el ultimo 1 por una y, entonces determina que la cadena de
entrada era de la forma 0n
1n
y acepta. La m´aquina de Turing que realiza la
serie de movimientos es la siguiente:
M = ({q0, q1q2, q3, q4} , {0, 1} , {0, 1, X, Y, B} , δ, q0, B, {q4})
donde δ est´a representada mediante la siguiente tabla
Estado 0 1 X Y B
q0 (q1, X, D) — — (q3, Y, D) —
q1 (q1, 0, D) (q2, Y, 1) — (q1, Y, D) —
q2 (q2, 0, I) — (q0, X, D) (q2, Y, I) —
q3 — — — (q3, Y, D) (q4, B, D)
q4 — — — — —
Cuadro 4.1: Una m´aquina de Turing para {0n
1n
}
Mientras M realiza los pasos anteriores, la porci´on de la cinta que ya ha
sido recorrida por la cabeza de la cinta corresponder´a siempre a una secuen-
cia de s´ımbolos descrita mediante la expresi´on regular X∗
0∗
Y ∗
1∗
. Es decir,
68 CAP´ITULO 4. M ´AQUINAS DE TURING
habr´a algunos ceros que ya han sido sustituidos por X, seguidos de algunos
ceros que todav´ıa no han sido sustituidos. Luego, se encontraran algunos unos
ya reemplazados por Y , seguidos de unos que aun no han sido reemplazados.
A continuaci´on, puede que haya algunos ceros o unos. El estado q0 es el es-
tado inicial, y M entra de nuevo en q0 cada vez que vuelve a se˜nalar al 0 que
quede m´as a la izquierda. Si M se encuentra en el estado q0 y la cabeza se˜nala
a un 0, la regla del extremo superior izquierdo de la figura anterior indica que
M debe pasar por el estado q1, reemplazar el 0 por una X, y moverse hacia
la derecha. Una vez en el estado q1, M sigue movi´endose hacia la derecha,
pasando por encima de todos los ceros y todas las Y que encuentre, mientras
permanece en el estado q1. Si M encuentra una X o una B, deja de oper-
ar. Sin embargo, si M encuentra un 1 cuando est´a en el estado q1, sustituye
dicho 1 por una Y , pasa al estado q2, y comienza a moverse hacia la izquierda.
En el estado q2, M se mueve hacia la izquierda, pasando por encima de
los ceros y las Y que encuentre, mientras permanece en el estado q2. Cuando
M alcanza la X que se encuentra m´as a la derecha, que determina cual es
el extremo derecho del bloque de ceros que ya han sido sustituidos por X, M
vuelve al estado q0 y se mueve hacia la derecha. Hay dos casos posibles:
1. Si M encuentra ahora un 0, repite el ciclo de sustituciones que acabamos
de escribir.
2. Si M encuentra una Y , significa que ya ha cambiado todos los ceros
por X. Si hab´ıa cambiado todos los unos por Y , entonces la entrada
era de la forma 0n
1n
, y M aceptar´ıa. Por tanto, M pasa al estado q3 y
comienza a moverse hacia la derecha, pasando por encima de las Y . Si
el primer s´ımbolo distinto de una Y que encuentra M es un espacio en
blanco, entonces efectivamente hab´ıa en la entrada el mismo n´umero
de ceros que de unos, de forma que M pasa al estado q4 y acepta. Por
otra parte, si M encontrara un 1, significar´ıa que hay demasiados unos,
as´ı que M dejar´ıa de operar sin aceptar. Si encontrara un 0, significar´ıa
que la entrada era incorrecta, y M tambi´en se detendr´ıa.
A continuaci´on emplearemos la m´aquina M anterior para comprobar si
la cadena 0011 es aceptada por la m´aquina de Turing. Comenzamos con M
en el estado q0, y se˜nalando al primer 0, con lo cual la configuraci´on inicial
es q00011, presntamos a continuaci´on la secuencia completa de movimientos
4.2. CONSTRUCCI ´ON MODULAR DE UNA MT 69
de M es:
q0001 → Xq1011 → X0q111 → Xq20Y 1 → q2X0Y 1 → Xq00Y 1 →
XXq1Y 1 → XXq11 → XXq2Y Y → Xq2XY Y → XXq0Y Y →
XXY q3Y → XXY Y q3B → XXY Y Bq4B
Aqui se presenta otro ejemplo, en el que se examina qu´e hace M con la
entrada 0010, la cual es una cadena que no pertence al lenguaje aceptado
por la m´aquina.
q00011 → Xq1010 → X0q110 → Xq20Y 0 → q2X0Y 0 →
Xqo0Y 0 → XXq1Y 0 → XXY q10 → XXY q1B
El comportamiento de M con 0010 recuerda su comportamiento con 0011,
hasta que alcanza la configuraci´on XXY 0q1B. Sin embargo, en el estado q1,
M no puede realizar ning´un movimiento si el s´ımbolo de la entrada al que
se˜nala es B. Por tanto, M deja de operar sin aceptar esta entrada.
La simbolog´ıa que se usa normalmente en las m´aquinas de Turing es
similar a la utilizada en otros tipos de aut´omatas.
Las letras min´usculas iniciales del alfabeto se utilizan para los s´ımbolos de
entrada.
Las letras may´usculas, normalmente las de la zona final del alfabeto, se
utiliza como s´ımbolos de la cinta que pueden o no formar parte del
conjunto de s´ımbolos de entrada. Sin embargo, generalmente se usa B
para representar el s´ımbolo correspondiente al espacio en blanco.
Las letras min´usculas del final del alfabeto se utilizan para designar cadenas
formadas por s´ımbolos de entrada.
Las letras griegas representan cadenas de s´ımbolos de cinta.
Letras como q, p, u otras pr´oximas, representan estados.
70 CAP´ITULO 4. M ´AQUINAS DE TURING
4.3. El lenguaje de una M´aquina de Turing
Podremos decir que la forma en la que una m´aquina de Turing acepta
una cadena es la siguiente: la cadena de entrada se situa en la cinta y la
cabeza comienza se˜nalando el s´ımbolo de entrada que se encuentra m´as a la
izquierda; si la m´aquina de Turing llega a un estado de aceptaci´on al final del
proceso, se considera que la cadena es reconocida, en caso contrario, decimos
que la cadene no fue aceptada.
De manera formal dada una m´aquina de Turing M = (Q, Σ, Γ, δ, q0, B, F),
el lenguaje L(M) es el conjunto de cadenas ω de Σ∗
tales que q0ω →∗
αpβ
para alg´un estado p del conjunto de estado finales F, y cualesquiera dos ca-
denas de cinta α y β. Los lenguajes que son pueden ser aceptados por la
m´aquina de Turing reciben el nombre de lenguajes recursivamente enumer-
ables o lenguajes RE.
Sin embargo este no es el ´unico m´etodo para la aceptaci´on de una cadena,
existe otro que comunmente se le conoce con el nombre de aceptaci´on por
parada. Se dice que una m´aquina de Turing se para si alcanza un estado
q cuando se˜nala a un s´ımbolo de la cinta X, sin que se produzca ning´un
movimiento en dicha situaci´on; es decir δ(q, X) no esta definida. Siempre
se puede suponer que una m´aquina deTuring se para si acepta, es decir sin
introducir variaciones en el lenguaje aceptado, se puede hacer que δ(q, X) se
quede sin definir siempre que q sea un estado de aceptaci´on. En general a
menos que se especifique lo contrario, suponemos que una m´aquina de Turing
siempre se para cuando est´a en un estado de aceptaci´on, aunque no en todos
los casos ocurre ´esto. Los lenguajes reconocidos por m´aquinas de Turing que
siempre se paran, acepten o no, se les conoce con el nombre de recursivos.
Las m´aquinas de Turing que siempre se paran con independencia de que
acepten o no, son un buen modelo de algoritmo. Si existe un algoritmo para
resolver un problema dado, entonces se dice que el problema es decidible, con
lo cual se observa que las m´aquinas de Turing que siempre se paran, tienen
un papel importante en la teoria de la decidibilidad.
4.4. VARIANTES DE UNA M ´AQUINA DE TURING 71
4.4. Variantes de una M´aquina de Turing
Existen mucho modelos de computaci´on relacionados con las m´aquinas de
Turing, que poseen el mismo potencial como reconocedores de lenguajes, Uno
de ellos es la m´aquina de Turing con varias cintas, la cual puede simular a
una computadora, sin embargo las cintas extra no a˜naden mejoras al modelo,
en cuanto a la cuestion de aceptar lenguajes.
4.4.1. M´aquina de Turing con varias cintas
este dispositivo dispone de una unidad de control (estado) y un n´umero
finito de cintas. Cada cinta se divide en casillas y cada casilla puede contener
cualquier s´ımbolo del alfabeto finito de la cinta, adem´as de contener al espacio
en blanco. Un subconjunto de la cinta que no incluye al blanco, es el conjunto
de los s´ımbolos de entrada. el conjunto de los estados incluye un estado inicial
y varios estado de aceptaci´on, inicialmente
1. La entrada se situa en la primera cinta.
2. Las casilla de las cintas restantes contienen espacios en blanco.
3. La unidad de control est´a en el estado inicial.
4. La cabeza de la primera cinta apunta a la izquierda de la entrada.
5. El resto de las cabezas de las otras cintas apuntan a casillas arbitrarias.
Cada movimiento dependera del estado y del s´ımbolo le´ıdo por cada una
de las cabezas de la cinta, en cada movimiento la m´aquina hace los siguiente
1. La unidad de control pasa a un nuevo estado.
2. Se escribe un n´uevo s´ımbolo de la cinta en las casillas a las que apunta
la cabeza de cada cinta.
3. Cada una de las cabezas de cinta realiza un movimiento que puede
ser, hacia la izquierda, hacia la derecha o estacionario, las cabezas se
mueven de manera independiente.
Una diferencia entre las transiciones de la m´aquina con una cinta y la
de varias cintas es que en la primero no podiamos tener movimientos esta-
cionarios, mientras que en la m´aquina con varias cintas si es permitido.
72 CAP´ITULO 4. M ´AQUINAS DE TURING
4.4.2. M´aquinas con pilas multiples
Este modelo est´a basado en la generalizaci´on de los aut´omatas de pila.
Pues si el aut´omata de pila tuviera dos pila podria reconocer lenguajes re-
conocidos por las m´aquinas de Turing, mientras que con una sola pila (como
es su definici´on) no es posible. Como consecuencia de ´esta generalizaci´on,
surgen las m´aquinas contadoras, las cuales s´olo se limitan a almacenar un
n´umero finito de enteros y a realizar movimientos diferentes dependiendo de
si alguno de sus contadores est´a en cero.
Figura 4.2: Esquema de una m´aquina de turing con multiples pilas
La m´aquina con pilas multiples tiene una unidad de control, que se en-
cuentra en un estado de su conjunto finito de estados posibles, y un alfabeto
de pila finito que utiliza para todas sus pilas, cada movimiento se basa en
1. El estado de su unidad de control.
2. El s´ımbolo de entrada le´ıdo, que ha de formar parte del alfabeto finito
de los s´ımbolos de entrada, no permitiendo transiciones sin valor ( )
3. El s´ımbolo en el tope de cada una de sus pilas.
En cada movimiento la m´aquina puede
Pasar a un nuevo estado.
Sustituir el s´ımbolo en el tope de cada una de sus pilas por una cadena
formada por cero o m´as s´ımbolos de pila. La cadena que se introduce
en cada pila puede ser diferente para cada una de ellas. La m´aquina con
pilas multiples acepta una o varias cadenas si llega a un estado final.
Teorema 4 Si un lenguaje L es aceptado por una m´aquina de Turing, en-
tonces L es aceptado por una m´aquina con dos pilas.
4.4.3. M´aquinas contadoras
Una m´aquina contadora puede verse de dos formas
4.4. VARIANTES DE UNA M ´AQUINA DE TURING 73
1. La m´aquina contadora tiene la misma estructura que la m´aquina con
pilas m´ultiples, pero dispone de contadores en lugar de pilas. Los con-
tadores almacenan cualquier entero no negativo, peros solo puede dis-
tinguir si un contador est´a a cero o no. Es decir, cada movimiento de
la m´aquina contadora depende de su estado, de su s´ımbolo de entrada,
y de cu´ales de sus contadores est´an en cero, suponiendo que alguno lo
est´e. En un movimiento, la m´aquina contadora puede
a) Cambiar de estado.
b) Sumar o restar uno a cualquiera de sus contadores independiente.
c) Sin embargo, los contadores no pueden llegar a ser negativos, de
modo que no se puede restar 1 a un contador que ya se encuentra
a 0.
2. Como una m´aquina con pilas m´ultiples con las siguientes restricciones
a) Solo hay dos s´ımbolos de pila, a los que lamaremos Z0 (el marcador
de fondo de la pila) y X.
b) En cada pila se encuentra inicialmente Z0.
c) Z0 s´olo puede sustituirse por una cadena de la forma XiZ0, para
alg´un i ≥ 0.
d) X s´olo puede sustituirse por Xi para alg´un i ≥ 0. Es decir, Z0
´unicamente aparece en el fondo de cada pila, y todos los dem´as
s´ımbolos que se encuentren en la pila son X.
Ambas deiniciones son equivalentes, as´ı que no existe problema por que
usemos una u otra.
Hay algunas observaciones acerca de los lenguajes aceptados por las m´aquinas
contadoras que, aunque evidentes, merece la pena mencionar:
Observaci´on 7 Todo lenguaje aceptado por una m´aquina contadora es re-
cursivamente enumerable. Esto ocurre porque una m´aquina contadora es un
caso especial de m´aquina con pilas, y una m´aquina con pilas es un caso es-
pecial de m´aquina de Turing con varias cintas, que solo acepta lenguajes
recursivamente enumerables.
74 CAP´ITULO 4. M ´AQUINAS DE TURING
Observaci´on 8 Todo lenguaje aceptado por una m´aquina con un contador
es independiente del contexto. Una m´aquina contadora por la definici´on 2,
es una pila, as´ı que una m´aquina con un contador es un caso especial de
m´aquina con una sola pila o, lo que es lo mismo, un aut´omata a pila. De
hecho, todos los lenguajes aceptados por las m´aquinas con un contador son
aceptados por aut´omatas a pila.
El resultado m´as sorprendente acerca de las m´aquinas contadoras es que
dos contadores son suficientes para simular una m´aquina de Turing y, por lo
tanto, para aceptar cualquier lenguaje recursivamente enumerable.
Teorema 5 Todo lenguaje recursivamente enumerable es aceptado por una
m´aquina con tres contadores.
Teorema 6 Todo lenguaje recursivamente enumerable es aceptado por una
m´aquina con dos contadores.
Actividad 9 Investigar las caracteristicas y funcionamiento de las sigu-
ientes variantes de m´aquina de Turing
1. M´aquinas de Turing Deterministas
2. M´aquinas de turing no deterministas
3. M´aquinas de turing con cintas semiinfinitas
Cap´ıtulo 5
Decibilidad
Objetivo de la unidad: Comprender las caracteristicas de los lenguajes
decidibles
Diremos que un problema de decisi´on es decidible por una maquina de
Turing s´ı s´olo si la m´aquina responde correctamente cada una de las respues-
tas a las preguntas asociadas al problema. Por otro lado se ha considera-
do formas de simplificar la construcci´on de m´aquinas de Turing mediante
la introducci´on de la modularidad, esto quiere decir, considerado algunas
maquinas elementales a partir de las cuales podremos construir otras con
mayor eficiencia. En ´este capitulo trataremos alguno de los problemas que
motivar´on el estudio de los capitulos anteriores y que se plantear´on al inicio
del primero.
Primero es necesario crear un planteamiento que nos permita determinar
de manera eficiente si un problema puede ser tratado como un caso de de-
cisi´on, o solamente es un problema intratable, recordemos que la diferencia
entre ambos radica en que el problema de decisi´on tenemos casos en los que
no existen algoritmos que nos permitan resolver el problema, mientras que
el segundo, presenta algoritmos muy extensos que ocupan todos los recursos
de una computadora, o que requieren de mucho tiempo para su soluci´on por
ejemplo
¿ Hay enteros tales que satisfagan la ecuaci´on 3x + 6y = 151? no es un
problema de decisi´on.
¿ Hay enteros x, y tales que se cumple la ecuaci´on ax + by = c? si es un
problema de decisi´on (aqu´’i es importante mencionar que para cada
75
76 CAP´ITULO 5. DECIBILIDAD
valor de a, b y c tenemos un problema distinto.
El problema de la parada ¿Existe alg´un procedimiento efectivo algorit-
mo o m´aquina de Turing que nos permita determinar, para cualquier
m´aquina de Turing concreta representada en la cinta si la m´aquina
llegara a detenerse en algun momento despu´es de iniciar su computo?
(esta cuesti´on se menciono en la secci´on de lenguaje de una m´aquina
de Turing). Este problema tiene una respuesta negativa, por lo que se
trata de un problema indecidible.
5.1. Lenguajes Decidibles
Un lenguaje decidible es aquel lenguaje L para el cual existe una m´aquina
de Turing que le puede aceptar cualquier cadena ω ∈ L. Hay lenguajes for-
mados por cadenas tales que una m´aquina de Turing logra un estado final
con las cadenas que reconoce y acepta, solamente. En este caso se dice que la
m´aquina de Turing semidecide al lenguaje. Los lenguajes semidecididos por
una m´aquina de Turing se llaman recursivos numerables. Las gram´aticas sin
restricciones son las que generan los lenguajes recursivos numerables y estos
generalizan a los lenguajes recursivos, los cuales generalizan a los lengua-
jes libres de contexto, y estos a los lenguajes regulares. Lo anterior tiene
relaci´on directa con el hecho de que las m´aquinas de Turing generalizan a los
aut´omatas de pila y estos a su vez a los aut´omatas finitos.
En t´erminos de procedimientos, las cadenas de un lenguaje decidible cor-
responden a procedimientos que terminan, ya sea realizando lo que indica
la palabra o se˜nalando que no tienen la capacidad de realizarlo. Para un
lenguaje semidecidible, las cadenas decididas por la m´aquina de Turing son
instrucciones realizadas por la m´aquina de Turing. De manera complemen-
taria, las cadenas no decidibles por la m´aquina de Turing corresponden a
procedimientos que no terminan utilizando una m´aquina de Turing. con lo
anterior podemos dar la definici´on de algoritmo
Definici´on 33 Un algoritmo es una implementaci´on de una m´aquina de
Turing tal que el conjunto de sus entradas es el lenguaje decidible.
En otras palabras si dado conjunto de entradas bajo las cuales una m´aquina
de Turing logra un estado de parada para cada entrada, la m´aquina corre-
5.2. EL PROBLEMA DE HALTING 77
sponde a la implementaci´on de un algoritmo. Esta es la Tesis de Church -
Turing. No es un teorema pues no se puede demostrar matem´aticamente, de
manera general y categ´orica. Es solo la afirmaci´on de que el concepto informal
del algoritmo corresponde a un objeto matem´atico. Al ser s´olo una afirmaci´on
no demostrable, puede suceder que en un futuro sea refudada. Sin embargo
para que esto ocurra, se necesita encontrar un aut´omata m´as potente que una
m´aquina de Turing tal que sea la implementaci´on de un algoritmo. Si bien
hay algunas propuestas interesantes que pretende generalizar a la m´aquina
de Turing, hasta la fecha ninguna de ellas ha sido aceptada para sustituirla.
es importante mencionar que los lenguajes que tienen asociados algoritmos
son finitos, mientras que aquellos a los cuales no les podemos asignar un
algoritmo son infinitos (en terminos de la cantidad de problemas).
5.2. El problema de Halting
El problema de Halting o tambi´en conocido como el problema de la parada
(se menciono en la secci´on anterior) , es equivalente a construir un programa
que decida si un algoritmo finaliza alguna vez o no. Respecto a este problema
Turing prov´o que no es posible construir una m´aquina de Turing que decida
si otra m´aquina de Turing aceptara alguna cadena durante su procesamiento,
debido a que mientras la m´aquina de turing trabaja, las cadenas almacenadas
en la cinta, son pasos intermedios que no tiene nada que ver con el resultado
final.
El problema se desarrolla suponiendo que dada una m´aquina de turing
MT1 existe una cadena de s´ımbolos ω1, que nos informa si otra m´aquina de
turing M2 con programa P2 y datos iniciales D2 se detendra proporcionando
una salida ω1 = P1 [P2, D2]. Suponga que aplicamos el programa P1, que
determina el comportamiento de MT1, que determina el comportamiento so-
bre el mismo programa, pero tomando como datos los propios P1 [P1, D1],
entonces para que MT1 pueda informar si MT2, para o no debe existir un
programa P1 que para cuando un programa anterior P1 (recuerde que se esta
trabajando sobre MT1) que pare cuando un segundo programa P1 introduci-
do como dato anterior no para. Aqui el programa se esta ejecutando sobre
s´ı mismo, lo cual no es posible.
78 CAP´ITULO 5. DECIBILIDAD
5.3. Decibilidad de teor´ıas l´ogicas
Una teor´ıa l´ogica TL se define a partir de un conjunto de enunciados da-
dos llamados axiomas, unas reglas de inferencia y un esquema de derivaci´on.
A partir de los axiomas y aplicando la regla de inferencia y el esquema de
derivaci´on se infieren los teoremas de la teor´ıa. El conjunto de teoremas de la
teor´ıa forma un lenguaje formal.Si es posible definir una m´aquina de Turing
tal que reconozca al lenguaje de los teoremas, este lenguaje es decidible y
la teor´ıa tambi´en lo es consecuencia. Dicho en otras palabras, si el conjun-
to de teoremas visto como un lenguaje es reconocido por una m´aquina de
Turing, entonces la TL es decidible, y viceversa. Puede hablarse entonces de
manera indistinta de teor´ıas l´ogicas o de lenguajes decidibles, como aquel-
los para los que existe una m´aquina de Turing capaz de reconocerlos. Luego
la correspondencia entre la sintaxis de una teor´ıa l´ogica (lenguaje formal)
y reconocimiento simb´olico del mismo por parte de un aut´omata queda es-
tablecida.
Ejemplo 25 Muestre que la colecci´on de lenguajes decidibles por m´aquina
de Turing para un alfabeto cualquiera es infinita, pero contable. Soluci´on
El cinjunto de lenguajes independientes de contexto es infinito.
los conjuntos de los lenguajes independientes de contexto, lenguajes decidi-
bles por Turing, lenguajes estructurados por frases son contables.
La colecci´on de lenguajes decidibles es contable por ser un subconjunto
de los lenguajes estructurados por frases (que son contables). Es infinita por
que contiene a los lenguajes independientes de contexto, que son infinitos.
Los lenguajes decidibles en tiempo polinomico son aquellos lenguajes para
los que una m´aquina de Turing puede determinar si una cadena pertenece al
lenguaje. Implica reconocer el complemento del lenguaje.
El desarrollo de la teor´ıa de la computabilidad ha ido ´ıntimamente ligado
al desarrollo de la l´ogica matem´atica. Esto ha sido as´ı porque la decibilidad
de los distintos sistemas l´ogicos es una cuesti´on fundamental. Es bastante
f´acil ver que el c´alculo proposicional no era decidible. Por otro lado, para
cada una de las distintas teor´ıas se ha ido estudiando su posible decibilidad,
son muchos los problemas interesantes que se han demostrado computables.
Todas las funciones construidas por recursividad primitiva o minimalizaci´on
5.3. DECIBILIDAD DE TEOR´IAS L ´OGICAS 79
a partir de funciones calculables resultan ser calculables, siendo el resultado
m´as significativo en relaci´on con esta cuesti´on el dado por el siguiente teorema
Teorema 7 Primer teorema de Recursi´on: Todo operador entre fun-
ciones calculables que sea recursivo (esto es que se defina la imagen de f
mediante una funci´on calculable en t´erminos de una parte finita de f), tiene
una funci´on parcial computable que es el menos punto fijo, es decir, esa fun-
ci´on es un punto fijo y cualquier otro punto fijo del operador es una extensi´on
de esa funci´on.
Este teorema recibe su nombre porque podemos definir una funci´on medi-
ante una ecuaci´on recursiva m´as general que la permitida por la recursividad
primitiva, a saber donde es un operador recursivo. El primer teorema de
recursi´on nos dice que hay una funci´on que satisface esta ecuaci´on. Como
en matem´aticas se requiere que la funci´on sea univoca, se dice que dicha
ecuaci´on define el menor punto fijo del operador. As´ı, y de acuerdo al primer
teorema de recursi´on, la clase de las funciones calculables es cerrada bajo
una muy general forma de definici´on por recursi´on.
A menudo se utiliza la t´ecnica de reducir un problema a otro para com-
probar si tiene o no soluci´on efectiva. La estrategia en el caso de la respuesta
negativa es la siguiente, si se reduce de forma efectiva un problema sin solu-
ci´on efectiva a otro problema (mediante una funci´on calculable), entonces
este nuevo problema tampoco tendr´a soluci´on efectiva. La raz´on es muy sim-
ple, si tuviese soluci´on efectiva, componiendo el algoritmo soluci´on con el
algoritmo de transformaci´on obtendr´ıamos una soluci´on para el problema
efectivamente irresoluble. En sentido inverso, si se reduce un problema a otro
para el que se conoce una soluci´on efectiva, entonces componiendo se obtiene
una soluci´on para el primer problema. Esta t´ecnica es muy ´util y se utiliza
a menudo. Por otro lado, esta misma t´ecnica es muy empleada en el campo
de la complejidad algor´ıtmica. Para asegurarse de que un problema esta en
una clase de complejidad, basta reducir el problema a otro de dicha clase sin
mas que asegurarse que la reducci´on se realiza en la correspondiente clase de
complejidad.
80 CAP´ITULO 5. DECIBILIDAD
Cap´ıtulo 6
Reducibilidad
Objetivo de la unidad: Aplicar la reducibilidad a los lenguajes estudi-
ados medisnte m´aquinas de Turing
6.1. Problemas insolubles para la teor´ıa de
lenguajes
En el capitulo anterior se trata a grandes rasgos, los problemas que pueden
ser resueltos mediante un algoritmo y aquellos que no; con lo cual ahora s´olo
nos queda analizar que problemas pueden ser resueltos por una computadora
con m´as o menos eficiencia; es claro que para resolver esta interrogante es
necesario que s´olo tomemos los problemas decidibles y seleccionemos s´olo
aquellos que se pueden resolver mediante m´aquinas de Turing en un tiempo
que crece en funci´on polin´omica del tamao de la entrada. Para comenzar a
estudiar este capitulo es conveniente tomar en cuenta lo siguiente:
Los problemas que se pueden resolver en tiempo polin´omico en una com-
putadora, son exactamente los mismo que se pueden resolver en tiempo
polin´omico en una m´aquina de Turing.
Existe una l´ınea divisoria fundamental entre los problemas que se pueden
resolver en tiempo polin´omico y los que requieren de un tiempo expo-
nencial o mayor. Los problemas pr´acticos que requieren de un tiempo
polin´omico son casi siempre resolubles en un tiempo tolerable, mien-
tras que los que requieren de un tiempo exponencial, en general no se
pueden resolver, excepto en casos sencillos.
81
82 CAP´ITULO 6. REDUCIBILIDAD
La teor´ıa de la intratabilidad se refiere al conjunto de t´ecnicas que se
pueden utilizar para mostrar que un problema no se puede resolver en tiem-
po polin´omico; la teor´ıa de la reducibilidad tra de aquellos problemas que
pueden ser reducidos a casos particulares y que pueden ser resueltos en tiem-
pos polin´omicos.
El analizar si es posible satisfacer una expresi´on booleana, es decir que
la expresi´on reuslte verdadera para alguna asignaci´on de los valores de ver-
dad verdadero y falso a sus variables, ´este problema no se puede decidir en
tiempo polin´omico, y adem´as se puede reducir a muchos otros y con ´esto se
prueba que las reducciones tambi´en son intratables. Con este tipo de proble-
mas, ya no bastara con que exista un algoritmo que nos permita transformar
los casos de un problema en casos de otro, adem´as dicho algoritmo deber´a eje-
cutarse a lo m´as en tiempo polin´omico, ya que de lo contrario, la reducci´on
no nos podria ayudar a saber si el segundo problema es intratable, aunque
el primero lo sea.En otras palabras
Definici´on 34 Un problema A es reducible a otro B si un m´etodo para
resolver B proporciona un m´etodo para resolver A. Cada problema puede
representarse a trav´es de una codificaci´on como un conjunto de n´umeros.
As´ı, es posible estudiar la reducibilidad como una relaci´on entre conjuntos de
n´umeros, bajo el siguiente principio Un conjunto A es reducible al conjunto
B si un m´etodo para decidir si algo pertenece a B, proporciona un m´etodo
para decidir que algo pertenece al conjunto A.
´Esta definici´on esta fundamentada en una conjutura llamada N = NP,
que permite suponer que la clase de los problemas que se pueden resolver
en tiempo polin´omico mediante m´aquinas de Turing no deterministicas, con-
tienen al menos algunos problemas que no se pueden resolver en tiempo
polin´omico usando m´aquinas de Turing deterministicas, aunque estas ocu-
pen un tiempo polini´omico de grado m´as alto.
Actividad 10 Investigar la definici´on de las clases de problemas N y NP,
y en que consisten sus diferencias
Definici´on 35 Se dice que una m´aquina de Turing M tiene un tiempo de
c´alculo (complejidad temporal) T(n) si se detiene despu´es de T(n) movimien-
tos como m´aximo cuando recibe una entrada ω de longitud n (ya sea aceptada
o rechazada)
6.2. UN PROBLEMA SIMPLE INSOLUBLE 83
Esta definici´onse aplica a cualquier funci´on T(n) que sea un polin´omio en
n, y de aqui se desprende que
Definici´on 36 Un languaje est´a en la clase P, si existe algun polin´omio
T(n) tal que L = L(M) para alguna m´aquina de Turing determinista M,
cuya complejidad temporal es T(n).
6.2. Un problema simple insoluble
6.2.1. Algoritmo de Kruskal
Para este problema, se necesitara retomar los conceptos de grafos que
se estudiar´on en la materia de Matem´aticas para computadora en primer
semestre.
Considere el problema de encontrar un ´arbol de peso m´ınimo asociado
a un grafo APMAG, a continuaci´on se presenta un ejemplo de un grafo,
en el cual los nodos est´an numerados del 1 al 4 y hay arcos entre pares de
nodos, y cada uno tiene un peso en entero, un ´arbol que abarca el grafo es
un subconjunto de los arcos tal que todos los nodos quedan conectados entre
s´ı mediante estos arcos pero no se forma ningun ciclo.
Figura 6.1: Ejemplo para APMAG
El ´arbol para el nodo 3 esta compuesto por todas las aristas que parten
de ´el.
El ´arbol de peso m´ınimo es el que tiene la ,enor suma total de pesos de los
arcos entre todos los que abarcan el grafo. Existe un algoritmo llamado algo-
ritmo de Kruskal para encontrar un APMAG que consiste en los siguientes
pasos:
1. Para cada nodo anotar la componente conexa en la que aparece, usando
los arcos del ´arbol seleccionados hasta el momento. Inicialmente no se
ha seleccionado ning´un arco, por lo que cada nodo formara por si s´olo
una componente conexa.
84 CAP´ITULO 6. REDUCIBILIDAD
2. Se elige el arco de menor peso que aun no se halla examinado, y se
rompen las ligaduras como se desee. Si este arco conecta dos nodos
situados actualmente en componentes conexas distintas:
a) Se selecciona este arco, para el ´arbol que abarca el grafo.
b) Se unen las dos componentes conexas, cambiando el n´umero de
componente asociado a todos los nodos de una de las componentes,
para que sea el mismo que el n´umero de componente de la otra.
3. Se eligen arcos hasta que todos los nodos hallan sido examinados, o
hasta que el n´umero de arcos seleccionados pra el ´arbol que abarca
el grafo sea igual al n´umero de nodos menos uno. en este caso todos
los nodos deben estar en una solo componente conexa, y es posible
olvidarse de todos los arcos restantes.
Este algoritmo puede implementarse en una computadora, para hallar el
´arbol que abarca un grafo de m nodos y e arcos en un tiempo O(m + eloge).
Una implementaci´on m´as simple, mas fac´ıl de seguir lo consigue en e pasos.
Una tabla da la componente actual de cada nodo. Elegimos el arco siguiente
de menor peso en un tiempo O(e), y encontramos las componentes de los dos
nodos que conectan este arco en tiempo O(m). Si son diferentes unimos los
nodos con esos n´umeros en tiempo O(m), recorriendo la tabla de nodos. Este
tiempo es polin´omico respecto al tamao de la entrada que podemos consid-
erar, informalmente, igual a la suma de e y m.
Para aplicar este algoritmo a las m´aquinas de Turing hay que resolver
algunas cuestiones:
Al estudiar algoritmos, nos encontramos con problemas que necesitan
que se generaen salidas de diversas formas, tales como la lista de arcos
en una APMAG. en cambio cuando tratamos con m´aquinas de Turing,
los problemas se vaen como lenguajes y su ´unico resultado es si o
no, es decir aceptado o rechazado, para nuestro problema podriamos
redactarlo as´ı Dado el grafo G y el limite W, ¿Existe en G un
´arbol que lo abarque con peso menor o igual a W? Este problema
puede parecer m´as sencillo, puesto que no se pide el ´arbol asociado al
grafo. En este caso el hecho de que la versi´on si − no de un problema
sea dif´ıcil implica que tambi´en lo sera la versi´on completa, de la cual
se tiene que obtener una respuesta m´as detallada.
6.2. UN PROBLEMA SIMPLE INSOLUBLE 85
Se podria pensar que el tamao de un grafo es el n´umero de nodos o arcos
que tiene, sin embargo en una m´aquina de turing los datos de entrada
tienen la forma de una cadena de caracteres extra´ıdos de cierto alfabeto.
Como consecuencia los problemas que tienen que ver con nodos y arcos
deber´an ser codificados de alguna manera, con lo cual las m´aquinas de
Turing seran m´as largas que lo que se habia pensado al inicio; aunque
esto no es significativo por las siguiente razones:
1. La diferencia entre el tama˜no de la cadena de entrada de una
m´aquina de Turing y el de la cadena del problema informal, de-
pende de un factor pequeo, que es aproximado al logaritmo del
tamao de la entrada. Por lo cual, lo que se puede hacer en tiempo
polin´omico en funci´on de una medida, tambi´en puede hacerse en
tiempo polin´omico utilizando la otra medida.
2. La longitud de la cadena que representa la entrada es una medida
m´as exacta que el n´umero de bits que tiene que leer una computa-
dora para obtener la entrada del problema, pues en nuestro caso
eln´umero de bits para representar a un nodo es proporcional al
logaritmo del tamo˜no del entero en el nodo. en lugar de un byte
por nodo.
Este algoritmo puede ser implementado en una m´aquina de Turing con
varias cintas en un tiempo O(n2
) utilizando las cintas de la siguiente forma:
1. Una cinta puede utilizarse para guardar los nodos y su n´umero de
componentre en cada momento. La longitud de esta tabla es O(n)
2. A medida que se analizan los arcos sobre la cinta de entrada, se puede
usar otra cinta para encontrar el peso menor encontrado hasta el mo-
mento entre todos los arcos que no han sido marcados como usados.
se puede usar una segunda pista de la cinta de entrada para marcar
los arcos que fueron seleccionados por su peso minimo, en las pasadas
anteriores del algoritmo. La busqueda del arco no marcado lleva un
tiempo O(n).
3. Los dos nodos que unen al arco seleccionado se pueden almacenar en
otra cinta, para despu´es buscar las componentes de esos nodos en un
tiempo O(n)
86 CAP´ITULO 6. REDUCIBILIDAD
4. Se puede usar otra cinta para guardar las dos componentes i y j, que
se uniran cuando se encuentre un arco que conecta dos componentes
previamento no conectadas. Despu´es se buscara en la tabla de nodos y
componentes, para cambiar a jla componente de todos los nodos que
estaban en la componente i, esta busqueda lleva un tiempo O(n).
6.3. Funciones computables
Formalmente diremos que un lenguaje L esta en la clase NP (no deter-
ministico, polin´omico), si existe una m´aquina de Turing no deterministca M
y una complejidad de tiempo polin´omico T(n) tal que L = L(M) y cuando
M recibe una entrada de longitud n, no existen secuencias de mas de T(n)
movimientos de M. Con ´estadefinici´on podemos concluir que P ⊆ NP, es
necesario enfatizar que la contenci´on contraria no se cumple.
Actividad 11 Desarrolle el problema NP del viajante de comercio,
Actividad 12 Defina que es un problema NPcompleto y escriba dos ejem-
plos.
A continuaci´on se muestran algunos resultados que nos permite establecer
condiciones para reducir un algoritmo.
Una m´aquina de Turing calcula una funci´on a partir de la entrada de la
cinta y pone fin con la salida de la funci´on en la cinta.
Definici´on 37 Una funci´on f : E∗
−→ E∗
es una funci´on computable si la
m´aquina de Turing M asociada, s´olo se detiene con f(ω), en cada entrada
ω en su cinta.
Ejemplo 26 Todas las operaciones aritm´eticas habituales en enteros son
funciones computables. Podemos hacer una m´aquina que tiene entrada (m, n)
y devuelva m + n.
Un lenguaje A es reducible a un lenguaje B, si existe una funci´on com-
putable f : E∗
−→ E∗
donde para cada ω, f(ω) esta en B, a la funci´on f se
llama la reducci´on de A a B.
6.3. FUNCIONES COMPUTABLES 87
Si un problema es reducible a un segundo problema ya resuelto con an-
terioridad, podemos obtener una soluci´on al problema original. Tenemos esa
idea en el siguiente teorema.
Teorema 8 Si A ≤ B en cuanto a tama˜no y B es reducible, entonces A es
reducible.
Y como consecuencia si A es irreducible B tambien ser´a irreducible.
88 CAP´ITULO 6. REDUCIBILIDAD
Bibliograf´ıa
[1] Denning, Dennis, Qualitz, Machines, languages and computa-
tion. Editorial Prentice Hall 1978.
[2] John E. Hopcroft y Jeffrey D. Ullman, Introducci´on a la teor´ıa
de aut´omatas, lenguajes y computaci´on.Editorial CECSA 1979.
[3] Howie, John M. Automata and languages. Editorial Oxford sci-
ence publications, 1991.
[4] Dean, Kelley. Teor´ıa de aut´omatas y lenguajes formales. Edi-
torial Prentice Hall, 1998.
89

Más contenido relacionado

PDF
Autómatas
PDF
Metodos numericos con matlab
PDF
Manual dematlab
PDF
Example of iterative method
PDF
Algoritmos
PDF
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
PDF
Cálculo Numérico Asistido con el Software Matemático MatLab.
Autómatas
Metodos numericos con matlab
Manual dematlab
Example of iterative method
Algoritmos
TÓPICOS DE MATLAB: APLICACIÓN A LOS MÉTODOS NUMÉRICOS.
Cálculo Numérico Asistido con el Software Matemático MatLab.

La actualidad más candente (14)

PDF
Demostracion
PDF
Aplicacion de ecuasiones de primer orden
PDF
Funciones multivariables
PDF
Teoria delacompuu v-vi
PDF
Algebra[ufro]
PDF
Teoriapto
PDF
Probabilidad y estadistica elementales
PDF
Control digital con matlab
PDF
6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control
PDF
Manual simulink
PPTX
Trabajo de exposicion computacion aplicada
PDF
Cinematica )
PDF
Temario de cálculo direrencial
PDF
Demostracion
Aplicacion de ecuasiones de primer orden
Funciones multivariables
Teoria delacompuu v-vi
Algebra[ufro]
Teoriapto
Probabilidad y estadistica elementales
Control digital con matlab
6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control
Manual simulink
Trabajo de exposicion computacion aplicada
Cinematica )
Temario de cálculo direrencial
Publicidad

Similar a 2010.029 (20)

PDF
Octave calculo numerico
PDF
385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf
PDF
Apuntes De Matematicas Discretas
PDF
Apuntes De Matematicas Discretas
PDF
Apuntes De Matematicas Discretas
PDF
Apuntes De Matematicas Discretas
PDF
Vba excel mnumericos
PDF
Casos prácticos de uml
PDF
Manual r 1
PDF
Libro logica
PDF
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
PDF
Logica para informáticos
PDF
aprendepython.pdf
PDF
PLC y Electroneumática: Automatismos industriales
PDF
Automatismos Industriales para armando de tablero
PDF
memoria
DOC
Algoritmos guia de maria hernandez
PDF
MANUAL DE LENGUAJE C
PDF
Metodosnumerics
Octave calculo numerico
385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf
Apuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
Vba excel mnumericos
Casos prácticos de uml
Manual r 1
Libro logica
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
Logica para informáticos
aprendepython.pdf
PLC y Electroneumática: Automatismos industriales
Automatismos Industriales para armando de tablero
memoria
Algoritmos guia de maria hernandez
MANUAL DE LENGUAJE C
Metodosnumerics
Publicidad

Último (20)

PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
TOMO II - LITERATURA.pd plusenmas ultras
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
2.0 Introduccion a processing, y como obtenerlo
PDF
CIRSOC-201-2024_Proyecto de Reglamento Argentino de Estructuras de Hormigón
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
PDF
Atencion prenatal. Ginecologia y obsetricia
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Teologia-Sistematica-Por-Lewis-Sperry-Chafer_060044.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
TOMO II - LITERATURA.pd plusenmas ultras
V UNIDAD - PRIMER GRADO. del mes de agosto
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
2.0 Introduccion a processing, y como obtenerlo
CIRSOC-201-2024_Proyecto de Reglamento Argentino de Estructuras de Hormigón
Híper Mega Repaso Histológico Bloque 3.pdf
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
Atencion prenatal. Ginecologia y obsetricia
biología es un libro sobre casi todo el tema de biología
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
Escuelas Desarmando una mirada subjetiva a la educación
Punto Critico - Brian Tracy Ccesa007.pdf

2010.029

  • 1. Cuadernillo de apuntes Teor´ıa de la computaci´on Magaly Gonz´alez Mota 30 de junio de 2010
  • 2. 2
  • 3. ´Indice general 1. INTRODUCCION 5 1.1. Aut´omatas computabilidad y complejidad . . . . . . . . . . . 5 1.1.1. Representaciones estructurales . . . . . . . . . . . . . . 7 1.1.2. Aut´omatas y la complejidad . . . . . . . . . . . . . . . 7 1.2. Nociones Matem´aticas . . . . . . . . . . . . . . . . . . . . . . 7 1.2.1. Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.2. Funciones y relaciones . . . . . . . . . . . . . . . . . . 12 1.2.3. Inducci´on matem´atica . . . . . . . . . . . . . . . . . . 17 1.3. Cadenas y lenguajes . . . . . . . . . . . . . . . . . . . . . . . 19 2. Lenguajes regulares 25 2.1. Aut´omatas finitos . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1.1. Aut´omatas finitos deterministicos AFD . . . . . . . . . 26 2.1.2. Aut´omatas finitos no deterministicos AFND . . . . . . 29 2.2. Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . 31 2.3. Lenguajes Regulares . . . . . . . . . . . . . . . . . . . . . . . 35 3. Lenguajes libres de contexto 37 3.1. Gram´aticas libres de contexto . . . . . . . . . . . . . . . . . . 37 3.2. ´Arboles de derivaci´on . . . . . . . . . . . . . . . . . . . . . . . 41 3.3. Formas normales de Comsky . . . . . . . . . . . . . . . . . . . 45 3.4. Forma normal de Greibach . . . . . . . . . . . . . . . . . . . . 45 3.5. Ambig¨uedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.6. Aut´omatas de Pila . . . . . . . . . . . . . . . . . . . . . . . . 47 3.7. Lenguajes no regulales . . . . . . . . . . . . . . . . . . . . . . 55 4. M´aquinas de Turing 61 4.1. Definici´on de una M´aquina de Turing . . . . . . . . . . . . . . 63 3
  • 4. 4 ´INDICE GENERAL 4.2. Construcci´on modular de una MT . . . . . . . . . . . . . . . . 66 4.3. El lenguaje de una M´aquina de Turing . . . . . . . . . . . . . 70 4.4. Variantes de una M´aquina de Turing . . . . . . . . . . . . . . 71 4.4.1. M´aquina de Turing con varias cintas . . . . . . . . . . 71 4.4.2. M´aquinas con pilas multiples . . . . . . . . . . . . . . 72 4.4.3. M´aquinas contadoras . . . . . . . . . . . . . . . . . . . 73 5. Decibilidad 77 5.1. Lenguajes Decidibles . . . . . . . . . . . . . . . . . . . . . . . 78 5.2. El problema de Halting . . . . . . . . . . . . . . . . . . . . . . 79 5.3. Decibilidad de teor´ıas l´ogicas . . . . . . . . . . . . . . . . . . . 80 6. Reducibilidad 83 6.1. Problemas insolubles para la teor´ıa de lenguajes . . . . . . . . 83 6.2. Un problema simple insoluble . . . . . . . . . . . . . . . . . . 85 6.2.1. Algoritmo de Kruskal . . . . . . . . . . . . . . . . . . . 85 6.3. Funciones computables . . . . . . . . . . . . . . . . . . . . . . 88
  • 5. Cap´ıtulo 1 INTRODUCCION Objetivo de la Unidad Situar la importancia del estudio de los aut´omatas dentro del proceso de desarrollo de software, y algunas aplica- ciones. Presentar las nociones b´asicas de matem´aticas necesarias para comen- zar a estudiar la materia. 1.1. Aut´omatas computabilidad y compleji- dad Se conoce como teor´ıa de aut´omatas el estudio de las m´aquinas o dispos- itivos abstractos con capacidad de computaci´on. En la decada de 1930 el matem´atico ingles Alan Mathison Turing estudi´o una m´aquina con el objetivo de determinar con presici´on cu´al era la frontera entre lo que podia o no pod´ıa hacer una m´aquina computadora. En las decadas de 1940 y 1950 se estudiar´on otro tipo de m´aquinas sencillas conocidas con el nombre de aut´omatas finitos, los cuales inicial- mente pretendian modelar las funciones cerebrales. A finales de la decada de 1950 el ling¨uista estadounidense Noam Chomsky comenz´o el estudio de las gram´aticas formales, las cuales no son m´aquinas, pero son componentes de software importantes por su relaci´on con los aut´omatas abstractos. En 1969 el matem´atico estadounidense Stephen Arthur Cook separo los problemas que se pueden resolver de manera eficiente en una computadora de aquellos que en la practica necesitarian tanto tiempo que no tendr´ıa utilidad emplear una computadora, salvo en casos particulares, a los cuales llamo problemas 5
  • 6. 6 CAP´ITULO 1. INTRODUCCION NP-dificiles. Algunos de los conceptos de aut´omatas y gram´aticas se emplean en el dise˜no y construcci´on de aplicaciones de software, o decidir sin un problemas es factible de ser resuelto mediante el uso de un algoritmo computable. Entre las razones por las cuales es conveniente estudiar la teoria de aut´omatas, est´an: 1. El dise˜no y verificaci´on del comportamiento de circuitos digitales (soft- ware) 2. El analizador l´exico de un compilador (la parte del compilador que des- compone el texto inicial en unidades l´ogicas tales como identificadores, palabras reservadas y signos de puntuaci´on). 3. Software para encontrar apariciones de ciertas palabras, frases u otros patrones en textos grandes dentro de paginas web. 4. Software para comprobar la correcci´on de cualquier tipo de sistemas que tengan un n´umero finito de estados diferentes, como los protocolos de comunicaci´on o los protocolos para el intercambio seguro de infor- maci´on. Existen muchos sistemas o componenetes de los cuales se puede decir en todo momento que estan en cierto estado entre un n´umero finito de ellos. El objetivo de un estado es recordar la parte significativa de la historia de un sistema. Dado que solo disponemos de un n´umero finito de estados, nor- malmente no es posible recordar la historia completa, por lo cual el sistema deber´a ser dise˜nado de tal forma que recuerde las cosas que son importantes y omita las que no lo son. Ejemplo 1 Un interruptor de encendido y apagado, el cual es capaz de recor- dar si est´a en el estado de encendiddo o apagado, y permite que el usuario pulse el boton consiguiendo efectos diferentes que dependen de cual era el estado del interruptor. Algunas veces, un estado recuerda cosas m´as complejas. Por ejemplo el aut´omata finito cuyo trabajo sea reconocer la palabra reservada while, para lo cual necesitar´a 6 estados, cada uno de los cuales representa una posici´on dentro de la palabra, desde la palabra vac´ıa (estado inicial), y donde cada uno
  • 7. 1.2. NOCIONES MATEM ´ATICAS 7 produce una transici´on desde el prefijo existente hasta la siguiente letra de la palabra (cada estado est´a etiquetado con el prefijo de la palabra while que ya se analizo), el estado denominado while, es alcanzado cuando el aut´omata ha deletreado la palabra while, y el estado while es el ´unico aceptado por el automata. 1.1.1. Representaciones estructurales Existen otros dos tipos de notaciones que desempe˜nan un papel impor- tante en el estudio de los aut´omatas y sus aplicaciones 1. Las gram´aticas que se emplean para el desarrollo de software destinado a procesar datos con estructura recursiva, por ejemplo el analizador sint´actico que se ocupa de las caracteristicas recursivas de los lenguajes de programaci´on, como las expresiones aritm´eticas, condicionales etc. 2. Las expresiones regulares que nos indican la estructura de los datos, principalmente cadenas de texto. 1.1.2. Aut´omatas y la complejidad Los aut´omatas nos sirven para resolver dos pregntas muy importantes en la computaci´on que son: ¿Qu´e puede hacer una computadora? Qu´e puede hacer una computadora eficientemente? El como nos permite determinar la respuesta a ´estas preguntas ser´a parte del estudio de nuestro curso y se abordara principalmente en la unidad 5 y 6. 1.2. Nociones Matem´aticas 1.2.1. Conjuntos Para el estudio de los aut´omatas es necesario recordar algunos de los con- ceptos vistos en Matem´aticas para computadora, debido a que muchas de las definiciones relacionados con los aut´omatas estan dados en terminos de
  • 8. 8 CAP´ITULO 1. INTRODUCCION conjuntos, a continuaci´on se presenta un breve recordatorio. Definici´on 1 Conjunto es una colecci´on de objetos que puede ser finito o in- finito. Totalidad de los elementos o cosas poseedores de una propiedad com´un, que los distingue de otros. En el caso de ser finito y si el conjunto no es muy extenso se puede representar mediante todos sus elementos. A = {lunes, martes, mi´ercoles, jueves, viernes} Si es finito o tiene muchos elementos se representa de la siguiente forma B = {xx es un n´umero entero positivo} Para que exista un conjunto debe basarse en lo siguiente: La colecci´on de elementos debe estar bien definida. Ning´un elemento del conjunto se debe contar m´as de una vez, gene- ralmente, estos elementos deben ser diferentes, si uno de ellos se repite se contar´a s´olo una vez. El orden en que se enumeran los elementos que carecen de importancia. Notaci´on 1 A los conjuntos se les representa con letras may´usculas A, B, C,... y a los elementos con letras min´usculas a, b, c,... Tipos de conjuntos Conjunto vac´ıo o nulo: Es aquel que no tiene elementos y se simboliza por ∅ o { }, por ejemplo: A = x2 + 1 = 0x ∈ R El conjunto A, es un conjunto vac´ıo por que no hay ning´un n´umero real que satisfaga x2 + 1 = 0. Una propiedad imortante del conjunto vac´ıo es que est´a contenido en cualquier conjunto. Conjunto universal: Es el conjunto de todos los elementos considerados en una poblaci´on o universo, en un problema en especial. No es ´unico, depende de la situaci´on, y se representa por U o Ω.
  • 9. 1.2. NOCIONES MATEM ´ATICAS 9 Relaciones u operaciones entre conjuntos Pertenencia: Si un elemento esta en la descripci´on de un conjunto, se dice que pertenece al conjunto, y se denota por el s´ımbolo ∈ x ∈ A Para denotar que un elemento no pertence a un conjunto escribimos x /∈ A Cardinalidad:Es el n´umero de elementos de un conjunto y se denota por |A| por ejemplo si A es el conjunto de los d´ıas de la semana entonces |A| = 7 Igualdad de conjuntos: Dos conjuntos A y B son iguales si tienen los mis- mos elementos es decir, si cada elemento que pertenece a A tambi´en pertenece a B y viceversa si cada elemento que pertenece a B pertenece tambi´en a A. A = B Subconjunto: Si todo elemento de un conjunto A es tambi´en elemento de un conjunto B, entonces se dice que A es un subconjunto de B, y se denota por el s´ımbolo ⊂. A ⊂ B o B ⊂ A Subconjunto propio: Se dice que B es un subconjunto propio de A s´ı todos los elementos de un conjunto B se encuentran incluidos en ´el A, y se denota por el s´ımbolo ⊆. A ⊆ B o B ⊆ A Conjunto potencia: La familia de todos los subconjuntos de un conjunto se llama conjunto potencia. Si un conjunto es finito con n elementos, entonces el conjunto potencia tendr´a 2n subconjuntos. Un conjunto es subconjunto de el mismo,y el vacio es subconjunto de cualquier con- junto. A = {0, 1} El total de subconjuntos es: 22 = 4 los cuales son: P(A) = {{1, 2} , {1} , {2} , ∅}
  • 10. 10 CAP´ITULO 1. INTRODUCCION Uni´on: Es una operaci´on entre dos conjuntos A y B y est´a formada por todos los elementos que pertencen a el conjunto A o al conjunto B o ambos y se representa de la siguiente manera: A ∪ B = {xx ∈ A o x ∈ B} Intersecci´on: Es una operaci´on entre dos conjuntos A y B y est´a formada por todos los elementos que pertenecen a el conjunto A y tambi´en al conjunto B y se representa de la siguiente forma A ∩ B = {xx ∈ A y x ∈ B} Conjuntos disjuntos: Son aquellos que no tienen elementos en com´un, es decir, cuando no existen elementos que pertenezcan a ambos, y se rep- resenta de la siguiente forma: A ∩ B = ∅ Por ejemplo F = {1, 2, 3, 4, 5, 6} y G = {a, b, c, d, e, f} son disjuntos. Partici´on: Cuando un conjunto X es dividido en subconjuntos que no se intersectan entre si y que adem´as al unirlos forman todo el conjunto X, se le denomina partici´on. Diferencia de dos conjuntos A−B: Consta de todos los elementos de A que no est´an en B y se representa de la siguiente forma: A − B = {xx ∈ A y x /∈ B} Complemento: Dado el conjunto universo y un subconjunto A del universo el complemento de A es el conjunto de todos los elementos del universo que no pertenecen a A y se denota por: Ac = U − A Ejemplo 2 Sea U = {0, 1, 2, 3, 4, 5, 6, 7, 9} el conjunto universo y A = {0, 2, 4, 6} , B = {1, 3, 5, 7, 9} , C = {1, 2, 3, 4, 5} y D = {6, 7, 8, 9} subconjuntos de U A ∪ C = {0, 1, 2, 3, 4, 5, 6}
  • 11. 1.2. NOCIONES MATEM ´ATICAS 11 B ∩ C = {1, 3, 5} D − B = {6, 8, 0} Ac = {1, 3, 5, 7, 8, 9} A ∩ B = ∅ de donde podemos concluir que A y B son disjuntos. Ejemplo 3 Sea A = {a, b, c, d} |A| = 4 entonces la cardinalidad del conjunto potencia es |P(A)| = 24 = 16 P(A) = {∅, {a} , {b} , {c} , {d} , {a, b} , {a, c} , {a, d} , {b, c} , {b, d} , {c, d} , {a, b, c} , {c, d} , {a, b, c} , {a, b, d} , {b, c, d} , {a, c, d} , {a, b, c, d}} Los siguientes son ejemplos de algunas particiones del conjunto A P1 = {{a, b} , {c, d} , ∅} P2 = {{a, b, ∅} , {c, d}} P1 = {{a} , {b, d, c} , ∅} Actividad 1 Realice lo siguiente: 1. Los conjuntos tambi´en se pueden representar de manera gr´afica medi- ante los diagramas de Veen, investigar que son y como se representan las diferentes operaciones entre conjuntos por medio de diagramas de Veen. 2. Investigar la biografia de Georg Cantor y mencionar cuales fuer´on sus aportaciones a la teor´ıa de conjuntos. 3. Investigar las leyes de D’Morgan para conjuntos. 4. Sea U = {a, b, c, d, e, f, g, h, i, j } el conjunto universo y A = {a, b, e, i, j}, B = {f, b, c, g, j}, C = {a, c, d, h, j} y D = {h, i, j, c} Calcular
  • 12. 12 CAP´ITULO 1. INTRODUCCION a) A ∪ B b) B ∩ D c) A ∪ C d) C ∩ B e) Ac f) (A ∪ B)c g) (Ac ∩ B) ∪ C h) (A ∪ B) ∩ (C ∩ D) i) ((A ∪ B) ∩ (C ∩ D))c j) (D ∩ (B ∪ A)c ) ∪ (Ac ∩ B) 1.2.2. Funciones y relaciones Definici´on 2 Una pareja ordenada es un par de n´umeros los cuales se pueden encontrar en el plano cartesiano, donde el orden de los terminos que la con- forman si es importante y se denota por (a, b) Actividad 2 Investigar como se da la igualdad de las parejas ordenadas, cual es su inverso aditivo y cual es su neutro multiplicativo La raz´on por la cual son de nuestro interes las aprejas ordenadas es porque nos ayudan a definir una operaci´on entre conjuntos llamada producto cartesiano. Definici´on 3 El producto cartesiano de dos conjuntos X y Y se define como: X × Y = {(x, y)x ∈ X y y ∈ Y } Ejemplo 4 Si X = {1, 2, 3}, Y = {a, b} entonces: X × Y = {(1, a), (1, b), (2, a), (2, b), (3, b), (3, a)} Y × X = {(b, 1), (a, 1), (b, 2), (a, 2), (b, 3), (a, 3)} Y × Y = {(a, a), (a, b), (b, a), (b, b)} X × X = {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)} En este ejemplo se obsreva que X × Y = Y × X
  • 13. 1.2. NOCIONES MATEM ´ATICAS 13 Actividad 3 Dados C = {a, c, d, h, j}, A = {α, β, γ} y D = {h, i, j, c} hallar 1. C × D 2. A × C 3. D × D 4. Si X × Y × Z = {(x, y, z)x ∈ X, y ∈ Y, z ∈ Z} hallar a) C × D × A b) A × D × C Teorema 1 Para cualquier par de conjuntos finitos no vac´ıos A y B |A × B| = |A| |B| Una Relaci´on es un conjunto de pares ordenados, donde el primer ele- mento est´a relacionado con el segundo elemento del par ordenado, mas for- malmente Definici´on 4 Una Relaci´on (binaria) R de un conjunto X en un conjunto Y es un subconjunto del producto cartesiano X × Y . Si (x, y) ∈ R, escribimos xRy y decimos que x est´a relacionado con y; adem´as si X = Y entonces decimos que R es una relaci´on binaria sobre X Ejemplo 5 Sean X = {1, 2, 3, 4}, Y = {2, 4, 5} dos conjuntos, definimos la relaci´on R como R = {(x, y) x + y sea par} entonces R = {(1, 5), (3, 5), (2, 2), (2, 4), (4, 2), (4, 4)} Definici´on 5 Al conjunto {x ∈ X(x, y) ∈ R para algun y ∈ Y } se le conocee con el nombre de Dominio de la relaci´on (DR) y al conjunto {y ∈ y(x, y) ∈ R para algun x ∈ X}
  • 14. 14 CAP´ITULO 1. INTRODUCCION se le conoce con el nombre de Rango o imagen de la relaci´on (ImR) Para el ejemplo anterior tenemos que: DR = {1, 2, 3, 4} ImR = {2, 4, 5} Propiedades de las relaciones Definici´on 6 Una relaci´on binaria sobre X tiene las siguientes propiedades: Una relaci´on R sobre un conjunto X es reflexiva si (x, x) ∈ R para cada x ∈ X Una relaci´on R sobre un conjunto X es irreflexiva si (x, x) /∈ R para cada x ∈ X Una relaci´on R sobre un conjunto X es sim´etrica si para todo x, y ∈ X y si (x, y) ∈ R, entonces (y, x) ∈ R Una relaci´on R sobre un conjunto X es antisim´etrica si para todo x, y ∈ X, si (x, y) ∈ R y si x = y, entonces (y, x) /∈ R Una relaci´on R sobre un conjunto X es transitiva si para toda x, y, z ∈ X, si (x, y) y (y, z) ∈ R, entonces (x, z) ∈ R Una relaci´on R sobre un conjunto X es un orden parcial si R es reflexiva, transitiva y antisim´etrica Una relaci´on R sobre un conjunto X es una relaci´on de equivalencia si R es reflexiva, transitiva y sim´etrica Sea R una relaci´on de X en Y . La inversa de R que se denota por R−1 , es la relaci´on de Y a X definida como: R−1 = {(y, x)(x, y) ∈ R} Sea R1 una relaci´on de X a Y y R2 una relaci´on de Y a Z, la composici´on de R1 y R2 que se denota por R2 ◦R1 es una relaci´on de X a Z definida como R2 ◦ R1 = {(x, z)(x, y) ∈ R1 y (y, z) ∈ R2 para alguna y ∈ Y }
  • 15. 1.2. NOCIONES MATEM ´ATICAS 15 No hay que olvidar que las relaciones son conjuntos, por lo cual se pueden aplicarles las operaciones entre conjuntos. Ejemplo 6 Consideremos la siguiente relaci´on sobre X = {1, 2, 3, 4, 5} R = {(x, y)x + y es par} R = {(1, 1), (1, 3) (1, 5), (2, 2), (2, 4), (3, 1), (3, 3), (3, 5), (4, 2), (4, 4), (5, 1), (5, 3), (5, 5)} De la relaci´on se tiene lo siguiente DR = {1, 2, 3, 4, 5} ImR = {1, 2, 3, 4, 5} Adem´as: la relaci´on es reflexiva pues las parejas (1, 1), (2, 2), (3, 3), (4, 4), (5, 5) pertenecen a la relaci´on. La relaci´on es simetrica pues (1, 3) ∈ R y tambi´en (3, 1) ∈ R (1, 5) ∈ R y tambi´en (5, 1) ∈ R (3, 1) ∈ R y tambi´en (1, 3) ∈ R (3, 5) ∈ R y tambi´en (5, 3) ∈ R (5, 1) ∈ R y tambi´en (1, 5) ∈ R (2, 4) ∈ R y tambi´en (4, 2) ∈ R (4, 2) ∈ R y tambi´en (2, 4) ∈ R. La relaci´on es transitiva pues (1, 1) ∈ R y (1, 3) ∈ R (x = 1, y = 1 y z = 3) entonces (1, 3) ∈ R (1, 1) ∈ R y (1, 5) ∈ R (x = 1, y = 1 y z = 5) entonces (1, 5) ∈ R (1, 3) ∈ R y (3, 1) ∈ R (x = 1, y = 3 y z = 1) entonces (1, 1) ∈ R (1, 3) ∈ R y (3, 3) ∈ R (x = 1, y = 3 y z = 3) entonces (1, 3) ∈ R (1, 3) ∈ R y (3, 5) ∈ R (x = 1, y = 3 y z = 5) entonces (1, 5) ∈ R (1, 5) ∈ R y (5, 3) ∈ R (x = 1, y = 5 y z = 3) entonces (1, 3) ∈ R (1, 5) ∈ R y (5, 5) ∈ R (x = 1, y = 5 y z = 5) entonces (1, 5) ∈ R (1, 5) ∈ R y (5, 1) ∈ R (x = 1, y = 5 y z = 1) entonces (1, 1) ∈ R (2, 4) ∈ R y (4, 2) ∈ R (x = 2, y = 4 y z = 2) entonces (2, 2) ∈ R (2, 4) ∈ R y (4, 4) ∈ R (x = 2, y = 4 y z = 4) entonces (2, 4) ∈ R (2, 2) ∈ R y (2, 2) ∈ R (x = 2, y = 2 y z = 2) entonces (2, 2) ∈ R
  • 16. 16 CAP´ITULO 1. INTRODUCCION (2, 2) ∈ R y (2, 4) ∈ R (x = 2, y = 2 y z = 4) entonces (2, 4) ∈ R (3, 1) ∈ R y (1, 3) ∈ R (x = 3, y = 1 y z = 3) entonces (3, 3) ∈ R (3, 1) ∈ R y (1, 5) ∈ R (x = 3, y = 1 y z = 5) entonces (3, 5) ∈ R (3, 1) ∈ R y (1, 1) ∈ R (x = 3, y = 1 y z = 1) entonces (3, 1) ∈ R (3, 3) ∈ R y (3, 3) ∈ R (x = 3, y = 3 y z = 3) entonces (3, 3) ∈ R (3, 3) ∈ R y (3, 1) ∈ R (x = 3, y = 3 y z = 1) entonces (3, 1) ∈ R (3, 3) ∈ R y (3, 5) ∈ R (x = 3, y = 3 y z = 5) entonces (3, 5) ∈ R (3, 5) ∈ R y (5, 1) ∈ R (x = 3, y = 5 y z = 1) entonces (3, 1) ∈ R (3, 5) ∈ R y (5, 3) ∈ R (x = 3, y = 5 y z = 3) entonces (3, 3) ∈ R (3, 5) ∈ R y (5, 5) ∈ R (x = 3, y = 5 y z = 5) entonces (3, 5) ∈ R (4, 2) ∈ R y (2, 2) ∈ R (x = 4, y = 2 y z = 2) entonces (4, 2) ∈ R (4, 4) ∈ R y (4, 2) ∈ R (x = 4, y = 4 y z = 2) entonces (4, 2) ∈ R (4, 2) ∈ R y (2, 4) ∈ R (x = 4, y = 2 y z = 4) entonces (4, 4) ∈ R (4, 4) ∈ R y (4, 4) ∈ R (x = 2, y = 4 y z = 4) entonces (4, 4) ∈ R (5, 1) ∈ R y (1, 3) ∈ R (x = 5, y = 1 y z = 3) entonces (5, 3) ∈ R (5, 1) ∈ R y (1, 1) ∈ R (x = 5, y = 1 y z = 1) entonces (5, 1) ∈ R (5, 1) ∈ R y (1, 5) ∈ R (x = 5, y = 1 y z = 5) entonces (5, 5) ∈ R (5, 3) ∈ R y (3, 1) ∈ R (x = 5, y = 3 y z = 1) entonces (5, 1) ∈ R (5, 3) ∈ R y (3, 5) ∈ R (x = 5, y = 3 y z = 5) entonces (5, 5) ∈ R (5, 3) ∈ R y (3, 3) ∈ R (x = 5, y = 3 y z = 3) entonces (5, 3) ∈ R (5, 5) ∈ R y (5, 1) ∈ R (x = 5, y = 5 y z = 1) entonces (5, 1) ∈ R (5, 5) ∈ R y (5, 3) ∈ R (x = 5, y = 5 y z = 3) entonces (5, 3) ∈ R (5, 5) ∈ R y (5, 5) ∈ R (x = 5, y = 5 y z = 5) entonces (5, 5) ∈ R Como nuestra relaci´on es sim´etrica entonces no puede ser antisim´etrica, es importante observar que si la relaci´on no es simetrica no necesariamente sera antisimetrica. en otros casos tampoco es necesario probar si todos los elementos de la relaci´on cumplen con encontrar uno que no cumpla ser transitivo, reflexivo, sim´etrico o antisim´etrico (dependiendo de que estemos buscando) la relaci´on ya no tendra la propiedad buscada. Por ´ultimo y como conclusi´on de nuestro ejemplo la relaci´on por ser transi- tiva, reflexiva y simetrica es una relacvi´on de equivalencia. Actividad 4 en los siguientes ejercicios determine: los elementos de la relaci´on, la inversa de la relaci´on, el dominio e imagen de la relaci´on, si es reflexiva, sim´etrica, antisim´etrica, transitiva, relaci´on de equivalencia o es una relaci´on de orden parcial.
  • 17. 1.2. NOCIONES MATEM ´ATICAS 17 Sea X = {1, 2, 3, 4, 5} 1. R = {(x, y) 3 divide a x − y} 2. R = {(x, y) ; x + y ≤ 6} 3. R = {(x, y) x − y < 3} 4. R = {(x, y) x2 ≤ y} 5. R = {(x, y) x divide a 2y} Funciones Definici´on 7 Una funci´on de X a Y es una relaci´on que posee las siguientes propiedades El dominio de f es X Si (x, y) y (x, y ) ∈ f, entonces y = y Actividad 5 1. Buscar 5 ejemplos de relaciones binarias que son fun- ciones y 5 ejemplos de relaciones binarias que no lo sean y explicar cual de las dos condiciones de la definici´on no se cumplen y porque. 2. Investigar que es una funci´on inyectiva (o uno a uno), suprayectiva (o sobre) y biyectiva. La raz´on por la cual no nos adentramos mucho mas en el estudio de las funciones es porque las hemos empleado en los cursos de matem´aticas que se imparten a lo largo del tronco com´un en el tecnol´ogico. 1.2.3. Inducci´on matem´atica En computaci´on, a veces es necesario que los programas se prueben de manera formal, y sin perder de vista su objetivo. La materia de teor´ıa de la computaci´on se caracteriza por ser una materia con un enfoque conceptual, donde todos los resultados que se presentan se fundamentan en demostra- ciones formales, empleando principalmente el m´etodo inductivo, esto debido
  • 18. 18 CAP´ITULO 1. INTRODUCCION a que tanto las cadenas como los aut´omatas son elementos de conjuntos fini- tos. Existen varios m´etodos para realizar demostraciones en matem´aticas entre los cuales destacan: Demostraciones deductivas: Las cuales consisten en una secuencia de afir- maciones o proposiciones, cuya validez nos conduce a una conclusi´on, a partir de las proposiciones iniciales llamadas hip´otesis o postulados. Las hip´otesis se suponen falsas o verdaderas al inicio de la demostraci´on y con la ayuda de proposiciones, postulados o deducciones anteriores se verifica la veracidad de la mismas. La hip´otesis estan formadas por varias afirmaciones independientes que se relacionan entre si mediante un operador l´ogico.(Los teoremas demostrados mediante este m´etodo normalmente tienen la forma si “H” entonces “C” y se dice que C se deduce de H ) Demostraci´on de equivalencias entre conjuntos. En ocaciones se debe probar que dos o m´as conjuntos son iguales o representan lo mismo, para este tipo de demostraciones se deberan pobrar las siguientes proposiciones A ⊂ B y B ⊂ A, y una vez que se demostrar´on podermos concluir la igualdad. Demostraci´on por contradicci´on: Est´a es similar a el m´etodo deductivo, solo que en lugar de probar si “H” entonces “C”, probamos si no “C” entonces “H”, que es su proposici´on contradictoria (no confundirla con la inversa de la proposici’´on). Demostraci´on por reducci´on al absurdo: Est´a demostraci´on comienza suponien- do que son ciertas tanto la hip´otesis H como la negaci´on de la conclusi´on C y la demostraci´on se completa probando algo que se sabe falso y que se deriva de la proposici´on “H” y no“C”(la cual implica falsedad). Contraejemplos: En programaci´on (sobre todo para estructuras recursivas) no siempre es posible demostrar todos los casoso que se nos presenten, sin embargo con probar que uno o m´as casos no se cumplen podemos demostrar que una afirmaci´on es falsa. Por ejemplo la afirmaci´on de que todos los n´umeros primos son impares es falsa pues el n´umero 2 es par y es un n´umero primo.
  • 19. 1.3. CADENAS Y LENGUAJES 19 Otra forma de demostraci´on importante para nuestra materia es la de- mostraci´on por inducci´on; este m´etodo ayuda principalmente cuando tenemos definiciones recursivas ´arboles, expresiones regulares, cadenas etc. Primero que nada es necesario explicar que este m´etodo se emplea para proposiciones que ocurren una, dos, tres, . . ., n veces y que tiene un patron que se repite en cada una de las veces a dicha proposici´on la denotamos mediante S(n), donde n nos dira en que n´umero de repetici´on nos encontramos. El procedimiento que se emplea en este m´etodo es el siguiente: Supongase que se tiene una proposici´on S(n) para cada entero positivo n, la cual es verdadera o falsa, necesitamos probar dos cosas: 1. Base: debemos probar que la proposici´on es cierta (o falsa) para n = 0 y n = 1, o para los valores a partir de los cuales se marque que esta es verdadera ( en el caso de que existen afirmaciones que no son ciertas para n´umeros peque˜nos), en terminos matem´aticos S(i) es cierta cuando i = 0 o i = 1 2. Paso de inducci´on: en este paso suponemos que para algun valor n arbitrario la proposici´on S(n) es cierta, y posteriormente procedemos a probar que esta proposici´on tambi´en se cumple para su consecutivo S(n + 1) Por ejemplo las filas de fichas de domin´o cuando caen: hemos demostrado que la primera ficha cae (primer paso), y que si cae una ficha tambi´en debe caer la siguiente (si es cierta para n, debe serlo para n+1, segundo paso). La idea de la inducci´on es muy clara: si un n´umero cumple algo, y si cuando un n´umero lo cumple el siguiente tiene que cumplirlo, entonces todos los n´umeros lo cumplen. Actividad 6 Investigar 5 ejemplos en los que se empleen demostraciones por el m´etodo inductivo 1.3. Cadenas y lenguajes Si nosotros observamos las siguientes l´ıneas podemos observar algunas cosas en com´un: Programas escritos en lenguajes de alto nivel.
  • 20. 20 CAP´ITULO 1. INTRODUCCION Palabras o frases en espa˜nol. Los n´umeros usados por una calculadora Lo primero que podemos observar es que cada una de ellas est´a compuesta por una secuencia de s´ımbolos que pertenecen a alg´un conjunto finito; para el caso de la segunda l´ınea el conjunto {a, b, c, ..., x, y, z} junto con todos los s´ımbolos de puntuaci´on correspondientes, de manera an´aloga para la tercera l´ınea, donde el conjunto son los d´ıgitos {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}. Los progra- mas escritos en lenguajes de alto nivel tambi´en est´an compuestos por un conjunto finito de palabras reservadas, identificadores y s´ımbolos especiales (como fin de archivo, abrir archivo, retorno de carro etc.) En general cada una de ellas est´a formada por una secuencia de elementos de un conjunto finito no vac´ıo llamado alfabeto que denotaremos por Σ; a los elementos de dicho alfabeto los llamaremos letras y los denotaremos por σ, adem´as supondremos que las letras se escriben con un solo car´acter. Ejemplo 7 Entre los alfabetos m´as comunes en computaci´on se encuentran Σ = {0, 1} el alfabeto binario. El conjunto de todos los caracteres ASCII, o el conjunto de todos los caracteres ASCII imprimibles. Definici´on 8 Sea Σ un alfabeto, una palabra o cadena sobre el alfabeto es una secuencia finita de s´ımbolos del alfabeto Σ. En caso de que no se ten- ga ningun caracter la cadena ser´a llamada cadena vac´ıa y la denotaremos mediante la letra λ. Ejemplo 8 001101010, 110101, 1, 00, son cadenas del alfabeto binario Entre las cadenas es posible hacer operaciones, a continuaci´on describi- mos algunas de ellas: Sea Σ un alfabeto, se define la concatenaci´on de palabras como una ope- raci´on: · : Σ∗ × Σ∗ → Σ∗ para todo ω, ϕ ∈ Σ∗ : ω · ϕ = (ω1, ω2, . . . , ωnϕ1, ϕ2, . . . , ϕn)
  • 21. 1.3. CADENAS Y LENGUAJES 21 En la palabra resultante, a la palabra ω la llamaremos prefijo y a la palabra ϕ, la llamaremos sufijo Si ω = hola y ϕ = peluza entonces ω · ϕ = holapeluza aqui el prefijo es hola mientras que el sufijo es peluza, y de este mismo ejemplo podemos observar que ϕ · ω = peluzahola de donde podemos concluir que la concatenaci´on de cadenas no es conmuta- tiva ϕ · ω = ϕ · ω a menos que una de las palabras sea la palabra vac´ıa λ · ω = ω · λ = ω En ocaciones es ´util clasificar las cadenas por su longitud, es decir el n´umero de caracteres que conforman la cadena, por ejemplo la cadena for(i = 1; i <= 40; i + +) tiene 18 caracteres, de manera m´as formal: Definici´on 9 Sea Σ un alfabeto y ω = (ω1, ω2, ..., ωn) una palabra sobre Σ. La longitud de una palabra de Σ es una funci´on: |·| : Σ∗ → N definida as´ı: |ω| = n Derivado de la definici´on tenemos lo siguiente 1. La longitud de la cadena vac´ıa es cero |λ| = 0 2. La longitud de la concatenaci´on de dos cadenas es la suma de las lon- gitudes de cada cadena,si ϕ, ω ∈ Σ: |ω · ϕ| = |ω| + |ϕ| A continuaci´on se muestra un ejemplo de como se usa el m´etodo inductivo en la teoria de aut´omatas, para desmostrar la ´ultima afirmaci´on Demostraci´on:
  • 22. 22 CAP´ITULO 1. INTRODUCCION Procederemos por inducci´on sobre ϕ Base: Si ϕ = λ entonces |ω · ϕ| = |ω · λ| = |ω| + 0 = |ω| + |λ| = |ω| + |ϕ| Hip´otesis de inducci´on: Supongamos que para cualquier palabra α, |α| ≤ n se tiene que: |ω · α| = |ω| + |α| Ahora sea ψ = α · β una palabra de longitud n + 1 con α ∈ Σ∗ y β ∈ Σ |ϕ · ψ| = |ϕ · α · β| = |ϕ · α| + 1 = |ϕ| + n + 1 = |ϕ| + |α · β| = |ϕ| + |ψ| Actividad 7 Investigar las propiedades de asociatividad e identico entre concatenaci´on de cadenas Definici´on 10 Si Σ es un alfabeto podemos expresar el conjunto de todas las cadenas del alfabeto empleando la siguiente notaci´on Σk que es el conjunto de todas las cadenas de longitud k, tales que todos los s´ımbolos que las conforman pertenecen a el alfabeto Σ Ejemplo 9 si Σ = {0, 1} entonces: Σ0 = λ Σ1 = {0, 1} Σ2 = {00, 01, 10, 11} Σ3 = {000, 001, 010, 011, 100, 101 110, 111} y as´ı sucesivamente. Es importante hacer enf´asis en el hecho de que Σ y Σ1 no son lo mismo, el primero representa el conjunto formado por los s´ımbolos 0 y 1 y del segundo sus miembros son las cadenas 0 y 1, cada una de las cuales tiene longitud uno. Definici´on 11 Al conjunto de todas las cadenas tomadas de un alfabeto lo llamaremos lenguaje. El lenguaje compuesto por todas las palabras sobre el alfabeto, se le conoce como diccionario y se denota por Σ∗ , donde: Σ∗ = Σ0 ∪ Σ1 ∪ Σ2 ∪ Σ3 ∪ . . .
  • 23. 1.3. CADENAS Y LENGUAJES 23 En el caso de que el diccionario no incluya la cadena vac´ıa se escribira como Σ+ y tenemos que Σ∗ = Σ+ ∪ {λ} Algunos ejemplos de lenguajes son: El conjunto de los n´umeros binarios que representan un n´umero primo El lenguaje de programaci´on C el conjunto de todas las cadenas con igual cantidad de ceros y unos. Una aplicaci´on de los lenguajes es un analizador l´exico de un compilador de algun lenguaje de programaci´on particular, en el cual se proporciona una cadena ASCII y deseamos saber si dicha cadena pertenece o no al conjunto de todos los programas validos para el lenguaje de programaci´on.
  • 24. 24 CAP´ITULO 1. INTRODUCCION
  • 25. Cap´ıtulo 2 Lenguajes regulares Objetivo de la unidad: Conocer el concepto de expres´on regular, su representaci´on mediante aut´omatas finitos y sus aplicaciones en procesos de computo y el entorno donde se desenvuelve el alumno 2.1. Aut´omatas finitos Para iniciar esta unidad se presentar´a un ejemplo pr´actico, tomado del libro Introducci´on a la teor´ıa de aut´omatas, lenguajes y computaci´on, de John E.Hopcroft Ejemplo 10 Los protocolos que ayudan a manejar el dinero electr´onico (son archivos que se utilizan para pagar compras en Internet y que el vendedor recibe con la garant´ıa de que el dinero es real) La parte de asegurar el dinero le corresponde al banco el cual debera encriptar sus archivos para garantizar que la falsificaci´on no sea un problema, adem´as de mantener una base de datos con todo el dinero valido que ha emitido, para asegurar que el dinero que va a dar a la tienda sea real (es decir que en la cuenta del cliente existan fondos), este proceso de compra, venta e intercam- bio de dinero puede ser modelado mediante aut´omatas finitos Otro ejemplo de un proceso que podemos modelar empleando aut´omatas finitos es el siguiente Ejemplo 11 Las m´aquinas expendedoras de refrescos, dulces o caf´e requieren 25
  • 26. 26 CAP´ITULO 2. LENGUAJES REGULARES que se introduzca cierto importe para poder despachar alg´un producto, primero requieren de selecci´onar el producto posteriormente se necesita insertar la cantidad de dinero necesario dependendiendo de la selecci´on realizada, la maquina debera contabilizarlo para guardar en un estado la cantidad de dinero que fue introducido y en caso de que sea necesario dar cambio y que ´este sea devuelto correctamente, en este caso la entrada de nuestro aut´omata es no tener dinero acumulado ni opci´on seleccionada, despu´es se siguen una se- cuencia de movimientos que nos llevan a obtener nuestro producto finaluna vez que se ha completado la cantidad que cuesta el producto (este ejemplo se analizar´a con m´as detalle en el transcurso del c´apitulo) En muchas otras m´aquinas se emplean los aut´omatas, as´ı que necesitamos estudiar ?Qu´e es? y todas sus caracter´ısticas. Actividad 8 Investigue dos ejemplos donde sea posible modelar un compor- tamiento mediante aut´omatas. 2.1.1. Aut´omatas finitos deterministicos AFD Para comenzar mencionares que el aut´omata finito deterministico es aquel que siempre est´a en un s´olo estado despu´es de leer cualquier secuencia de entradas; la palabra determinista nos dice que para cada entrada existe un ´unico estado al que el aut´omata puede llegar partiendo del estado actual; comencemos dando la definici´on formal Definici´on 12 Un Aut´omata Finito Determin´ıstico (AFD) es una quintu- pla: M = (Q, Σ, q0, f, F), donde Q Es un conjunto finito no vac´ıo (los elementos de Q son llamados estados) Σ es un conjunto de s´ımbolos de entrada al que llamaremos alfabeto. qI ∈ Q, es un estado al que llamaremos estado inicial. f Es una funci´on Q×Σ → Q que se llama funci´on de transici´on; ´esta recibe como argumentos un estado y una entrada y devuelve un estado. qF ⊂ Q es un conjunto de estados a los cuales llamaremos estados finales o de aceptaci´on.
  • 27. 2.1. AUT ´OMATAS FINITOS 27 Un aut´omata puede ser representado mediante un grafo dirigido (digrafo) el cual se conoce como diagrama de transiciones, donde los v´ertices del mismo corresponden a los estados del aut´omata, en el caso del estado inicial ´este tendr´a una flecha que apunta hacia ´el, y los estados finales se representar´an mediante un c´ırculo con l´ınea doble; si existe una transici´on del estado q al p sobre la entrada a entonces existe un arco con etiqueta a que va del estado q al estado p en el diagrama de transici´on. El aut´omata acepta una cadena ω si la secuencia de transiciones correspondientes a los s´ımbolos de ω conducen del estado inicial a un estado final. Ejemplo 12 Sea Q = {q0, q1, q2, q3} el conjunto de estados, qI = {q0} el estado inicial, qF = {q0} el conjunto de estados finales, Σ = {0, 1} el alfabeto de entrada y la funci´on f q0 q1 q2 q3 q0 ∅ 1 0 ∅ q1 1 ∅ ∅ 0 q2 0 ∅ ∅ 1 q3 ∅ 0 1 ∅ El digrafo asociado al automata anterior es: Figura 2.1: Grafo asociado a un aut´omata la funci´on de transici´on tambi´en se puede escribir de la siguiente forma f(q0, 1) −→ q1 f(q0, 0) −→ q2 f(q1, 1) −→ q0 f(q1, 0) −→ q3 f(q2, 1) −→ q3 f(q2, 0) −→ q0 f(q3, 1) −→ q2 f(q3, 0) −→ q2 o mediante la siguiente
  • 28. 28 CAP´ITULO 2. LENGUAJES REGULARES Definici´on 13 Sea M = (Q, Σ, q0, f, F) un AFD definimos la iteraci´on de f sobre Σ∗ as´ı: f∗ : Q × Σ → Q ∀q ∈ Q : f∗ (q, λ) := q ∀q ∈ Q ,∀σ ∈ Σ y ∀ϕ ∈ Σ∗ : f∗ (q, σϕ) := f∗ (f (q, σ) , ϕ) Algo que es importante en la teor´ıa de aut´omatas, es como decide si acepta o no una secuencia de s´ımbolos de entrada (cadena). El lenguaje de un AFD es el conjunto de todas las cadenas que acepta el aut´omata, formalmente: Definici´on 14 Sea M = (Q, Σ, q0, f, F) un AFD, el lenguaje de M se define como: L(M) := {w ∈ Σ∗ |f∗ (q0, w) ∈ F} Observaci´on 1 Sean L(A) y L(B) dos lenguajes sobre el alfabeto Σ, en- tonces L(A) = L(B) si y s´olo si L(A) ⊆ L(B) y L(B) ⊆ L(A). Observaci´on 2 Sean L(A) y L(B) dos lenguajes sobre el alfabeto Σ, en- tonces (L(A) · L(B))R = L(B)R · L(A)R . Definici´on 15 Dos aut´omatas finitos se dicen equivalentes si reconocen el mismo lenguaje, es decir: Dados Mp = (Q, Σ, p0, f, F), Mq = (Q, Σ, q0, f, F) AFD MP ≡ Mq ⇔ L(Mp) = L(Mq) 2.1.2. Aut´omatas finitos no deterministicos AFND Ahora, si se modifica el modelo del aut´omata finito, para permitirle ningu- na, una o m´as transiciones de un estado sobre el mismo s´ımbolo de entrada, al nuevo modelo lo conoceremos como aut´omata finito no determin´ıstico. Definici´on 16 Un Aut´omata Finito No Determin´ıstico (AFND) es una quin- tupla M = (Q, Σ, I, R, F), donde
  • 29. 2.1. AUT ´OMATAS FINITOS 29 Q es un conjunto de estados Σ es un alfabeto. I ⊂ Q es un conjunto de estados a los cuales llamaremos estados iniciales. R es una relaci´on sobre Q × Σ × Q que se llama relaci´on de transici´on. F ⊂ Q es un conjunto de estados a los cuales llamaremos estados finales. Observaci´on 3 Si I se reduce a un solo estado y R es tal que sus elementos pueden escribirse mediante una funci´on entonces el aut´omata ser´a deter- min´ıstico. Definici´on 17 Sea M un AFND y sea ω ∈ Σ∗ un camino que empieza en q0, inducido por ω = σ1σ2, · · · , σn en un aut´omata es una n + 1-ada de es- tados (q0, q1, · · · , qn) tales que ∀k ∈ [1, 2, · · · , n], (qk−1, σk, qk) ∈ R. Tambi´en diremos que el camino empieza en q0 e induce λ es (q0). Definici´on 18 Una palabra ω se dice reconocida por un AFND M, si ω induce un camino que empieza en un estado inicial y termina en alg´un estado final. Definici´on 19 El lenguaje del AFND M, es el conjunto de todas las palabras en Σ∗ que son reconocidas por M L(M) = {ω ∈ Σ∗ |ω induce un camino (q0, · · · , qn) tal que q0 ∈ I y qn ∈ F} Observaci´on 4 Dado un AFND M = (Q, Σ, I, R, F) entonces existe un AFD M tal que L(M) = L(M ). Ejemplo 13 Sea M = ({q0, q1} , {0, 1} , δ, q0, {q1}) un AFND en el que : δ (q0, 0) = {q0, q1} δ (q0, 1) = {q1} δ (q1, 0) = ∅ δ (q1, 1) = {q0, q1}
  • 30. 30 CAP´ITULO 2. LENGUAJES REGULARES Podemos construir un AFD M = (Q, {0, 1} , δ , [q0] , F) que acepte a L (M) de la siguiente forma: Q esta dado por todos los subconjuntos de {q0, q1}, a los cuales denotaremos as´ı: [q0] , [q1] , [q0, q1] , ∅ como δ (q0, o) = {qo, q1} tenemos: δ ([q0] , 0) = [q0, q1] de la misma forma: δ ([q0] , 1) = [q1] δ ([q1] , 0) = ∅ δ ([q1] , 1) = [q0, q1] δ (∅, 0) = δ (∅, 1) = ∅ Por lo tanto el conjunto de estados finales es {[q1] , [q0, q1]} 2.2. Expresiones regulares Las expresiones regulares son importantes porque tambi´en pueden ser consideradas como un lenguaje de programaci´on, que nos permite realizar acciones importante como las de busqueda de elementos en los compiladores (errores como la falta de signos de puntuaci´on o palabras reservadas mal escritas). Las expresiones regulares estan directamente relacionadas con los aut´omatas finitos deterministicos y no deterministicos, y en muchas oca- ciones son empleadas para describir componentes de software debido a que son m´as faciles de entender que los aut´omatas finitos. Otras caracteristicas importantes de las expresiones regulares es que estas nos permiten definir a los lenguajes descritos por las distintas familias de aut´omatas, los lenguajes regulares, con la ventaja de que las expresiones regulares ofrecen una forma declarativa de expresar las cadenas que pretendemos aceptar, lo que permite que se utilicen como lenguaje de entrada en muchos sistemas de proceso de cadenas. Definici´on 20 Las Expresiones regulares sobre un alfabeto, se definen as´ı : 1. ∅ es una expresi´on regular.
  • 31. 2.2. EXPRESIONES REGULARES 31 2. {λ} es una expresi´on regular y se escribe: λ 3. ∀σ ∈ Σ : σ es expresi´on regular y se escribe: σ. Ahora, si α y β son expresiones regulares, entonces tambi´en lo ser´an: 4. α ∪ β que escribiremos: α + β 5. α · β 6. α∗ S´olo las expresiones que se obtienen por composici´on finita de las reglas anteriores son expresiones regulares. Proposi´on 1 Sea α una expresi´on regular. Entonces αR tambi´en es una expresi´on regular Demostraci´on: Se proceder´a por inducci´on sobre la construcci´on de expresiones regulares 1. ∅R = ∅ 2. λR = {λ}R = λR = {λ} = λ 3. Sea σ ∈ Σ entonces por la definici´on de inversa) σR = (σλ)R = λR σ = λσ = σ por lo tanto σR = {σ}R = {σR } = {σ} = σ (1), (2) y (3) son expresiones regulares. 4. Supongamos que α, β, son expresiones regulares y que αR , βR tambi´en lo son, entonces (α + β)R = {ωR |ω ∈ α + β} = {ωR |ω ∈ α} ∪ {ωR |ω ∈ β} = αR ∪ βR por lo tanto (α + β)R es expresi´on regular.
  • 32. 32 CAP´ITULO 2. LENGUAJES REGULARES 5. Si ϕ, ψ son palabras queremos probar que ψR ϕR = (ϕψ)R Base: si ϕ = λ (ϕψ)R = (λψ)R = ψR = ψR λ = ψR λR = ψR ϕR Hip´otesis de inducci´on: Sea α ∈ Σ∗ con |α| = n, n ≥ 1 entonces (ϕψ)R = {βR |β ∈ ϕψ} = {βR |β = a · b, a ∈ ϕ, b ∈ ψ} = ψR ϕR Ahora para α, σ ∈ Σ∗ ((ασ) ψ)R = (σ (αψ))R = (αψ)R σ por la hip´otesis de inducci´on (αψ)R σ = ψR αR σ = ψR (σα)R que es una expresi´on regular. 6. (α∗ )R = αR ∗ base (α0 ) R = λn = λ = αR 0 hip´otesis de inducci´on (α∗ )R = αR ∗ Para n + 1 αn+1 R = (αn α)R = αR (αn )R = αR αR n = αR n+1 ahora (α∗ )R = ∞ n=0 αn R = ∞ n=0 (αn )R = ∞ n=0 αR n = (αn )∗ que es una expresi´on regular. Por lo tanto, la inversi´on de una expresi´on regular es una expresi´on regular.
  • 33. 2.2. EXPRESIONES REGULARES 33 Probablemente la definici´on anterior nos haga pensar que las expresiones regualres no son tan comprensibles, pero quiza el siguiente ejemplo permita que se pueda cambiar de opini´on Ejemplo 14 01∗ + 10∗ denota el lenguaje de todas las cadenas que comienzan con cero y estan seguidas por cualquier cantidad de unos o comienzan con uno y estan seguidas de cualquier cantidad de ceros. Cerradura de Kleene La Cerradura o clausura o estrella de Kleene de un lenguaje se denota por L∗ y representa el conjunto de las cadenas que se pueden formar tomando cualquier n´umero de cadenas de L, por ejemplo si L = {0, 11}, L∗ consta de aquellas cadenas de ceros y unos en las que los unos se encuentran en pares, como 001, 11110; sin embargo cadenas como 101 y 01011 no estan dentro de la cerradura. Ejemplo 15 Si L = {a, bb} entonces L0 = {λ} L1 = {a, bb} L2 = {aa, abb, bba, bbbb} L3 = {aaa, aabb, abba, abbbb, bbbbbb, bbbba bbaabb, bbaa} observe que aqui a corresponde a un caracter y bb corresponde a otro caracter. Para calcular L∗ debemos calcular Li para todo i y hacer la uni´on de estos lenguajes. Construcci´on de expresiones regulares Se mostrar´a un ejemplo de como se construyen las expresiones regulares utilizando la definici´on de las mismas
  • 34. 34 CAP´ITULO 2. LENGUAJES REGULARES Ejemplo 16 Sea E el conjunto formado por todas las cadenas que tienen cero o m´as repeticiones de la cadena 01 alternados. Primero se desarrolla una expresi´on regular para el lenguaje formado por la cadena ´unica 01, pos- teriormente con ayuda del operador ∗, podermos obtener una expresi´on para todas las cadenas de la forma 010101010 . . . 0101010 Lo primero que se debe contemplar es que por la definici´on de expresi´on reg- ular 0 y 1 son expresiones regulares, y representan los lenguajes {0} y {1}, por el inciso 5 de la definici´on la concatenaci´on de expresiones regulares es una expresi´on regular, por lo cual 01 es una expresi´on regular que generael lenguaje {01}. Para obtener todas las cadenas que constan de ceros y unos usamos 6 de la definici´on y obtenemos la expresi´on regular (01)∗ . Sin em- bargo el lenguaje asociado a (01)∗ s´olo reconoce cadenas que empiecen con cero y terminan en uno, pero que pasa con las cadenas que comienzan en uno y terminen con cero o con uno, para contemplar todas las posiblilidades ser´a necesario construir tres expresiones regulares m´as (10)∗ 0(10)∗ 1(01)∗ y la expresi´on regular completa ser´a (01)∗ + (10)∗ + 0(10)∗ + 1(01)∗ aqui el operador + nos ayuda a unir los cuatro lenguajes formados por cada una de las expresiones regulares. Es importante denotar que los operadores en las expresiones regulares y en las expresiones regulares conservan cierta precedencia dada de la siguiente forma El operador ∗ tiene la mayor precedencia, se aplica s´olo a la secuencia m´as peque˜na de s´ımbolos a su izquierda que constituyen una expresi´on regular bien formada. El siguiente en precedencia es el operador concatenaci´on; una vez apli- cados todos los ∗ aplicamos la concatenaci´on. Por ´ultimo se aplican los operadores de uni´on.
  • 35. 2.3. LENGUAJES REGULARES 35 2.3. Lenguajes Regulares Los Lenguajes regulares son elementos de la teor´ıa de la computaci´on que estan directamente vinculados con las expresiones regulares y los aut´omatas finitos deterministicos. Aunque las expresiones regulares describen los lengua- jes de manera diferente a como lo hacen los aut´omatas finitos, ambas nota- ciones representan exactamente el mismo conjunto de lenguajes (lenguajes regulares), adem´as tambi´en se vio que es posible construir aut´omatas finitos deterministicos asociados a aut´omatas finitos no deterministicos, con lo cual los lenguajes regulares tambi´en se encongraran vinculados con ´esta clase de aut´omatas. Todo lenguaje definido mediante un aut´omata finito deterministico, tambi´en puede definirse mediante una expresi´on regular. Todo lenguaje definido por una expresi´on regular tambi´en puede definirse mediante un aut´omata finito deterministico. Definici´on 21 Un conjunto A ∈ Σ∗ se dice regular si existe un AFD M tal que L(M) = A Observaci´on 5 Sea M un aut´omata finito, entonces existe una expresi´on regular r para la cual L(r) = L(M) Observaci´on 6 Un lenguaje es regular si y s´olo si es aceptado por un aut´oma- ta finito Es importante recordar que los lenguajes son conjuntos, con lo cual se les pueden aplicar las operaciones asociadas a los conjuntos y describir medi- ante las mismas algunas propiedades que nos ayuden a construirlos y enten- derlos de manera mas sencilla; a continuaci´on mencionamos algunas de las propiedades de los lenguajes regulares 1. La uni´on de dos lenguajes regulares es regular. 2. La intersecci´on de dos lenguajes regulares es regular. 3. El complemento de un lenguaje regular es regular. 4. La diferencia de dos lenguajes regulares es regular. 5. La reflexi´on de un lenguaje regular es regular.
  • 36. 36 CAP´ITULO 2. LENGUAJES REGULARES 6. La cerradura de Kleen de un lenguaje regular es regular. 7. La concatenaci´on de dos lenguajes regulares es regular.
  • 37. Cap´ıtulo 3 Lenguajes libres de contexto Objetivo de la unidad: Conocer el concepto de lenguaje independiente del contexto, cuales son las caracteristicas que posee y sus aplicaciones Las Gram´aticas independientes del contexto o libres de contexto juegan un papel muy importante en la tecnologia de las computadoras desde la decada de 1960, ya que optimizaron e hicieron m´as barata la tarea de implementar el analizador sint´actico de los compiladores; posteriormente nos permitieron describir formatos de documentos mediante la definici´on del tipo de docu- mentos en la red. 3.1. Gram´aticas libres de contexto El lenguaje es el medio de comunicaci´on entre los seres humanos a trav´es de signos orales y escritos que poseen un significado. Para que exista el lengua- je se requieren ciertos factores como la sintaxis, que da estructura al lenguaje y la sem´antica, que le da significado al lenguaje. Adem´as de manera conjun- ta con los lenguajes tenemos la gram´atica que estudia los elementos de un lenguaje y sus combinaciones. As´ı como es importante podernos comunicar con otras personas, actualmente tambi´en es importante podernos comunicar con las computadoras; es decir establecer un lenguaje y una gram´atica para facilitar el uso de las mismas. Introduciremos de manera natural el concepto de gram´atica mediante una analog´ıa con el lenguaje espa˜nol y su gram´atica. 37
  • 38. 38 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO Ejemplo 17 Suponga que tenemos la siguiente frase: La gata gris duerme en la cama diariamente Observamos que la frase se divide en dos partes esenciales sujeto y predicado; el sujeto a su vez se divide en art´ıculo, sustantivo y adjetivo; y el predicado se divide en verbo, preposici´on, art´ıculo y advervio. Nosotros podemos decir que existe una variable llamada < frase > que genera 2 variables < sujeto > y < predicado > es decir: < frase >−→< sujeto >< predicado > (sustituimos la palabra produce por la flecha) a su vez las variables < sujeto >−→< articulo >< sustantivo >< adjetivo > < predicado >−→< verbo >< preposicion >< articulo >< advervio > por ´ultimo las variables < articulo >−→ la | el < sustantivo >−→ gata | cama < adjetivo >−→ gris < verbo >−→ duerme < preposicion >−→ en < advervio >−→ diariamente a las variables la, el, gata, cama, gris, duerme, en, diariamente las llamamos s´ımbolos terminales, mientras que a las variables escritas entre < > las conocemos como s´ımbolos no terminales; el proceso que sustituye unas vari- ables por otras se le conoce como producci´on y a la variables < frase > se le conoce como s´ımbolo inicial. De manera formal tenemos Definici´on 22 Una Gram´atica es una cuadrupla G = (N, T, P, S) donde N es un alfabeto a cuyos s´ımbolos llamamos no terminales. T es un alfabeto a cuyos s´ımbolos llamamos terminales.
  • 39. 3.1. GRAM ´ATICAS LIBRES DE CONTEXTO 39 P es un subconjunto finito de (N T)∗ ×N∗ → N∗ y a los elementos (u, v)de P los conocemos como producciones de G. S es el s´ımbolo inicial. En el p´arrafo previo a la definici´on se describe cuales son los conjuntos N, y T as´ı como cual es el elemento S y las producciones correspondientes al ejemplo (2). Notaci´on 2 A los s´ımbolos no terminales se les representa mediante letras may´usculas, mientras que los s´ımbolos terminales ser´an representados medi- ante letras min´usculas. Definici´on 23 Para ω, ω ∈ N∗ escribimos ω =⇒ ω si existen x, y ∈ N∗ y una producci´on u −→ v en P tal que ω = xuy y ω = xvy Decimos que ω deriva ω Escribimos ω ∗ =⇒ z si ω = z o existen ω1, ω2, · · · , ωn con n ≥ 2 en N∗ tales que ω = ω1, z = ωn y ωi =⇒ ωi+1 sin p´erdida de generalidad a esta transformaci´on la llamaremos derivaci´on en G y decimos que ω deriva a z. Definici´on 24 El lenguaje L(G) generado por G es el conjunto de palabras en T, que puede ser derivado a partir de S L(G) = ω ∈ T∗ |S ∗ =⇒ ω Ahora, regresando al ejemplo anterior observamos que las producciones pueden generar frases como la siguiente El cama gris duerme en la gata diariamente La cual no es sem´anticamente aceptable, pues carece de significado, pero es aceptada por la sintaxis de la gram´atica; debido a este comportamien- to ser´a necesario hacer modificaciones para que el lenguaje s´olo reconozca oraciones que posean significado (es decir analizar el contexto de la oraci´on).
  • 40. 40 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO Definici´on 25 Una gram´atica es regular si cada producci´on P es de la forma α −→ xβ con (x ∈ T∗ , α, β ∈ N T) o de la forma α −→ y con (α ∈ N T, y ∈ T∗ ) Decimos que una gram´atica G es independiente del contexto si todas las producciones son de la forma α −→ z con z ∈ (T ∪ N)∗ Ejemplo 18 Sea G = (N, T, P, S) donde T = {a, b} N T = {S, B} y P consiste de las producciones S −→ aSb | λ entonces L(G) = {an bn |n ≥ 1} que es un lenguaje independiente del contexto. Ejemplo 19 Sea G = (N, T, P, S) con T = {a, b}, N T = {S} y P tenga las producciones S −→ aSa | bSb | a | b | λ Tenemos que L(G) = ω ∈ T∗ |ω = ωR que es el lenguaje de los pal´ındro- mos, en el alfabeto T. Definici´on 26 Sea G una gram´atica independiente del contexto, una produc- ci´on A −→ α en la gram´atica se llama regla de G. El s´ımbolo no terminal A es la parte izquierda de la regla, y la cadena α es la parte derecha de la regla. En una producci´on de la forma A −→ xβ, la letra x ∈ N ∪ T se llama manipuladora de la producci´on. Una producci´on de la forma A −→ B con A y B s´ımbolos no terminales, se llama producci´on no generativa. Si G permite la derivaci´on A ∗ =⇒ Aϕ entonces la letra no terminal A se dice recursiva izquierda. Si G permite la derivaci´on A ∗ =⇒ ϕA entonces A se dice recursiva derecha. Si G permite la derivaci´on A ∗ =⇒ A en uno o m´as pasos entonces se dice que A es un no terminal c´ıclico.
  • 41. 3.2. ´ARBOLES DE DERIVACI ´ON 41 3.2. ´Arboles de derivaci´on Cuando trabajamos con un lenguaje de alto nivel en una computadora es necesario usar traductores que permitan a la m´aquina interpretar las ins- trucciones que el usuario programa; en los traductores de lenguajes se usan varios estados de procesamiento. Cuando las frases o instrucciones v´alidas del lenguaje son especificadas por una gram´atica de estructura de frases, el primer estado del proceso de traducci´on construye un ´arbol de derivaci´on para la frase dada; una vez que esta es clara tendr´a asignado un ´unico ´arbol de derivaci´on para cada tipo sint´actico, de esta manera es posible asociar un significado a cada frase de acuerdo con la gram´atica de la misma. Al an´alisis anterior se le conoce con el nombre de an´alisis de sintaxis. Cuando tenemos una gram´atica independiente del contexto es muy ´util presentar sus producciones mediante ´arboles de derivaci´on; sus v´ertices est´an etiquetados con s´ımbolos terminales o variables de la gram´atica. Sea G = (N, T, P, S) una gram´atica independiente del contexto, un ´arbol se llama de derivaci´on (o de an´alisis gramatical) para G si: 1. Cada v´ertice tiene una etiqueta que es un s´ımbolo de N ∪ T ∪ . 2. La etiqueta de la ra´ız es S. 3. Si un v´ertice es interior y tiene etiqueta A, entonces A debe de estar en N. 4. Si el v´ertice n tiene etiqueta A y los v´ertices n1, n2, n3, . . . , nk son los hijos del v´ertice, de izquierda a derecha con etiquetas x1, x2, x3, . . . , xk respectivamente, entonces A −→ x1|x2|x3| . . . |xk debe ser una produc- ci´on de P. 5. Si el v´ertice n tiene etiqueta , entonces es una hoja y es el ´unico hijo de su padre. Ejemplo 20 G = ({S, A} , {a, b} , P, S) en donde: S −→ aAS | a A −→ SbA | SS | ba
  • 42. 42 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO Figura 3.1: ´Arbol de derivaci´on
  • 43. 3.2. ´ARBOLES DE DERIVACI ´ON 43 Podemos extender el ordenamiento desde la izquierda de los hijos para producir un ordenamiento de izquierda a derecha de todas las hojas. Un ´arbol de derivaci´on es una descripci´on natural de una oraci´on parti- cular de la gram´atica G; si leemos las etiquetas de las hojas de izquierda a derecha se tendr´a dicha oraci´on y la cadena resultante ser´a el producto del ´arbol de derivaci´on. Un sub´arbol de un ´arbol de derivaci´on es un v´ertice particular con todos sus descendientes, las aristas que los conectan y sus etiquetas; la diferencia es que la ra´ız puede no ser el s´ımbolo inicial de la gram´atica. Si en cada paso de una derivaci´on se aplica una producci´on a la variable que se encuentra m´as a la izquierda la derivaci´on se llama extrema izquierda, esto se aplica de manera an´aloga para la derecha. Si ω ∈ L(G) tiene al menos un ´arbol de an´alisis gramatical particular, ω tiene una derivaci´on izquierda y derecha ´unicas. Como puede existir m´as de un ´arbol de derivaci´on para ω puede haber varias derivaciones izquierda y derecha. Una gram´atica independiente del contexto G de la que alguna palabra ten- ga dos ´arboles de an´alisis gramatical se dice que es ambigua. No hay que perder de vista que es posible que una gram´atica produzca derivaciones que nos lleven a una cadena compuesta ´unicamente de s´ımbolos terminales, pero que no necesariamente representan una oraci´on con significado alguno, o no representan la instrucci´on que el programa necesita, como se observa en el siguiente ejemplo. Ejemplo 21 Consideremos la siguiente gram´atica: GE : S → A S −→ if B then A else S B −→ A = A A −→ T A −→ T + A T −→ x|y|z
  • 44. 44 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO Ahora empleando la gram´atica anterior construyamos un ´arbol de derivaci´on para la instrucci´on: if x = y then x else x + y trazaremos los pasos de la producci´on de la frase anterior S −→ if B then A else S −→ if A = A then A else S −→ if T = A then A else S −→ if x = A then A else S −→ if x = T then A else S −→ if x = y then A else S −→ if x = y then T else S −→ if x = y then z else S −→ if x = y then z else A −→ if x = y then z else T + A −→ if x = y then z else x + A −→ if x = y then z else x + T −→ if x = y then z else x + y Cada cadena en los pasos de derivaci´on comienza con el s´ımbolo S; pero observamos que para la producci´on E −→ A E −→ if x = y then x else x + y tenemos dos candidatos, y ser´a necesario elegir qu´e producci´on usar alternan- do con las diferentes posibilidades. Hasta agotar todas y llegar a la secuencia de movimientos que acepten la cadena correcta (esto es importante pues es posible obtener frases como la siguiente: if x = y then x = y else x = y, que
  • 45. 3.3. FORMAS NORMALES DE COMSKY 45 es diferente a la frase que se va a revisar). A dicho m´etodo se le conoce con el nombre de arriba a abajo1 porque la derivaci´on comienza a construirse desde el nodo ra´ız al tope del ´arbol bajando a trav´es de los niveles. Al proceso inverso se le conoce como de abajo a arriba2 . 3.3. Formas normales de Comsky Una gram´atica formal est´a en Forma normal de Chomsky si todas sus reglas de producci´on son de alguna de las sigientes formas: A −→ BC o A −→ α donde A, B y C son elementos del conjunto de s´ımbolos no terminales y α es un s´ımbolo terminal.Adem´as es importante mencionar que todo lenguaje de programaci´on que no posee a la cadena vac´ıa, se puede expresar por medio de una gram´atica en la forma normal de Chomsky, y dada una gram´atica independiente del contexto es posible construir a partir de ella una gram´atica de Chomsky que reconozca el mismo lenguaje, para lo cual necesitaremos realizar ciertos pasos: 1. Hay que eliminar los s´ımbolos inutiles: las variables o s´ımbolos termi- nales que no aparecen en ninguna derivaci´on de una cadena terminal que parta del s´ımbolo inicial. 2. Hay que eliminar las producciones con la forma A −→ para alguna variable A. 3. Hay que eliminar las producciones unitarias de la forma A −→ B para las variables A y B. 3.4. Forma normal de Greibach Existe otra forma normal interesante para los lenguajes independientes del contexto no vac´ıos y sin la palabra vac´ıa. Se dice que una gram´atica 1 en ingles top-down 2 en ingles buttom-up
  • 46. 46 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO independiente del contexto est´a en Forma normal de Greibach, si todas y cada una de sus reglas de producci´on tienen un consecuente que empieza por un s´ımbolo terminal. Formalmente, cualquiera de las reglas tendr´a la estructura: A −→ αω aqui α ser´a un s´ımbolo terminal y ω una cadena de cero o m´as terminales Existe un teorema que prueba que cualquier GIC, cuyo lenguaje no con- tiene a la palabra vac´ıa, si no lo est´a ya, se puede transformar en otra equiv- alente que s´ı est´e en forma normal de Greibach. 3.5. Ambig¨uedad En secciones anteriores, se menciono que una palabra derivada de una gram´atica puede ser representada mediante un ´arbol de derivaci´on, pero en muchas ocaciones el ´arbol de derivaci´on asociado a la palabra no es ´unico, existen dos o mas derivaciones, esto nos genera una estructura que llamamos Gram´atica ambigua. Sea G = {{E, I} , T, P, E} donde T = {+, ∗, (, ), a, b, 0, 1} con producciones (1) E −→ I (2) E −→ E + E (3) E −→ E ∗ E (4) E −→ (E) (5) I −→ a (6) I −→ b (7) I −→ Ia (8) I −→ Ib (9) I −→ I0 (10) I −→ I1 Esta gram´atica nos permite generar expresiones con cualquier secuencia de operadores ∗ y + y las producciones dos y tres en el orden que nosotros deseemos.
  • 47. 3.6. AUT ´OMATAS DE PILA 47 Ejemplo 22 Observe que la cadena E+E∗E puede derivarse de dos formas diferentes E =⇒ E + E =⇒ E + E ∗ E E =⇒ E ∗ E =⇒ E + E ∗ E en el primer caso reemplazamos la segunda E por E ∗ E, mientras que en la segunda reemplazamos la primera E por E + E, esto generar´a dos ´arboles de derivaci´on diferentes, si nosostros asociaramos valores n´umericos a estos dos diferentes derivaciones generariamos diferentes resultados, pues en la primera solicita que la primera operaci´on que se realice sea la multiplicaci´on y luego la sum, mientras que la otra realiza primero la suma y despu´es mul- tiplica el resultado de la suma. Para que sea posible utilizar ´esta gram´atica dentro de un compilador es necesario modificarla, para que seleccione o propiorcione unicamente agru- pamientos adecuados. ¿C´omo eliminar la ambig¨uedad de la gram´aticas? No existe un algorimto que nos permita eliminar la ambig¨uedad de las gram´aticas en general, sin embargo exiten proceso que nos permiten en al- gunos casos eliminarla; para ´esto es necesario detectar primero cuales son las causas m´as importantes que generan la ambig¨uedad en una gram´atica No se respeta la precedencia de los operadores. Una secuencia de operadores id´enticos puede agruparse desde la izquier- da o desde la derecha. El primer problema se resuelve introduciendo m´as variables cada una de las cuales representa las expresiones que comparten el mismo nivel, y el segundo problema se resolvera, respetando s´olo un tipo de derivaci´on de preferencia izquierda. 3.6. Aut´omatas de Pila En el cap´ıtulo anterior se menciona que las expresiones regulares tienen asociado un aut´omata finito; de manera an´aloga las gram´aticas independien- tes del contexto tambi´en tienen asociado un aut´omata al cual conoceremos
  • 48. 48 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO como Aut´omata de Pila. Debido a esta similitud con las gram´aticas indepen- dientes del contexto necesitaremos emplear dos estructuras que son funda- mentales en la definici´on y uso de los aut´omatas de pila. La primera es la cinta de entrada que es un arreglo en donde ser´a guarda- da la cadena de s´ımbolos terminales que acepta el aut´omata, se guardar´a un s´ımbolo por casilla del arreglo y se tendr´a una marca en la siguiente casilla del ´ultimo s´ımbolo escrito en la cinta; la segunda es una pila, en la cual es- cribiremos los s´ımbolos pertenecientes al alfabeto de la pila, para que estos a su vez puedan ser sustituidos o revisados por los s´ımbolos terminales en la cinta de entrada. En la pila el s´ımbolo que se encuentre m´as a la derecha ser´a el tope de la pila. En los aut´omatas de pila se producen dos tipos de movimientos: el primero introduce o saca un s´ımbolo de la pila, y dependiendo de cual sea la acci´on realizada el tope de la pila avanzar´a o retroceder´a un lugar. El segundo movimiento no afecta directamente el tope de la pila, pero revisa un s´ımbolo de la cinta de entrada. Es posible definir un lenguaje para los aut´omatas de pila para lo cual exis- ten dos maneras; la primera consiste en definir el lenguaje aceptado como el conjunto de todas las entradas para las cuales una sucesi´on de movimientos provoca que el aut´omata de pila vac´ıe su pila. La segunda manera consiste en designar algunos estados como estados finales y definimos el lenguaje acepta- do como el conjunto de todas las entradas para las cuales alguna selecci´on de movimientos provoca que el aut´omata alcance un estado final. Ambas formas son equivalentes en el sentido de que si un conjunto es aceptado mediante el vaciado de la pila por alg´un aut´omata, puede ser aceptado mediante el acceso de un estado final por otro aut´omata y viceversa. Definici´on 27 Un Aut´omata de Pila (AP) se define como una sextupla M = (Q, S, U, P, I, F) donde: Q es un conjunto finito de estados S es un alfabeto al que llamaremos alfabeto de entrada.
  • 49. 3.6. AUT ´OMATAS DE PILA 49 U es un alfabeto al que llamaremos alfabeto de pila . P es el programa de M I ⊆ Q es el conjunto de estado iniciales F ⊆ Q es el conjunto de estados finales. Definici´on 28 La forma de representar un estado v´alido en un aut´omata de pila es la siguiente: (qi, ϕ, σ) a la cual llamaremos configuraci´on, donde el estado en que nos encontramos o estado de control est´a dado por qi, ϕ es el prefijo que se encuentra en la cinta de entrada y ya fue revisada y σ es la cadena contenida en la pila. El programa P tiene una secuencia finita de instrucciones con las siguien- tes formas q]scan(s, q ) La cual aplicada en la configuraci´on (qi, ϕ, σ), (con ϕ la cadena ya revisada en la cinta de entrada) escribe el s´ımbolo s en la primera casilla a la derecha despu´es del ´ultimo s´ımbolo de ϕ; y nos lleva al estado qi, esta transformaci´on se representa de la siguiente forma: (qi, ϕ, σ) s −→ (qi, ϕs, σ) En otras palabras esta instrucci´on revisa el s´ımbolo que entra en la cinta y lo coloca inmediatamente despu´es de la palabra que ya se encontraba guardada. q]write(u, q ) La cual aplicada en la configuraci´on (qi, ϕ, σ) mueve el tope de la pila una posici´on a la derecha y escribe un s´ımbolo u en esa nueva posici´on, pasando al estado qi dicho movimiento es representado de la siguiente forma: (qi, ϕ, σ) w −→ (qi, ϕ, σu) Este movimiento introduce a la pila un nuevo s´ımbolo. q]read(u, q )
  • 50. 50 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO La cual aplicada en la configuraci´on (qi, ϕ, σ u) mueve el tope de la pila a la izquierda y entra en el estado qi, dicho movimiento es representado de la siguiente forma: (qi, ϕ, σ) r −→ (qi, ϕ, σ) Este movimiento sacar´a un s´ımbolo de la pila. Notaci´on 3 Es posible representar una secuencia de instrucciones en un aut´omata de pila (q0, ϕ0, σ0) −→ (q1, ϕ1, σ1) −→ · · · −→ (qk, ϕk, σk) donde cada movimiento es un movimiento de lectura, escritura o revisi´on se denotar´a de la siguiente forma: (q0, ϕ0, σ0) =⇒ (qk, ϕk, σk) Un aut´omata de pila comienza su funcionamiento con el tope de la pi- la y de la cinta de entrada en la primera posici´on. La cadena que analiza pasa a trav´es de una secuencia de movimientos, mientras la secuencia no sea rechazada; si en alg´un momento todos los s´ımbolos de la cadena ya fueron revisados, la pila se encuentra vac´ıa, y la ´ultima posici´on de la cinta de en- trada corresponde a un estado final; entonces concluimos que la cadena es reconocida. Definici´on 29 Una configuraci´on inicial v´alida para un aut´omata de pila es una configuraci´on (q, λ, λ) en donde q es un estado inicial del aut´omata; y la configuraci´on final es (q , ϕ, λ), donde q es un estado final, ϕ la cadena escrita en la cinta de entrada, de donde decimos que una cadena es aceptada por el aut´omata s´olo si M tiene la secuencia de movimientos: (q, λ, λ) =⇒ (q , ϕ, λ) Donde q es el estado inicial, q es un estado final; el conjunto de cadenas aceptadas ser´a el lenguaje reconocido por el aut´omata. Ejemplo 23 Sea Mcm un aut´omata de pila con S = {a, b, c} y U = {a, b} el alfabeto de la pila, el programa del aut´omata ser´a el siguiente:
  • 51. 3.6. AUT ´OMATAS DE PILA 51 1]scan (a,2)(b,3)(c,4) 2]write(a,1) 3]write(b,1) 4]scan (a,5)(b,6) 5]read (a,4) 6]read (b,4) Donde el estado 1 es el estado inicial a menos que se especifique otra cosa; y el estado final es el 6. En la figura a cada estado se le coloc´o una etiqueta la cual est´a relacionada con el nombre de la instrucci´on del programa que ejecuta. El lenguaje reconocido por el aut´omata de pila es: Lcm = ϕcϕR ϕ ∈ (a ∪ b)∗ a este lenguaje lo conocemos como el lenguaje del reflejo con el centro mar- cado o lenguaje de los pal´ındromos con el centro marcado. Observamos que en este lenguaje la letra c est´a en el centro de la cadena y su sufijo es igual a la inversa de su prefijo, con lo cual aceptar´a cadenas como abcba mediante la siguiente secuencia de movimientos: (1, λ, λ) s → (2, a, λ) w → (1, a, a) s → (3, ab, a) w → (1, ab, ab) s → (4, abc, ab) s → (6, abcb, ab) r → (4, abcb, a) s → (5, abcba, a) r → (4, abcba, λ) La cual es una secuencia de movimientos aceptada por el aut´omata. El lenguaje Lcm es generado por la gram´atica independiente del contexto: Gcm : Σ → S S → aSa S → bSb S → c
  • 52. 52 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO Figura 3.2: AP para el lenguaje del pal´ındromo con el centro marcado
  • 53. 3.6. AUT ´OMATAS DE PILA 53 Movimientos propios y aut´omatas sin ciclos En los aut´omatas de pila existen varias subclases entre las que se encuen- tran los aut´omatas con buen comportamiento, los cuales sin p´erdida de gen- eralidad reconocen los mismos lenguajes que toda la clase de los aut´omatas de pila; a esta subclase se le conoce como Aut´omatas de pila propios y a con- tinuaci´on se presenta una justificaci´on de la equivalencia entre esta subclase y los aut´omatas de pila. Aut´omatas de pila propios Cuando se ejecuta el programa de un aut´omata de pila se pueden producir comportamientos que carecen de sentido y son improductivos, en particular: 1. Revisar m´as all´a del fin de la cadena en la cinta de entrada. 2. Intentar leer un s´ımbolo como primer movimiento en la pila, es decir, intentar mover el tope de la pila a la izquierda en el inicio de la pila. 3. Escribir un s´ımbolo en la pila, y que el siguiente movimiento sea la lectura del mismo s´ımbolo. · · · (q, ϕ, σ) w −→ (q , ϕ, σu) r −→ (q , ϕ, σ) Observamos que el ´unico efecto es movernos del estado q al estado q , lo cual s´olo puede ocurrir si el aut´omata tiene una instrucci´on de escritura q]write(u, q ) para la cual la etiqueta del estado q es la instrucci´on read. 4. Repetici´on infinita de movimientos de escritura (un ciclo). Los primeros tres tipos se analizar´an en esta secci´on, el ´ultimo tipo de movimiento improductivo se analizar´a en la siguiente secci´on. Definici´on 30 En el programa de un aut´omata de pila M una instrucci´on de escritura es impropia, si el siguiente estado al que apunta est´a etiquetado con una instrucci´on de lectura. Un aut´omata se dice propio si no contiene movimientos impropios.
  • 54. 54 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO Las instrucciones impropias pueden ser eliminadas sin que esto altere el lenguaje reconocido por el aut´omata, es decir, dado un aut´omata M es posi- ble construir un aut´omata propio M , a˜nadiendo y borrando instrucciones de la siguiente forma: Paso 1: Sean q y q dos estados para los cuales el aut´omata tiene la secuencia de movimientos (q, ϕ, σ) k mov write =⇒ (q , ϕ, στ) k mov read =⇒ (q , ϕ, σ) tenemos k movimientos de escritura seguidos del mismo n´umero de mo- vimientos de lectura, en otras palabras, el contenido de la pila no se modifica del estado q al estado q y adem´as no se revisa ning´un s´ımbolo en la cinta de entrada. Siempre que p ] mov (−, q) con mov un movimiento permitido por el programa del aut´omata, sea una instrucci´on en M, a˜nadimos la instrucci´on p ] mov (−, q ) En caso de que el estado q sea el estado inicial en M entonces q ser´a el estado inicial en M . El procedimiento anterior puede realizarse para cada par de estados q y q para los cuales M presenta una secuencia de movimientos impropios. Paso 2: Borrar cada instrucci´on impropia. Las instrucciones restantes son el programa de M Proposi´on 2 Sea M un aut´omata de pila con movimientos impropios; es posible construir un aut´omata de pila M propio tal que L(M) = L(M ). Aut´omatas de pila sin ciclos El ´ultimo tipo de movimiento impropio se analizar´a en esta secci´on. Definici´on 31 Un aut´omata de pila propio M se dice sin ciclos si el progra- ma de ´este no contiene ciclos de instrucciones de escritura:
  • 55. 3.7. LENGUAJES NO REGULALES 55 q0]write(u0, q1) q1]write(u1, q2) ... qn]write(un, qn + 1) · · · Suponga que se tiene un aut´omata con un ciclo de instrucciones de escrit- ura, estas imprimen los s´ımbolos u0, u1, · · · , un · · · de manera infinita, as´ı los estados: q0, q1, · · · , qn no pueden aparecer como una secuencia de movimientos aceptados. Proposi´on 3 Para alg´un aut´omata de pila determin´ıstico M es posible cons- truir un aut´omata de pila M sin ciclos tal que L(M) = L(M ). 3.7. Lenguajes no regulales Los lenguajes no regulares o lenguajes independientes del contexto est´an vinculador con las gram´aticas independientes del contexto y adem´as tienen propiedades de cerradura similares a las de los lenguajes de las expresiones regulares, las cuales se presentan a continuaci´on. Primero se estudiar´a la intersecci´on de los lenguajes independientes del contexto L con el conjunto regular R. Sea Mf = (Qf , T, Pf , If , Ff ) un aut´omata finito para R y Mp = (Qp, T, U, Pp, Ip, Fp) un aut´omata de pila para L. Al realizar la intersecci´on de estos dos aut´omatas obtenemos el aut´omata de pila M = (Q, T, U, P, I, F) donde Q = Qp × Qf , I = Ip × If , F = Fp × Ff El programa de M ser´a el siguiente:
  • 56. 56 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO Si Mp tiene y Mf tiene entonces M tiene q]scan(s, q ) p s −→ q (q, p)]scan(s, (q , p )) q]write(u, q ) p ∈ Qf (q, p)]write(u, (q , p)) q]read(u, q ) p ∈ Qf (q, p)]read(u, (q , p )) Cuadro 3.1: Programa de L(Mp) ∩ L(Mf ) Teorema 2 El aut´omata M reconoce la secuencia de movimientos para ω ((q, p).λ, λ) T =⇒ ((q , p ), ω, λ) con (q, p) ∈ y (q , p ) ∈ F si y s´olo si (q, λ, λ) T =⇒ (q , ω, λ) est´a en Mp y p ω =⇒ p est´a en Mf Puesto que el complemento de un conjunto regular es regular, y L − R = L ∩ Rc entonces L − R ser´a un lenguaje independiente del contexto. Para poder trabajar con la cerradura de los lenguajes independientes del contexto y las operaciones de conjuntos (uni´on, concatenaci´on e inversa) utilizamos su relaci´on con las gram´aticas independientes del contexto. Dadas dos gram´aticas G1 = (T, N1, P1, Σ1) G2 = (T, N2, P2, Σ2) dos gram´aticas independientes del contexto con el mismo alfabeto terminal T, pero con conjuntos no terminales disjuntos, N1 ∩ N2 = ∅ entonces la gram´atica para el lenguaje resultante de concatenar L = L(G1) · L(G2) se obtendr´a usando nuevos s´ımbolos terminales A1, A2 en lugar de Σ1, Σ2 y a˜nadiendo la producci´on Σ −→ A1A2 a la ´union de P1 y P2, y para completar agregamos la producci´on Σ −→ λ si G1 tiene Σ1 −→ λ y Σ2 −→ λ.
  • 57. 3.7. LENGUAJES NO REGULALES 57 La clase de los lenguajes independientes del contexto no son cerradas bajo las operaciones de intersecci´on y complemento, lo cual demostraremos por medio de un contraejemplo; sean L1 = {an bn cm |m, n ≥ 0} L2 = {am bn cn |m, n ≥ 0} La intersecci´on de L1 y L2 es L1 ∩ L2 = {an bn cn |n ≥ 0} = Ldm el lenguaje de doble correspondencia, el cual no es independiente del contex- to. Ahora, si el complemento de un lenguaje independiente del contexto fuera siempre independiente del contexto, podr´ıamos demostrar la cerradura bajo intersecci´on usando las leyes de De Morgan. L1 ∩ L2 = (Lc 1 ∪ Lc 2)c con lo cual el complemento no es independiente del contexto. Para estudiar el traductor de estado finito de un lenguaje independiente del contexto es ´util pensar en t´erminos de un aut´omata de pila que genere lenguajes independientes del contexto, un aut´omata de pila generador (APG) es un aut´omata en el cual consideramos la cinta de entrada como cinta de salida (impresi´on) y reemplazamos cada movimiento scan q]scan(s, q ) con un movimiento print q]print(s, q ) que escribe el s´ımbolo s en la cinta de salida. Claramente el APG genera una cadena ω (esto es, escribe ω en la cinta de salida) por la traves´ıa (q, λ, λ) T =⇒ (q , ω, λ) si y s´olo si la m´aquina que representa un aut´omata reconoce ω por la misma secuencia de movimientos. El aut´omata generador Mg = (Qg, S, U, Pg, Ig, Fg)
  • 58. 58 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO genera cadenas en L que son procesadas por un traductor secuencial genera- lizado. Mt = (Qt, S, R, Pt, It, Ft) La combinaci´on de Mg y Mt es un nuevo APG M = (Q, R, U, P, I, F) con q = Qg × Qt, F = fg × Ft, I = Ig × It que justamente generan las cadenas en R∗ que son traducidas por M en cadenas en L. Esto es, M genera ϕ, por la traves´ıa ((q, p), λ, λ) T =⇒ ((q , p ), ϕ, λ) con (q, p) ∈ I, (q , p ) ∈ F si y s´olo si Mg genera alguna cadena ω por la traves´ıa (q, λ, λ) T =⇒ (q , ω, λ) y ϕ es la traducci´on de ω para M p ω/ϕ =⇒ p el programa de M se especifica en la tabla (3.2) y se a˜nade una instrucci´on adicional q]null(q ) La cual nos coloca en el estado q del aut´omata sin hacer movimientos en el tope de la pila. La instrucci´on null es an´aloga a la transici´on λ en un aut´omata de estado finito y puede ser reemplazada con el par de instrucciones q]write(u, q ) q ]read(u, q ) donde q es un nuevo estado auxiliar y u es un s´ımbolo arbitrario en la pila (los movimientos impropios despu´es pueden ser eliminados)
  • 59. 3.7. LENGUAJES NO REGULALES 59 Teorema 3 La clase de los lenguajes independientes del contexto con al- fabeto terminal T es cerrada bajo las operaciones de uni´on, concatenaci´on, cerradura e inversi´on (reversa), intersecci´on y diferencia con un conjunto regular. Esto es si L1 y L2 son lenguajes independientes del contexto y R es un conjunto regular entonces L1 ∪ L2 LR 1 L1 · L2 L1 ∩ R L∗ 1 L1 − R son independientes del contexto, sin embargo L1 ∩ L2 L∗ 1 = T∗ − L1 no necesariamente son independientes del contexto. Si Mg tiene y Mt tiene Entonces M tiene q]write(u, q ) p ∈ Qt (q, p)]write(u, (q , p)) q]read(u, q ) p ∈ Qt (q, p)]read(u, (q , p)) q]print(s, q ) p]scan(s, p ) (q, p)]null(q , p ) q ∈ Qg p]print(r, p ) (q, p)]print(r, (q, p )) Cuadro 3.2: Especificaci´on del programa de un APG para la traducci´on de L(Mg) por M
  • 60. 60 CAP´ITULO 3. LENGUAJES LIBRES DE CONTEXTO
  • 61. Cap´ıtulo 4 M´aquinas de Turing Objetivo de la unidad: Comprender y conocer el funcionamiento de una m´aquina de Turing y para que se puede utilizar Ahora vamos a abordar la cuesti´on de que lenguajes pueden definirse por medio de dispositivos computacionales, sean cuales fueren. Esta cuesti´on es equivalente a preguntarnos que pueden hacer los computadores, dado que el reconocimiento de las cadenas que forman parte de un lenguaje es un modo formal de expresar cualquier problema y la resoluci´on es un equivalente ra- zonable de lo que hacen los computadores. Un problema que ning´un computador puede resolver se denomina inde- cidible. Supongamos que se desea determinar si un computador puede re- solver o no alg´un otro problema. Podemos intentar escribir un problema que lo resuelva, pero, si no se nos ocurre como hacerlo, podr´ıamos intentar que tal programa no puede existir. Quiz´a ser´ıa posible demostrar que este nue- vo problema es indecidible suponiendo que existe un programa que resuelve el problema y desarrollar otro programa parad´ojico que tenga que efectuar dos acciones contradictorias. Supongamos que se debe que el problemaP1 es indecidible y que P2 es un programa nuevo que nos gustar´ıa demostrar que tambi´en es indecidible. Supongamos que existe un programa representado en la siguiente imagen por el rombo con la etiqueta decide que imprime si o no dependiendo de si la codificaci´on del problema P2 (que constituye su entrada) pertenece o no al lenguaje de dicho problema. Para demostrar que el problema P2 es indecidible, es necesario que nos in- ventemos un procedimiento de construcci´on, representado por la caja cuadra- 61
  • 62. 62 CAP´ITULO 4. M ´AQUINAS DE TURING Figura 4.1: Reducci´on de un problema P1 a un problema P2 da de la figura que convierta los problemas P1 en problemas P2 que tengan la misma respuesta. Esto es cualquier cadena del lenguaje P1 se convertir´a en una cadena perteneciente a P2, y cualquier cadena construida sobre el alfa- beto de P1 que no est´e en el lenguaje P1 se convertir´a en una cadena que no forme parte del lenguaje P2. Una vez que disponemos de este procedimiento de construcci´on P1 se puede resolver como sigue: 1. Dado un problema P1, esto es dado una cadena ω que no puede pertenecer al lenguaje P1, se aplica el algoritmo de construcci´on para producir una cadena x. 2. Se comprueba x est´a en P2, y se aplica la misma respuesta a ω y P1. Si ω esta en P1, entonces x esta en P2, asi que este algoritmo dice si; si ω no esta en P1, entonces x no esta en P2, y el algoritmo dice no. De cualquier modo dice la verdad acerca de ω. Dado que sabemos que no existe ning´un algoritmo capaz de decidir la pertenencia de una cadena P1, disponemos de una demostraci´on por reducci´on al absurdo de que no existe el algoritmo hipot´etico de decisi´on, para P2 o, lo que es lo mismo, de que P2 es indecidible. ¿Puede realmente una computadora hacer todo esto? Al examinar un programa podr´ıamos preguntarnos si en realidad, buscar contraejemplos es ´util. Si el contraejemplo m´as peque˜no estuviera en el orden de magnitud de los billones, se producir´a un error de desbordamiento antes de que fuera posible encontrar una posible soluci´on. De hecho, se podr´ıa argumentar que un computador con 128 megabytes de memoria principal de memoria prin- cipal y 30 gigabytes de disco s´olo tiene 2563 0128000000 estados, y es, por lo tanto, un aut´omata finito. Sin embargo, no es productivo considerar que los computadores se comporten como aut´omatas finitos, como tampoco lo es considerar que el cerebro lo hace (aunque la idea original del aut´omata finito fuera esta). El n´umero de estados implicados es tan grande, y los limites tan poco claros, que no se obtendr´a ninguna conclusi´on ´util. De hecho, existen razones para creer que es posible expandir el conjunto de estados de una computadora tanto como se quiera. Es un error habitual intentar demostrar que un problema P2 es indecidible mediante la reducci´on de P2 a alg´un problema P1 que se sabe que es inde- cidible. Esto equivale a demostrar la proposici´on si P1 es decidible, entonces
  • 63. 4.1. DEFINICI ´ON DE UNA M ´AQUINA DE TURING 63 P1 es decidible. Esa proposici´on, aunque ciertamente es verdadera, no es ´util, ya que su hip´otesis, P1 es decidible, es falsa. La ´unica manera de demostrar que un problema nuevo P2 es indecidible es reducir a P2 un problema P1 que se sabe es indecidible. De esta forma se demuestra la proposici´on si P2 es decidible, entonces P1 es decidible. La conversi´on contradictoria de esta proposici´on es si P1 es indecidible, podemos deducir que P2 es indecidible. Dado que sabemos que P1 es indecible, podemos deducir que P2 es indecidi- ble. 4.1. Definici´on de una M´aquina de Turing La teor´ıa de los problemas indecidibles no solo tiene por objeto estable- cer la existencia de dichos problemas, sino proporcionar a los programadores una gu´ıa sobre lo que se puede o no llevar a cabo mediante la programaci´on. Esta teor´ıa tambi´en tiene un gran impacto pr´actico si se trata de discu- tir, problemas que, aun siendo decidibles, requieren un tiempo muy grande para su resoluci´on. Para los programadores y dise˜nadores de sistemas, estos problemas, llamados problemas intratables tienden a presentar m´as dificul- tades que los problemas indecidibles. La raz´on para ello es que, mientras que suele ser obvio que los problemas indecidibles efectivamente lo son y, en la pr´actica, raramente se intentan resolver, los problemas intratables aparecen continuamente. Adem´as, a menudo dan lugar a peque˜nas modificaciones de los requisitos o a soluciones heur´ısticas. Por tanto, los dise˜nadores tienen que enfrentarse frecuentemente al hecho de tener que decidir si un problema es o no intratable, y que hacer si lo es. A finales del siglo XIX, el matem´atico David Hilbert se pregunto si era posible encontrar un algoritmo para determinar la verdad o falsedad de cualquier proposici´on matem´atica. En particular, se preguntaba si existir´ıa un modo de determinar si cualquier f´ormula del c´alculo de predicados de primer orden, aplicada a enteros, es verdadera. Dado que el c´alculo de predi- cados de primer orden sobre los enteros es suficientemente potente como para expresar frases como esta gram´atica es ambigua, si Hilbert hubiera tenido ´exi- to, existir´ıan algoritmos para dichos problemas, que ahora sabemos que no existen ´esta proposici´on se conoce con el nombre de problema de Hilbert. En 1963, Alan Mathinson Turing propuso la m´aquina que lleva su nombre
  • 64. 64 CAP´ITULO 4. M ´AQUINAS DE TURING como modelo de cualquier computaci´on posible. Este modelo se parece m´as a una computadora que a un programa, aunque las verdaderas computadoras electr´onicas, o incluso los electromec´anicas, tardaron varios a˜nos en ser con- struidas. La m´aquina de Turing consta de una unidad de control, que pueda estar en cualquier estado tomado de un conjunto infinito. Hay una cinta dividida en cuadrados o casillas, y cada casilla puede contener un s´ımbolo, tomado de otro conjunto infinito. Inicialmente, se sit´ua en la cinta de entrada, que es una cadena de s´ımbolos de longitud infinita, elegidos del alfabeto de entrada. El resto de las casillas de la cinta, que se extiende infinitamente hacia la derecha y hacia la izquierda, contiene, inicialmente, un s´ımbolo denominado espacio en blanco. El espacio en blanco es un s´ımbolo de cinta, pero no un s´ımbolo de entrada, y puede haber tambi´en otros s´ımbolos de cinta adem´as de los s´ımbolos de entrada y del espacio en blanco. Existe una cabeza de la cinta que siempre est´a situada sobre una de las casillas de la cinta. Se dice que la m´aquina de Turing est´a se˜nalando dicha casilla. Al principio, la cabeza de la cinta se encuentra en la casilla de la entrada situada m´as a la izquierda. Un movimiento de la m´aquina de Turing es una funci´on del estado de la unidad de control y del s´ımbolo de la cinta al que se˜nala la cabeza. En un movimiento, la m´aquina de Turing: 1. Cambiar´a de estado, el siguiente estado puede ser el mismo que el actual. 2. Escribir´a un s´ımbolo de cinta en la casilla se˜nalada por la cabeza. Este s´ımbolo de cinta sustituye al s´ımbolo que estuviera anteriormente en la casilla, el s´ımbolo escrito puede ser el mismo que hab´ıa en dicha casilla. 3. Mover´a la cabeza de la cinta hacia la izquierda o hacia la derecha. Es necesario que haya un movimiento, y no se permite que la cabeza permanezca en el mismo lugar. Esta limitaci´on no restringe lo que una m´aquina de Turing puede computar, dado que cualquier secuencia de movimientos con la cabeza estacionaria podr´ıa condensarse, junto con el movimiento siguiente de la cabeza, en un ´unico cambio de estado, un nuevo s´ımbolo de cinta y un movimiento hacia la izquierda o hacia la derecha. La notaci´on formal para una M´aquina de Turing (MT) es similar a la utilizada para los aut´omatas finitos o para los aut´omatas a pila.
  • 65. 4.2. CONSTRUCCI ´ON MODULAR DE UNA MT 65 Definici´on 32 Una M´aquina de Turing MT es una sextupla M = (Q, Σ, Γ, δ, q0, B, F) donde Q El conjunto finito de estados de la unidad de control. Σ El conjunto finito de s´ımbolos de entrada. Γ El conjunto completo de s´ımbolos de la cinta; Σ siempre es un subconjunto de Γ δ La funci´on de transici´on. Los argumentos de δ(q, X) son un estado q y un s´ımbolo de la cinta X. el valor de δ(q, X), si est´a es una tupla (p, Y, S) donde 1. p es el estado siguiente de Q 2. Y es el s´ımbolo de Γ, que se escribe en la casilla se˜nalada por la cabeza de la cinta y que sustituye al s´ımbolo que se encontraba en dicha casilla. 3. S es un sentido I o D (izquierda o derecha) que nos indica en que sentido se mueve la cabeza q0 Es el estado inicial. B Es el s´ımbolo del espacio en blanco B ∈ Γ, y aparecera inicialmente en todas las casillas de la cinta, menos en aquellas que contienen los s´ımbolos de entrada F ⊂ es el conjunto de estados finales o de aceptaci´on 4.2. Construcci´on modular de una MT Para describir formalmente lo que hace una m´aquina de Turing, es nece- sario desarrollar una notaci´on para describir sus configuraciones o descrip- ciones instant´aneas, parecida a la notaci´on que desarrollo para los aut´omatas a pila. En principio una m´aquina de Turing dispone de una cinta de longitud in- finita, por lo cual podr´ıa suponerse que no es posible describir especificamente su configuraci´on. Sin embargo, despu´es de un n´umero finito de movimientos, la m´aquina de Turing solo habr´a recorrido un n´umero finito de casillas. Por
  • 66. 66 CAP´ITULO 4. M ´AQUINAS DE TURING tanto, para cualquier configuraci´on existe un prefijo y un sufijo infinito de casillas que no se han recorrido nunca. El contenido de dichas casillas debe ser espacios en blanco o s´ımbolos del conjunto finito de s´ımbolos de entrada. por lo tanto, en una configuraci´on solo se muestran las casillas que se encuentren entre el s´ımbolo m´as a la izquierda y el s´ımbolo m´as a la derecha de la cinta que no sean espacios en blanco, adem´as, habr´a que incluir un n´umero finito de espacios en blanco en la configuraci´on, si se da la condici´on especial de que la cabeza de la cinta se˜nale a uno de los espacios en blanco situados antes o despu´es de la cadena de entrada. Adem´as de la representaci´on de la cinta, debe ser posible representar el estado de la unidad de control, as´ı como la posici´on de la cabeza de la cin- ta. Para ello, insertaremos el estado en la cinta, situ´andolo inmediatamente a la izquierda de la casilla se˜nalada por la cabeza. Para que la cadena que representa el contenido de la cinta junto con el estado de la unidad de con- trol no resulte ambigua, es necesario asegurarse de que no se utiliza como estado ning´un s´ımbolo que forme parte del conjunto de s´ımbolos de cinta. Sin embargo, es sencillo cambiar los nombres de los estados de forma que no tengan nada en com´un con los s´ımbolos de la cinta, dado que la operaci´on de la m´aquina de Turing no depende de c´omo se llamen sus estados. Por tanto, utilizaremos la cadena x1x2 . . . xi−1qxixi+1 . . . xn para representar una configuraci´on en la que: 1. q es el estado de la m´aquina de Turing. 2. La cabeza de la cinta se˜nala al i-´esimo s´ımbolo a partir de la izquierda. 3. x1x2 . . . xn es la porci´on de la cinta que se encuentra entre los s´ımbolos no blancos situados m´as a la izquierda y m´as a la derecha. Como ex- cepci´on, si la cabeza se˜nala a alguna casilla a la izquierda del s´ımbolo no blanco que se encuentre m´as a la izquierda, o a alguna casilla a la derecha del s´ımbolo no blanco que se encuentre m´as a la derecha, en- tonces algunos caracteres prefijos o sufijos de x1x2 . . . xn ser´an espacios en blanco, siendo i = 1 o i = n, respectivamente.
  • 67. 4.2. CONSTRUCCI ´ON MODULAR DE UNA MT 67 Los movimientos de una m´aquina de Turing se describen utilizando la notaci´on →M . Ejemplo 24 La siguiente m´aquina de Turing acepta el lenguaje {0n 1n |n ≥ 1}. Inicialmente, sobre la cinta se escribe una secuencia finita de ceros y unos, precedida y seguida por un n´umero finito de espacios en blanco. Alternativa- mente, la m´aquina de Turing cambiara primero un 0 por una x y luego un 1 por una y, hasta que se hayan cambiado todos los ceros y unos. La m´aquina de Turing repite los pasos que se describen a continuaci´on m´as detallada- mente, y comenzando por el extremo izquierdo de la entrada. Cambia un 0 por una x y se mueve hacia la derecha, pasando por encima de todos los ceros e y que encuentre, hasta llegar a un 1. Cambia el 1 por una y y se mueve hacia la izquierda, pasando por encima de todas las y y de todos los ceros que vaya encontrando, hasta llegar a una x. Entonces, busca el primer 0 que se encuentre inmediatamente a su derecha y, si lo encuentra, lo sustituye por una x y repite el proceso igual que antes, cambiando un 1 por una y. Si la entrada no es de la forma 0∗ 1∗ , la m´aquina de Turing no conseguir´a fi- nalmente realizar ning´un movimiento, y dejara de operar sin aceptar. Sin embargo, si termina cambiando todos los ceros por x en la misma pasada en la que cambia el ultimo 1 por una y, entonces determina que la cadena de entrada era de la forma 0n 1n y acepta. La m´aquina de Turing que realiza la serie de movimientos es la siguiente: M = ({q0, q1q2, q3, q4} , {0, 1} , {0, 1, X, Y, B} , δ, q0, B, {q4}) donde δ est´a representada mediante la siguiente tabla Estado 0 1 X Y B q0 (q1, X, D) — — (q3, Y, D) — q1 (q1, 0, D) (q2, Y, 1) — (q1, Y, D) — q2 (q2, 0, I) — (q0, X, D) (q2, Y, I) — q3 — — — (q3, Y, D) (q4, B, D) q4 — — — — — Cuadro 4.1: Una m´aquina de Turing para {0n 1n } Mientras M realiza los pasos anteriores, la porci´on de la cinta que ya ha sido recorrida por la cabeza de la cinta corresponder´a siempre a una secuen- cia de s´ımbolos descrita mediante la expresi´on regular X∗ 0∗ Y ∗ 1∗ . Es decir,
  • 68. 68 CAP´ITULO 4. M ´AQUINAS DE TURING habr´a algunos ceros que ya han sido sustituidos por X, seguidos de algunos ceros que todav´ıa no han sido sustituidos. Luego, se encontraran algunos unos ya reemplazados por Y , seguidos de unos que aun no han sido reemplazados. A continuaci´on, puede que haya algunos ceros o unos. El estado q0 es el es- tado inicial, y M entra de nuevo en q0 cada vez que vuelve a se˜nalar al 0 que quede m´as a la izquierda. Si M se encuentra en el estado q0 y la cabeza se˜nala a un 0, la regla del extremo superior izquierdo de la figura anterior indica que M debe pasar por el estado q1, reemplazar el 0 por una X, y moverse hacia la derecha. Una vez en el estado q1, M sigue movi´endose hacia la derecha, pasando por encima de todos los ceros y todas las Y que encuentre, mientras permanece en el estado q1. Si M encuentra una X o una B, deja de oper- ar. Sin embargo, si M encuentra un 1 cuando est´a en el estado q1, sustituye dicho 1 por una Y , pasa al estado q2, y comienza a moverse hacia la izquierda. En el estado q2, M se mueve hacia la izquierda, pasando por encima de los ceros y las Y que encuentre, mientras permanece en el estado q2. Cuando M alcanza la X que se encuentra m´as a la derecha, que determina cual es el extremo derecho del bloque de ceros que ya han sido sustituidos por X, M vuelve al estado q0 y se mueve hacia la derecha. Hay dos casos posibles: 1. Si M encuentra ahora un 0, repite el ciclo de sustituciones que acabamos de escribir. 2. Si M encuentra una Y , significa que ya ha cambiado todos los ceros por X. Si hab´ıa cambiado todos los unos por Y , entonces la entrada era de la forma 0n 1n , y M aceptar´ıa. Por tanto, M pasa al estado q3 y comienza a moverse hacia la derecha, pasando por encima de las Y . Si el primer s´ımbolo distinto de una Y que encuentra M es un espacio en blanco, entonces efectivamente hab´ıa en la entrada el mismo n´umero de ceros que de unos, de forma que M pasa al estado q4 y acepta. Por otra parte, si M encontrara un 1, significar´ıa que hay demasiados unos, as´ı que M dejar´ıa de operar sin aceptar. Si encontrara un 0, significar´ıa que la entrada era incorrecta, y M tambi´en se detendr´ıa. A continuaci´on emplearemos la m´aquina M anterior para comprobar si la cadena 0011 es aceptada por la m´aquina de Turing. Comenzamos con M en el estado q0, y se˜nalando al primer 0, con lo cual la configuraci´on inicial es q00011, presntamos a continuaci´on la secuencia completa de movimientos
  • 69. 4.2. CONSTRUCCI ´ON MODULAR DE UNA MT 69 de M es: q0001 → Xq1011 → X0q111 → Xq20Y 1 → q2X0Y 1 → Xq00Y 1 → XXq1Y 1 → XXq11 → XXq2Y Y → Xq2XY Y → XXq0Y Y → XXY q3Y → XXY Y q3B → XXY Y Bq4B Aqui se presenta otro ejemplo, en el que se examina qu´e hace M con la entrada 0010, la cual es una cadena que no pertence al lenguaje aceptado por la m´aquina. q00011 → Xq1010 → X0q110 → Xq20Y 0 → q2X0Y 0 → Xqo0Y 0 → XXq1Y 0 → XXY q10 → XXY q1B El comportamiento de M con 0010 recuerda su comportamiento con 0011, hasta que alcanza la configuraci´on XXY 0q1B. Sin embargo, en el estado q1, M no puede realizar ning´un movimiento si el s´ımbolo de la entrada al que se˜nala es B. Por tanto, M deja de operar sin aceptar esta entrada. La simbolog´ıa que se usa normalmente en las m´aquinas de Turing es similar a la utilizada en otros tipos de aut´omatas. Las letras min´usculas iniciales del alfabeto se utilizan para los s´ımbolos de entrada. Las letras may´usculas, normalmente las de la zona final del alfabeto, se utiliza como s´ımbolos de la cinta que pueden o no formar parte del conjunto de s´ımbolos de entrada. Sin embargo, generalmente se usa B para representar el s´ımbolo correspondiente al espacio en blanco. Las letras min´usculas del final del alfabeto se utilizan para designar cadenas formadas por s´ımbolos de entrada. Las letras griegas representan cadenas de s´ımbolos de cinta. Letras como q, p, u otras pr´oximas, representan estados.
  • 70. 70 CAP´ITULO 4. M ´AQUINAS DE TURING 4.3. El lenguaje de una M´aquina de Turing Podremos decir que la forma en la que una m´aquina de Turing acepta una cadena es la siguiente: la cadena de entrada se situa en la cinta y la cabeza comienza se˜nalando el s´ımbolo de entrada que se encuentra m´as a la izquierda; si la m´aquina de Turing llega a un estado de aceptaci´on al final del proceso, se considera que la cadena es reconocida, en caso contrario, decimos que la cadene no fue aceptada. De manera formal dada una m´aquina de Turing M = (Q, Σ, Γ, δ, q0, B, F), el lenguaje L(M) es el conjunto de cadenas ω de Σ∗ tales que q0ω →∗ αpβ para alg´un estado p del conjunto de estado finales F, y cualesquiera dos ca- denas de cinta α y β. Los lenguajes que son pueden ser aceptados por la m´aquina de Turing reciben el nombre de lenguajes recursivamente enumer- ables o lenguajes RE. Sin embargo este no es el ´unico m´etodo para la aceptaci´on de una cadena, existe otro que comunmente se le conoce con el nombre de aceptaci´on por parada. Se dice que una m´aquina de Turing se para si alcanza un estado q cuando se˜nala a un s´ımbolo de la cinta X, sin que se produzca ning´un movimiento en dicha situaci´on; es decir δ(q, X) no esta definida. Siempre se puede suponer que una m´aquina deTuring se para si acepta, es decir sin introducir variaciones en el lenguaje aceptado, se puede hacer que δ(q, X) se quede sin definir siempre que q sea un estado de aceptaci´on. En general a menos que se especifique lo contrario, suponemos que una m´aquina de Turing siempre se para cuando est´a en un estado de aceptaci´on, aunque no en todos los casos ocurre ´esto. Los lenguajes reconocidos por m´aquinas de Turing que siempre se paran, acepten o no, se les conoce con el nombre de recursivos. Las m´aquinas de Turing que siempre se paran con independencia de que acepten o no, son un buen modelo de algoritmo. Si existe un algoritmo para resolver un problema dado, entonces se dice que el problema es decidible, con lo cual se observa que las m´aquinas de Turing que siempre se paran, tienen un papel importante en la teoria de la decidibilidad.
  • 71. 4.4. VARIANTES DE UNA M ´AQUINA DE TURING 71 4.4. Variantes de una M´aquina de Turing Existen mucho modelos de computaci´on relacionados con las m´aquinas de Turing, que poseen el mismo potencial como reconocedores de lenguajes, Uno de ellos es la m´aquina de Turing con varias cintas, la cual puede simular a una computadora, sin embargo las cintas extra no a˜naden mejoras al modelo, en cuanto a la cuestion de aceptar lenguajes. 4.4.1. M´aquina de Turing con varias cintas este dispositivo dispone de una unidad de control (estado) y un n´umero finito de cintas. Cada cinta se divide en casillas y cada casilla puede contener cualquier s´ımbolo del alfabeto finito de la cinta, adem´as de contener al espacio en blanco. Un subconjunto de la cinta que no incluye al blanco, es el conjunto de los s´ımbolos de entrada. el conjunto de los estados incluye un estado inicial y varios estado de aceptaci´on, inicialmente 1. La entrada se situa en la primera cinta. 2. Las casilla de las cintas restantes contienen espacios en blanco. 3. La unidad de control est´a en el estado inicial. 4. La cabeza de la primera cinta apunta a la izquierda de la entrada. 5. El resto de las cabezas de las otras cintas apuntan a casillas arbitrarias. Cada movimiento dependera del estado y del s´ımbolo le´ıdo por cada una de las cabezas de la cinta, en cada movimiento la m´aquina hace los siguiente 1. La unidad de control pasa a un nuevo estado. 2. Se escribe un n´uevo s´ımbolo de la cinta en las casillas a las que apunta la cabeza de cada cinta. 3. Cada una de las cabezas de cinta realiza un movimiento que puede ser, hacia la izquierda, hacia la derecha o estacionario, las cabezas se mueven de manera independiente. Una diferencia entre las transiciones de la m´aquina con una cinta y la de varias cintas es que en la primero no podiamos tener movimientos esta- cionarios, mientras que en la m´aquina con varias cintas si es permitido.
  • 72. 72 CAP´ITULO 4. M ´AQUINAS DE TURING 4.4.2. M´aquinas con pilas multiples Este modelo est´a basado en la generalizaci´on de los aut´omatas de pila. Pues si el aut´omata de pila tuviera dos pila podria reconocer lenguajes re- conocidos por las m´aquinas de Turing, mientras que con una sola pila (como es su definici´on) no es posible. Como consecuencia de ´esta generalizaci´on, surgen las m´aquinas contadoras, las cuales s´olo se limitan a almacenar un n´umero finito de enteros y a realizar movimientos diferentes dependiendo de si alguno de sus contadores est´a en cero. Figura 4.2: Esquema de una m´aquina de turing con multiples pilas La m´aquina con pilas multiples tiene una unidad de control, que se en- cuentra en un estado de su conjunto finito de estados posibles, y un alfabeto de pila finito que utiliza para todas sus pilas, cada movimiento se basa en 1. El estado de su unidad de control. 2. El s´ımbolo de entrada le´ıdo, que ha de formar parte del alfabeto finito de los s´ımbolos de entrada, no permitiendo transiciones sin valor ( ) 3. El s´ımbolo en el tope de cada una de sus pilas. En cada movimiento la m´aquina puede Pasar a un nuevo estado. Sustituir el s´ımbolo en el tope de cada una de sus pilas por una cadena formada por cero o m´as s´ımbolos de pila. La cadena que se introduce en cada pila puede ser diferente para cada una de ellas. La m´aquina con pilas multiples acepta una o varias cadenas si llega a un estado final. Teorema 4 Si un lenguaje L es aceptado por una m´aquina de Turing, en- tonces L es aceptado por una m´aquina con dos pilas. 4.4.3. M´aquinas contadoras Una m´aquina contadora puede verse de dos formas
  • 73. 4.4. VARIANTES DE UNA M ´AQUINA DE TURING 73 1. La m´aquina contadora tiene la misma estructura que la m´aquina con pilas m´ultiples, pero dispone de contadores en lugar de pilas. Los con- tadores almacenan cualquier entero no negativo, peros solo puede dis- tinguir si un contador est´a a cero o no. Es decir, cada movimiento de la m´aquina contadora depende de su estado, de su s´ımbolo de entrada, y de cu´ales de sus contadores est´an en cero, suponiendo que alguno lo est´e. En un movimiento, la m´aquina contadora puede a) Cambiar de estado. b) Sumar o restar uno a cualquiera de sus contadores independiente. c) Sin embargo, los contadores no pueden llegar a ser negativos, de modo que no se puede restar 1 a un contador que ya se encuentra a 0. 2. Como una m´aquina con pilas m´ultiples con las siguientes restricciones a) Solo hay dos s´ımbolos de pila, a los que lamaremos Z0 (el marcador de fondo de la pila) y X. b) En cada pila se encuentra inicialmente Z0. c) Z0 s´olo puede sustituirse por una cadena de la forma XiZ0, para alg´un i ≥ 0. d) X s´olo puede sustituirse por Xi para alg´un i ≥ 0. Es decir, Z0 ´unicamente aparece en el fondo de cada pila, y todos los dem´as s´ımbolos que se encuentren en la pila son X. Ambas deiniciones son equivalentes, as´ı que no existe problema por que usemos una u otra. Hay algunas observaciones acerca de los lenguajes aceptados por las m´aquinas contadoras que, aunque evidentes, merece la pena mencionar: Observaci´on 7 Todo lenguaje aceptado por una m´aquina contadora es re- cursivamente enumerable. Esto ocurre porque una m´aquina contadora es un caso especial de m´aquina con pilas, y una m´aquina con pilas es un caso es- pecial de m´aquina de Turing con varias cintas, que solo acepta lenguajes recursivamente enumerables.
  • 74. 74 CAP´ITULO 4. M ´AQUINAS DE TURING Observaci´on 8 Todo lenguaje aceptado por una m´aquina con un contador es independiente del contexto. Una m´aquina contadora por la definici´on 2, es una pila, as´ı que una m´aquina con un contador es un caso especial de m´aquina con una sola pila o, lo que es lo mismo, un aut´omata a pila. De hecho, todos los lenguajes aceptados por las m´aquinas con un contador son aceptados por aut´omatas a pila. El resultado m´as sorprendente acerca de las m´aquinas contadoras es que dos contadores son suficientes para simular una m´aquina de Turing y, por lo tanto, para aceptar cualquier lenguaje recursivamente enumerable. Teorema 5 Todo lenguaje recursivamente enumerable es aceptado por una m´aquina con tres contadores. Teorema 6 Todo lenguaje recursivamente enumerable es aceptado por una m´aquina con dos contadores. Actividad 9 Investigar las caracteristicas y funcionamiento de las sigu- ientes variantes de m´aquina de Turing 1. M´aquinas de Turing Deterministas 2. M´aquinas de turing no deterministas 3. M´aquinas de turing con cintas semiinfinitas
  • 75. Cap´ıtulo 5 Decibilidad Objetivo de la unidad: Comprender las caracteristicas de los lenguajes decidibles Diremos que un problema de decisi´on es decidible por una maquina de Turing s´ı s´olo si la m´aquina responde correctamente cada una de las respues- tas a las preguntas asociadas al problema. Por otro lado se ha considera- do formas de simplificar la construcci´on de m´aquinas de Turing mediante la introducci´on de la modularidad, esto quiere decir, considerado algunas maquinas elementales a partir de las cuales podremos construir otras con mayor eficiencia. En ´este capitulo trataremos alguno de los problemas que motivar´on el estudio de los capitulos anteriores y que se plantear´on al inicio del primero. Primero es necesario crear un planteamiento que nos permita determinar de manera eficiente si un problema puede ser tratado como un caso de de- cisi´on, o solamente es un problema intratable, recordemos que la diferencia entre ambos radica en que el problema de decisi´on tenemos casos en los que no existen algoritmos que nos permitan resolver el problema, mientras que el segundo, presenta algoritmos muy extensos que ocupan todos los recursos de una computadora, o que requieren de mucho tiempo para su soluci´on por ejemplo ¿ Hay enteros tales que satisfagan la ecuaci´on 3x + 6y = 151? no es un problema de decisi´on. ¿ Hay enteros x, y tales que se cumple la ecuaci´on ax + by = c? si es un problema de decisi´on (aqu´’i es importante mencionar que para cada 75
  • 76. 76 CAP´ITULO 5. DECIBILIDAD valor de a, b y c tenemos un problema distinto. El problema de la parada ¿Existe alg´un procedimiento efectivo algorit- mo o m´aquina de Turing que nos permita determinar, para cualquier m´aquina de Turing concreta representada en la cinta si la m´aquina llegara a detenerse en algun momento despu´es de iniciar su computo? (esta cuesti´on se menciono en la secci´on de lenguaje de una m´aquina de Turing). Este problema tiene una respuesta negativa, por lo que se trata de un problema indecidible. 5.1. Lenguajes Decidibles Un lenguaje decidible es aquel lenguaje L para el cual existe una m´aquina de Turing que le puede aceptar cualquier cadena ω ∈ L. Hay lenguajes for- mados por cadenas tales que una m´aquina de Turing logra un estado final con las cadenas que reconoce y acepta, solamente. En este caso se dice que la m´aquina de Turing semidecide al lenguaje. Los lenguajes semidecididos por una m´aquina de Turing se llaman recursivos numerables. Las gram´aticas sin restricciones son las que generan los lenguajes recursivos numerables y estos generalizan a los lenguajes recursivos, los cuales generalizan a los lengua- jes libres de contexto, y estos a los lenguajes regulares. Lo anterior tiene relaci´on directa con el hecho de que las m´aquinas de Turing generalizan a los aut´omatas de pila y estos a su vez a los aut´omatas finitos. En t´erminos de procedimientos, las cadenas de un lenguaje decidible cor- responden a procedimientos que terminan, ya sea realizando lo que indica la palabra o se˜nalando que no tienen la capacidad de realizarlo. Para un lenguaje semidecidible, las cadenas decididas por la m´aquina de Turing son instrucciones realizadas por la m´aquina de Turing. De manera complemen- taria, las cadenas no decidibles por la m´aquina de Turing corresponden a procedimientos que no terminan utilizando una m´aquina de Turing. con lo anterior podemos dar la definici´on de algoritmo Definici´on 33 Un algoritmo es una implementaci´on de una m´aquina de Turing tal que el conjunto de sus entradas es el lenguaje decidible. En otras palabras si dado conjunto de entradas bajo las cuales una m´aquina de Turing logra un estado de parada para cada entrada, la m´aquina corre-
  • 77. 5.2. EL PROBLEMA DE HALTING 77 sponde a la implementaci´on de un algoritmo. Esta es la Tesis de Church - Turing. No es un teorema pues no se puede demostrar matem´aticamente, de manera general y categ´orica. Es solo la afirmaci´on de que el concepto informal del algoritmo corresponde a un objeto matem´atico. Al ser s´olo una afirmaci´on no demostrable, puede suceder que en un futuro sea refudada. Sin embargo para que esto ocurra, se necesita encontrar un aut´omata m´as potente que una m´aquina de Turing tal que sea la implementaci´on de un algoritmo. Si bien hay algunas propuestas interesantes que pretende generalizar a la m´aquina de Turing, hasta la fecha ninguna de ellas ha sido aceptada para sustituirla. es importante mencionar que los lenguajes que tienen asociados algoritmos son finitos, mientras que aquellos a los cuales no les podemos asignar un algoritmo son infinitos (en terminos de la cantidad de problemas). 5.2. El problema de Halting El problema de Halting o tambi´en conocido como el problema de la parada (se menciono en la secci´on anterior) , es equivalente a construir un programa que decida si un algoritmo finaliza alguna vez o no. Respecto a este problema Turing prov´o que no es posible construir una m´aquina de Turing que decida si otra m´aquina de Turing aceptara alguna cadena durante su procesamiento, debido a que mientras la m´aquina de turing trabaja, las cadenas almacenadas en la cinta, son pasos intermedios que no tiene nada que ver con el resultado final. El problema se desarrolla suponiendo que dada una m´aquina de turing MT1 existe una cadena de s´ımbolos ω1, que nos informa si otra m´aquina de turing M2 con programa P2 y datos iniciales D2 se detendra proporcionando una salida ω1 = P1 [P2, D2]. Suponga que aplicamos el programa P1, que determina el comportamiento de MT1, que determina el comportamiento so- bre el mismo programa, pero tomando como datos los propios P1 [P1, D1], entonces para que MT1 pueda informar si MT2, para o no debe existir un programa P1 que para cuando un programa anterior P1 (recuerde que se esta trabajando sobre MT1) que pare cuando un segundo programa P1 introduci- do como dato anterior no para. Aqui el programa se esta ejecutando sobre s´ı mismo, lo cual no es posible.
  • 78. 78 CAP´ITULO 5. DECIBILIDAD 5.3. Decibilidad de teor´ıas l´ogicas Una teor´ıa l´ogica TL se define a partir de un conjunto de enunciados da- dos llamados axiomas, unas reglas de inferencia y un esquema de derivaci´on. A partir de los axiomas y aplicando la regla de inferencia y el esquema de derivaci´on se infieren los teoremas de la teor´ıa. El conjunto de teoremas de la teor´ıa forma un lenguaje formal.Si es posible definir una m´aquina de Turing tal que reconozca al lenguaje de los teoremas, este lenguaje es decidible y la teor´ıa tambi´en lo es consecuencia. Dicho en otras palabras, si el conjun- to de teoremas visto como un lenguaje es reconocido por una m´aquina de Turing, entonces la TL es decidible, y viceversa. Puede hablarse entonces de manera indistinta de teor´ıas l´ogicas o de lenguajes decidibles, como aquel- los para los que existe una m´aquina de Turing capaz de reconocerlos. Luego la correspondencia entre la sintaxis de una teor´ıa l´ogica (lenguaje formal) y reconocimiento simb´olico del mismo por parte de un aut´omata queda es- tablecida. Ejemplo 25 Muestre que la colecci´on de lenguajes decidibles por m´aquina de Turing para un alfabeto cualquiera es infinita, pero contable. Soluci´on El cinjunto de lenguajes independientes de contexto es infinito. los conjuntos de los lenguajes independientes de contexto, lenguajes decidi- bles por Turing, lenguajes estructurados por frases son contables. La colecci´on de lenguajes decidibles es contable por ser un subconjunto de los lenguajes estructurados por frases (que son contables). Es infinita por que contiene a los lenguajes independientes de contexto, que son infinitos. Los lenguajes decidibles en tiempo polinomico son aquellos lenguajes para los que una m´aquina de Turing puede determinar si una cadena pertenece al lenguaje. Implica reconocer el complemento del lenguaje. El desarrollo de la teor´ıa de la computabilidad ha ido ´ıntimamente ligado al desarrollo de la l´ogica matem´atica. Esto ha sido as´ı porque la decibilidad de los distintos sistemas l´ogicos es una cuesti´on fundamental. Es bastante f´acil ver que el c´alculo proposicional no era decidible. Por otro lado, para cada una de las distintas teor´ıas se ha ido estudiando su posible decibilidad, son muchos los problemas interesantes que se han demostrado computables. Todas las funciones construidas por recursividad primitiva o minimalizaci´on
  • 79. 5.3. DECIBILIDAD DE TEOR´IAS L ´OGICAS 79 a partir de funciones calculables resultan ser calculables, siendo el resultado m´as significativo en relaci´on con esta cuesti´on el dado por el siguiente teorema Teorema 7 Primer teorema de Recursi´on: Todo operador entre fun- ciones calculables que sea recursivo (esto es que se defina la imagen de f mediante una funci´on calculable en t´erminos de una parte finita de f), tiene una funci´on parcial computable que es el menos punto fijo, es decir, esa fun- ci´on es un punto fijo y cualquier otro punto fijo del operador es una extensi´on de esa funci´on. Este teorema recibe su nombre porque podemos definir una funci´on medi- ante una ecuaci´on recursiva m´as general que la permitida por la recursividad primitiva, a saber donde es un operador recursivo. El primer teorema de recursi´on nos dice que hay una funci´on que satisface esta ecuaci´on. Como en matem´aticas se requiere que la funci´on sea univoca, se dice que dicha ecuaci´on define el menor punto fijo del operador. As´ı, y de acuerdo al primer teorema de recursi´on, la clase de las funciones calculables es cerrada bajo una muy general forma de definici´on por recursi´on. A menudo se utiliza la t´ecnica de reducir un problema a otro para com- probar si tiene o no soluci´on efectiva. La estrategia en el caso de la respuesta negativa es la siguiente, si se reduce de forma efectiva un problema sin solu- ci´on efectiva a otro problema (mediante una funci´on calculable), entonces este nuevo problema tampoco tendr´a soluci´on efectiva. La raz´on es muy sim- ple, si tuviese soluci´on efectiva, componiendo el algoritmo soluci´on con el algoritmo de transformaci´on obtendr´ıamos una soluci´on para el problema efectivamente irresoluble. En sentido inverso, si se reduce un problema a otro para el que se conoce una soluci´on efectiva, entonces componiendo se obtiene una soluci´on para el primer problema. Esta t´ecnica es muy ´util y se utiliza a menudo. Por otro lado, esta misma t´ecnica es muy empleada en el campo de la complejidad algor´ıtmica. Para asegurarse de que un problema esta en una clase de complejidad, basta reducir el problema a otro de dicha clase sin mas que asegurarse que la reducci´on se realiza en la correspondiente clase de complejidad.
  • 80. 80 CAP´ITULO 5. DECIBILIDAD
  • 81. Cap´ıtulo 6 Reducibilidad Objetivo de la unidad: Aplicar la reducibilidad a los lenguajes estudi- ados medisnte m´aquinas de Turing 6.1. Problemas insolubles para la teor´ıa de lenguajes En el capitulo anterior se trata a grandes rasgos, los problemas que pueden ser resueltos mediante un algoritmo y aquellos que no; con lo cual ahora s´olo nos queda analizar que problemas pueden ser resueltos por una computadora con m´as o menos eficiencia; es claro que para resolver esta interrogante es necesario que s´olo tomemos los problemas decidibles y seleccionemos s´olo aquellos que se pueden resolver mediante m´aquinas de Turing en un tiempo que crece en funci´on polin´omica del tamao de la entrada. Para comenzar a estudiar este capitulo es conveniente tomar en cuenta lo siguiente: Los problemas que se pueden resolver en tiempo polin´omico en una com- putadora, son exactamente los mismo que se pueden resolver en tiempo polin´omico en una m´aquina de Turing. Existe una l´ınea divisoria fundamental entre los problemas que se pueden resolver en tiempo polin´omico y los que requieren de un tiempo expo- nencial o mayor. Los problemas pr´acticos que requieren de un tiempo polin´omico son casi siempre resolubles en un tiempo tolerable, mien- tras que los que requieren de un tiempo exponencial, en general no se pueden resolver, excepto en casos sencillos. 81
  • 82. 82 CAP´ITULO 6. REDUCIBILIDAD La teor´ıa de la intratabilidad se refiere al conjunto de t´ecnicas que se pueden utilizar para mostrar que un problema no se puede resolver en tiem- po polin´omico; la teor´ıa de la reducibilidad tra de aquellos problemas que pueden ser reducidos a casos particulares y que pueden ser resueltos en tiem- pos polin´omicos. El analizar si es posible satisfacer una expresi´on booleana, es decir que la expresi´on reuslte verdadera para alguna asignaci´on de los valores de ver- dad verdadero y falso a sus variables, ´este problema no se puede decidir en tiempo polin´omico, y adem´as se puede reducir a muchos otros y con ´esto se prueba que las reducciones tambi´en son intratables. Con este tipo de proble- mas, ya no bastara con que exista un algoritmo que nos permita transformar los casos de un problema en casos de otro, adem´as dicho algoritmo deber´a eje- cutarse a lo m´as en tiempo polin´omico, ya que de lo contrario, la reducci´on no nos podria ayudar a saber si el segundo problema es intratable, aunque el primero lo sea.En otras palabras Definici´on 34 Un problema A es reducible a otro B si un m´etodo para resolver B proporciona un m´etodo para resolver A. Cada problema puede representarse a trav´es de una codificaci´on como un conjunto de n´umeros. As´ı, es posible estudiar la reducibilidad como una relaci´on entre conjuntos de n´umeros, bajo el siguiente principio Un conjunto A es reducible al conjunto B si un m´etodo para decidir si algo pertenece a B, proporciona un m´etodo para decidir que algo pertenece al conjunto A. ´Esta definici´on esta fundamentada en una conjutura llamada N = NP, que permite suponer que la clase de los problemas que se pueden resolver en tiempo polin´omico mediante m´aquinas de Turing no deterministicas, con- tienen al menos algunos problemas que no se pueden resolver en tiempo polin´omico usando m´aquinas de Turing deterministicas, aunque estas ocu- pen un tiempo polini´omico de grado m´as alto. Actividad 10 Investigar la definici´on de las clases de problemas N y NP, y en que consisten sus diferencias Definici´on 35 Se dice que una m´aquina de Turing M tiene un tiempo de c´alculo (complejidad temporal) T(n) si se detiene despu´es de T(n) movimien- tos como m´aximo cuando recibe una entrada ω de longitud n (ya sea aceptada o rechazada)
  • 83. 6.2. UN PROBLEMA SIMPLE INSOLUBLE 83 Esta definici´onse aplica a cualquier funci´on T(n) que sea un polin´omio en n, y de aqui se desprende que Definici´on 36 Un languaje est´a en la clase P, si existe algun polin´omio T(n) tal que L = L(M) para alguna m´aquina de Turing determinista M, cuya complejidad temporal es T(n). 6.2. Un problema simple insoluble 6.2.1. Algoritmo de Kruskal Para este problema, se necesitara retomar los conceptos de grafos que se estudiar´on en la materia de Matem´aticas para computadora en primer semestre. Considere el problema de encontrar un ´arbol de peso m´ınimo asociado a un grafo APMAG, a continuaci´on se presenta un ejemplo de un grafo, en el cual los nodos est´an numerados del 1 al 4 y hay arcos entre pares de nodos, y cada uno tiene un peso en entero, un ´arbol que abarca el grafo es un subconjunto de los arcos tal que todos los nodos quedan conectados entre s´ı mediante estos arcos pero no se forma ningun ciclo. Figura 6.1: Ejemplo para APMAG El ´arbol para el nodo 3 esta compuesto por todas las aristas que parten de ´el. El ´arbol de peso m´ınimo es el que tiene la ,enor suma total de pesos de los arcos entre todos los que abarcan el grafo. Existe un algoritmo llamado algo- ritmo de Kruskal para encontrar un APMAG que consiste en los siguientes pasos: 1. Para cada nodo anotar la componente conexa en la que aparece, usando los arcos del ´arbol seleccionados hasta el momento. Inicialmente no se ha seleccionado ning´un arco, por lo que cada nodo formara por si s´olo una componente conexa.
  • 84. 84 CAP´ITULO 6. REDUCIBILIDAD 2. Se elige el arco de menor peso que aun no se halla examinado, y se rompen las ligaduras como se desee. Si este arco conecta dos nodos situados actualmente en componentes conexas distintas: a) Se selecciona este arco, para el ´arbol que abarca el grafo. b) Se unen las dos componentes conexas, cambiando el n´umero de componente asociado a todos los nodos de una de las componentes, para que sea el mismo que el n´umero de componente de la otra. 3. Se eligen arcos hasta que todos los nodos hallan sido examinados, o hasta que el n´umero de arcos seleccionados pra el ´arbol que abarca el grafo sea igual al n´umero de nodos menos uno. en este caso todos los nodos deben estar en una solo componente conexa, y es posible olvidarse de todos los arcos restantes. Este algoritmo puede implementarse en una computadora, para hallar el ´arbol que abarca un grafo de m nodos y e arcos en un tiempo O(m + eloge). Una implementaci´on m´as simple, mas fac´ıl de seguir lo consigue en e pasos. Una tabla da la componente actual de cada nodo. Elegimos el arco siguiente de menor peso en un tiempo O(e), y encontramos las componentes de los dos nodos que conectan este arco en tiempo O(m). Si son diferentes unimos los nodos con esos n´umeros en tiempo O(m), recorriendo la tabla de nodos. Este tiempo es polin´omico respecto al tamao de la entrada que podemos consid- erar, informalmente, igual a la suma de e y m. Para aplicar este algoritmo a las m´aquinas de Turing hay que resolver algunas cuestiones: Al estudiar algoritmos, nos encontramos con problemas que necesitan que se generaen salidas de diversas formas, tales como la lista de arcos en una APMAG. en cambio cuando tratamos con m´aquinas de Turing, los problemas se vaen como lenguajes y su ´unico resultado es si o no, es decir aceptado o rechazado, para nuestro problema podriamos redactarlo as´ı Dado el grafo G y el limite W, ¿Existe en G un ´arbol que lo abarque con peso menor o igual a W? Este problema puede parecer m´as sencillo, puesto que no se pide el ´arbol asociado al grafo. En este caso el hecho de que la versi´on si − no de un problema sea dif´ıcil implica que tambi´en lo sera la versi´on completa, de la cual se tiene que obtener una respuesta m´as detallada.
  • 85. 6.2. UN PROBLEMA SIMPLE INSOLUBLE 85 Se podria pensar que el tamao de un grafo es el n´umero de nodos o arcos que tiene, sin embargo en una m´aquina de turing los datos de entrada tienen la forma de una cadena de caracteres extra´ıdos de cierto alfabeto. Como consecuencia los problemas que tienen que ver con nodos y arcos deber´an ser codificados de alguna manera, con lo cual las m´aquinas de Turing seran m´as largas que lo que se habia pensado al inicio; aunque esto no es significativo por las siguiente razones: 1. La diferencia entre el tama˜no de la cadena de entrada de una m´aquina de Turing y el de la cadena del problema informal, de- pende de un factor pequeo, que es aproximado al logaritmo del tamao de la entrada. Por lo cual, lo que se puede hacer en tiempo polin´omico en funci´on de una medida, tambi´en puede hacerse en tiempo polin´omico utilizando la otra medida. 2. La longitud de la cadena que representa la entrada es una medida m´as exacta que el n´umero de bits que tiene que leer una computa- dora para obtener la entrada del problema, pues en nuestro caso eln´umero de bits para representar a un nodo es proporcional al logaritmo del tamo˜no del entero en el nodo. en lugar de un byte por nodo. Este algoritmo puede ser implementado en una m´aquina de Turing con varias cintas en un tiempo O(n2 ) utilizando las cintas de la siguiente forma: 1. Una cinta puede utilizarse para guardar los nodos y su n´umero de componentre en cada momento. La longitud de esta tabla es O(n) 2. A medida que se analizan los arcos sobre la cinta de entrada, se puede usar otra cinta para encontrar el peso menor encontrado hasta el mo- mento entre todos los arcos que no han sido marcados como usados. se puede usar una segunda pista de la cinta de entrada para marcar los arcos que fueron seleccionados por su peso minimo, en las pasadas anteriores del algoritmo. La busqueda del arco no marcado lleva un tiempo O(n). 3. Los dos nodos que unen al arco seleccionado se pueden almacenar en otra cinta, para despu´es buscar las componentes de esos nodos en un tiempo O(n)
  • 86. 86 CAP´ITULO 6. REDUCIBILIDAD 4. Se puede usar otra cinta para guardar las dos componentes i y j, que se uniran cuando se encuentre un arco que conecta dos componentes previamento no conectadas. Despu´es se buscara en la tabla de nodos y componentes, para cambiar a jla componente de todos los nodos que estaban en la componente i, esta busqueda lleva un tiempo O(n). 6.3. Funciones computables Formalmente diremos que un lenguaje L esta en la clase NP (no deter- ministico, polin´omico), si existe una m´aquina de Turing no deterministca M y una complejidad de tiempo polin´omico T(n) tal que L = L(M) y cuando M recibe una entrada de longitud n, no existen secuencias de mas de T(n) movimientos de M. Con ´estadefinici´on podemos concluir que P ⊆ NP, es necesario enfatizar que la contenci´on contraria no se cumple. Actividad 11 Desarrolle el problema NP del viajante de comercio, Actividad 12 Defina que es un problema NPcompleto y escriba dos ejem- plos. A continuaci´on se muestran algunos resultados que nos permite establecer condiciones para reducir un algoritmo. Una m´aquina de Turing calcula una funci´on a partir de la entrada de la cinta y pone fin con la salida de la funci´on en la cinta. Definici´on 37 Una funci´on f : E∗ −→ E∗ es una funci´on computable si la m´aquina de Turing M asociada, s´olo se detiene con f(ω), en cada entrada ω en su cinta. Ejemplo 26 Todas las operaciones aritm´eticas habituales en enteros son funciones computables. Podemos hacer una m´aquina que tiene entrada (m, n) y devuelva m + n. Un lenguaje A es reducible a un lenguaje B, si existe una funci´on com- putable f : E∗ −→ E∗ donde para cada ω, f(ω) esta en B, a la funci´on f se llama la reducci´on de A a B.
  • 87. 6.3. FUNCIONES COMPUTABLES 87 Si un problema es reducible a un segundo problema ya resuelto con an- terioridad, podemos obtener una soluci´on al problema original. Tenemos esa idea en el siguiente teorema. Teorema 8 Si A ≤ B en cuanto a tama˜no y B es reducible, entonces A es reducible. Y como consecuencia si A es irreducible B tambien ser´a irreducible.
  • 88. 88 CAP´ITULO 6. REDUCIBILIDAD
  • 89. Bibliograf´ıa [1] Denning, Dennis, Qualitz, Machines, languages and computa- tion. Editorial Prentice Hall 1978. [2] John E. Hopcroft y Jeffrey D. Ullman, Introducci´on a la teor´ıa de aut´omatas, lenguajes y computaci´on.Editorial CECSA 1979. [3] Howie, John M. Automata and languages. Editorial Oxford sci- ence publications, 1991. [4] Dean, Kelley. Teor´ıa de aut´omatas y lenguajes formales. Edi- torial Prentice Hall, 1998. 89