Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
computaci on
Magaly Gonzalez 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. Automatas y la complejidad . . . . . . . . . . . . . . . 7
1.2. Nociones Matematicas . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1. Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2. Funciones y relaciones . . . . . . . . . . . . . . . . . . 12
1.2.3. Induccion matem atica . . . . . . . . . . . . . . . . . . 17
1.3. Cadenas y lenguajes . . . . . . . . . . . . . . . . . . . . . . . 19
2. Lenguajes regulares 25
2.1. Aut omatas nitos . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1. Automatas nitos deterministicos AFD . . . . . . . . . 26
2.1.2. Automatas nitos 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 derivacion . . . . . . . . . . . . . . . . . . . . . . . 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. Maquinas de Turing 61
4.1. Denici on de una Maquina 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 teoras l ogicas . . . . . . . . . . . . . . . . . . . 80
6. Reducibilidad 83
6.1. Problemas insolubles para la teora de lenguajes . . . . . . . . 83
6.2. Un problema simple insoluble . . . . . . . . . . . . . . . . . . 85
6.2.1. Algoritmo de Kruskal . . . . . . . . . . . . . . . . . . . 85
6.3. Funciones computables . . . . . . . . . . . . . . . . . . . . . . 88
Captulo 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 basicas de matem aticas necesarias para comen-
zar a estudiar la materia.
1.1. Automatas computabilidad y compleji-
dad
Se conoce como teora de automatas el estudio de las maquinas o dispos-
itivos abstractos con capacidad de computacion.
En la decada de 1930 el matem atico ingles Alan Mathison Turing estudio una
m aquina con el objetivo de determinar con presicion cual era la frontera entre
lo que podia o no poda 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 nitos, los cuales inicial-
mente pretendian modelar las funciones cerebrales. A nales 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 eciente en una computadora de aquellos
que en la practica necesitarian tanto tiempo que no tendra utilidad emplear
una computadora, salvo en casos particulares, a los cuales llamo problemas
5
6 CAP
ITULO 1. INTRODUCCION
NP-diciles.
Algunos de los conceptos de aut omatas y gram aticas se emplean en el
dise no y construccion 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 vericacion del comportamiento de circuitos digitales (soft-
ware)
2. El analizador lexico de un compilador (la parte del compilador que des-
compone el texto inicial en unidades logicas tales como identicadores,
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 correccion de cualquier tipo de sistemas
que tengan un n umero nito 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 nito de ellos.
El objetivo de un estado es recordar la parte signicativa de la historia de
un sistema. Dado que solo disponemos de un n umero nito de estados, nor-
malmente no es posible recordar la historia completa, por lo cual el sistema
debera 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 esta 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 nito 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 vaca (estado inicial), y donde cada uno
1.2. NOCIONES MATEM
ATICAS 7
produce una transicion desde el prejo existente hasta la siguiente letra de
la palabra (cada estado esta etiquetado con el prejo 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 programacion, como las expresiones aritmeticas, condicionales etc.
2. Las expresiones regulares que nos indican la estructura de los datos,
principalmente cadenas de texto.
1.1.2. Automatas y la complejidad
Los aut omatas nos sirven para resolver dos pregntas muy importantes en
la computacion que son:
Que puede hacer una computadora?
Que puede hacer una computadora ecientemente?
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 Matematicas
1.2.1. Conjuntos
Para el estudio de los automatas es necesario recordar algunos de los con-
ceptos vistos en Matem aticas para computadora, debido a que muchas de
las deniciones relacionados con los aut omatas estan dados en terminos de
8 CAP
ITULO 1. INTRODUCCION
conjuntos, a continuaci on se presenta un breve recordatorio.
Denici on 1 Conjunto es una coleccion de objetos que puede ser nito o in-
nito. Totalidad de los elementos o cosas poseedores de una propiedad com un,
que los distingue de otros.
En el caso de ser nito y si el conjunto no es muy extenso se puede
representar mediante todos sus elementos.
A = {lunes, martes, mi ercoles, jueves, viernes}
Si es nito o tiene muchos elementos se representa de la siguiente forma
B = {x\x es un n umero entero positivo}
Para que exista un conjunto debe basarse en lo siguiente:
La coleccion de elementos debe estar bien denida.
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.
Notacion 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 vaco o nulo: Es aquel que no tiene elementos y se simboliza por
o { }, por ejemplo:
A =
_
x
2
+ 1 = 0\x R
_
El conjunto A, es un conjunto vaco por que no hay ning un n umero real
que satisfaga x
2
+ 1 = 0. Una propiedad imortante del conjunto vaco
es que est a contenido en cualquier conjunto.
Conjunto universal: Es el conjunto de todos los elementos considerados en
una poblacion 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 smbolo
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 das 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 tambien
pertenece a B y viceversa si cada elemento que pertenece a B pertenece
tambien a A.
A = B
Subconjunto: Si todo elemento de un conjunto A es tambien elemento de
un conjunto B, entonces se dice que A es un subconjunto de B, y se
denota por el smbolo .
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 smbolo .
A B o B A
Conjunto potencia: La familia de todos los subconjuntos de un conjunto
se llama conjunto potencia. Si un conjunto es nito con n elementos,
entonces el conjunto potencia tendra 2
n
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: 2
2
= 4 los cuales son:
P(A) = {{1, 2} , {1} , {2} , }
10 CAP
ITULO 1. INTRODUCCION
Union: Es una operacion 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 = {x\x A o x B}
Interseccion: Es una operaci on entre dos conjuntos A y B y esta formada
por todos los elementos que pertenecen a el conjunto A y tambien al
conjunto B y se representa de la siguiente forma
A B = {x\x 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.
Particion: Cuando un conjunto X es dividido en subconjuntos que no se
intersectan entre si y que ademas al unirlos forman todo el conjunto
X, se le denomina particion.
Diferencia de dos conjuntos AB: Consta de todos los elementos de A que
no estan en B y se representa de la siguiente forma:
A B = {x\x 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:
A
c
= 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}
A
c
= {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)| = 2
4
= 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
P
1
= {{a, b} , {c, d} , }
P
2
= {{a, b, } , {c, d}}
P
1
= {{a} , {b, d, c} , }
Actividad 1 Realice lo siguiente:
1. Los conjuntos tambien se pueden representar de manera graca 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 biograa de Georg Cantor y mencionar cuales fueron sus
aportaciones a la teora de conjuntos.
3. Investigar las leyes de DMorgan 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) A
c
f) (A B)
c
g) (A
c
B) C
h) (A B) (C D)
i) ((A B) (C D))
c
j) (D (B A)
c
) (A
c
B)
1.2.2. Funciones y relaciones
Denici 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 razon por la
cual son de nuestro interes las aprejas ordenadas es porque nos ayudan a
denir una operacion entre conjuntos llamada producto cartesiano.
Denici on 3 El producto cartesiano de dos conjuntos X y Y se dene 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 nitos no vacos A y B
|A B| = |A| |B|
Una Relacion es un conjunto de pares ordenados, donde el primer ele-
mento est a relacionado con el segundo elemento del par ordenado, mas for-
malmente
Denicion 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 esta relacionado con y; ademas si X = Y entonces
decimos que R es una relacion binaria sobre X
Ejemplo 5 Sean X = {1, 2, 3, 4}, Y = {2, 4, 5} dos conjuntos, denimos la
relacion R como
R = {(x, y) \ x +y sea par}
entonces
R = {(1, 5), (3, 5), (2, 2), (2, 4), (4, 2), (4, 4)}
Denicion 5 Al conjunto
{x X\(x, y) R para algun y Y }
se le conocee con el nombre de Dominio de la relaci on (D
R
) 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 relacion (Im
R
)
Para el ejemplo anterior tenemos que:
D
R
= {1, 2, 3, 4}
Im
R
= {2, 4, 5}
Propiedades de las relaciones
Denici on 6 Una relacion binaria sobre X tiene las siguientes propiedades:
Una relacion R sobre un conjunto X es reexiva si (x, x) R para cada
x X
Una relacion R sobre un conjunto X es irreexiva si (x, x) / R para cada
x X
Una relacion R sobre un conjunto X es simetrica si para todo x, y X y
si (x, y) R, entonces (y, x) R
Una relacion R sobre un conjunto X es antisimetrica si para todo x, y X,
si (x, y) R y si x = y, entonces (y, x) / R
Una relacion 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 relacion R sobre un conjunto X es un orden parcial si R es reexiva,
transitiva y antisimetrica
Una relacion R sobre un conjunto X es una relaci on de equivalencia si R
es reexiva, transitiva y simetrica
Sea R una relacion de X en Y . La inversa de R que se denota por R
1
, es
la relacion de Y a X denida como:
R
1
= {(y, x)\(x, y) R}
Sea R
1
una relacion de X a Y y R
2
una relacion de Y a Z, la composicion
de R
1
y R
2
que se denota por R
2
R
1
es una relacion de X a Z denida
como
R
2
R
1
= {(x, z)\(x, y) R
1
y (y, z) R
2
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 relacion 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 relacion se tiene lo siguiente
D
R
= {1, 2, 3, 4, 5}
Im
R
= {1, 2, 3, 4, 5}
Ademas: la relacion es reexiva pues las parejas (1, 1), (2, 2), (3, 3), (4, 4),
(5, 5) pertenecen a la relacion.
La relacion es simetrica pues
(1, 3) R y tambien (3, 1) R
(1, 5) R y tambien (5, 1) R
(3, 1) R y tambien (1, 3) R
(3, 5) R y tambien (5, 3) R
(5, 1) R y tambien (1, 5) R
(2, 4) R y tambien (4, 2) R
(4, 2) R y tambien (2, 4) R.
La relacion 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 relacion es simetrica entonces no puede ser antisimetrica,
es importante observar que si la relacion no es simetrica no necesariamente
sera antisimetrica.
en otros casos tampoco es necesario probar si todos los elementos de la
relacion cumplen con encontrar uno que no cumpla ser transitivo, reexivo,
simetrico o antisimetrico (dependiendo de que estemos buscando) la relacion
ya no tendra la propiedad buscada.
Por ultimo y como conclusion de nuestro ejemplo la relacion por ser transi-
tiva, reexiva y simetrica es una relacvion de equivalencia.
Actividad 4 en los siguientes ejercicios determine: los elementos de la relacion,
la inversa de la relacion, el dominio e imagen de la relacion, si es reexiva,
simetrica, antisimetrica, transitiva, relacion de equivalencia o es una relacion
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)\ x
2
y}
5. R = {(x, y)\ x divide a 2y}
Funciones
Denicion 7 Una funcion de X a Y es una relacion que posee las siguientes
propiedades
El dominio de f es X
Si (x, y) y (x, y
) f, entonces y = y
ITULO 1. INTRODUCCION
a que tanto las cadenas como los aut omatas son elementos de conjuntos ni-
tos.
Existen varios metodos para realizar demostraciones en matem aticas entre
los cuales destacan:
Demostraciones deductivas: Las cuales consisten en una secuencia de ar-
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 verica la veracidad de la mismas. La hip otesis estan formadas por
varias armaciones independientes que se relacionan entre si mediante
un operador logico.(Los teoremas demostrados mediante este metodo
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 metodo deductivo,
solo que en lugar de probar si H entonces C, probamos si no C
entonces H, que es su proposicion contradictoria (no confundirla con
la inversa de la proposici on).
Demostraci on por reduccion al absurdo: Esta demostracion comienza suponien-
do que son ciertas tanto la hipotesis H como la negacion de la conclusi on
C y la demostracion se completa probando algo que se sabe falso y que
se deriva de la proposici on H y noC(la cual implica falsedad).
Contraejemplos: En programacion (sobre todo para estructuras recursivas)
no siempre es posible demostrar todos los casoso que se nos presenten,
sin embargo con probar que uno o mas casos no se cumplen podemos
demostrar que una armaci on es falsa. Por ejemplo la armacion 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 demostracion importante para nuestra materia es la de-
mostraci on por induccion; este metodo ayuda principalmente cuando tenemos
deniciones recursivas arboles, expresiones regulares, cadenas etc. Primero
que nada es necesario explicar que este metodo 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 repeticion nos encontramos. El procedimiento
que se emplea en este metodo es el siguiente:
Supongase que se tiene una proposicion S(n) para cada entero positivo n, la
cual es verdadera o falsa, necesitamos probar dos cosas:
1. Base: debemos probar que la proposicion 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 armaciones que no son
ciertas para n umeros peque nos), en terminos matematicos S(i) es cierta
cuando i = 0 o i = 1
2. Paso de induccion: en este paso suponemos que para algun valor n
arbitrario la proposicion S(n) es cierta, y posteriormente procedemos
a probar que esta proposici on tambien se cumple para su consecutivo
S(n + 1)
Por ejemplo las las de chas de domin o cuando caen: hemos demostrado
que la primera cha cae (primer paso), y que si cae una cha tambien 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 metodo inductivo
1.3. Cadenas y lenguajes
Si nosotros observamos las siguientes lneas 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 esta compuesta
por una secuencia de smbolos que pertenecen a alg un conjunto nito; para
el caso de la segunda lnea el conjunto {a, b, c, ..., x, y, z} junto con todos los
smbolos de puntuaci on correspondientes, de manera an aloga para la tercera
lnea, donde el conjunto son los dgitos {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}. Los progra-
mas escritos en lenguajes de alto nivel tambien est an compuestos por un
conjunto nito de palabras reservadas, identicadores y smbolos especiales
(como n 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 nito no vaco 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 mas comunes en computacion se encuentran
= {0, 1} el alfabeto binario.
El conjunto de todos los caracteres ASCII, o el conjunto de todos los
caracteres ASCII imprimibles.
Denicion 8 Sea un alfabeto, una palabra o cadena sobre el alfabeto es
una secuencia nita de smbolos del alfabeto . En caso de que no se ten-
ga ningun caracter la cadena sera llamada cadena vaca 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 continuacion describi-
mos algunas de ellas:
Sea un alfabeto, se dene la concatenacion 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 prejo y a la palabra
, la llamaremos sujo Si = hola y = peluza entonces
= holapeluza
aqui el prejo es hola mientras que el sujo es peluza, y de este mismo
ejemplo podemos observar que
= peluzahola
de donde podemos concluir que la concatenacion de cadenas no es conmuta-
tiva
=
a menos que una de las palabras sea la palabra vaca
= =
En ocaciones es util clasicar 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 mas formal:
Denicion 9 Sea un alfabeto y = (
1
,
2
, ...,
n
) una palabra sobre .
La longitud de una palabra de es una funcion: || :
N denida as:
|| = n
Derivado de la denicion tenemos lo siguiente
1. La longitud de la cadena vaca 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 continuacion se muestra un ejemplo de como se usa el metodo inductivo
en la teoria de automatas, para desmostrar la ultima armacion
Demostracion:
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 = || +| | = || +||
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 smbolos 0 y 1 y del segundo
sus miembros son las cadenas 0 y 1, cada una de las cuales tiene longitud
uno.
Denici 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 vaca 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 programacion C
el conjunto de todas las cadenas con igual cantidad de ceros y unos.
Una aplicacion de los lenguajes es un analizador lexico 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
Captulo 2
Lenguajes regulares
Objetivo de la unidad: Conocer el concepto de expreson regular, su
representacion mediante automatas nitos y sus aplicaciones en procesos de
computo y el entorno donde se desenvuelve el alumno
2.1. Automatas nitos
Para iniciar esta unidad se presentara un ejemplo practico, tomado del
libro Introduccion a la teora de automatas, lenguajes y computacion, 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 garanta 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 falsicacion no sea un problema, ademas
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 automatas nitos
Otro ejemplo de un proceso que podemos modelar empleando aut omatas
nitos es el siguiente
Ejemplo 11 Las maquinas expendedoras de refrescos, dulces o cafe requieren
25
26 CAP
OMATAS FINITOS 27
Un automata puede ser representado mediante un grafo dirigido (digrafo)
el cual se conoce como diagrama de transiciones, donde los vertices del mismo
corresponden a los estados del aut omata, en el caso del estado inicial este
tendr a una echa que apunta hacia el, y los estados nales se representaran
mediante un crculo con lnea 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 automata acepta una cadena
si la secuencia de transiciones correspondientes a los smbolos de conducen
del estado inicial a un estado nal.
Ejemplo 12 Sea Q = {q
0
, q
1
, q
2
, q
3
} el conjunto de estados, q
I
= {q
0
} el
estado inicial, q
F
= {q
0
} el conjunto de estados nales, = {0, 1} el alfabeto
de entrada y la funcion
f q
0
q
1
q
2
q
3
q
0
1 0
q
1
1 0
q
2
0 1
q
3
0 1
El digrafo asociado al automata anterior es:
Figura 2.1: Grafo asociado a un aut omata
la funcion de transicion tambien se puede escribir de la siguiente forma
f(q
0
, 1) q
1
f(q
0
, 0) q
2
f(q
1
, 1) q
0
f(q
1
, 0) q
3
f(q
2
, 1) q
3
f(q
2
, 0) q
0
f(q
3
, 1) q
2
f(q
3
, 0) q
2
o mediante la siguiente
28 CAP
as:
f
: Q Q
q Q : f
(q, ) := q
q Q , y
: f
(q, ) := f
(f (q, ) , )
Algo que es importante en la teora de automatas, es como decide si acepta
o no una secuencia de smbolos de entrada (cadena). El lenguaje de un AFD
es el conjunto de todas las cadenas que acepta el automata, formalmente:
Denici on 14 Sea M = (Q, , q
0
, f, F) un AFD, el lenguaje de M se dene
como:
L(M) := {w
|f
(q
0
, w) F}
Observaci on 1 Sean L(A) y L(B) dos lenguajes sobre el alfabeto , en-
tonces L(A) = L(B) si y solo 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
.
Denici on 15 Dos automatas nitos se dicen equivalentes si reconocen el
mismo lenguaje, es decir: Dados M
p
= (Q, , p
0
, f, F), M
q
= (Q, , q
0
, f, F)
AFD
M
P
M
q
L(M
p
) = L(M
q
)
2.1.2. Automatas nitos no deterministicos AFND
Ahora, si se modica el modelo del aut omata nito, para permitirle ningu-
na, una o m as transiciones de un estado sobre el mismo smbolo de entrada,
al nuevo modelo lo conoceremos como aut omata nito no determinstico.
Denici on 16 Un Aut omata Finito No Determinstico (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 relacion sobre Q Q que se llama relaci on de transici on.
F Q es un conjunto de estados a los cuales llamaremos estados nales.
Observaci on 3 Si I se reduce a un solo estado y R es tal que sus elementos
pueden escribirse mediante una funcion entonces el automata sera deter-
minstico.
Denici on 17 Sea M un AFND y sea
2
, ,
n
en un automata es una n + 1-ada de es-
tados (q
0
, q
1
, , q
n
) tales que k [1, 2, , n], (q
k1
,
k
, q
k
) R. Tambien
diremos que el camino empieza en q
0
e induce es (q
0
).
Denici 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
nal.
Denici on 19 El lenguaje del AFND M, es el conjunto de todas las palabras
en
| induce un camino (q
0
, , q
n
) tal que q
0
I y q
n
F}
Observaci on 4 Dado un AFND M = (Q, , I, R, F) entonces existe un
AFD M
).
Ejemplo 13 Sea M = ({q
0
, q
1
} , {0, 1} , , q
0
, {q
1
}) un AFND en el que :
(q
0
, 0) = {q
0
, q
1
}
(q
0
, 1) = {q
1
}
(q
1
, 0) =
(q
1
, 1) = {q
0
, q
1
}
30 CAP
= (Q, {0, 1} ,
, [q
0
] , F) que acepte a L(M)
de la siguiente forma: Q esta dado por todos los subconjuntos de {q
0
, q
1
}, a
los cuales denotaremos as:
[q
0
] , [q
1
] , [q
0
, q
1
] ,
como (q
0
, o) = {q
o
, q
1
}
tenemos:
([q
0
] , 0) = [q
0
, q
1
] de la misma forma:
([q
0
] , 1) = [q
1
]
([q
1
] , 0) =
([q
1
] , 1) = [q
0
, q
1
]
(, 0) =
(, 1) =
Por lo tanto el conjunto de estados nales es {[q
1
] , [q
0
, q
1
]}
2.2. Expresiones regulares
Las expresiones regulares son importantes porque tambien 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 puntuacion o palabras reservadas mal
escritas). Las expresiones regulares estan directamente relacionadas con los
aut omatas nitos deterministicos y no deterministicos, y en muchas oca-
ciones son empleadas para describir componentes de software debido a que
son mas faciles de entender que los aut omatas nitos. Otras caracteristicas
importantes de las expresiones regulares es que estas nos permiten denir a
los lenguajes descritos por las distintas familias de automatas, 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.
Denici on 20 Las Expresiones regulares sobre un alfabeto, se denen as :
1. es una expresion regular.
2.2. EXPRESIONES REGULARES 31
2. {} es una expresion regular y se escribe:
3. : es expresion regular y se escribe: .
Ahora, si y son expresiones regulares, entonces tambien lo seran:
4. que escribiremos: +
5.
6.
Solo las expresiones que se obtienen por composicion nita de las reglas
anteriores son expresiones regulares.
Proposion 1 Sea una expresion regular. Entonces
R
tambien es una
expresion regular
Demostracion:
Se procedera por inducci on sobre la construcci on de expresiones regulares
1.
R
=
2.
R
= {}
R
=
_
R
_
= {} =
3. Sea entonces por la denicion 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
tambien
lo son, entonces
( +)
R
= {
R
| +} = {
R
| } {
R
| } =
R
R
por lo tanto ( +)
R
es expresion regular.
32 CAP
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
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
)
+ 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
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
L
0
= {}
L
1
= {a, bb}
L
2
= {aa, abb, bba, bbbb}
L
3
= {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 L
i
para todo i y hacer la uni on de
estos lenguajes.
Construccion de expresiones regulares
Se mostrara un ejemplo de como se construyen las expresiones regulares
utilizando la denicion de las mismas
34 CAP
. Sin em-
bargo el lenguaje asociado a (01)
0(10)
1(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 smbolos 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 concatenacion.
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 teora de la computacion que
estan directamente vinculados con las expresiones regulares y los aut omatas
nitos deterministicos. Aunque las expresiones regulares describen los lengua-
jes de manera diferente a como lo hacen los aut omatas nitos, ambas nota-
ciones representan exactamente el mismo conjunto de lenguajes (lenguajes
regulares), ademas tambien se vio que es posible construir aut omatas nitos
deterministicos asociados a automatas nitos no deterministicos, con lo cual
los lenguajes regulares tambien se encongraran vinculados con esta clase de
aut omatas.
Todo lenguaje denido mediante un aut omata nito deterministico,
tambien puede denirse mediante una expresion regular.
Todo lenguaje denido por una expresi on regular tambien puede denirse
mediante un automata nito deterministico.
Denicion 21 Un conjunto A
escribimos =
si existen x, y N
y
una produccion 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 perdida de generalidad a esta transformaci on la llamaremos derivacion
en G y decimos que deriva a z.
Denici 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 signicado, pero
es aceptada por la sintaxis de la gram atica; debido a este comportamien-
to sera necesario hacer modicaciones para que el lenguaje s olo reconozca
oraciones que posean signicado (es decir analizar el contexto de la oracion).
40 CAP
, , N \ T)
o de la forma
y con ( N \ T, y T
)
Decimos que una gramatica G es independiente del contexto si todas las
producciones son de la forma
z con z (T N)
| =
R
_
que es el lenguaje de los palndro-
mos, en el alfabeto T.
Denicion 26 Sea G una gramatica independiente del contexto, una produc-
cion A en la gramatica se llama regla de G. El smbolo 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 produccion. Una produccion de la forma A B con A
y B smbolos no terminales, se llama produccion no generativa. Si G permite
la derivaci on
A
= A
entonces la letra no terminal A se dice recursiva izquierda. Si G permite la
derivacion
A
= A
entonces A se dice recursiva derecha. Si G permite la derivacion
A
= A
en uno o m as pasos entonces se dice que A es un no terminal cclico.
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 especicadas por una gram atica de estructura de frases, el
primer estado del proceso de traducci on construye un arbol de derivacion
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
signicado a cada frase de acuerdo con la gram atica de la misma. Al an alisis
anterior se le conoce con el nombre de analisis de sintaxis.
Cuando tenemos una gram atica independiente del contexto es muy util
presentar sus producciones mediante arboles de derivaci on; sus vertices estan
etiquetados con smbolos terminales o variables de la gramatica.
Sea G = (N, T, P, S) una gramatica independiente del contexto, un arbol
se llama de derivacion (o de analisis gramatical) para G si:
1. Cada vertice tiene una etiqueta que es un smbolo de N T .
2. La etiqueta de la raz es S.
3. Si un vertice es interior y tiene etiqueta A, entonces A debe de estar
en N.
4. Si el vertice n tiene etiqueta A y los vertices n
1
, n
2
, n
3
, . . . , n
k
son los
hijos del vertice, de izquierda a derecha con etiquetas x
1
, x
2
, x
3
, . . . , x
k
respectivamente, entonces A x
1
|x
2
|x
3
| . . . |x
k
debe ser una produc-
ci on de P.
5. Si el vertice 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
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 descripcion natural de una oraci on parti-
cular de la gramatica 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 derivacion es un vertice particular con todos
sus descendientes, las aristas que los conectan y sus etiquetas; la diferencia
es que la raz puede no ser el smbolo inicial de la gramatica. 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 derivacion se llama extrema izquierda, esto se aplica de
manera analoga para la derecha.
Si L(G) tiene al menos un arbol de analisis gramatical particular,
tiene una derivacion izquierda y derecha unicas. Como puede existir mas de
un arbol de derivaci on para puede haber varias derivaciones izquierda y
derecha.
Una gramatica 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 smbolos terminales, pero
que no necesariamente representan una oraci on con signicado alguno, o no
representan la instruccion que el programa necesita, como se observa en el
siguiente ejemplo.
Ejemplo 21 Consideremos la siguiente gramatica:
G
E
: S A
S if B then A else S
B A = A
A T
A T +A
T x|y|z
44 CAP
OMATAS DE PILA 47
Ejemplo 22 Observe que la cadena E+EE 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 generara dos arboles
de derivacion diferentes, si nosostros asociaramos valores n umericos a estos
dos diferentes derivaciones generariamos diferentes resultados, pues en la
primera solicita que la primera operacion que se realice sea la multiplicacion
y luego la sum, mientras que la otra realiza primero la suma y despues mul-
tiplica el resultado de la suma.
Para que sea posible utilizar esta gram atica dentro de un compilador es
necesario modicarla, para que seleccione o propiorcione unicamente agru-
pamientos adecuados.
Como eliminar la ambig uedad de la gramaticas?
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 mas importantes que generan la ambig uedad en una gram atica
No se respeta la precedencia de los operadores.
Una secuencia de operadores identicos 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. Automatas de Pila
En el captulo anterior se menciona que las expresiones regulares tienen
asociado un aut omata nito; de manera an aloga las gram aticas independien-
tes del contexto tambien tienen asociado un aut omata al cual conoceremos
48 CAP
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 nales.
Denicion 28 La forma de representar un estado valido en un automata de
pila es la siguiente: (q
i
, , ) a la cual llamaremos conguraci on, donde el
estado en que nos encontramos o estado de control esta dado por q
i
, es el
prejo 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 nita de instrucciones con las siguien-
tes formas
q]scan(s, q
)
La cual aplicada en la conguraci on (q
i
, , ), (con la cadena ya
revisada en la cinta de entrada) escribe el smbolo s en la primera
casilla a la derecha despues del ultimo smbolo de ; y nos lleva al
estado q
i
, esta transformaci on se representa de la siguiente forma:
(q
i
, , )
s
(q
i
, s, )
En otras palabras esta instruccion revisa el smbolo que entra en la cinta
y lo coloca inmediatamente despues de la palabra que ya se encontraba
guardada.
q]write(u, q
)
La cual aplicada en la conguracion (q
i
, , ) mueve el tope de la pila
una posicion a la derecha y escribe un smbolo u en esa nueva posici on,
pasando al estado q
i
dicho movimiento es representado de la siguiente
forma:
(q
i
, , )
w
(q
i
, , u)
Este movimiento introduce a la pila un nuevo smbolo.
q]read(u, q
)
50 CAP
i
, dicho movimiento es representado
de la siguiente forma:
(q
i
, , )
r
(q
i
, , )
Este movimiento sacar a un smbolo de la pila.
Notacion 3 Es posible representar una secuencia de instrucciones en un
automata de pila
(q
0
,
0
,
0
) (q
1
,
1
,
1
) (q
k
,
k
,
k
)
donde cada movimiento es un movimiento de lectura, escritura o revisi on se
denotara de la siguiente forma:
(q
0
,
0
,
0
) = (q
k
,
k
,
k
)
Un automata de pila comienza su funcionamiento con el tope de la pi-
la y de la cinta de entrada en la primera posicion. La cadena que analiza
pasa a traves de una secuencia de movimientos, mientras la secuencia no sea
rechazada; si en alg un momento todos los smbolos de la cadena ya fueron
revisados, la pila se encuentra vaca, y la ultima posici on de la cinta de en-
trada corresponde a un estado nal; entonces concluimos que la cadena es
reconocida.
Denici on 29 Una conguracion inicial valida para un automata de pila es
una conguracion (q, , ) en donde q es un estado inicial del automata; y
la conguracion nal es (q
, , )
Donde q es el estado inicial, q
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 especique otra cosa;
y el estado nal es el 6.
En la gura a cada estado se le coloc o una etiqueta la cual esta relacionada
con el nombre de la instruccion del programa que ejecuta.
El lenguaje reconocido por el automata de pila es:
L
cm
= c
R
(a b)
a este lenguaje lo conocemos como el lenguaje del reejo con el centro mar-
cado o lenguaje de los palndromos con el centro marcado.
Observamos que en este lenguaje la letra c est a en el centro de la cadena
y su sujo es igual a la inversa de su prejo, 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 L
cm
es generado por la gramatica independiente del contexto:
G
cm
: S
S aSa
S bSb
S c
52 CAP
OMATAS DE PILA 53
Movimientos propios y aut omatas sin ciclos
En los automatas de pila existen varias subclases entre las que se encuen-
tran los aut omatas con buen comportamiento, los cuales sin perdida de gen-
eralidad reconocen los mismos lenguajes que toda la clase de los automatas
de pila; a esta subclase se le conoce como Automatas de pila propios y a con-
tinuaci on se presenta una justicaci on de la equivalencia entre esta subclase
y los aut omatas de pila.
Automatas de pila propios
Cuando se ejecuta el programa de un automata de pila se pueden producir
comportamientos que carecen de sentido y son improductivos, en particular:
1. Revisar m as all a del n de la cadena en la cinta de entrada.
2. Intentar leer un smbolo 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 smbolo en la pila, y que el siguiente movimiento sea la
lectura del mismo smbolo.
(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 innita de movimientos de escritura (un ciclo).
Los primeros tres tipos se analizar an en esta secci on, el ultimo tipo de
movimiento improductivo se analizara en la siguiente secci on.
Denici on 30 En el programa de un automata de pila M una instruccion
de escritura es impropia, si el siguiente estado al que apunta esta etiquetado
con una instruccion de lectura. Un automata se dice propio si no contiene
movimientos impropios.
54 CAP
, , )
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
modica del estado q al estado q
)
En caso de que el estado q sea el estado inicial en M entonces q
ser a el
estado inicial en M
).
Automatas de pila sin ciclos
El ultimo tipo de movimiento impropio se analizar a en esta seccion.
Denici on 31 Un automata 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
q
0
]write(u
0
, q
1
)
q
1
]write(u
1
, q
2
)
.
.
.
q
n
]write(u
n
, q
n
+ 1)
Suponga que se tiene un aut omata con un ciclo de instrucciones de escrit-
ura, estas imprimen los smbolos u
0
, u
1
, , u
n
de manera innita, as los
estados: q
0
, q
1
, , q
n
no pueden aparecer como una secuencia de movimientos
aceptados.
Proposion 3 Para alg un automata de pila determinstico M es posible cons-
truir un automata de pila M
).
3.7. Lenguajes no regulales
Los lenguajes no regulares o lenguajes independientes del contexto estan
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 continuacion.
Primero se estudiar a la intersecci on de los lenguajes independientes del
contexto L con el conjunto regular R.
Sea
M
f
= (Q
f
, T, P
f
, I
f
, F
f
)
un automata nito para R y
M
p
= (Q
p
, T, U, P
p
, I
p
, F
p
)
un automata de pila para L. Al realizar la intersecci on de estos dos automatas
obtenemos el aut omata de pila
M = (Q, T, U, P, I, F)
donde Q = Q
p
Q
f
, I = I
p
I
f
, F = F
p
F
f
El programa de M ser a el siguiente:
56 CAP
) p
s
q (q, p)]scan(s, (q
, p
))
q]write(u, q
) p Q
f
(q, p)]write(u, (q
, p))
q]read(u, q
) p Q
f
(q, p)]read(u, (q
, p
))
Cuadro 3.1: Programa de L(M
p
) L(M
f
)
Teorema 2 El automata M reconoce la secuencia de movimientos para
((q, p)., )
T
= ((q
, p
), , )
con (q, p) y (q
, p
) F si y solo si
(q, , )
T
= (q
, , )
esta en M
p
y
p
= p
esta en M
f
Puesto que el complemento de un conjunto regular es regular, y LR =
L R
c
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 gramaticas independientes del contexto.
Dadas dos gram aticas
G
1
= (T, N
1
, P
1
,
1
)
G
2
= (T, N
2
, P
2
,
2
)
dos gram aticas independientes del contexto con el mismo alfabeto terminal
T, pero con conjuntos no terminales disjuntos, N
1
N
2
= entonces la
gram atica para el lenguaje resultante de concatenar L = L(G
1
) L(G
2
) se
obtendr a usando nuevos smbolos terminales A
1
, A
2
en lugar de
1
,
2
y
a nadiendo la producci on
A
1
A
2
a la union de P
1
y P
2
, y para completar agregamos la producci on si
G
1
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
L
1
= {a
n
b
n
c
m
|m, n 0}
L
2
= {a
m
b
n
c
n
|m, n 0}
La intersecci on de L
1
y L
2
es
L
1
L
2
= {a
n
b
n
c
n
|n 0} = L
dm
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, podramos demostrar la cerradura bajo
intersecci on usando las leyes de De Morgan.
L
1
L
2
= (L
c
1
L
c
2
)
c
con lo cual el complemento no es independiente del contexto.
Para estudiar el traductor de estado nito de un lenguaje independiente
del contexto es util pensar en terminos de un automata de pila que genere
lenguajes independientes del contexto, un automata de pila generador (APG)
es un automata en el cual consideramos la cinta de entrada como cinta de
salida (impresion) y reemplazamos cada movimiento scan
q]scan(s, q
)
con un movimiento print
q]print(s, q
)
que escribe el smbolo s en la cinta de salida. Claramente el APG genera una
cadena (esto es, escribe en la cinta de salida) por la travesa
(q, , )
T
= (q
, , )
si y s olo si la maquina que representa un aut omata reconoce por la misma
secuencia de movimientos.
El automata generador
M
g
= (Q
g
, S, U, P
g
, I
g
, F
g
)
58 CAP
, p
), , )
con (q, p) I, (q
, p
) F si y s olo si M
g
genera alguna cadena por la
travesa
(q, , )
T
= (q
, , )
y es la traducci on de para M
p
/
= p
)
La cual nos coloca en el estado q
)
q
]read(u, q
)
donde q
1
L
1
R
son independientes del contexto, sin embargo
L
1
L
2
L
1
= T
L
1
no necesariamente son independientes del contexto.
Si M
g
tiene y M
t
tiene Entonces M tiene
q]write(u, q
) p Q
t
(q, p)]write(u, (q
, p))
q]read(u, q
) p Q
t
(q, p)]read(u, (q
, p))
q]print(s, q
) p]scan(s, p
) (q, p)]null(q
, p
)
q Q
g
p]print(r, p
))
Cuadro 3.2: Especicaci on del programa de un APG para la traduccion de
L(M
g
) por M
60 CAP
ITULO 4. M
AQUINAS DE TURING
Figura 4.1: Reduccion de un problema P1 a un problema P2
da de la gura que convierta los problemas P
1
en problemas P
2
que tengan la
misma respuesta. Esto es cualquier cadena del lenguaje P
1
se convertir a en
una cadena perteneciente a P
2
, y cualquier cadena construida sobre el alfa-
beto de P
1
que no este en el lenguaje P
1
se convertir a en una cadena que no
forme parte del lenguaje P
2
. Una vez que disponemos de este procedimiento
de construccion P
1
se puede resolver como sigue:
1. Dado un problema P
1
, esto es dado una cadena que no puede pertenecer
al lenguaje P
1
, se aplica el algoritmo de construccion para producir una
cadena x.
2. Se comprueba x est a en P
2
, y se aplica la misma respuesta a y P
1
.
Si esta en P
1
, entonces x esta en P
2
, asi que este algoritmo dice si; si
no esta en P
1
, entonces x no esta en P
2
, 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 P
1
, disponemos
de una demostracion por reduccion al absurdo de que no existe el algoritmo
hipotetico de decisi on, para P
2
o, lo que es lo mismo, de que P
2
es indecidible.
Puede realmente una computadora hacer todo esto? Al examinar
un programa podramos 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 producira un error de desbordamiento antes de que fuera
posible encontrar una posible soluci on. De hecho, se podra argumentar que
un computador con 128 megabytes de memoria principal de memoria prin-
cipal y 30 gigabytes de disco s olo tiene 256
3
0128000000 estados, y es, por
lo tanto, un automata nito. Sin embargo, no es productivo considerar que
los computadores se comporten como aut omatas nitos, como tampoco lo es
considerar que el cerebro lo hace (aunque la idea original del aut omata nito
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 P
2
es indecidible
mediante la reduccion de P
2
a alg un problema P
1
que se sabe que es inde-
cidible. Esto equivale a demostrar la proposicion si P
1
es decidible, entonces
4.1. DEFINICI
ON DE UNA M
AQUINA DE TURING 63
P
1
es decidible. Esa proposici on, aunque ciertamente es verdadera, no es util,
ya que su hip otesis, P
1
es decidible, es falsa. La unica manera de demostrar
que un problema nuevo P
2
es indecidible es reducir a P
2
un problema P
1
que se sabe es indecidible. De esta forma se demuestra la proposicion si P
2
es decidible, entonces P
1
es decidible. La conversion contradictoria de esta
proposici on es si P
1
es indecidible, podemos deducir que P
2
es indecidible.
Dado que sabemos que P
1
es indecible, podemos deducir que P
2
es indecidi-
ble.
4.1. Denicion de una Maquina de Turing
La teora de los problemas indecidibles no solo tiene por objeto estable-
cer la existencia de dichos problemas, sino proporcionar a los programadores
una gua sobre lo que se puede o no llevar a cabo mediante la programaci on.
Esta teora tambien 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 dicul-
tades que los problemas indecidibles. La razon 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 modicaciones de
los requisitos o a soluciones heursticas. 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 nales del siglo XIX, el matem atico David Hilbert se pregunto si
era posible encontrar un algoritmo para determinar la verdad o falsedad de
cualquier proposicion matem atica. En particular, se preguntaba si existira
un modo de determinar si cualquier f ormula del calculo 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 sucientemente potente como para
expresar frases como esta gramatica es ambigua, si Hilbert hubiera tenido exi-
to, existiran algoritmos para dichos problemas, que ahora sabemos que no
existen esta proposicion 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 computacion posible. Este modelo se parece mas a
una computadora que a un programa, aunque las verdaderas computadoras
electr onicas, o incluso los electromecanicas, 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 innito. Hay una cinta dividida
en cuadrados o casillas, y cada casilla puede contener un smbolo, tomado de
otro conjunto innito. Inicialmente, se sit ua en la cinta de entrada, que es
una cadena de smbolos de longitud innita, elegidos del alfabeto de entrada.
El resto de las casillas de la cinta, que se extiende innitamente hacia la
derecha y hacia la izquierda, contiene, inicialmente, un smbolo denominado
espacio en blanco. El espacio en blanco es un smbolo de cinta, pero no un
smbolo de entrada, y puede haber tambien otros smbolos de cinta ademas
de los smbolos 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 funcion del estado
de la unidad de control y del smbolo de la cinta al que se nala la cabeza. En
un movimiento, la maquina de Turing:
1. Cambiara de estado, el siguiente estado puede ser el mismo que el
actual.
2. Escribira un smbolo de cinta en la casilla se nalada por la cabeza. Este
smbolo de cinta sustituye al smbolo que estuviera anteriormente en la
casilla, el smbolo escrito puede ser el mismo que haba 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 limitacion no restringe lo que una
m aquina de Turing puede computar, dado que cualquier secuencia de
movimientos con la cabeza estacionaria podra condensarse, junto con
el movimiento siguiente de la cabeza, en un unico cambio de estado, un
nuevo smbolo de cinta y un movimiento hacia la izquierda o hacia la
derecha.
La notacion formal para una Maquina de Turing (MT) es similar a la utilizada
para los aut omatas nitos o para los aut omatas a pila.
4.2. CONSTRUCCI
ON MODULAR DE UNA MT 65
Denicion 32 Una Maquina de Turing MT es una sextupla M = (Q, , , , q
0
, B, F)
donde
Q El conjunto nito de estados de la unidad de control.
El conjunto nito de smbolos de entrada.
El conjunto completo de smbolos de la cinta; siempre es un subconjunto
de
La funcion de transicion. Los argumentos de (q, X) son un estado q y un
smbolo de la cinta X. el valor de (q, X), si esta es una tupla (p, Y, S)
donde
1. p es el estado siguiente de Q
2. Y es el smbolo de , que se escribe en la casilla se nalada por la
cabeza de la cinta y que sustituye al smbolo 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
q
0
Es el estado inicial.
B Es el smbolo del espacio en blanco B , y aparecera inicialmente
en todas las casillas de la cinta, menos en aquellas que contienen los
smbolos de entrada
F es el conjunto de estados nales o de aceptacion
4.2. Construcci on modular de una MT
Para describir formalmente lo que hace una maquina de Turing, es nece-
sario desarrollar una notaci on para describir sus conguraciones o descrip-
ciones instant aneas, parecida a la notaci on que desarrollo para los automatas
a pila.
En principio una m aquina de Turing dispone de una cinta de longitud in-
nita, por lo cual podra suponerse que no es posible describir especicamente
su conguracion. Sin embargo, despues de un n umero nito de movimientos,
la maquina de Turing solo habr a recorrido un n umero nito de casillas. Por
66 CAP
ITULO 4. M
AQUINAS DE TURING
tanto, para cualquier conguraci on existe un prejo y un sujo innito de
casillas que no se han recorrido nunca. El contenido de dichas casillas debe
ser
espacios en blanco o
smbolos del conjunto nito de smbolos de entrada.
por lo tanto, en una conguraci on solo se muestran las casillas que se
encuentren entre el smbolo m as a la izquierda y el smbolo m as a la derecha
de la cinta que no sean espacios en blanco, adem as, habra que incluir un
n umero nito de espacios en blanco en la conguraci on, si se da la condicion
especial de que la cabeza de la cinta se nale a uno de los espacios en blanco
situados antes o despues de la cadena de entrada.
Adem as de la representacion 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, situandolo 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 smbolo que forme parte del conjunto de smbolos de cinta.
Sin embargo, es sencillo cambiar los nombres de los estados de forma que no
tengan nada en com un con los smbolos 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 x
1
x
2
. . . x
i1
qx
i
x
i+1
. . . x
n
para representar una
conguraci 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 smbolo a partir de la izquierda.
3. x
1
x2 . . . x
n
es la porcion de la cinta que se encuentra entre los smbolos
no blancos situados m as a la izquierda y m as a la derecha. Como ex-
cepcion, si la cabeza se nala a alguna casilla a la izquierda del smbolo
no blanco que se encuentre mas a la izquierda, o a alguna casilla a la
derecha del smbolo no blanco que se encuentre m as a la derecha, en-
tonces algunos caracteres prejos o sujos de x
1
x
2
. . . x
n
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 maquina de Turing acepta el lenguaje {0
n
1
n
|n 1}.
Inicialmente, sobre la cinta se escribe una secuencia nita de ceros y unos,
precedida y seguida por un n umero nito de espacios en blanco. Alternativa-
mente, la maquina 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 maquina
de Turing repite los pasos que se describen a continuacion mas 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
. Es decir,
68 CAP
ITULO 4. M
AQUINAS DE TURING
habra algunos ceros que ya han sido sustituidos por X, seguidos de algunos
ceros que todava no han sido sustituidos. Luego, se encontraran algunos unos
ya reemplazados por Y , seguidos de unos que aun no han sido reemplazados.
A continuacion, puede que haya algunos ceros o unos. El estado q
0
es el es-
tado inicial, y M entra de nuevo en q
0
cada vez que vuelve a se nalar al 0 que
quede mas a la izquierda. Si M se encuentra en el estado q
0
y la cabeza se nala
a un 0, la regla del extremo superior izquierdo de la gura anterior indica que
M debe pasar por el estado q
1
, reemplazar el 0 por una X, y moverse hacia
la derecha. Una vez en el estado q
1
, M sigue moviendose hacia la derecha,
pasando por encima de todos los ceros y todas las Y que encuentre, mientras
permanece en el estado q
1
. Si M encuentra una X o una B, deja de oper-
ar. Sin embargo, si M encuentra un 1 cuando esta en el estado q
1
, sustituye
dicho 1 por una Y , pasa al estado q
2
, y comienza a moverse hacia la izquierda.
En el estado q
2
, M se mueve hacia la izquierda, pasando por encima de
los ceros y las Y que encuentre, mientras permanece en el estado q
2
. Cuando
M alcanza la X que se encuentra mas 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 q
0
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 , signica que ya ha cambiado todos los ceros
por X. Si haba cambiado todos los unos por Y , entonces la entrada
era de la forma 0
n
1
n
, y M aceptara. Por tanto, M pasa al estado q
3
y
comienza a moverse hacia la derecha, pasando por encima de las Y . Si
el primer smbolo distinto de una Y que encuentra M es un espacio en
blanco, entonces efectivamente haba en la entrada el mismo n umero
de ceros que de unos, de forma que M pasa al estado q
4
y acepta. Por
otra parte, si M encontrara un 1, signicara que hay demasiados unos,
as que M dejara de operar sin aceptar. Si encontrara un 0, signicara
que la entrada era incorrecta, y M tambien se detendra.
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 q
0
, y se nalando al primer 0, con lo cual la conguraci on inicial
es q
0
0011, presntamos a continuaci on la secuencia completa de movimientos
4.2. CONSTRUCCI
ON MODULAR DE UNA MT 69
de M es:
q
0
001 Xq
1
011 X0q
1
11 Xq
2
0Y 1 q
2
X0Y 1 Xq
0
0Y 1
XXq
1
Y 1 XXq
1
1 XXq
2
Y Y Xq
2
XY Y XXq
0
Y Y
XXY q
3
Y XXY Y q
3
B XXY Y Bq
4
B
Aqui se presenta otro ejemplo, en el que se examina que hace M con la
entrada 0010, la cual es una cadena que no pertence al lenguaje aceptado
por la m aquina.
q
0
0011 Xq
1
010 X0q
1
10 Xq
2
0Y 0 q
2
X0Y 0
Xq
o
0Y 0 XXq
1
Y 0 XXY q
1
0 XXY q
1
B
El comportamiento de M con 0010 recuerda su comportamiento con 0011,
hasta que alcanza la conguracion XXY 0q
1
B. Sin embargo, en el estado q
1
,
M no puede realizar ning un movimiento si el smbolo de la entrada al que
se nala es B. Por tanto, M deja de operar sin aceptar esta entrada.
La simbologa que se usa normalmente en las maquinas de Turing es
similar a la utilizada en otros tipos de aut omatas.
Las letras min usculas iniciales del alfabeto se utilizan para los smbolos de
entrada.
Las letras may usculas, normalmente las de la zona nal del alfabeto, se
utiliza como smbolos de la cinta que pueden o no formar parte del
conjunto de smbolos de entrada. Sin embargo, generalmente se usa B
para representar el smbolo correspondiente al espacio en blanco.
Las letras min usculas del nal del alfabeto se utilizan para designar cadenas
formadas por smbolos de entrada.
Las letras griegas representan cadenas de smbolos 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 Maquina 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 smbolo de entrada que se encuentra m as a la
izquierda; si la m aquina de Turing llega a un estado de aceptaci on al nal 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, , , , q
0
, B, F),
el lenguaje L(M) es el conjunto de cadenas de
tales que q
0
p
para alg un estado p del conjunto de estado nales 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 metodo para la aceptaci on de una cadena,
existe otro que comunmente se le conoce con el nombre de aceptacion por
parada. Se dice que una maquina de Turing se para si alcanza un estado
q cuando se nala a un smbolo de la cinta X, sin que se produzca ning un
movimiento en dicha situaci on; es decir (q, X) no esta denida. 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 denir siempre que q sea un estado de aceptacion. En general a
menos que se especique 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 maquinas de Turing que
siempre se paran, acepten o no, se les conoce con el nombre de recursivos.
Las maquinas 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 Maquina 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. Maquina de Turing con varias cintas
este dispositivo dispone de una unidad de control (estado) y un n umero
nito de cintas. Cada cinta se divide en casillas y cada casilla puede contener
cualquier smbolo del alfabeto nito de la cinta, ademas de contener al espacio
en blanco. Un subconjunto de la cinta que no incluye al blanco, es el conjunto
de los smbolos 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 esta 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 smbolo ledo 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 smbolo 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 maquina con varias cintas si es permitido.
72 CAP
ITULO 4. M
AQUINAS DE TURING
4.4.2. Maquinas con pilas multiples
Este modelo esta basado en la generalizacion de los automatas 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 denicion) no es posible. Como consecuencia de esta generalizaci on,
surgen las maquinas contadoras, las cuales solo se limitan a almacenar un
n umero nito de enteros y a realizar movimientos diferentes dependiendo de
si alguno de sus contadores esta en cero.
Figura 4.2: Esquema de una maquina 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 nito de estados posibles, y un alfabeto
de pila nito que utiliza para todas sus pilas, cada movimiento se basa en
1. El estado de su unidad de control.
2. El smbolo de entrada ledo, que ha de formar parte del alfabeto nito
de los smbolos de entrada, no permitiendo transiciones sin valor ()
3. El smbolo en el tope de cada una de sus pilas.
En cada movimiento la m aquina puede
Pasar a un nuevo estado.
Sustituir el smbolo en el tope de cada una de sus pilas por una cadena
formada por cero o m as smbolos de pila. La cadena que se introduce
en cada pila puede ser diferente para cada una de ellas. La maquina con
pilas multiples acepta una o varias cadenas si llega a un estado nal.
Teorema 4 Si un lenguaje L es aceptado por una maquina de Turing, en-
tonces L es aceptado por una maquina con dos pilas.
4.4.3. Maquinas contadoras
Una maquina contadora puede verse de dos formas
4.4. VARIANTES DE UNA M
AQUINA DE TURING 73
1. La maquina contadora tiene la misma estructura que la maquina 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 esta a cero o no. Es decir, cada movimiento de
la m aquina contadora depende de su estado, de su smbolo de entrada,
y de cuales de sus contadores est an en cero, suponiendo que alguno lo
este. 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 smbolos de pila, a los que lamaremos Z
0
(el marcador
de fondo de la pila) y X.
b) En cada pila se encuentra inicialmente Z
0
.
c) Z
0
s olo puede sustituirse por una cadena de la forma X
i
Z
0
, para
alg un i 0.
d) X s olo puede sustituirse por X
i
para alg un i 0. Es decir, Z
0
unicamente aparece en el fondo de cada pila, y todos los dem as
smbolos 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 maquina contadora es re-
cursivamente enumerable. Esto ocurre porque una maquina contadora es un
caso especial de maquina con pilas, y una maquina con pilas es un caso es-
pecial de maquina 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 maquina con un contador
es independiente del contexto. Una maquina contadora por la denicion 2,
es una pila, as que una maquina con un contador es un caso especial de
maquina con una sola pila o, lo que es lo mismo, un automata a pila. De
hecho, todos los lenguajes aceptados por las maquinas con un contador son
aceptados por automatas a pila.
El resultado mas sorprendente acerca de las maquinas contadoras es que
dos contadores son sucientes 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
maquina con tres contadores.
Teorema 6 Todo lenguaje recursivamente enumerable es aceptado por una
maquina con dos contadores.
Actividad 9 Investigar las caracteristicas y funcionamiento de las sigu-
ientes variantes de maquina de Turing
1. Maquinas de Turing Deterministas
2. Maquinas de turing no deterministas
3. Maquinas de turing con cintas semiinnitas
Captulo 5
Decibilidad
Objetivo de la unidad: Comprender las caracteristicas de los lenguajes
decidibles
Diremos que un problema de decision 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 simplicar 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 eciencia. En este capitulo trataremos alguno de los problemas que
motivaron 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 eciente 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 decision 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 ecuacion 3x + 6y = 151? no es un
problema de decision.
Hay enteros x, y tales que se cumple la ecuaci on ax + by = c? si es un
problema de decision (aqu
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 maquina 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 despues de iniciar su computo?
(esta cuesti on se menciono en la secci on de lenguaje de una maquina
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 maquina de Turing logra un estado nal
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 gramaticas 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 nitos.
En terminos 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 maquina de Turing. De manera complemen-
taria, las cadenas no decidibles por la maquina de Turing corresponden a
procedimientos que no terminan utilizando una m aquina de Turing. con lo
anterior podemos dar la denicion de algoritmo
Denici on 33 Un algoritmo es una implementacion de una maquina 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 maquina
de Turing logra un estado de parada para cada entrada, la maquina corre-
5.2. EL PROBLEMA DE HALTING 77
sponde a la implementacion de un algoritmo. Esta es la Tesis de Church -
Turing. No es un teorema pues no se puede demostrar matematicamente, de
manera general y categ orica. Es solo la armaci on de que el concepto informal
del algoritmo corresponde a un objeto matem atico. Al ser s olo una armacion
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 nitos, mientras que aquellos a los cuales no les podemos asignar un
algoritmo son innitos (en terminos de la cantidad de problemas).
5.2. El problema de Halting
El problema de Halting o tambien conocido como el problema de la parada
(se menciono en la seccion anterior) , es equivalente a construir un programa
que decida si un algoritmo naliza alguna vez o no. Respecto a este problema
Turing prov o que no es posible construir una maquina de Turing que decida
si otra maquina 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
nal.
El problema se desarrolla suponiendo que dada una maquina de turing
MT
1
existe una cadena de smbolos
1
, que nos informa si otra m aquina de
turing M
2
con programa P
2
y datos iniciales D
2
se detendra proporcionando
una salida
1
= P
1
[P
2
, D2]. Suponga que aplicamos el programa P
1
, que
determina el comportamiento de MT
1
, que determina el comportamiento so-
bre el mismo programa, pero tomando como datos los propios P
1
[P
1
, D
1
],
entonces para que MT
1
pueda informar si MT
2
, para o no debe existir un
programa P
1
que para cuando un programa anterior P
1
(recuerde que se esta
trabajando sobre MT
1
) que pare cuando un segundo programa P
1
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 teoras logicas
Una teora l ogica TL se dene 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
derivacion se ineren los teoremas de la teora. El conjunto de teoremas de la
teora forma un lenguaje formal.Si es posible denir una m aquina de Turing
tal que reconozca al lenguaje de los teoremas, este lenguaje es decidible y
la teora tambien lo es consecuencia. Dicho en otras palabras, si el conjun-
to de teoremas visto como un lenguaje es reconocido por una maquina de
Turing, entonces la TL es decidible, y viceversa. Puede hablarse entonces de
manera indistinta de teoras 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 teora l ogica (lenguaje formal)
y reconocimiento simb olico del mismo por parte de un automata queda es-
tablecida.
Ejemplo 25 Muestre que la coleccion de lenguajes decidibles por maquina
de Turing para un alfabeto cualquiera es innita, pero contable. Solucion
El cinjunto de lenguajes independientes de contexto es innito.
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 innita por
que contiene a los lenguajes independientes de contexto, que son innitos.
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 teora 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 logicos es una cuesti on fundamental. Es bastante
f acil ver que el calculo proposicional no era decidible. Por otro lado, para
cada una de las distintas teoras 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 signicativo en relacion con esta cuesti on el dado por el siguiente teorema
Teorema 7 Primer teorema de Recursion: Todo operador entre fun-
ciones calculables que sea recursivo (esto es que se dena la imagen de f
mediante una funcion calculable en terminos de una parte nita de f), tiene
una funcion parcial computable que es el menos punto jo, es decir, esa fun-
cion es un punto jo y cualquier otro punto jo del operador es una extension
de esa funcion.
Este teorema recibe su nombre porque podemos denir 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 funcion que satisface esta ecuaci on. Como
en matem aticas se requiere que la funci on sea univoca, se dice que dicha
ecuaci on dene el menor punto jo 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 denicion por recursion.
A menudo se utiliza la tecnica 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 solucion con el
algoritmo de transformaci on obtendramos 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 solucion para el primer problema. Esta tecnica es muy util y se utiliza
a menudo. Por otro lado, esta misma tecnica es muy empleada en el campo
de la complejidad algortmica. 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 reduccion se realiza en la correspondiente clase de
complejidad.
80 CAP
ITULO 5. DECIBILIDAD
Captulo 6
Reducibilidad
Objetivo de la unidad: Aplicar la reducibilidad a los lenguajes estudi-
ados medisnte maquinas de Turing
6.1. Problemas insolubles para la teora 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 mas o menos eciencia; 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
polinomico en una maquina de Turing.
Existe una lnea divisoria fundamental entre los problemas que se pueden
resolver en tiempo polinomico y los que requieren de un tiempo expo-
nencial o mayor. Los problemas practicos que requieren de un tiempo
polinomico 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 teora de la intratabilidad se reere al conjunto de tecnicas que se
pueden utilizar para mostrar que un problema no se puede resolver en tiem-
po polinomico; la teora 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 expresion booleana, es decir que
la expresi on reuslte verdadera para alguna asignacion de los valores de ver-
dad verdadero y falso a sus variables, este problema no se puede decidir en
tiempo polinomico, y adem as se puede reducir a muchos otros y con esto se
prueba que las reducciones tambien 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, ademas dicho algoritmo debera eje-
cutarse a lo mas en tiempo polinomico, 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
Denici on 34 Un problema A es reducible a otro B si un metodo para
resolver B proporciona un metodo para resolver A. Cada problema puede
representarse a traves de una codicacion como un conjunto de n umeros.
As, es posible estudiar la reducibilidad como una relacion entre conjuntos de
n umeros, bajo el siguiente principio Un conjunto A es reducible al conjunto
B si un metodo para decidir si algo pertenece a B, proporciona un metodo
para decidir que algo pertenece al conjunto A.
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 facl 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 version si no de un problema
sea difcil implica que tambien lo sera la version 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 extrados de cierto alfabeto.
Como consecuencia los problemas que tienen que ver con nodos y arcos
deberan ser codicados de alguna manera, con lo cual las maquinas de
Turing seran mas largas que lo que se habia pensado al inicio; aunque
esto no es signicativo 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 funcion de una medida, tambien 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(n
2
) 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 despues 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. Despues 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 estadenici 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 Dena que es un problema NP
c
ompleto 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 n con la salida de la funci on en la cinta.
Denici on 37 Una funcion f : E
ITULO 6. REDUCIBILIDAD
Bibliografa
[1] Denning, Dennis, Qualitz, Machines, languages and computa-
tion. Editorial Prentice Hall 1978.
[2] John E. Hopcroft y Jerey D. Ullman, Introduccion a la teora
de automatas, lenguajes y computacion.Editorial CECSA 1979.
[3] Howie, John M. Automata and languages. Editorial Oxford sci-
ence publications, 1991.
[4] Dean, Kelley. Teora de automatas y lenguajes formales. Edi-
torial Prentice Hall, 1998.
89