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

Más contenido relacionado

La actualidad más candente

Aplicacion de ecuasiones de primer orden
Aplicacion de ecuasiones de primer ordenAplicacion de ecuasiones de primer orden
Aplicacion de ecuasiones de primer ordenwhitecrow2013
 
Teoria delacompuu v-vi
Teoria delacompuu v-viTeoria delacompuu v-vi
Teoria delacompuu v-viPoletiux
 
Probabilidad y estadistica elementales
Probabilidad y estadistica elementalesProbabilidad y estadistica elementales
Probabilidad y estadistica elementalesNoelia Larsen
 
6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control
6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control
6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-controlTifa Niki
 
Manual simulink
Manual simulinkManual simulink
Manual simulinkcosococo
 
Trabajo de exposicion computacion aplicada
Trabajo de exposicion computacion aplicadaTrabajo de exposicion computacion aplicada
Trabajo de exposicion computacion aplicadadnicrap
 
Temario de cálculo direrencial
Temario de cálculo direrencialTemario de cálculo direrencial
Temario de cálculo direrencialRigobertoCarcamo
 

La actualidad más candente (14)

Demostracion
DemostracionDemostracion
Demostracion
 
Aplicacion de ecuasiones de primer orden
Aplicacion de ecuasiones de primer ordenAplicacion de ecuasiones de primer orden
Aplicacion de ecuasiones de primer orden
 
Funciones multivariables
Funciones multivariablesFunciones multivariables
Funciones multivariables
 
Teoria delacompuu v-vi
Teoria delacompuu v-viTeoria delacompuu v-vi
Teoria delacompuu v-vi
 
Algebra[ufro]
Algebra[ufro]Algebra[ufro]
Algebra[ufro]
 
Teoriapto
TeoriaptoTeoriapto
Teoriapto
 
Probabilidad y estadistica elementales
Probabilidad y estadistica elementalesProbabilidad y estadistica elementales
Probabilidad y estadistica elementales
 
Control digital con matlab
Control digital con matlabControl digital con matlab
Control digital con matlab
 
6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control
6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control
6498785 introduccion-a-matlab-y-simulink-para-sistemas-de-control
 
Manual simulink
Manual simulinkManual simulink
Manual simulink
 
Trabajo de exposicion computacion aplicada
Trabajo de exposicion computacion aplicadaTrabajo de exposicion computacion aplicada
Trabajo de exposicion computacion aplicada
 
Cinematica )
Cinematica )Cinematica )
Cinematica )
 
Temario de cálculo direrencial
Temario de cálculo direrencialTemario de cálculo direrencial
Temario de cálculo direrencial
 
Alg03
Alg03Alg03
Alg03
 

Similar a 2010.029

Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numericoLUIS COAQUIRA
 
385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf
385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf
385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdfFranciscoJavierOrteg46
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretassergio
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretasguest553c2e
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretassergio
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretasguest553c2e
 
Casos prácticos de uml
Casos prácticos de umlCasos prácticos de uml
Casos prácticos de umlsemillachile
 
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...RamonMartinespaa
 
Logica para informáticos
Logica  para informáticosLogica  para informáticos
Logica para informáticosedwinalb
 
PLC y Electroneumática: Automatismos industriales
PLC y Electroneumática: Automatismos industrialesPLC y Electroneumática: Automatismos industriales
PLC y Electroneumática: Automatismos industrialesSANTIAGO PABLO ALBERTO
 
Algoritmos guia de maria hernandez
Algoritmos guia de maria hernandezAlgoritmos guia de maria hernandez
Algoritmos guia de maria hernandezjackie_18
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE Cclaudiocj7
 

Similar a 2010.029 (20)

Octave calculo numerico
Octave calculo numericoOctave calculo numerico
Octave calculo numerico
 
385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf
385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf
385321913-Apuntes-Optimizacio-n-Ferrer-Munoz-pdf.pdf
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
 
Vba excel mnumericos
Vba excel mnumericosVba excel mnumericos
Vba excel mnumericos
 
Casos prácticos de uml
Casos prácticos de umlCasos prácticos de uml
Casos prácticos de uml
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Manual r 1
Manual r 1Manual r 1
Manual r 1
 
Libro logica
Libro logicaLibro logica
Libro logica
 
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
16. Introducción a Matlab autor Julio Benítez Lopez y José Luis Hueso Pagoaga...
 
Logica para informáticos
Logica  para informáticosLogica  para informáticos
Logica para informáticos
 
aprendepython.pdf
aprendepython.pdfaprendepython.pdf
aprendepython.pdf
 
PLC y Electroneumática: Automatismos industriales
PLC y Electroneumática: Automatismos industrialesPLC y Electroneumática: Automatismos industriales
PLC y Electroneumática: Automatismos industriales
 
memoria
memoriamemoria
memoria
 
Algoritmos guia de maria hernandez
Algoritmos guia de maria hernandezAlgoritmos guia de maria hernandez
Algoritmos guia de maria hernandez
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
 
Metodosnumerics
MetodosnumericsMetodosnumerics
Metodosnumerics
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 

Último

Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxLorenaCovarrubias12
 
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docxPLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docxDavidAlvarez758073
 
263818760-Un-Embrujo-de-Cinco-Siglos.doc
263818760-Un-Embrujo-de-Cinco-Siglos.doc263818760-Un-Embrujo-de-Cinco-Siglos.doc
263818760-Un-Embrujo-de-Cinco-Siglos.docMiguelAraneda11
 
Tarrajeo, tipos de tarrajeos, empastados, solaqueos y otros revestimientos.
Tarrajeo, tipos de tarrajeos, empastados, solaqueos y otros revestimientos.Tarrajeo, tipos de tarrajeos, empastados, solaqueos y otros revestimientos.
Tarrajeo, tipos de tarrajeos, empastados, solaqueos y otros revestimientos.DeinerSuclupeMori
 
La Hegemonía Liberal en Paraguay 1904 a 1936.ppt
La Hegemonía Liberal en Paraguay 1904 a 1936.pptLa Hegemonía Liberal en Paraguay 1904 a 1936.ppt
La Hegemonía Liberal en Paraguay 1904 a 1936.pptVictorManuelCabreraC4
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfYolandaRodriguezChin
 
Poemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºPoemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºCEIP TIERRA DE PINARES
 
2º conclusiones descriptivas educacion fisica (1).docx
2º conclusiones descriptivas educacion fisica (1).docx2º conclusiones descriptivas educacion fisica (1).docx
2º conclusiones descriptivas educacion fisica (1).docxRobertoCarlosFernand14
 
Diagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de BarbacoasDiagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de Barbacoasadvavillacorte123
 
True Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfTrue Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfMercedes Gonzalez
 
Fase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometricoFase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometricoYasneidyGonzalez
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxc3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxMartín Ramírez
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNjmorales40
 
Creación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webCreación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webinformatica4
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONMasielPMP
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docxFelixCamachoGuzman
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid20minutos
 

Último (20)

Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
 
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docxPLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
PLAN DE TRABAJO CONCURSO NACIONAL CREA Y EMPRENDE.docx
 
263818760-Un-Embrujo-de-Cinco-Siglos.doc
263818760-Un-Embrujo-de-Cinco-Siglos.doc263818760-Un-Embrujo-de-Cinco-Siglos.doc
263818760-Un-Embrujo-de-Cinco-Siglos.doc
 
Tarrajeo, tipos de tarrajeos, empastados, solaqueos y otros revestimientos.
Tarrajeo, tipos de tarrajeos, empastados, solaqueos y otros revestimientos.Tarrajeo, tipos de tarrajeos, empastados, solaqueos y otros revestimientos.
Tarrajeo, tipos de tarrajeos, empastados, solaqueos y otros revestimientos.
 
La Hegemonía Liberal en Paraguay 1904 a 1936.ppt
La Hegemonía Liberal en Paraguay 1904 a 1936.pptLa Hegemonía Liberal en Paraguay 1904 a 1936.ppt
La Hegemonía Liberal en Paraguay 1904 a 1936.ppt
 
3.Conectores uno_Enfermería_EspAcademico
3.Conectores uno_Enfermería_EspAcademico3.Conectores uno_Enfermería_EspAcademico
3.Conectores uno_Enfermería_EspAcademico
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
 
Poemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6ºPoemas de Beatriz Giménez de Ory_trabajos de 6º
Poemas de Beatriz Giménez de Ory_trabajos de 6º
 
2º conclusiones descriptivas educacion fisica (1).docx
2º conclusiones descriptivas educacion fisica (1).docx2º conclusiones descriptivas educacion fisica (1).docx
2º conclusiones descriptivas educacion fisica (1).docx
 
Diagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de BarbacoasDiagnostico del corregimiento de Junin del municipio de Barbacoas
Diagnostico del corregimiento de Junin del municipio de Barbacoas
 
True Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdfTrue Mother's Speech at THE PENTECOST SERVICE..pdf
True Mother's Speech at THE PENTECOST SERVICE..pdf
 
Fase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometricoFase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometrico
 
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLAACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
ACERTIJO DE CARRERA OLÍMPICA DE SUMA DE LABERINTOS. Por JAVIER SOLIS NOYOLA
 
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptxc3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
c3.hu3.p3.p2.Superioridad e inferioridad en la sociedad.pptx
 
Sesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdfSesión: El fundamento del gobierno de Dios.pdf
Sesión: El fundamento del gobierno de Dios.pdf
 
Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
 
Creación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio webCreación WEB. Ideas clave para crear un sitio web
Creación WEB. Ideas clave para crear un sitio web
 
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCIONCAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
CAPACIDADES SOCIOMOTRICES LENGUAJE, INTROYECCIÓN, INTROSPECCION
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
 

2010.029

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