Вы находитесь на странице: 1из 89

Cuadernillo de apuntes Teora de la

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

Actividad 5 1. Buscar 5 ejemplos de relaciones binarias que son fun-


ciones y 5 ejemplos de relaciones binarias que no lo sean y explicar
cual de las dos condiciones de la denicion no se cumplen y porque.
2. Investigar que es una funcion inyectiva (o uno a uno), suprayectiva (o
sobre) y biyectiva.
La razon por la cual no nos adentramos mucho mas en el estudio de las
funciones es porque las hemos empleado en los cursos de matem aticas que se
imparten a lo largo del tronco com un en el tecnol ogico.
1.2.3. Induccion matematica
En computacion, a veces es necesario que los programas se prueben de
manera formal, y sin perder de vista su objetivo. La materia de teora de la
computaci on se caracteriza por ser una materia con un enfoque conceptual,
donde todos los resultados que se presentan se fundamentan en demostra-
ciones formales, empleando principalmente el metodo inductivo, esto debido
18 CAP

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 = || +| | = || +||

Actividad 7 Investigar las propiedades de asociatividad e identico entre


concatenacion de cadenas
Denici on 10 Si es un alfabeto podemos expresar el conjunto de todas las
cadenas del alfabeto empleando la siguiente notacion
k
que es el conjunto de
todas las cadenas de longitud k, tales que todos los smbolos que las conforman
pertenecen a el alfabeto
Ejemplo 9 si = {0, 1} entonces:

0
=

1
= {0, 1}

2
= {00, 01, 10, 11}

3
= {000, 001, 010, 011, 100, 101 110, 111}
y as sucesivamente.
Es importante hacer enf asis en el hecho de que y
1
no son lo mismo, el
primero representa el conjunto formado por los 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

ITULO 2. LENGUAJES REGULARES


que se introduzca cierto importe para poder despachar alg un producto, primero
requieren de seleccionar el producto posteriormente se necesita insertar la
cantidad de dinero necesario dependendiendo de la seleccion realizada, la
maquina debera contabilizarlo para guardar en un estado la cantidad de dinero
que fue introducido y en caso de que sea necesario dar cambio y que este sea
devuelto correctamente, en este caso la entrada de nuestro automata es no
tener dinero acumulado ni opcion seleccionada, despues se siguen una se-
cuencia de movimientos que nos llevan a obtener nuestro producto naluna
vez que se ha completado la cantidad que cuesta el producto (este ejemplo se
analizara con mas detalle en el transcurso del capitulo)
En muchas otras m aquinas se emplean los aut omatas, as que necesitamos
estudiar ?Que es? y todas sus caractersticas.
Actividad 8 Investigue dos ejemplos donde sea posible modelar un compor-
tamiento mediante automatas.
2.1.1. Automatas nitos deterministicos AFD
Para comenzar mencionares que el aut omata nito deterministico es aquel
que siempre est a en un s olo estado despues de leer cualquier secuencia de
entradas; la palabra determinista nos dice que para cada entrada existe un
unico estado al que el automata puede llegar partiendo del estado actual;
comencemos dando la denici on formal
Denici on 12 Un Aut omata Finito Determinstico (AFD) es una quintu-
pla: M = (Q, , q
0
, f, F), donde
Q Es un conjunto nito no vaco (los elementos de Q son llamados estados)
es un conjunto de smbolos de entrada al que llamaremos alfabeto.
q
I
Q, es un estado al que llamaremos estado inicial.
f Es una funcion Q Q que se llama funci on de transicion; esta recibe
como argumentos un estado y una entrada y devuelve un estado.
q
F
Q es un conjunto de estados a los cuales llamaremos estados nales o
de aceptacion.
2.1. AUT

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

ITULO 2. LENGUAJES REGULARES


Denici on 13 Sea M = (Q, , q
0
, f, F) un AFD denimos la iteraci on de
f sobre

as:
f

: Q Q
q Q : f

(q, ) := q
q Q , y

: f

(q, ) := f

(f (q, ) , )
Algo que es importante en la 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

un camino que empieza en


q
0
, inducido por =
1

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

que son reconocidas por M


L(M) = {

| 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

tal que L(M) = L(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

ITULO 2. LENGUAJES REGULARES


Podemos construir un AFD M

= (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

ITULO 2. LENGUAJES REGULARES


5. Si , son palabras queremos probar que
R

R
= ()
R
Base: si =
()
R
= ()
R
=
R
=
R
=
R

R
=
R

R
Hip otesis de inducci on: Sea

con || = n, n 1 entonces
()
R
= {
R
| } = {
R
| = a b, a , b } =
R

R
Ahora para ,

(() )
R
= ( ())
R
= ()
R

por la hip otesis de inducci on


()
R
=
R

R
=
R
()
R
que es una expresi on regular.
6. (

)
R
=
_

R
_

base (
0
)
R
=
n
= =
_

R
_
0
hip otesis de inducci on (

)
R
=
_

R
_

Para n + 1
_

n+1
_
R
= (
n
)
R
=
R
(
n
)
R
=
R
_

R
_
n
=
_

R
_
n+1
ahora
(

)
R
=
_

_
n=0

n
_
R
=

_
n=0
(
n
)
R
=

_
n=0
_

R
_
n
= (
n
)

que es una expresi on regular.


Por lo tanto, la inversion de una expresi on regular es una expresion regular.

2.2. EXPRESIONES REGULARES 33


Probablemente la denicion anterior nos haga pensar que las expresiones
regualres no son tan comprensibles, pero quiza el siguiente ejemplo permita
que se pueda cambiar de opinion
Ejemplo 14
01

+ 10

denota el lenguaje de todas las cadenas que comienzan con cero y estan
seguidas por cualquier cantidad de unos o comienzan con uno y estan seguidas
de cualquier cantidad de ceros.
Cerradura de Kleene
La Cerradura o clausura o estrella de Kleene de un lenguaje se denota por
L

y representa el conjunto de las cadenas que se pueden formar tomando


cualquier n umero de cadenas de L, por ejemplo si L = {0, 11}, L

consta de
aquellas cadenas de ceros y unos en las que los unos se encuentran en pares,
como 001, 11110; sin embargo cadenas como 101 y 01011 no estan dentro de
la cerradura.
Ejemplo 15 Si L = {a, bb} entonces
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

ITULO 2. LENGUAJES REGULARES


Ejemplo 16 Sea E el conjunto formado por todas las cadenas que tienen
cero o mas repeticiones de la cadena 01 alternados. Primero se desarrolla
una expresion regular para el lenguaje formado por la cadena unica 01, pos-
teriormente con ayuda del operador , podermos obtener una expresion para
todas las cadenas de la forma 010101010 . . . 0101010
Lo primero que se debe contemplar es que por la denicion de expresion reg-
ular 0 y 1 son expresiones regulares, y representan los lenguajes {0} y {1},
por el inciso 5 de la denicion la concatenacion de expresiones regulares es
una expresion regular, por lo cual 01 es una expresion regular que generael
lenguaje {01}. Para obtener todas las cadenas que constan de ceros y unos
usamos 6 de la denicion y obtenemos la expresion regular (01)

. Sin em-
bargo el lenguaje asociado a (01)

solo reconoce cadenas que empiecen con


cero y terminan en uno, pero que pasa con las cadenas que comienzan en
uno y terminen con cero o con uno, para contemplar todas las posiblilidades
sera necesario construir tres expresiones regulares mas
(10)

0(10)

1(01)

y la expresion regular completa sera


(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

se dice regular si existe un AFD M tal


que L(M) = A
Observaci on 5 Sea M un automata nito, entonces existe una expresion
regular r para la cual L(r) = L(M)
Observaci on 6 Un lenguaje es regular si y solo si es aceptado por un automa-
ta nito
Es importante recordar que los lenguajes son conjuntos, con lo cual se
les pueden aplicar las operaciones asociadas a los conjuntos y describir medi-
ante las mismas algunas propiedades que nos ayuden a construirlos y enten-
derlos de manera mas sencilla; a continuacion mencionamos algunas de las
propiedades de los lenguajes regulares
1. La uni on de dos lenguajes regulares es regular.
2. La intersecci on de dos lenguajes regulares es regular.
3. El complemento de un lenguaje regular es regular.
4. La diferencia de dos lenguajes regulares es regular.
5. La reexi on de un lenguaje regular es regular.
36 CAP

ITULO 2. LENGUAJES REGULARES


6. La cerradura de Kleen de un lenguaje regular es regular.
7. La concatenaci on de dos lenguajes regulares es regular.
Captulo 3
Lenguajes libres de contexto
Objetivo de la unidad: Conocer el concepto de lenguaje independiente
del contexto, cuales son las caracteristicas que posee y sus aplicaciones
Las Gramaticas independientes del contexto o libres de contexto juegan un
papel muy importante en la tecnologia de las computadoras desde la decada
de 1960, ya que optimizaron e hicieron m as barata la tarea de implementar
el analizador sint actico de los compiladores; posteriormente nos permitieron
describir formatos de documentos mediante la denicion del tipo de docu-
mentos en la red.
3.1. Gramaticas libres de contexto
El lenguaje es el medio de comunicaci on entre los seres humanos a traves
de signos orales y escritos que poseen un signicado. Para que exista el lengua-
je se requieren ciertos factores como la sintaxis, que da estructura al lenguaje
y la sem antica, que le da signicado al lenguaje. Adem as de manera conjun-
ta con los lenguajes tenemos la gramatica que estudia los elementos de un
lenguaje y sus combinaciones. As como es importante podernos comunicar
con otras personas, actualmente tambien es importante podernos comunicar
con las computadoras; es decir establecer un lenguaje y una gramatica para
facilitar el uso de las mismas. Introduciremos de manera natural el concepto
de gramatica mediante una analoga con el lenguaje espa nol y su gram atica.
37
38 CAP

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


Ejemplo 17 Suponga que tenemos la siguiente frase:
La gata gris duerme en la cama diariamente
Observamos que la frase se divide en dos partes esenciales sujeto y predicado;
el sujeto a su vez se divide en artculo, sustantivo y adjetivo; y el predicado se
divide en verbo, preposici on, artculo y advervio. Nosotros podemos decir que
existe una variable llamada < frase > que genera 2 variables < sujeto > y
< predicado > es decir:
< frase >< sujeto >< predicado >
(sustituimos la palabra produce por la echa) a su vez las variables
< sujeto >< articulo >< sustantivo >< adjetivo >
< predicado >< verbo >< preposicion >< articulo >< advervio >
por ultimo las variables
< articulo > la | el
< sustantivo > gata | cama
< adjetivo > gris
< verbo > duerme
< preposicion > en
< advervio > diariamente
a las variables la, el, gata, cama, gris, duerme, en, diariamente las llamamos
smbolos terminales, mientras que a las variables escritas entre < > las
conocemos como smbolos no terminales; el proceso que sustituye unas vari-
ables por otras se le conoce como producci on y a la variables < frase > se
le conoce como smbolo inicial.
De manera formal tenemos
Denici on 22 Una Gram atica es una cuadrupla G = (N, T, P, S) donde
N es un alfabeto a cuyos smbolos llamamos no terminales.
T es un alfabeto a cuyos smbolos llamamos terminales.
3.1. GRAM

ATICAS LIBRES DE CONTEXTO 39


P es un subconjunto nito de (N\T)

y a los elementos (u, v)de


P los conocemos como producciones de G.
S es el smbolo inicial.
En el parrafo previo a la denicion se describe cuales son los conjuntos
N, y T as como cual es el elemento S y las producciones correspondientes
al ejemplo (2).
Notacion 2 A los smbolos no terminales se les representa mediante letras
may usculas, mientras que los smbolos terminales seran representados medi-
ante letras min usculas.
Denicion 23 Para ,

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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


Denicion 25 Una gramatica es regular si cada produccion P es de la forma
x con (x T

, , 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)

Ejemplo 18 Sea G = (N, T, P, S) donde T = {a, b} N \ T = {S, B} y P


consiste de las producciones
S aSb |
entonces L(G) = {a
n
b
n
|n 1} que es un lenguaje independiente del contexto.
Ejemplo 19 Sea G = (N, T, P, S) con T = {a, b}, N \ T = {S} y P tenga
las producciones
S aSa | bSb | a | b |
Tenemos que L(G) =
_
T

| =
R
_
que es el lenguaje de los 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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


Figura 3.1:

Arbol de derivacion
3.2.

ARBOLES DE DERIVACI

ON 43
Podemos extender el ordenamiento desde la izquierda de los hijos para
producir un ordenamiento de izquierda a derecha de todas las hojas.
Un arbol de derivaci on es una 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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


Ahora empleando la gramatica anterior construyamos un arbol de derivacion
para la instruccion:
if x = y then x else x +y
trazaremos los pasos de la produccion de la frase anterior
S if B then A else S
if A = A then A else S
if T = A then A else S
if x = A then A else S
if x = T then A else S
if x = y then A else S
if x = y then T else S
if x = y then z else S
if x = y then z else A
if x = y then z else T +A
if x = y then z else x +A
if x = y then z else x +T
if x = y then z else x +y
Cada cadena en los pasos de derivacion comienza con el smbolo S; pero
observamos que para la producci on
E A
E if x = y then x else x +y
tenemos dos candidatos, y sera necesario elegir que produccion usar alternan-
do con las diferentes posibilidades. Hasta agotar todas y llegar a la secuencia
de movimientos que acepten la cadena correcta (esto es importante pues es
posible obtener frases como la siguiente: if x = y then x = y else x = y, que
3.3. FORMAS NORMALES DE COMSKY 45
es diferente a la frase que se va a revisar). A dicho metodo se le conoce con el
nombre de arriba a abajo
1
porque la derivaci on comienza a construirse desde
el nodo raz al tope del arbol bajando a traves de los niveles. Al proceso
inverso se le conoce como de abajo a arriba
2
.
3.3. Formas normales de Comsky
Una gramatica formal est a en Forma normal de Chomsky si todas sus
reglas de producci on son de alguna de las sigientes formas:
A BC
o
A
donde A, B y C son elementos del conjunto de smbolos no terminales y es
un smbolo terminal.Adem as es importante mencionar que todo lenguaje de
programaci on que no posee a la cadena vaca, se puede expresar por medio
de una gram atica en la forma normal de Chomsky, y dada una gram atica
independiente del contexto es posible construir a partir de ella una gram atica
de Chomsky que reconozca el mismo lenguaje, para lo cual necesitaremos
realizar ciertos pasos:
1. Hay que eliminar los smbolos inutiles: las variables o smbolos termi-
nales que no aparecen en ninguna derivacion de una cadena terminal
que parta del smbolo inicial.
2. Hay que eliminar las producciones con la forma A para alguna
variable A.
3. Hay que eliminar las producciones unitarias de la forma A B para
las variables A y B.
3.4. Forma normal de Greibach
Existe otra forma normal interesante para los lenguajes independientes
del contexto no vacos y sin la palabra vaca. Se dice que una gram atica
1
en ingles top-down
2
en ingles buttom-up
46 CAP

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


independiente del contexto est a en Forma normal de Greibach, si todas y
cada una de sus reglas de producci on tienen un consecuente que empieza
por un smbolo terminal. Formalmente, cualquiera de las reglas tendra la
estructura:
A
aqui ser a un smbolo terminal y una cadena de cero o m as terminales
Existe un teorema que prueba que cualquier GIC, cuyo lenguaje no con-
tiene a la palabra vaca, si no lo est a ya, se puede transformar en otra equiv-
alente que s este en forma normal de Greibach.
3.5. Ambig uedad
En secciones anteriores, se menciono que una palabra derivada de una
gram atica puede ser representada mediante un arbol de derivaci on, pero
en muchas ocaciones el arbol de derivacion asociado a la palabra no es
unico, existen dos o mas derivaciones, esto nos genera una estructura que
llamamos Gramatica ambigua. Sea G = {{E, I} , T, P, E} donde T =
{+, , (, ), a, b, 0, 1} con producciones
(1) E I
(2) E E +E
(3) E E E
(4) E (E)
(5) I a
(6) I b
(7) I Ia
(8) I Ib
(9) I I0
(10) I I1
Esta gram atica nos permite generar expresiones con cualquier secuencia de
operadores y + y las producciones dos y tres en el orden que nosotros
deseemos.
3.6. AUT

OMATAS DE PILA 47
Ejemplo 22 Observe que la cadena E+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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


como Automata de Pila. Debido a esta similitud con las gram aticas indepen-
dientes del contexto necesitaremos emplear dos estructuras que son funda-
mentales en la denici on y uso de los aut omatas de pila.
La primera es la cinta de entrada que es un arreglo en donde ser a guarda-
da la cadena de smbolos terminales que acepta el aut omata, se guardara un
smbolo por casilla del arreglo y se tendr a una marca en la siguiente casilla
del ultimo smbolo escrito en la cinta; la segunda es una pila, en la cual es-
cribiremos los smbolos pertenecientes al alfabeto de la pila, para que estos
a su vez puedan ser sustituidos o revisados por los smbolos terminales en
la cinta de entrada. En la pila el smbolo que se encuentre mas a la derecha
ser a el tope de la pila.
En los automatas de pila se producen dos tipos de movimientos: el primero
introduce o saca un smbolo de la pila, y dependiendo de cual sea la acci on
realizada el tope de la pila avanzara o retroceder a un lugar. El segundo
movimiento no afecta directamente el tope de la pila, pero revisa un smbolo
de la cinta de entrada.
Es posible denir un lenguaje para los automatas de pila para lo cual exis-
ten dos maneras; la primera consiste en denir el lenguaje aceptado como el
conjunto de todas las entradas para las cuales una sucesion de movimientos
provoca que el automata de pila vace su pila. La segunda manera consiste en
designar algunos estados como estados nales y denimos el lenguaje acepta-
do como el conjunto de todas las entradas para las cuales alguna selecci on de
movimientos provoca que el automata alcance un estado nal. Ambas formas
son equivalentes en el sentido de que si un conjunto es aceptado mediante
el vaciado de la pila por alg un aut omata, puede ser aceptado mediante el
acceso de un estado nal por otro automata y viceversa.
Denici on 27 Un Aut omata de Pila (AP) se dene como una sextupla
M = (Q, S, U, P, I, F)
donde:
Q es un conjunto nito de estados
S es un alfabeto al que llamaremos alfabeto de entrada.
3.6. AUT

OMATAS DE PILA 49
U es un alfabeto al que llamaremos alfabeto de pila .
P es el programa de M
I Q es el conjunto de estado iniciales
F Q es el conjunto de estados 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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


La cual aplicada en la conguraci on (q
i
, ,

u) mueve el tope de la pila


a la izquierda y entra en el estado q

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 un estado nal, la cadena


escrita en la cinta de entrada, de donde decimos que una cadena es aceptada
por el automata solo si M tiene la secuencia de movimientos:
(q, , ) = (q

, , )
Donde q es el estado inicial, q

es un estado nal; el conjunto de cadenas


aceptadas sera el lenguaje reconocido por el automata.
Ejemplo 23 Sea M
cm
un automata de pila con S = {a, b, c} y U = {a, b} el
alfabeto de la pila, el programa del automata sera el siguiente:
3.6. AUT

OMATAS DE PILA 51
1]scan (a,2)(b,3)(c,4)
2]write(a,1)
3]write(b,1)
4]scan (a,5)(b,6)
5]read (a,4)
6]read (b,4)
Donde el estado 1 es el estado inicial a menos que se 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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


Figura 3.2: AP para el lenguaje del palndromo con el centro marcado
3.6. AUT

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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


Las instrucciones impropias pueden ser eliminadas sin que esto altere el
lenguaje reconocido por el aut omata, es decir, dado un aut omata M es posi-
ble construir un automata propio M

, a nadiendo y borrando instrucciones de


la siguiente forma:
Paso 1: Sean q y q

dos estados para los cuales el aut omata tiene la secuencia


de movimientos
(q, , )
k mov write
= (q

, , )
k mov read
= (q

, , )
tenemos k movimientos de escritura seguidos del mismo n umero de mo-
vimientos de lectura, en otras palabras, el contenido de la pila no se
modica del estado q al estado q

y ademas no se revisa ning un smbolo


en la cinta de entrada.
Siempre que
p ] mov (, q)
con mov un movimiento permitido por el programa del aut omata, sea
una instruccion en M, a nadimos la instruccion
p ] mov (, q

)
En caso de que el estado q sea el estado inicial en M entonces q

ser a el
estado inicial en M

. El procedimiento anterior puede realizarse para


cada par de estados q y q

para los cuales M presenta una secuencia de


movimientos impropios.
Paso 2: Borrar cada instrucci on impropia. Las instrucciones restantes son
el programa de M

Proposion 2 Sea M un automata de pila con movimientos impropios; es


posible construir un automata de pila M

propio tal que L(M) = L(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

sin ciclos tal que L(M) = L(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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


Si M
p
tiene y M
f
tiene entonces M tiene
q]scan(s, q

) 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

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


genera cadenas en L que son procesadas por un traductor secuencial genera-
lizado.
M
t
= (Q
t
, S, R, P
t
, I
t
, F
t
)
La combinaci on de M
g
y M
t
es un nuevo APG
M = (Q, R, U, P, I, F)
con
q = Q
g
Q
t
, F = f
g
F
t
, I = I
g
I
t
que justamente generan las cadenas en R

que son traducidas por M en


cadenas en L. Esto es, M genera , por la travesa
((q, p), , )
T
= ((q

, 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

el programa de M se especica en la tabla (3.2) y se a nade una instrucci on


adicional
q]null(q

)
La cual nos coloca en el estado q

del aut omata sin hacer movimientos en el


tope de la pila. La instrucci on null es an aloga a la transici on en un aut omata
de estado nito y puede ser reemplazada con el par de instrucciones
q]write(u, q

)
q

]read(u, q

)
donde q

es un nuevo estado auxiliar y u es un smbolo arbitrario en la pila


(los movimientos impropios despues pueden ser eliminados)
3.7. LENGUAJES NO REGULALES 59
Teorema 3 La clase de los lenguajes independientes del contexto con al-
fabeto terminal T es cerrada bajo las operaciones de union, concatenacion,
cerradura e inversion (reversa), interseccion y diferencia con un conjunto
regular. Esto es si L
1
y L
2
son lenguajes independientes del contexto y R es
un conjunto regular entonces
L
1
L
2
L
R
1
L
1
L
2
L
1
R L

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

) (q, p)]print(r, (q, p

))
Cuadro 3.2: Especicaci on del programa de un APG para la traduccion de
L(M
g
) por M
60 CAP

ITULO 3. LENGUAJES LIBRES DE CONTEXTO


Captulo 4
Maquinas de Turing
Objetivo de la unidad: Comprender y conocer el funcionamiento de
una maquina de Turing y para que se puede utilizar
Ahora vamos a abordar la cuesti on de que lenguajes pueden denirse por
medio de dispositivos computacionales, sean cuales fueren. Esta cuestion es
equivalente a preguntarnos que pueden hacer los computadores, dado que el
reconocimiento de las cadenas que forman parte de un lenguaje es un modo
formal de expresar cualquier problema y la resolucion es un equivalente ra-
zonable de lo que hacen los computadores.
Un problema que ning un computador puede resolver se denomina inde-
cidible. Supongamos que se desea determinar si un computador puede re-
solver o no alg un otro problema. Podemos intentar escribir un problema que
lo resuelva, pero, si no se nos ocurre como hacerlo, podramos intentar que
tal programa no puede existir. Quiza sera posible demostrar que este nue-
vo problema es indecidible suponiendo que existe un programa que resuelve
el problema y desarrollar otro programa paradojico que tenga que efectuar
dos acciones contradictorias. Supongamos que se debe que el problemaP
1
es
indecidible y que P
2
es un programa nuevo que nos gustara demostrar que
tambien es indecidible. Supongamos que existe un programa representado
en la siguiente imagen por el rombo con la etiqueta decide que imprime si
o no dependiendo de si la codicacion del problema P
2
(que constituye su
entrada) pertenece o no al lenguaje de dicho problema.
Para demostrar que el problema P
2
es indecidible, es necesario que nos in-
ventemos un procedimiento de construcci on, representado por la caja cuadra-
61
62 CAP

ITULO 4. M

AQUINAS DE TURING
Figura 4.1: 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

, la maquina de Turing no conseguira -


nalmente realizar ning un movimiento, y dejara de operar sin aceptar. Sin
embargo, si termina cambiando todos los ceros por x en la misma pasada en
la que cambia el ultimo 1 por una y, entonces determina que la cadena de
entrada era de la forma 0
n
1
n
y acepta. La maquina de Turing que realiza la
serie de movimientos es la siguiente:
M = ({q
0
, q
1
q
2
, q
3
, q
4
} , {0, 1} , {0, 1, X, Y, B} , , q
0
, B, {q
4
})
donde esta representada mediante la siguiente tabla
Estado 0 1 X Y B
q
0
(q
1
, X, D) (q
3
, Y, D)
q
1
(q
1
, 0, D) (q
2
, Y, 1) (q
1
, Y, D)
q
2
(q
2
, 0, I) (q
0
, X, D) (q
2
, Y, I)
q
3
(q
3
, Y, D) (q
4
, B, D)
q
4

Cuadro 4.1: Una m aquina de Turing para {0
n
1
n
}
Mientras M realiza los pasos anteriores, la porcion de la cinta que ya ha
sido recorrida por la cabeza de la cinta correspondera siempre a una secuen-
cia de smbolos descrita mediante la expresion regular X

. 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

i es importante mencionar que para cada


75
76 CAP

ITULO 5. DECIBILIDAD
valor de a, b y c tenemos un problema distinto.
El problema de la parada Existe alg un procedimiento efectivo algorit-
mo o 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.

Esta denici on esta fundamentada en una conjutura llamada N = NP,


que permite suponer que la clase de los problemas que se pueden resolver
en tiempo polinomico mediante m aquinas de Turing no deterministicas, con-
tienen al menos algunos problemas que no se pueden resolver en tiempo
polinomico usando m aquinas de Turing deterministicas, aunque estas ocu-
pen un tiempo poliniomico de grado m as alto.
Actividad 10 Investigar la denicion de las clases de problemas N y NP,
y en que consisten sus diferencias
Denici on 35 Se dice que una maquina de Turing M tiene un tiempo de
calculo (complejidad temporal) T(n) si se detiene despues de T(n) movimien-
tos como maximo cuando recibe una entrada de longitud n (ya sea aceptada
o rechazada)
6.2. UN PROBLEMA SIMPLE INSOLUBLE 83
Esta denicionse aplica a cualquier funcion T(n) que sea un polin omio en
n, y de aqui se desprende que
Denicion 36 Un languaje esta en la clase P, si existe algun polinomio
T(n) tal que L = L(M) para alguna maquina de Turing determinista M,
cuya complejidad temporal es T(n).
6.2. Un problema simple insoluble
6.2.1. Algoritmo de Kruskal
Para este problema, se necesitara retomar los conceptos de grafos que
se estudiar on en la materia de Matematicas para computadora en primer
semestre.
Considere el problema de encontrar un arbol de peso mnimo asociado
a un grafo APMAG, a continuaci on se presenta un ejemplo de un grafo,
en el cual los nodos estan numerados del 1 al 4 y hay arcos entre pares de
nodos, y cada uno tiene un peso en entero, un arbol que abarca el grafo es
un subconjunto de los arcos tal que todos los nodos quedan conectados entre
s mediante estos arcos pero no se forma ningun ciclo.
Figura 6.1: Ejemplo para APMAG
El arbol para el nodo 3 esta compuesto por todas las aristas que parten
de el.
El arbol de peso mnimo es el que tiene la ,enor suma total de pesos de los
arcos entre todos los que abarcan el grafo. Existe un algoritmo llamado algo-
ritmo de Kruskal para encontrar un APMAG que consiste en los siguientes
pasos:
1. Para cada nodo anotar la componente conexa en la que aparece, usando
los arcos del arbol seleccionados hasta el momento. Inicialmente no se
ha seleccionado ning un arco, por lo que cada nodo formara por si solo
una componente conexa.
84 CAP

ITULO 6. REDUCIBILIDAD
2. Se elige el arco de menor peso que aun no se halla examinado, y se
rompen las ligaduras como se desee. Si este arco conecta dos nodos
situados actualmente en componentes conexas distintas:
a) Se selecciona este arco, para el arbol que abarca el grafo.
b) Se unen las dos componentes conexas, cambiando el n umero de
componente asociado a todos los nodos de una de las componentes,
para que sea el mismo que el n umero de componente de la otra.
3. Se eligen arcos hasta que todos los nodos hallan sido examinados, o
hasta que el n umero de arcos seleccionados pra el arbol que abarca
el grafo sea igual al n umero de nodos menos uno. en este caso todos
los nodos deben estar en una solo componente conexa, y es posible
olvidarse de todos los arcos restantes.
Este algoritmo puede implementarse en una computadora, para hallar el
arbol que abarca un grafo de m nodos y e arcos en un tiempo O(m+eloge).
Una implementaci on m as simple, mas 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

es una funcion computable si la


maquina de Turing M asociada, solo se detiene con f(), en cada entrada
en su cinta.
Ejemplo 26 Todas las operaciones aritmeticas habituales en enteros son
funciones computables. Podemos hacer una maquina que tiene entrada (m, n)
y devuelva m+n.
Un lenguaje A es reducible a un lenguaje B, si existe una funci on com-
putable f : E

donde para cada , f() esta en B, a la funcion f se


llama la reducci on de A a B.
6.3. FUNCIONES COMPUTABLES 87
Si un problema es reducible a un segundo problema ya resuelto con an-
terioridad, podemos obtener una solucion al problema original. Tenemos esa
idea en el siguiente teorema.
Teorema 8 Si A B en cuanto a tama no y B es reducible, entonces A es
reducible.
Y como consecuencia si A es irreducible B tambien ser a irreducible.
88 CAP

ITULO 6. REDUCIBILIDAD
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