Cuadernillo de apuntes Teor a de la computaci on · Maquina de Turing con varias cintas . . . . . ....

89
Cuadernillo de apuntes Teor´ ıa de la computaci´ on Magaly Gonz´alez Mota 30 de junio de 2010

Transcript of Cuadernillo de apuntes Teor a de la computaci on · Maquina de Turing con varias cintas . . . . . ....

Cuadernillo de apuntes Teorıa de lacomputacion

Magaly Gonzalez Mota

30 de junio de 2010

2

Indice general

1. INTRODUCCION 51.1. Automatas computabilidad y complejidad . . . . . . . . . . . 5

1.1.1. Representaciones estructurales . . . . . . . . . . . . . . 71.1.2. Automatas y la complejidad . . . . . . . . . . . . . . . 7

1.2. Nociones Matematicas . . . . . . . . . . . . . . . . . . . . . . 71.2.1. Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.2. Funciones y relaciones . . . . . . . . . . . . . . . . . . 121.2.3. Induccion matematica . . . . . . . . . . . . . . . . . . 17

1.3. Cadenas y lenguajes . . . . . . . . . . . . . . . . . . . . . . . 19

2. Lenguajes regulares 252.1. Automatas finitos . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.1.1. Automatas finitos deterministicos AFD . . . . . . . . . 262.1.2. Automatas finitos no deterministicos AFND . . . . . . 29

2.2. Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . 312.3. Lenguajes Regulares . . . . . . . . . . . . . . . . . . . . . . . 35

3. Lenguajes libres de contexto 373.1. Gramaticas libres de contexto . . . . . . . . . . . . . . . . . . 373.2. Arboles de derivacion . . . . . . . . . . . . . . . . . . . . . . . 413.3. Formas normales de Comsky . . . . . . . . . . . . . . . . . . . 453.4. Forma normal de Greibach . . . . . . . . . . . . . . . . . . . . 453.5. Ambiguedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.6. Automatas de Pila . . . . . . . . . . . . . . . . . . . . . . . . 473.7. Lenguajes no regulales . . . . . . . . . . . . . . . . . . . . . . 55

4. Maquinas de Turing 614.1. Definicion de una Maquina de Turing . . . . . . . . . . . . . . 63

3

4 INDICE GENERAL

4.2. Construccion modular de una MT . . . . . . . . . . . . . . . . 664.3. El lenguaje de una Maquina de Turing . . . . . . . . . . . . . 704.4. Variantes de una Maquina de Turing . . . . . . . . . . . . . . 71

4.4.1. Maquina de Turing con varias cintas . . . . . . . . . . 714.4.2. Maquinas con pilas multiples . . . . . . . . . . . . . . 724.4.3. Maquinas contadoras . . . . . . . . . . . . . . . . . . . 73

5. Decibilidad 775.1. Lenguajes Decidibles . . . . . . . . . . . . . . . . . . . . . . . 785.2. El problema de Halting . . . . . . . . . . . . . . . . . . . . . . 795.3. Decibilidad de teorıas logicas . . . . . . . . . . . . . . . . . . . 80

6. Reducibilidad 836.1. Problemas insolubles para la teorıa de lenguajes . . . . . . . . 836.2. Un problema simple insoluble . . . . . . . . . . . . . . . . . . 85

6.2.1. Algoritmo de Kruskal . . . . . . . . . . . . . . . . . . . 856.3. Funciones computables . . . . . . . . . . . . . . . . . . . . . . 88

Capıtulo 1

INTRODUCCION

Objetivo de la Unidad Situar la importancia del estudio de losautomatas dentro del proceso de desarrollo de software, y algunas aplica-ciones. Presentar las nociones basicas de matematicas necesarias para comen-zar a estudiar la materia.

1.1. Automatas computabilidad y compleji-

dad

Se conoce como teorıa de automatas el estudio de las maquinas o dispos-itivos abstractos con capacidad de computacion.En la decada de 1930 el matematico ingles Alan Mathison Turing estudio unamaquina con el objetivo de determinar con presicion cual era la frontera entrelo que podia o no podıa hacer una maquina computadora.

En las decadas de 1940 y 1950 se estudiaron otro tipo de maquinassencillas conocidas con el nombre de automatas finitos, los cuales inicial-mente pretendian modelar las funciones cerebrales. A finales de la decada de1950 el linguista estadounidense Noam Chomsky comenzo el estudio de lasgramaticas formales, las cuales no son maquinas, pero son componentes desoftware importantes por su relacion con los automatas abstractos. En 1969el matematico estadounidense Stephen Arthur Cook separo los problemasque se pueden resolver de manera eficiente en una computadora de aquellosque en la practica necesitarian tanto tiempo que no tendrıa utilidad emplearuna computadora, salvo en casos particulares, a los cuales llamo problemas

5

6 CAPITULO 1. INTRODUCCION

NP-dificiles.

Algunos de los conceptos de automatas y gramaticas se emplean en eldiseno y construccion de aplicaciones de software, o decidir sin un problemases factible de ser resuelto mediante el uso de un algoritmo computable.Entre las razones por las cuales es conveniente estudiar la teoria de automatas,estan:

1. El diseno y verificacion del comportamiento de circuitos digitales (soft-ware)

2. El analizador lexico de un compilador (la parte del compilador que des-compone el texto inicial en unidades logicas tales como identificadores,palabras reservadas y signos de puntuacion).

3. Software para encontrar apariciones de ciertas palabras, frases u otrospatrones en textos grandes dentro de paginas web.

4. Software para comprobar la correccion de cualquier tipo de sistemasque tengan un numero finito de estados diferentes, como los protocolosde comunicacion o los protocolos para el intercambio seguro de infor-macion.

Existen muchos sistemas o componenetes de los cuales se puede decir entodo momento que estan en cierto estado entre un numero finito de ellos.El objetivo de un estado es recordar la parte significativa de la historia deun sistema. Dado que solo disponemos de un numero finito de estados, nor-malmente no es posible recordar la historia completa, por lo cual el sistemadebera ser disenado de tal forma que recuerde las cosas que son importantesy omita las que no lo son.

Ejemplo 1 Un interruptor de encendido y apagado, el cual es capaz de recor-dar si esta en el estado de encendiddo o apagado, y permite que el usuariopulse el boton consiguiendo efectos diferentes que dependen de cual era elestado del interruptor.

Algunas veces, un estado recuerda cosas mas complejas. Por ejemplo elautomata finito cuyo trabajo sea reconocer la palabra reservada while, paralo cual necesitara 6 estados, cada uno de los cuales representa una posiciondentro de la palabra, desde la palabra vacıa (estado inicial), y donde cada uno

1.2. NOCIONES MATEMATICAS 7

produce una transicion desde el prefijo existente hasta la siguiente letra dela palabra (cada estado esta etiquetado con el prefijo de la palabra while queya se analizo), el estado denominado while, es alcanzado cuando el automataha deletreado la palabra while, y el estado while es el unico aceptado por elautomata.

1.1.1. Representaciones estructurales

Existen otros dos tipos de notaciones que desempenan un papel impor-tante en el estudio de los automatas y sus aplicaciones

1. Las gramaticas que se emplean para el desarrollo de software destinadoa procesar datos con estructura recursiva, por ejemplo el analizadorsintactico que se ocupa de las caracteristicas recursivas de los lenguajesde programacion, como las expresiones aritmeticas, condicionales etc.

2. Las expresiones regulares que nos indican la estructura de los datos,principalmente cadenas de texto.

1.1.2. Automatas y la complejidad

Los automatas nos sirven para resolver dos pregntas muy importantes enla computacion que son:

¿Que puede hacer una computadora?

Que puede hacer una computadora eficientemente?

El como nos permite determinar la respuesta a estas preguntas sera partedel estudio de nuestro curso y se abordara principalmente en la unidad 5 y6.

1.2. Nociones Matematicas

1.2.1. Conjuntos

Para el estudio de los automatas es necesario recordar algunos de los con-ceptos vistos en Matematicas para computadora, debido a que muchas delas definiciones relacionados con los automatas estan dados en terminos de

8 CAPITULO 1. INTRODUCCION

conjuntos, a continuacion se presenta un breve recordatorio.

Definicion 1 Conjunto es una coleccion de objetos que puede ser finito o in-finito. Totalidad de los elementos o cosas poseedores de una propiedad comun,que los distingue de otros.

En el caso de ser finito y si el conjunto no es muy extenso se puederepresentar mediante todos sus elementos.

A = lunes,martes,miercoles, jueves, viernes

Si es finito o tiene muchos elementos se representa de la siguiente forma

B = x\x es un numero entero positivo

Para que exista un conjunto debe basarse en lo siguiente:

La coleccion de elementos debe estar bien definida.

Ningun elemento del conjunto se debe contar mas de una vez, gene-ralmente, estos elementos deben ser diferentes, si uno de ellos se repitese contara solo una vez.

El orden en que se enumeran los elementos que carecen de importancia.

Notacion 1 A los conjuntos se les representa con letras mayusculas A, B,C,... y a los elementos con letras minusculas 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 = 0\x ∈ R

El conjunto A, es un conjunto vacıo por que no hay ningun numero realque satisfaga x2 + 1 = 0. Una propiedad imortante del conjunto vacıoes que esta contenido en cualquier conjunto.

Conjunto universal: Es el conjunto de todos los elementos considerados enuna poblacion o universo, en un problema en especial. No es unico,depende de la situacion, y se representa por U o Ω.

1.2. NOCIONES MATEMATICAS 9

Relaciones u operaciones entre conjuntos

Pertenencia: Si un elemento esta en la descripcion de un conjunto, se diceque pertenece al conjunto, y se denota por el sımbolo ∈

x ∈ A

Para denotar que un elemento no pertence a un conjunto escribimosx /∈ A

Cardinalidad:Es el numero 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 tambienpertenece a B y viceversa si cada elemento que pertenece a B pertenecetambien a A.

A = B

Subconjunto: Si todo elemento de un conjunto A es tambien elemento deun conjunto B, entonces se dice que A es un subconjunto de B, y sedenota por el sımbolo ⊂.

A ⊂ B o B ⊂ A

Subconjunto propio: Se dice que B es un subconjunto propio de A sı todoslos elementos de un conjunto B se encuentran incluidos en el A, y sedenota por el sımbolo ⊆.

A ⊆ B o B ⊆ A

Conjunto potencia: La familia de todos los subconjuntos de un conjuntose llama conjunto potencia. Si un conjunto es finito con n elementos,entonces el conjunto potencia tendra 2n subconjuntos. Un conjunto essubconjunto de el mismo,y el vacio es subconjunto de cualquier con-junto.

A = 0, 1El total de subconjuntos es: 22 = 4 los cuales son:

P(A) = 1, 2 , 1 , 2 , ∅

10 CAPITULO 1. INTRODUCCION

Union: Es una operacion entre dos conjuntos A y B y esta formada portodos los elementos que pertencen a el conjunto A o al conjunto B oambos y se representa de la siguiente manera:

A ∪B = x\x ∈ A o x ∈ B

Interseccion: Es una operacion entre dos conjuntos A y B y esta formadapor todos los elementos que pertenecen a el conjunto A y tambien alconjunto B y se representa de la siguiente forma

A ∩B = x\x ∈ A y x ∈ B

Conjuntos disjuntos: Son aquellos que no tienen elementos en comun, esdecir, cuando no existen elementos que pertenezcan a ambos, y se rep-resenta de la siguiente forma:

A ∩B = ∅

Por ejemplo F = 1, 2, 3, 4, 5, 6 y G = a, b, c, d, e, f son disjuntos.

Particion: Cuando un conjunto X es dividido en subconjuntos que no seintersectan entre si y que ademas al unirlos forman todo el conjuntoX, se le denomina particion.

Diferencia de dos conjuntos A−B: Consta de todos los elementos de A queno estan en B y se representa de la siguiente forma:

A−B = x\x ∈ A y x /∈ B

Complemento: Dado el conjunto universo y un subconjunto A del universoel complemento de A es el conjunto de todos los elementos del universoque 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 UA ∪ C = 0, 1, 2, 3, 4, 5, 6

1.2. NOCIONES MATEMATICAS 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, dLos 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 tambien se pueden representar de manera grafica medi-ante los diagramas de Veen, investigar que son y como se representanlas diferentes operaciones entre conjuntos por medio de diagramas deVeen.

2. Investigar la biografia de Georg Cantor y mencionar cuales fueron susaportaciones 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 CAPITULO 1. INTRODUCCION

a) A ∪Bb) B ∩Dc) A ∪ Cd) C ∩Be) Ac

f) (A ∪B)c

g) (Ac ∩B) ∪ Ch) (A ∪B) ∩ (C ∩D)

i) ((A ∪B) ∩ (C ∩D))c

j) (D ∩ (B ∪ A)c) ∪ (Ac ∩B)

1.2.2. Funciones y relaciones

Definicion 2 Una pareja ordenada es un par de numeros los cuales se puedenencontrar en el plano cartesiano, donde el orden de los terminos que la con-forman si es importante y se denota por

(a, b)

Actividad 2 Investigar como se da la igualdad de las parejas ordenadas,cual es su inverso aditivo y cual es su neutro multiplicativo La razon por lacual son de nuestro interes las aprejas ordenadas es porque nos ayudan adefinir una operacion entre conjuntos llamada producto cartesiano.

Definicion 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 6= Y ×X

1.2. NOCIONES MATEMATICAS 13

Actividad 3 Dados C = a, c, d, h, j, A = α, β, γ y D = h, i, j, challar

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 × Ab) A×D × C

Teorema 1 Para cualquier par de conjuntos finitos no vacıos A y B

|A×B| = |A| |B|

Una Relacion es un conjunto de pares ordenados, donde el primer ele-mento esta relacionado con el segundo elemento del par ordenado, mas for-malmente

Definicion 4 Una Relacion (binaria) R de un conjunto X en un conjunto Yes un subconjunto del producto cartesiano X × Y . Si (x, y) ∈ R, escribimosxRy y decimos que x esta relacionado con y; ademas si X = Y entoncesdecimos que R es una relacion binaria sobre X

Ejemplo 5 Sean X = 1, 2, 3, 4, Y = 2, 4, 5 dos conjuntos, definimos larelacion R como

R = (x, y) \ x+ y sea par

entoncesR = (1, 5), (3, 5), (2, 2), (2, 4), (4, 2), (4, 4)

Definicion 5 Al conjunto

x ∈ X\(x, y) ∈ R para algun y ∈ Y

se le conocee con el nombre de Dominio de la relacion (DR) y al conjunto

y ∈ y\(x, y) ∈ R para algun x ∈ X

14 CAPITULO 1. INTRODUCCION

se le conoce con el nombre de Rango o imagen de la relacion (ImR)

Para el ejemplo anterior tenemos que:

DR = 1, 2, 3, 4

ImR = 2, 4, 5

Propiedades de las relaciones

Definicion 6 Una relacion binaria sobre X tiene las siguientes propiedades:

Una relacion R sobre un conjunto X es reflexiva si (x, x) ∈ R para cadax ∈ X

Una relacion R sobre un conjunto X es irreflexiva si (x, x) /∈ R para cadax ∈ X

Una relacion R sobre un conjunto X es simetrica si para todo x, y ∈ X ysi (x, y) ∈ R, entonces (y, x) ∈ R

Una relacion R sobre un conjunto X es antisimetrica si para todo x, y ∈ X,si (x, y) ∈ R y si x 6= y, entonces (y, x) /∈ R

Una relacion R sobre un conjunto X es transitiva si para toda x, y, z ∈ X,si (x, y) y (y, z) ∈ R, entonces (x, z) ∈ R

Una relacion R sobre un conjunto X es un orden parcial si R es reflexiva,transitiva y antisimetrica

Una relacion R sobre un conjunto X es una relacion de equivalencia si Res reflexiva, transitiva y simetrica

Sea R una relacion de X en Y . La inversa de R que se denota por R−1, esla relacion de Y a X definida como:

R−1 = (y, x)\(x, y) ∈ R

Sea R1 una relacion de X a Y y R2 una relacion de Y a Z, la composicionde R1 y R2 que se denota por R2R1 es una relacion de X a Z definidacomo

R2 R1 = (x, z)\(x, y) ∈ R1 y (y, z) ∈ R2 para alguna y ∈ Y

1.2. NOCIONES MATEMATICAS 15

No hay que olvidar que las relaciones son conjuntos, por lo cual se puedenaplicarles las operaciones entre conjuntos.

Ejemplo 6 Consideremos la siguiente relacion sobre X = 1, 2, 3, 4, 5

R = (x, y)\x+ y es par

R = (1, 1), (1, 3) (1, 5), (2, 2), (2, 4), (3, 1), (3, 3), (3, 5), (4, 2), (4, 4), (5, 1), (5, 3), (5, 5)

De la relacion se tiene lo siguiente

DR = 1, 2, 3, 4, 5

ImR = 1, 2, 3, 4, 5

Ademas: la relacion es reflexiva pues las parejas (1, 1), (2, 2), (3, 3), (4, 4),(5, 5) pertenecen a la relacion.La relacion es simetrica pues(1, 3) ∈ R y tambien (3, 1) ∈ R(1, 5) ∈ R y tambien (5, 1) ∈ R(3, 1) ∈ R y tambien (1, 3) ∈ R(3, 5) ∈ R y tambien (5, 3) ∈ R(5, 1) ∈ R y tambien (1, 5) ∈ R(2, 4) ∈ R y tambien (4, 2) ∈ R(4, 2) ∈ R y tambien (2, 4) ∈ R.

La relacion es transitiva pues

(1, 1) ∈ R y (1, 3) ∈ R (x = 1, y = 1 y z = 3) entonces (1, 3) ∈ R(1, 1) ∈ R y (1, 5) ∈ R (x = 1, y = 1 y z = 5) entonces (1, 5) ∈ R(1, 3) ∈ R y (3, 1) ∈ R (x = 1, y = 3 y z = 1) entonces (1, 1) ∈ R(1, 3) ∈ R y (3, 3) ∈ R (x = 1, y = 3 y z = 3) entonces (1, 3) ∈ R(1, 3) ∈ R y (3, 5) ∈ R (x = 1, y = 3 y z = 5) entonces (1, 5) ∈ R(1, 5) ∈ R y (5, 3) ∈ R (x = 1, y = 5 y z = 3) entonces (1, 3) ∈ R(1, 5) ∈ R y (5, 5) ∈ R (x = 1, y = 5 y z = 5) entonces (1, 5) ∈ R(1, 5) ∈ R y (5, 1) ∈ R (x = 1, y = 5 y z = 1) entonces (1, 1) ∈ R(2, 4) ∈ R y (4, 2) ∈ R (x = 2, y = 4 y z = 2) entonces (2, 2) ∈ R(2, 4) ∈ R y (4, 4) ∈ R (x = 2, y = 4 y z = 4) entonces (2, 4) ∈ R(2, 2) ∈ R y (2, 2) ∈ R (x = 2, y = 2 y z = 2) entonces (2, 2) ∈ R

16 CAPITULO 1. INTRODUCCION

(2, 2) ∈ R y (2, 4) ∈ R (x = 2, y = 2 y z = 4) entonces (2, 4) ∈ R(3, 1) ∈ R y (1, 3) ∈ R (x = 3, y = 1 y z = 3) entonces (3, 3) ∈ R(3, 1) ∈ R y (1, 5) ∈ R (x = 3, y = 1 y z = 5) entonces (3, 5) ∈ R(3, 1) ∈ R y (1, 1) ∈ R (x = 3, y = 1 y z = 1) entonces (3, 1) ∈ R(3, 3) ∈ R y (3, 3) ∈ R (x = 3, y = 3 y z = 3) entonces (3, 3) ∈ R(3, 3) ∈ R y (3, 1) ∈ R (x = 3, y = 3 y z = 1) entonces (3, 1) ∈ R(3, 3) ∈ R y (3, 5) ∈ R (x = 3, y = 3 y z = 5) entonces (3, 5) ∈ R(3, 5) ∈ R y (5, 1) ∈ R (x = 3, y = 5 y z = 1) entonces (3, 1) ∈ R(3, 5) ∈ R y (5, 3) ∈ R (x = 3, y = 5 y z = 3) entonces (3, 3) ∈ R(3, 5) ∈ R y (5, 5) ∈ R (x = 3, y = 5 y z = 5) entonces (3, 5) ∈ R(4, 2) ∈ R y (2, 2) ∈ R (x = 4, y = 2 y z = 2) entonces (4, 2) ∈ R(4, 4) ∈ R y (4, 2) ∈ R (x = 4, y = 4 y z = 2) entonces (4, 2) ∈ R(4, 2) ∈ R y (2, 4) ∈ R (x = 4, y = 2 y z = 4) entonces (4, 4) ∈ R(4, 4) ∈ R y (4, 4) ∈ R (x = 2, y = 4 y z = 4) entonces (4, 4) ∈ R(5, 1) ∈ R y (1, 3) ∈ R (x = 5, y = 1 y z = 3) entonces (5, 3) ∈ R(5, 1) ∈ R y (1, 1) ∈ R (x = 5, y = 1 y z = 1) entonces (5, 1) ∈ R(5, 1) ∈ R y (1, 5) ∈ R (x = 5, y = 1 y z = 5) entonces (5, 5) ∈ R(5, 3) ∈ R y (3, 1) ∈ R (x = 5, y = 3 y z = 1) entonces (5, 1) ∈ R(5, 3) ∈ R y (3, 5) ∈ R (x = 5, y = 3 y z = 5) entonces (5, 5) ∈ R(5, 3) ∈ R y (3, 3) ∈ R (x = 5, y = 3 y z = 3) entonces (5, 3) ∈ R(5, 5) ∈ R y (5, 1) ∈ R (x = 5, y = 5 y z = 1) entonces (5, 1) ∈ R(5, 5) ∈ R y (5, 3) ∈ R (x = 5, y = 5 y z = 3) entonces (5, 3) ∈ R(5, 5) ∈ R y (5, 5) ∈ R (x = 5, y = 5 y z = 5) entonces (5, 5) ∈ R

Como nuestra relacion es simetrica entonces no puede ser antisimetrica,es importante observar que si la relacion no es simetrica no necesariamentesera antisimetrica.en otros casos tampoco es necesario probar si todos los elementos de larelacion cumplen con encontrar uno que no cumpla ser transitivo, reflexivo,simetrico o antisimetrico (dependiendo de que estemos buscando) la relacionya no tendra la propiedad buscada.Por ultimo y como conclusion de nuestro ejemplo la relacion por ser transi-tiva, reflexiva y simetrica es una relacvion de equivalencia.

Actividad 4 en los siguientes ejercicios determine: los elementos de la relacion,la inversa de la relacion, el dominio e imagen de la relacion, si es reflexiva,simetrica, antisimetrica, transitiva, relacion de equivalencia o es una relacionde orden parcial.

1.2. NOCIONES MATEMATICAS 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

Definicion 7 Una funcion de X a Y es una relacion que posee las siguientespropiedades

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 explicarcual de las dos condiciones de la definicion no se cumplen y porque.

2. Investigar que es una funcion inyectiva (o uno a uno), suprayectiva (osobre) y biyectiva.

La razon por la cual no nos adentramos mucho mas en el estudio de lasfunciones es porque las hemos empleado en los cursos de matematicas que seimparten a lo largo del tronco comun en el tecnologico.

1.2.3. Induccion matematica

En computacion, a veces es necesario que los programas se prueben demanera formal, y sin perder de vista su objetivo. La materia de teorıa de lacomputacion se caracteriza por ser una materia con un enfoque conceptual,donde todos los resultados que se presentan se fundamentan en demostra-ciones formales, empleando principalmente el metodo inductivo, esto debido

18 CAPITULO 1. INTRODUCCION

a que tanto las cadenas como los automatas son elementos de conjuntos fini-tos.Existen varios metodos para realizar demostraciones en matematicas entrelos cuales destacan:

Demostraciones deductivas: Las cuales consisten en una secuencia de afir-maciones o proposiciones, cuya validez nos conduce a una conclusion,a partir de las proposiciones iniciales llamadas hipotesis o postulados.Las hipotesis se suponen falsas o verdaderas al inicio de la demostraciony con la ayuda de proposiciones, postulados o deducciones anterioresse verifica la veracidad de la mismas. La hipotesis estan formadas porvarias afirmaciones independientes que se relacionan entre si medianteun operador logico.(Los teoremas demostrados mediante este metodonormalmente tienen la forma si “H” entonces “C” y se dice que C sededuce de H )

Demostracion de equivalencias entre conjuntos. En ocaciones se debe probarque dos o mas conjuntos son iguales o representan lo mismo, para estetipo de demostraciones se deberan pobrar las siguientes proposicionesA ⊂ B y B ⊂ A, y una vez que se demostraron podermos concluir laigualdad.

Demostracion por contradiccion: Esta es similar a el metodo deductivo,solo que en lugar de probar si “H” entonces “C”, probamos si no “C”entonces “H”, que es su proposicion contradictoria (no confundirla conla inversa de la proposici’on).

Demostracion por reduccion al absurdo: Esta demostracion comienza suponien-do que son ciertas tanto la hipotesisH como la negacion de la conclusionC y la demostracion se completa probando algo que se sabe falso y quese deriva de la proposicion “H” y no“C”(la cual implica falsedad).

Contraejemplos: En programacion (sobre todo para estructuras recursivas)no siempre es posible demostrar todos los casoso que se nos presenten,sin embargo con probar que uno o mas casos no se cumplen podemosdemostrar que una afirmacion es falsa. Por ejemplo la afirmacion deque todos los numeros primos son impares es falsa pues el numero 2 espar y es un numero primo.

1.3. CADENAS Y LENGUAJES 19

Otra forma de demostracion importante para nuestra materia es la de-mostracion por induccion; este metodo ayuda principalmente cuando tenemosdefiniciones recursivas arboles, expresiones regulares, cadenas etc. Primeroque nada es necesario explicar que este metodo se emplea para proposicionesque ocurren una, dos, tres, . . ., n veces y que tiene un patron que se repite encada una de las veces a dicha proposicion la denotamos mediante S(n), donden nos dira en que numero de repeticion nos encontramos. El procedimientoque se emplea en este metodo es el siguiente:Supongase que se tiene una proposicion S(n) para cada entero positivo n, lacual es verdadera o falsa, necesitamos probar dos cosas:

1. Base: debemos probar que la proposicion es cierta (o falsa) para n =0 y n = 1, o para los valores a partir de los cuales se marque queesta es verdadera ( en el caso de que existen afirmaciones que no sonciertas para numeros pequenos), en terminos matematicos S(i) es ciertacuando i = 0 o i = 1

2. Paso de induccion: en este paso suponemos que para algun valor narbitrario la proposicion S(n) es cierta, y posteriormente procedemosa probar que esta proposicion tambien se cumple para su consecutivoS(n+ 1)

Por ejemplo las filas de fichas de domino cuando caen: hemos demostradoque la primera ficha cae (primer paso), y que si cae una ficha tambien debecaer la siguiente (si es cierta para n, debe serlo para n+1, segundo paso). Laidea de la induccion es muy clara: si un numero cumple algo, y si cuandoun numero lo cumple el siguiente tiene que cumplirlo, entonces todos losnumeros lo cumplen.

Actividad 6 Investigar 5 ejemplos en los que se empleen demostracionespor el metodo inductivo

1.3. Cadenas y lenguajes

Si nosotros observamos las siguientes lıneas podemos observar algunascosas en comun:

Programas escritos en lenguajes de alto nivel.

20 CAPITULO 1. INTRODUCCION

Palabras o frases en espanol.

Los numeros usados por una calculadora

Lo primero que podemos observar es que cada una de ellas esta compuestapor una secuencia de sımbolos que pertenecen a algun conjunto finito; parael caso de la segunda lınea el conjunto a, b, c, ..., x, y, z junto con todos lossımbolos de puntuacion correspondientes, de manera analoga para la terceralı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 tambien estan compuestos por unconjunto 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 esta formada por una secuencia de elementosde un conjunto finito no vacıo llamado alfabeto que denotaremos por Σ; a loselementos de dicho alfabeto los llamaremos letras y los denotaremos por σ,ademas supondremos que las letras se escriben con un solo caracter.

Ejemplo 7 Entre los alfabetos mas comunes en computacion se encuentran

Σ = 0, 1 el alfabeto binario.

El conjunto de todos los caracteres ASCII, o el conjunto de todos loscaracteres ASCII imprimibles.

Definicion 8 Sea Σ un alfabeto, una palabra o cadena sobre el alfabeto esuna secuencia finita de sımbolos del alfabeto Σ. En caso de que no se ten-ga ningun caracter la cadena sera llamada cadena vacıa y la denotaremosmediante la letra λ.

Ejemplo 8 001101010, 110101, 1, 00, son cadenas del alfabeto binario

Entre las cadenas es posible hacer operaciones, a continuacion describi-mos algunas de ellas:

Sea Σ un alfabeto, se define la concatenacion de palabras como una ope-racion:

· : Σ∗ × Σ∗ → Σ∗

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 mismoejemplo podemos observar que

ϕ · ω = peluzahola

de donde podemos concluir que la concatenacion de cadenas no es conmuta-tiva

ϕ · ω 6= ϕ · ω

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 numerode caracteres que conforman la cadena, por ejemplo la cadena

for(i = 1; i <= 40; i+ +)

tiene 18 caracteres, de manera mas formal:

Definicion 9 Sea Σ un alfabeto y ω = (ω1, ω2, ..., ωn) una palabra sobre Σ.La longitud de una palabra de Σ es una funcion: |·| : Σ∗ → N definida ası:

|ω| = n

Derivado de la definicion tenemos lo siguiente

1. La longitud de la cadena vacıa es cero |λ| = 0

2. La longitud de la concatenacion de dos cadenas es la suma de las lon-gitudes de cada cadena,si ϕ, ω ∈ Σ: |ω · ϕ| = |ω|+ |ϕ|

A continuacion se muestra un ejemplo de como se usa el metodo inductivoen la teoria de automatas, para desmostrar la ultima afirmacionDemostracion:

22 CAPITULO 1. INTRODUCCION

Procederemos por induccion sobre ϕBase: Si ϕ = λ entonces

|ω · ϕ| = |ω · λ| = |ω|+ 0 = |ω|+ |λ| = |ω|+ |ϕ|

Hipotesis de induccion: Supongamos que para cualquier palabra α, |α| ≤ nse tiene que:

|ω · α| = |ω|+ |α|Ahora sea ψ = α · β una palabra de longitud n+ 1 con α ∈ Σ∗ y β ∈ Σ

|ϕ · ψ| = |ϕ · α · β| = |ϕ · α|+ 1 = |ϕ|+ n+ 1 = |ϕ|+ |α · β| = |ϕ|+ |ψ|

Actividad 7 Investigar las propiedades de asociatividad e identico entreconcatenacion de cadenas

Definicion 10 Si Σ es un alfabeto podemos expresar el conjunto de todas lascadenas del alfabeto empleando la siguiente notacion Σk que es el conjunto detodas las cadenas de longitud k, tales que todos los sımbolos que las conformanpertenecen 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, 111y ası sucesivamente.Es importante hacer enfasis en el hecho de que Σ y Σ1 no son lo mismo, elprimero representa el conjunto formado por los sımbolos 0 y 1 y del segundosus miembros son las cadenas 0 y 1, cada una de las cuales tiene longituduno.

Definicion 11 Al conjunto de todas las cadenas tomadas de un alfabeto lollamaremos lenguaje. El lenguaje compuesto por todas las palabras sobre elalfabeto, 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 numeros binarios que representan un numero primo

El lenguaje de programacion C

el conjunto de todas las cadenas con igual cantidad de ceros y unos.

Una aplicacion de los lenguajes es un analizador lexico de un compiladorde algun lenguaje de programacion particular, en el cual se proporciona unacadena ASCII y deseamos saber si dicha cadena pertenece o no al conjuntode todos los programas validos para el lenguaje de programacion.

24 CAPITULO 1. INTRODUCCION

Capıtulo 2

Lenguajes regulares

Objetivo de la unidad: Conocer el concepto de expreson regular, surepresentacion mediante automatas finitos y sus aplicaciones en procesos decomputo y el entorno donde se desenvuelve el alumno

2.1. Automatas finitos

Para iniciar esta unidad se presentara un ejemplo practico, tomado dellibro Introduccion a la teorıa de automatas, lenguajes y computacion, de JohnE.Hopcroft

Ejemplo 10 Los protocolos que ayudan a manejar el dinero electronico (sonarchivos que se utilizan para pagar compras en Internet y que el vendedorrecibe con la garantıa de que el dinero es real)La parte de asegurar el dinero le corresponde al banco el cual debera encriptarsus archivos para garantizar que la falsificacion no sea un problema, ademasde mantener una base de datos con todo el dinero valido que ha emitido, paraasegurar que el dinero que va a dar a la tienda sea real (es decir que en lacuenta del cliente existan fondos), este proceso de compra, venta e intercam-bio de dinero puede ser modelado mediante automatas finitos

Otro ejemplo de un proceso que podemos modelar empleando automatasfinitos es el siguiente

Ejemplo 11 Las maquinas expendedoras de refrescos, dulces o cafe requieren

25

26 CAPITULO 2. LENGUAJES REGULARES

que se introduzca cierto importe para poder despachar algun producto, primerorequieren de seleccionar el producto posteriormente se necesita insertar lacantidad de dinero necesario dependendiendo de la seleccion realizada, lamaquina debera contabilizarlo para guardar en un estado la cantidad de dineroque fue introducido y en caso de que sea necesario dar cambio y que este seadevuelto correctamente, en este caso la entrada de nuestro automata es notener dinero acumulado ni opcion seleccionada, despues se siguen una se-cuencia de movimientos que nos llevan a obtener nuestro producto finalunavez que se ha completado la cantidad que cuesta el producto (este ejemplo seanalizara con mas detalle en el transcurso del capitulo)En muchas otras maquinas se emplean los automatas, ası que necesitamosestudiar ?Que es? y todas sus caracterısticas.

Actividad 8 Investigue dos ejemplos donde sea posible modelar un compor-tamiento mediante automatas.

2.1.1. Automatas finitos deterministicos AFD

Para comenzar mencionares que el automata finito deterministico es aquelque siempre esta en un solo estado despues de leer cualquier secuencia deentradas; la palabra determinista nos dice que para cada entrada existe ununico estado al que el automata puede llegar partiendo del estado actual;comencemos dando la definicion formal

Definicion 12 Un Automata 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 funcion Q×Σ→ Q que se llama funcion de transicion; esta recibecomo argumentos un estado y una entrada y devuelve un estado.

qF ⊂ Q es un conjunto de estados a los cuales llamaremos estados finales ode aceptacion.

2.1. AUTOMATAS FINITOS 27

Un automata puede ser representado mediante un grafo dirigido (digrafo)el cual se conoce como diagrama de transiciones, donde los vertices del mismocorresponden a los estados del automata, en el caso del estado inicial estetendra una flecha que apunta hacia el, y los estados finales se representaranmediante un cırculo con lınea doble; si existe una transicion del estado q al psobre la entrada a entonces existe un arco con etiqueta a que va del estado qal estado p en el diagrama de transicion. El automata acepta una cadena ωsi la secuencia de transiciones correspondientes a los sımbolos de ω conducendel estado inicial a un estado final.

Ejemplo 12 Sea Q = q0, q1, q2, q3 el conjunto de estados, qI = q0 elestado inicial, qF = q0 el conjunto de estados finales, Σ = 0, 1 el alfabetode entrada y la funcion

f q0 q1 q2 q3q0 ∅ 1 0 ∅q1 1 ∅ ∅ 0q2 0 ∅ ∅ 1q3 ∅ 0 1 ∅

El digrafo asociado al automata anterior es:

Figura 2.1: Grafo asociado a un automata

la funcion de transicion tambien 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 CAPITULO 2. LENGUAJES REGULARES

Definicion 13 Sea M = (Q,Σ, q0, f, F ) un AFD definimos la iteracion def 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 automatas, es como decide si aceptao no una secuencia de sımbolos de entrada (cadena). El lenguaje de un AFDes el conjunto de todas las cadenas que acepta el automata, formalmente:

Definicion 14 Sea M = (Q,Σ, q0, f, F ) un AFD, el lenguaje de M se definecomo:

L(M) := w ∈ Σ∗|f ∗(q0, w) ∈ F

Observacion 1 Sean L(A) y L(B) dos lenguajes sobre el alfabeto Σ, en-tonces L(A) = L(B) si y solo si L(A) ⊆ L(B) y L(B) ⊆ L(A).

Observacion 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.

Definicion 15 Dos automatas finitos se dicen equivalentes si reconocen elmismo lenguaje, es decir: Dados Mp = (Q,Σ, p0, f, F ),Mq = (Q,Σ, q0, f, F )AFD

MP ≡Mq ⇔ L(Mp) = L(Mq)

2.1.2. Automatas finitos no deterministicos AFND

Ahora, si se modifica el modelo del automata finito, para permitirle ningu-na, una o mas transiciones de un estado sobre el mismo sımbolo de entrada,al nuevo modelo lo conoceremos como automata finito no determinıstico.

Definicion 16 Un Automata Finito No Determinıstico (AFND) es una quin-tupla M = (Q,Σ, I,R, F ), donde

2.1. AUTOMATAS FINITOS 29

Q es un conjunto de estados

Σ es un alfabeto.

I ⊂ Q es un conjunto de estados a los cuales llamaremos estados iniciales.

R es una relacion sobre Q× Σ×Q que se llama relacion de transicion.

F ⊂ Q es un conjunto de estados a los cuales llamaremos estados finales.

Observacion 3 Si I se reduce a un solo estado y R es tal que sus elementospueden escribirse mediante una funcion entonces el automata sera deter-minıstico.

Definicion 17 Sea M un AFND y sea ω ∈ Σ∗ un camino que empieza enq0, inducido por ω = σ1σ2, · · · , σn en un automata es una n + 1-ada de es-tados (q0, q1, · · · , qn) tales que ∀k ∈ [1, 2, · · · , n], (qk−1, σk, qk) ∈ R. Tambiendiremos que el camino empieza en q0 e induce λ es (q0).

Definicion 18 Una palabra ω se dice reconocida por un AFND M , si ωinduce un camino que empieza en un estado inicial y termina en algun estadofinal.

Definicion 19 El lenguaje del AFND M , es el conjunto de todas las palabrasen Σ∗ que son reconocidas por M

L(M) = ω ∈ Σ∗|ω induce un camino (q0, · · · , qn) tal que q0 ∈ I y qn ∈ F

Observacion 4 Dado un AFND M = (Q,Σ, I,R, F ) entonces existe unAFD 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 CAPITULO 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, alos cuales denotaremos ası:

[q0] , [q1] , [q0, q1] , ∅

como δ (q0, o) = qo, q1tenemos: δ′ ([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 tambien pueden serconsideradas como un lenguaje de programacion, que nos permite realizaracciones importante como las de busqueda de elementos en los compiladores(errores como la falta de signos de puntuacion o palabras reservadas malescritas). Las expresiones regulares estan directamente relacionadas con losautomatas finitos deterministicos y no deterministicos, y en muchas oca-ciones son empleadas para describir componentes de software debido a queson mas faciles de entender que los automatas finitos. Otras caracteristicasimportantes de las expresiones regulares es que estas nos permiten definir alos lenguajes descritos por las distintas familias de automatas, los lenguajesregulares, con la ventaja de que las expresiones regulares ofrecen una formadeclarativa de expresar las cadenas que pretendemos aceptar, lo que permiteque se utilicen como lenguaje de entrada en muchos sistemas de proceso decadenas.

Definicion 20 Las Expresiones regulares sobre un alfabeto, se definen ası :

1. ∅ es una expresion regular.

2.2. EXPRESIONES REGULARES 31

2. λ es una expresion regular y se escribe: λ

3. ∀σ ∈ Σ : σ es expresion regular y se escribe: σ.

Ahora, si α y β son expresiones regulares, entonces tambien lo seran:

4. α ∪ β que escribiremos: α + β

5. α · β

6. α∗

Solo las expresiones que se obtienen por composicion finita de las reglasanteriores son expresiones regulares.

Proposion 1 Sea α una expresion regular. Entonces αR tambien es unaexpresion regular

Demostracion:Se procedera por induccion sobre la construccion de expresiones regulares

1. ∅R = ∅

2. λR = λR =λR

= λ = λ

3. Sea σ ∈ Σ entonces por la definicion 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 tambienlo son, entonces

(α + β)R = ωR|ω ∈ α + β = ωR|ω ∈ α ∪ ωR|ω ∈ β = αR ∪ βR

por lo tanto (α + β)R es expresion regular.

32 CAPITULO 2. LENGUAJES REGULARES

5. Si ϕ, ψ son palabras queremos probar que ψRϕR = (ϕψ)R

Base: si ϕ = λ

(ϕψ)R = (λψ)R = ψR = ψRλ = ψRλR = ψRϕR

Hipotesis de induccion: Sea α ∈ Σ∗ con |α| = n, n ≥ 1 entonces

(ϕψ)R = βR|β ∈ ϕψ = βR|β = a · b, a ∈ ϕ, b ∈ ψ = ψRϕR

Ahora para α, σ ∈ Σ∗

((ασ)ψ)R = (σ (αψ))R = (αψ)R σ

por la hipotesis de induccion

(αψ)R σ = ψRαRσ = ψR (σα)R

que es una expresion regular.

6. (α∗)R =(αR)∗

base (α0)R

= λn = λ =(αR)0

hipotesis de induccion (α∗)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 expresion regular.

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

2.2. EXPRESIONES REGULARES 33

Probablemente la definicion anterior nos haga pensar que las expresionesregualres no son tan comprensibles, pero quiza el siguiente ejemplo permitaque se pueda cambiar de opinion

Ejemplo 14

01∗ + 10∗

denota el lenguaje de todas las cadenas que comienzan con cero y estanseguidas por cualquier cantidad de unos o comienzan con uno y estan seguidasde cualquier cantidad de ceros.

Cerradura de Kleene

La Cerradura o clausura o estrella de Kleene de un lenguaje se denota porL∗ y representa el conjunto de las cadenas que se pueden formar tomandocualquier numero de cadenas de L, por ejemplo si L = 0, 11, L∗ consta deaquellas 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 dela 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 union deestos lenguajes.

Construccion de expresiones regulares

Se mostrara un ejemplo de como se construyen las expresiones regularesutilizando la definicion de las mismas

34 CAPITULO 2. LENGUAJES REGULARES

Ejemplo 16 Sea E el conjunto formado por todas las cadenas que tienencero o mas repeticiones de la cadena 01 alternados. Primero se desarrollauna expresion regular para el lenguaje formado por la cadena unica 01, pos-teriormente con ayuda del operador ∗, podermos obtener una expresion paratodas las cadenas de la forma 010101010 . . . 0101010Lo primero que se debe contemplar es que por la definicion de expresion reg-ular 0 y 1 son expresiones regulares, y representan los lenguajes 0 y 1,por el inciso 5 de la definicion la concatenacion de expresiones regulares esuna expresion regular, por lo cual 01 es una expresion regular que generaellenguaje 01. Para obtener todas las cadenas que constan de ceros y unosusamos 6 de la definicion y obtenemos la expresion regular (01)∗. Sin em-bargo el lenguaje asociado a (01)∗ solo reconoce cadenas que empiecen concero y terminan en uno, pero que pasa con las cadenas que comienzan enuno y terminen con cero o con uno, para contemplar todas las posiblilidadessera necesario construir tres expresiones regulares mas

(10)∗

0(10)∗

1(01)∗

y la expresion regular completa sera

(01)∗ + (10)∗ + 0(10)∗ + 1(01)∗

aqui el operador + nos ayuda a unir los cuatro lenguajes formados por cadauna de las expresiones regulares.

Es importante denotar que los operadores en las expresiones regulares yen las expresiones regulares conservan cierta precedencia dada de la siguienteforma

El operador ∗ tiene la mayor precedencia, se aplica solo a la secuenciamas pequena de sımbolos a su izquierda que constituyen una expresionregular bien formada.

El siguiente en precedencia es el operador concatenacion; una vez apli-cados todos los ∗ aplicamos la concatenacion.

Por ultimo se aplican los operadores de union.

2.3. LENGUAJES REGULARES 35

2.3. Lenguajes Regulares

Los Lenguajes regulares son elementos de la teorıa de la computacion queestan directamente vinculados con las expresiones regulares y los automatasfinitos deterministicos. Aunque las expresiones regulares describen los lengua-jes de manera diferente a como lo hacen los automatas finitos, ambas nota-ciones representan exactamente el mismo conjunto de lenguajes (lenguajesregulares), ademas tambien se vio que es posible construir automatas finitosdeterministicos asociados a automatas finitos no deterministicos, con lo cuallos lenguajes regulares tambien se encongraran vinculados con esta clase deautomatas.

Todo lenguaje definido mediante un automata finito deterministico,tambien puede definirse mediante una expresion regular.

Todo lenguaje definido por una expresion regular tambien puede definirsemediante un automata finito deterministico.

Definicion 21 Un conjunto A ∈ Σ∗ se dice regular si existe un AFD M talque L(M) = A

Observacion 5 Sea M un automata finito, entonces existe una expresionregular r para la cual L(r) = L(M)

Observacion 6 Un lenguaje es regular si y solo si es aceptado por un automa-ta finito

Es importante recordar que los lenguajes son conjuntos, con lo cual seles pueden aplicar las operaciones asociadas a los conjuntos y describir medi-ante las mismas algunas propiedades que nos ayuden a construirlos y enten-derlos de manera mas sencilla; a continuacion mencionamos algunas de laspropiedades de los lenguajes regulares

1. La union de dos lenguajes regulares es regular.

2. La interseccion 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 reflexion de un lenguaje regular es regular.

36 CAPITULO 2. LENGUAJES REGULARES

6. La cerradura de Kleen de un lenguaje regular es regular.

7. La concatenacion de dos lenguajes regulares es regular.

Capıtulo 3

Lenguajes libres de contexto

Objetivo de la unidad: Conocer el concepto de lenguaje independientedel contexto, cuales son las caracteristicas que posee y sus aplicaciones

Las Gramaticas independientes del contexto o libres de contexto juegan unpapel muy importante en la tecnologia de las computadoras desde la decadade 1960, ya que optimizaron e hicieron mas barata la tarea de implementarel analizador sintactico de los compiladores; posteriormente nos permitierondescribir formatos de documentos mediante la definicion del tipo de docu-mentos en la red.

3.1. Gramaticas libres de contexto

El lenguaje es el medio de comunicacion entre los seres humanos a travesde 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 lenguajey la semantica, que le da significado al lenguaje. Ademas de manera conjun-ta con los lenguajes tenemos la gramatica que estudia los elementos de unlenguaje y sus combinaciones. Ası como es importante podernos comunicarcon otras personas, actualmente tambien es importante podernos comunicarcon las computadoras; es decir establecer un lenguaje y una gramatica parafacilitar el uso de las mismas. Introduciremos de manera natural el conceptode gramatica mediante una analogıa con el lenguaje espanol y su gramatica.

37

38 CAPITULO 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 sedivide en verbo, preposicion, artıculo y advervio. Nosotros podemos decir queexiste 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 llamamossımbolos terminales, mientras que a las variables escritas entre < > lasconocemos como sımbolos no terminales; el proceso que sustituye unas vari-ables por otras se le conoce como produccion y a la variables < frase > sele conoce como sımbolo inicial.De manera formal tenemos

Definicion 22 Una Gramatica 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. GRAMATICAS LIBRES DE CONTEXTO 39

P es un subconjunto finito de (N \T )∗×N∗ → N∗ y a los elementos (u, v)deP los conocemos como producciones de G.

S es el sımbolo inicial.

En el parrafo previo a la definicion se describe cuales son los conjuntosN , y T ası como cual es el elemento S y las producciones correspondientesal ejemplo (2).

Notacion 2 A los sımbolos no terminales se les representa mediante letrasmayusculas, mientras que los sımbolos terminales seran representados medi-ante letras minusculas.

Definicion 23 Para ω, ω′ ∈ N∗ escribimos ω =⇒ ω′ si existen x, y ∈ N∗ yuna produccion u −→ v en P tal que

ω = xuy

yω′ = xvy

Decimos que ω deriva ω′

Escribimos ω∗

=⇒ z si ω = z o existen ω1, ω2, · · · , ωn con n ≥ 2 en N∗

tales queω = ω1, z = ωn y ωi =⇒ ωi+1

sin perdida de generalidad a esta transformacion la llamaremos derivacionen G y decimos que ω deriva a z.

Definicion 24 El lenguaje L(G) generado por G es el conjunto de palabrasen T , que puede ser derivado a partir de S

L(G) =ω ∈ T ∗|S ∗

=⇒ ω

Ahora, regresando al ejemplo anterior observamos que las produccionespueden generar frases como la siguiente

El cama gris duerme en la gata diariamente

La cual no es semanticamente aceptable, pues carece de significado, peroes aceptada por la sintaxis de la gramatica; debido a este comportamien-to sera necesario hacer modificaciones para que el lenguaje solo reconozcaoraciones que posean significado (es decir analizar el contexto de la oracion).

40 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

Definicion 25 Una gramatica es regular si cada produccion P es de la forma

α −→ xβ con (x ∈ T ∗, α, β ∈ N \ T )

o de la formaα −→ y con (α ∈ N \ T, y ∈ T ∗)

Decimos que una gramatica G es independiente del contexto si todas lasproducciones 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 Pconsiste de las producciones

S −→ aSb | λ

entonces L(G) = anbn|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 tengalas 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 .

Definicion 26 Sea G una gramatica independiente del contexto, una produc-cion A −→ α en la gramatica se llama regla de G. El sımbolo no terminalA es la parte izquierda de la regla, y la cadena α es la parte derecha de la regla.

En una produccion de la forma A −→ xβ, la letra x ∈ N ∪ T se llamamanipuladora de la produccion. Una produccion de la forma A −→ B con Ay B sımbolos no terminales, se llama produccion no generativa. Si G permitela derivacion

A∗

=⇒ Aϕ

entonces la letra no terminal A se dice recursiva izquierda. Si G permite laderivacion

A∗

=⇒ ϕA

entonces A se dice recursiva derecha. Si G permite la derivacion

A∗

=⇒ A

en uno o mas pasos entonces se dice que A es un no terminal cıclico.

3.2. ARBOLES DE DERIVACION 41

3.2. Arboles de derivacion

Cuando trabajamos con un lenguaje de alto nivel en una computadoraes necesario usar traductores que permitan a la maquina interpretar las ins-trucciones que el usuario programa; en los traductores de lenguajes se usanvarios estados de procesamiento. Cuando las frases o instrucciones validasdel lenguaje son especificadas por una gramatica de estructura de frases, elprimer estado del proceso de traduccion construye un arbol de derivacionpara la frase dada; una vez que esta es clara tendra asignado un unico arbolde derivacion para cada tipo sintactico, de esta manera es posible asociar unsignificado a cada frase de acuerdo con la gramatica de la misma. Al analisisanterior se le conoce con el nombre de analisis de sintaxis.

Cuando tenemos una gramatica independiente del contexto es muy utilpresentar sus producciones mediante arboles de derivacion; sus vertices estanetiquetados con sımbolos terminales o variables de la gramatica.

Sea G = (N, T, P, S) una gramatica independiente del contexto, un arbolse llama de derivacion (o de analisis gramatical) para G si:

1. Cada vertice tiene una etiqueta que es un sımbolo de N ∪ T ∪ ε.

2. La etiqueta de la raız es S.

3. Si un vertice es interior y tiene etiqueta A, entonces A debe de estaren N .

4. Si el vertice n tiene etiqueta A y los vertices n1, n2, n3, . . . , nk son loshijos del vertice, de izquierda a derecha con etiquetas x1, x2, x3, . . . , xkrespectivamente, entonces A −→ x1|x2|x3| . . . |xk debe ser una produc-cion de P .

5. Si el vertice n tiene etiqueta ε, entonces es una hoja y es el unico hijode su padre.

Ejemplo 20 G = (S,A , a, b , P, S) en donde:

S −→ aAS | a

A −→ SbA | SS | ba

42 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

Figura 3.1: Arbol de derivacion

3.2. ARBOLES DE DERIVACION 43

Podemos extender el ordenamiento desde la izquierda de los hijos paraproducir un ordenamiento de izquierda a derecha de todas las hojas.

Un arbol de derivacion es una descripcion natural de una oracion parti-cular de la gramatica G; si leemos las etiquetas de las hojas de izquierda aderecha se tendra dicha oracion y la cadena resultante sera el producto delarbol de derivacion.

Un subarbol de un arbol de derivacion es un vertice particular con todossus descendientes, las aristas que los conectan y sus etiquetas; la diferenciaes que la raız puede no ser el sımbolo inicial de la gramatica. Si en cada pasode una derivacion se aplica una produccion a la variable que se encuentramas a la izquierda la derivacion se llama extrema izquierda, esto se aplica demanera analoga para la derecha.Si ω ∈ L(G) tiene al menos un arbol de analisis gramatical particular, ωtiene una derivacion izquierda y derecha unicas. Como puede existir mas deun arbol de derivacion para ω puede haber varias derivaciones izquierda yderecha.Una gramatica independiente del contexto G de la que alguna palabra ten-ga dos arboles de analisis gramatical se dice que es ambigua. No hay queperder de vista que es posible que una gramatica produzca derivaciones quenos lleven a una cadena compuesta unicamente de sımbolos terminales, peroque no necesariamente representan una oracion con significado alguno, o norepresentan la instruccion que el programa necesita, como se observa en elsiguiente ejemplo.

Ejemplo 21 Consideremos la siguiente gramatica:

GE : S → A

S −→ if B then A else S

B −→ A = A

A −→ T

A −→ T + A

T −→ x|y|z

44 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

Ahora empleando la gramatica anterior construyamos un arbol de derivacionpara la instruccion:

if x = y then x else x+ y

trazaremos los pasos de la produccion de la frase anterior

S −→ if B then A else S

−→ if A = A then A else S

−→ if T = A then A else S

−→ if x = A then A else S

−→ if x = T then A else S

−→ if x = y then A else S

−→ if x = y then T else S

−→ if x = y then z else S

−→ if x = y then z else A

−→ if x = y then z else T + A

−→ if x = y then z else x+ A

−→ if x = y then z else x+ T

−→ if x = y then z else x+ y

Cada cadena en los pasos de derivacion comienza con el sımbolo S; peroobservamos que para la produccion

E −→ A

E −→ if x = y then x else x+ y

tenemos dos candidatos, y sera necesario elegir que produccion usar alternan-do con las diferentes posibilidades. Hasta agotar todas y llegar a la secuenciade movimientos que acepten la cadena correcta (esto es importante pues esposible obtener frases como la siguiente: if x = y then x = y else x = y, que

3.3. FORMAS NORMALES DE COMSKY 45

es diferente a la frase que se va a revisar). A dicho metodo se le conoce con elnombre de arriba a abajo1 porque la derivacion comienza a construirse desdeel nodo raız al tope del arbol bajando a traves de los niveles. Al procesoinverso se le conoce como de abajo a arriba2.

3.3. Formas normales de Comsky

Una gramatica formal esta en Forma normal de Chomsky si todas susreglas de produccion son de alguna de las sigientes formas:

A −→ BC

oA −→ α

donde A, B y C son elementos del conjunto de sımbolos no terminales y α esun sımbolo terminal.Ademas es importante mencionar que todo lenguaje deprogramacion que no posee a la cadena vacıa, se puede expresar por mediode una gramatica en la forma normal de Chomsky, y dada una gramaticaindependiente del contexto es posible construir a partir de ella una gramaticade Chomsky que reconozca el mismo lenguaje, para lo cual necesitaremosrealizar ciertos pasos:

1. Hay que eliminar los sımbolos inutiles: las variables o sımbolos termi-nales que no aparecen en ninguna derivacion de una cadena terminalque parta del sımbolo inicial.

2. Hay que eliminar las producciones ε con la forma A −→ ε para algunavariable A.

3. Hay que eliminar las producciones unitarias de la forma A −→ B paralas variables A y B.

3.4. Forma normal de Greibach

Existe otra forma normal interesante para los lenguajes independientesdel contexto no vacıos y sin la palabra vacıa. Se dice que una gramatica

1en ingles top-down2en ingles buttom-up

46 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

independiente del contexto esta en Forma normal de Greibach, si todas ycada una de sus reglas de produccion tienen un consecuente que empiezapor un sımbolo terminal. Formalmente, cualquiera de las reglas tendra laestructura:

A −→ αω

aqui α sera un sımbolo terminal y ω una cadena de cero o mas terminalesExiste un teorema que prueba que cualquier GIC, cuyo lenguaje no con-

tiene a la palabra vacıa, si no lo esta ya, se puede transformar en otra equiv-alente que sı este en forma normal de Greibach.

3.5. Ambiguedad

En secciones anteriores, se menciono que una palabra derivada de unagramatica puede ser representada mediante un arbol de derivacion, peroen muchas ocaciones el arbol de derivacion asociado a la palabra no esunico, existen dos o mas derivaciones, esto nos genera una estructura quellamamos Gramatica ambigua. Sea G = E, I , T, P, E donde T =+, ∗, (, ), a, b, 0, 1 con producciones

(1) E −→ I

(2) E −→ E + E

(3) E −→ E ∗ E

(4) E −→ (E)

(5) I −→ a

(6) I −→ b

(7) I −→ Ia

(8) I −→ Ib

(9) I −→ I0

(10) I −→ I1

Esta gramatica nos permite generar expresiones con cualquier secuencia deoperadores ∗ y + y las producciones dos y tres en el orden que nosotrosdeseemos.

3.6. AUTOMATAS DE PILA 47

Ejemplo 22 Observe que la cadena E+E∗E puede derivarse de dos formasdiferentes

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 enla segunda reemplazamos la primera E por E +E, esto generara dos arbolesde derivacion diferentes, si nosostros asociaramos valores numericos a estosdos diferentes derivaciones generariamos diferentes resultados, pues en laprimera solicita que la primera operacion que se realice sea la multiplicaciony luego la sum, mientras que la otra realiza primero la suma y despues mul-tiplica el resultado de la suma.Para que sea posible utilizar esta gramatica dentro de un compilador esnecesario modificarla, para que seleccione o propiorcione unicamente agru-pamientos adecuados.

¿Como eliminar la ambiguedad de la gramaticas?

No existe un algorimto que nos permita eliminar la ambiguedad de lasgramaticas en general, sin embargo exiten proceso que nos permiten en al-gunos casos eliminarla; para esto es necesario detectar primero cuales son lascausas mas importantes que generan la ambiguedad en una gramatica

No se respeta la precedencia de los operadores.

Una secuencia de operadores identicos puede agruparse desde la izquier-da o desde la derecha.

El primer problema se resuelve introduciendo mas variables cada unade las cuales representa las expresiones que comparten el mismo nivel, yel segundo problema se resolvera, respetando solo un tipo de derivacion depreferencia izquierda.

3.6. Automatas de Pila

En el capıtulo anterior se menciona que las expresiones regulares tienenasociado un automata finito; de manera analoga las gramaticas independien-tes del contexto tambien tienen asociado un automata al cual conoceremos

48 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

como Automata de Pila. Debido a esta similitud con las gramaticas indepen-dientes del contexto necesitaremos emplear dos estructuras que son funda-mentales en la definicion y uso de los automatas de pila.

La primera es la cinta de entrada que es un arreglo en donde sera guarda-da la cadena de sımbolos terminales que acepta el automata, se guardara unsımbolo por casilla del arreglo y se tendra una marca en la siguiente casilladel 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 estosa su vez puedan ser sustituidos o revisados por los sımbolos terminales enla cinta de entrada. En la pila el sımbolo que se encuentre mas a la derechasera el tope de la pila.

En los automatas de pila se producen dos tipos de movimientos: el primerointroduce o saca un sımbolo de la pila, y dependiendo de cual sea la accionrealizada el tope de la pila avanzara o retrocedera un lugar. El segundomovimiento no afecta directamente el tope de la pila, pero revisa un sımbolode la cinta de entrada.

Es posible definir un lenguaje para los automatas de pila para lo cual exis-ten dos maneras; la primera consiste en definir el lenguaje aceptado como elconjunto de todas las entradas para las cuales una sucesion de movimientosprovoca que el automata de pila vacıe su pila. La segunda manera consiste endesignar algunos estados como estados finales y definimos el lenguaje acepta-do como el conjunto de todas las entradas para las cuales alguna seleccion demovimientos provoca que el automata alcance un estado final. Ambas formasson equivalentes en el sentido de que si un conjunto es aceptado medianteel vaciado de la pila por algun automata, puede ser aceptado mediante elacceso de un estado final por otro automata y viceversa.

Definicion 27 Un Automata 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. AUTOMATAS 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.

Definicion 28 La forma de representar un estado valido en un automata depila es la siguiente: (qi, ϕ, σ) a la cual llamaremos configuracion, donde elestado en que nos encontramos o estado de control esta dado por qi, ϕ es elprefijo que se encuentra en la cinta de entrada y ya fue revisada y σ es lacadena 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 configuracion (qi, ϕ, σ), (con ϕ la cadena yarevisada en la cinta de entrada) escribe el sımbolo s en la primeracasilla a la derecha despues del ultimo sımbolo de ϕ; y nos lleva alestado q′i, esta transformacion se representa de la siguiente forma:

(qi, ϕ, σ)s−→ (q′i, ϕs, σ)

En otras palabras esta instruccion revisa el sımbolo que entra en la cintay lo coloca inmediatamente despues de la palabra que ya se encontrabaguardada.

q]write(u, q′)

La cual aplicada en la configuracion (qi, ϕ, σ) mueve el tope de la pilauna posicion a la derecha y escribe un sımbolo u en esa nueva posicion,pasando al estado q′i dicho movimiento es representado de la siguienteforma:

(qi, ϕ, σ)w−→ (q′i, ϕ, σu)

Este movimiento introduce a la pila un nuevo sımbolo.

q]read(u, q′)

50 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

La cual aplicada en la configuracion (qi, ϕ, σ′u) mueve el tope de la pila

a la izquierda y entra en el estado q′i, dicho movimiento es representadode la siguiente forma:

(qi, ϕ, σ)r−→ (q′i, ϕ, σ)

Este movimiento sacara un sımbolo de la pila.

Notacion 3 Es posible representar una secuencia de instrucciones en unautomata de pila

(q0, ϕ0, σ0) −→ (q1, ϕ1, σ1) −→ · · · −→ (qk, ϕk, σk)

donde cada movimiento es un movimiento de lectura, escritura o revision sedenotara de la siguiente forma:

(q0, ϕ0, σ0) =⇒ (qk, ϕk, σk)

Un automata de pila comienza su funcionamiento con el tope de la pi-la y de la cinta de entrada en la primera posicion. La cadena que analizapasa a traves de una secuencia de movimientos, mientras la secuencia no searechazada; si en algun momento todos los sımbolos de la cadena ya fueronrevisados, la pila se encuentra vacıa, y la ultima posicion de la cinta de en-trada corresponde a un estado final; entonces concluimos que la cadena esreconocida.

Definicion 29 Una configuracion inicial valida para un automata de pila esuna configuracion (q, λ, λ) en donde q es un estado inicial del automata; yla configuracion final es (q′, ϕ, λ), donde q es un estado final, ϕ la cadenaescrita en la cinta de entrada, de donde decimos que una cadena es aceptadapor el automata solo si M tiene la secuencia de movimientos:

(q, λ, λ) =⇒ (q′, ϕ, λ)

Donde q es el estado inicial, q′ es un estado final; el conjunto de cadenasaceptadas sera el lenguaje reconocido por el automata.

Ejemplo 23 Sea Mcm un automata de pila con S = a, b, c y U = a, b elalfabeto de la pila, el programa del automata sera el siguiente:

3.6. AUTOMATAS 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 coloco una etiqueta la cual esta relacionadacon el nombre de la instruccion del programa que ejecuta.

El lenguaje reconocido por el automata 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 esta en el centro de la cadenay su sufijo es igual a la inversa de su prefijo, con lo cual aceptara cadenascomo 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 automata.

El lenguaje Lcm es generado por la gramatica independiente del contexto:

Gcm : Σ→ S

S → aSa

S → bSb

S → c

52 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

Figura 3.2: AP para el lenguaje del palındromo con el centro marcado

3.6. AUTOMATAS DE PILA 53

Movimientos propios y automatas sin ciclos

En los automatas de pila existen varias subclases entre las que se encuen-tran los automatas con buen comportamiento, los cuales sin perdida de gen-eralidad reconocen los mismos lenguajes que toda la clase de los automatasde pila; a esta subclase se le conoce como Automatas de pila propios y a con-tinuacion se presenta una justificacion de la equivalencia entre esta subclasey los automatas de pila.

Automatas de pila propios

Cuando se ejecuta el programa de un automata de pila se pueden producircomportamientos que carecen de sentido y son improductivos, en particular:

1. Revisar mas alla 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 lalectura del mismo sımbolo.

· · · (q, ϕ, σ)w−→ (q′, ϕ, σu)

r−→ (q′′, ϕ, σ)

Observamos que el unico efecto es movernos del estado q al estado q′′, locual solo puede ocurrir si el automata tiene una instruccion de escritura

q]write(u, q′)

para la cual la etiqueta del estado q′ es la instruccion read.

4. Repeticion infinita de movimientos de escritura (un ciclo).

Los primeros tres tipos se analizaran en esta seccion, el ultimo tipo demovimiento improductivo se analizara en la siguiente seccion.

Definicion 30 En el programa de un automata de pila M una instruccionde escritura es impropia, si el siguiente estado al que apunta esta etiquetadocon una instruccion de lectura. Un automata se dice propio si no contienemovimientos impropios.

54 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

Las instrucciones impropias pueden ser eliminadas sin que esto altere ellenguaje reconocido por el automata, es decir, dado un automata M es posi-ble construir un automata propio M ′, anadiendo y borrando instrucciones dela siguiente forma:

Paso 1: Sean q y q′ dos estados para los cuales el automata tiene la secuenciade movimientos

(q, ϕ, σ)kmovwrite

=⇒ (q′′, ϕ, στ)kmov read

=⇒ (q′, ϕ, σ)

tenemos k movimientos de escritura seguidos del mismo numero de mo-vimientos de lectura, en otras palabras, el contenido de la pila no semodifica del estado q al estado q′ y ademas no se revisa ningun sımboloen la cinta de entrada.Siempre que

p ] mov (−, q)

con mov un movimiento permitido por el programa del automata, seauna instruccion en M , anadimos la instruccion

p ] mov (−, q′)

En caso de que el estado q sea el estado inicial en M entonces q′ sera elestado inicial en M ′. El procedimiento anterior puede realizarse paracada par de estados q y q′ para los cuales M presenta una secuencia demovimientos impropios.

Paso 2: Borrar cada instruccion impropia. Las instrucciones restantes sonel programa de M ′

Proposion 2 Sea M un automata de pila con movimientos impropios; esposible construir un automata de pila M ′ propio tal que L(M) = L(M ′).

Automatas de pila sin ciclos

El ultimo tipo de movimiento impropio se analizara en esta seccion.

Definicion 31 Un automata de pila propio M se dice sin ciclos si el progra-ma de este no contiene ciclos de instrucciones de escritura:

3.7. LENGUAJES NO REGULALES 55

q0]write(u0, q1)

q1]write(u1, q2)

...

qn]write(un, qn + 1) · · ·

Suponga que se tiene un automata con un ciclo de instrucciones de escrit-ura, estas imprimen los sımbolos u0, u1, · · · , un · · · de manera infinita, ası losestados: q0, q1, · · · , qn no pueden aparecer como una secuencia de movimientosaceptados.

Proposion 3 Para algun automata de pila determinıstico M es posible cons-truir un automata de pila M ′ sin ciclos tal que L(M) = L(M ′).

3.7. Lenguajes no regulales

Los lenguajes no regulares o lenguajes independientes del contexto estanvinculador con las gramaticas independientes del contexto y ademas tienenpropiedades de cerradura similares a las de los lenguajes de las expresionesregulares, las cuales se presentan a continuacion.

Primero se estudiara la interseccion de los lenguajes independientes delcontexto L con el conjunto regular R.Sea

Mf = (Qf , T, Pf , If , Ff )

un automata finito para R y

Mp = (Qp, T, U, Pp, Ip, Fp)

un automata de pila para L. Al realizar la interseccion de estos dos automatasobtenemos el automata de pila

M = (Q, T, U, P, I, F )

donde Q = Qp ×Qf , I = Ip × If , F = Fp × Ff

El programa de M sera el siguiente:

56 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

Si Mp tiene y Mf tiene entonces M tiene

q]scan(s, q′) ps−→ 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 automata M reconoce la secuencia de movimientos para ω

((q, p).λ, λ)T

=⇒ ((q′, p′), ω, λ)

con (q, p) ∈ y (q′, p′) ∈ F si y solo si

(q, λ, λ)T

=⇒ (q′, ω, λ)

esta en Mp y

=⇒ p′

esta en Mf

Puesto que el complemento de un conjunto regular es regular, y L−R =L ∩ Rc entonces L − R sera un lenguaje independiente del contexto. Parapoder trabajar con la cerradura de los lenguajes independientes del contextoy las operaciones de conjuntos (union, concatenacion e inversa) utilizamos surelacion con las gramaticas independientes del contexto.Dadas dos gramaticas

G1 = (T,N1, P1,Σ1)

G2 = (T,N2, P2,Σ2)

dos gramaticas independientes del contexto con el mismo alfabeto terminalT , pero con conjuntos no terminales disjuntos, N1 ∩ N2 = ∅ entonces lagramatica para el lenguaje resultante de concatenar L = L(G1) · L(G2) seobtendra usando nuevos sımbolos terminales A1, A2 en lugar de Σ1, Σ2 yanadiendo la produccion

Σ −→ A1A2

a la union de P1 y P2, y para completar agregamos la produccion Σ −→ λ siG1 tiene Σ1 −→ λ y Σ2 −→ λ.

3.7. LENGUAJES NO REGULALES 57

La clase de los lenguajes independientes del contexto no son cerradas bajolas operaciones de interseccion y complemento, lo cual demostraremos pormedio de un contraejemplo; sean

L1 = anbncm|m,n ≥ 0

L2 = ambncn|m,n ≥ 0La interseccion de L1 y L2 es

L1 ∩ L2 = anbncn|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 fuerasiempre independiente del contexto, podrıamos demostrar la cerradura bajointerseccion usando las leyes de De Morgan.

L1 ∩ L2 = (Lc1 ∪ Lc

2)c

con lo cual el complemento no es independiente del contexto.Para estudiar el traductor de estado finito de un lenguaje independientedel contexto es util pensar en terminos de un automata de pila que generelenguajes independientes del contexto, un automata de pila generador (APG)es un automata en el cual consideramos la cinta de entrada como cinta desalida (impresion) y reemplazamos cada movimiento scan

q]scan(s, q′)

con un movimiento printq]print(s, q′)

que escribe el sımbolo s en la cinta de salida. Claramente el APG genera unacadena ω (esto es, escribe ω en la cinta de salida) por la travesıa

(q, λ, λ)T

=⇒ (q′, ω, λ)

si y solo si la maquina que representa un automata reconoce ω por la mismasecuencia de movimientos.El automata generador

Mg = (Qg, S, U, Pg, Ig, Fg)

58 CAPITULO 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 combinacion 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 encadenas en L. Esto es, M genera ϕ, por la travesıa

((q, p), λ, λ)T

=⇒ ((q′, p′), ϕ, λ)

con (q, p) ∈ I, (q′, p′) ∈ F si y solo si Mg genera alguna cadena ω por latravesıa

(q, λ, λ)T

=⇒ (q′, ω, λ)

y ϕ es la traduccion de ω para M

pω/ϕ=⇒ p′

el programa de M se especifica en la tabla (3.2) y se anade una instruccionadicional

q]null(q′)

La cual nos coloca en el estado q′ del automata sin hacer movimientos en eltope de la pila. La instruccion null es analoga a la transicion λ en un automatade 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 despues pueden ser eliminados)

3.7. LENGUAJES NO REGULALES 59

Teorema 3 La clase de los lenguajes independientes del contexto con al-fabeto terminal T es cerrada bajo las operaciones de union, concatenacion,cerradura e inversion (reversa), interseccion y diferencia con un conjuntoregular. Esto es si L1 y L2 son lenguajes independientes del contexto y R esun conjunto regular entonces

L1 ∪ L2 LR1 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 tieneq]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: Especificacion del programa de un APG para la traduccion deL(Mg) por M

60 CAPITULO 3. LENGUAJES LIBRES DE CONTEXTO

Capıtulo 4

Maquinas de Turing

Objetivo de la unidad: Comprender y conocer el funcionamiento deuna maquina de Turing y para que se puede utilizar

Ahora vamos a abordar la cuestion de que lenguajes pueden definirse pormedio de dispositivos computacionales, sean cuales fueren. Esta cuestion esequivalente a preguntarnos que pueden hacer los computadores, dado que elreconocimiento de las cadenas que forman parte de un lenguaje es un modoformal de expresar cualquier problema y la resolucion es un equivalente ra-zonable de lo que hacen los computadores.

Un problema que ningun computador puede resolver se denomina inde-cidible. Supongamos que se desea determinar si un computador puede re-solver o no algun otro problema. Podemos intentar escribir un problema quelo resuelva, pero, si no se nos ocurre como hacerlo, podrıamos intentar quetal programa no puede existir. Quiza serıa posible demostrar que este nue-vo problema es indecidible suponiendo que existe un programa que resuelveel problema y desarrollar otro programa paradojico que tenga que efectuardos acciones contradictorias. Supongamos que se debe que el problemaP1 esindecidible y que P2 es un programa nuevo que nos gustarıa demostrar quetambien es indecidible. Supongamos que existe un programa representadoen la siguiente imagen por el rombo con la etiqueta decide que imprime sio no dependiendo de si la codificacion del problema P2 (que constituye suentrada) 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 construccion, representado por la caja cuadra-

61

62 CAPITULO 4. MAQUINAS DE TURING

Figura 4.1: Reduccion de un problema P1 a un problema P2

da de la figura que convierta los problemas P1 en problemas P2 que tengan lamisma respuesta. Esto es cualquier cadena del lenguaje P1 se convertira enuna cadena perteneciente a P2, y cualquier cadena construida sobre el alfa-beto de P1 que no este en el lenguaje P1 se convertira en una cadena que noforme parte del lenguaje P2. Una vez que disponemos de este procedimientode construccion P1 se puede resolver como sigue:

1. Dado un problema P1, esto es dado una cadena ω que no puede perteneceral lenguaje P1, se aplica el algoritmo de construccion para producir unacadena x.

2. Se comprueba x esta 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 cualquiermodo dice la verdad acerca de ω. Dado que sabemos que no existe ningunalgoritmo capaz de decidir la pertenencia de una cadena P1, disponemosde una demostracion por reduccion al absurdo de que no existe el algoritmohipotetico de decision, para P2 o, lo que es lo mismo, de que P2 es indecidible.

¿Puede realmente una computadora hacer todo esto? Al examinarun programa podrıamos preguntarnos si en realidad, buscar contraejemploses util. Si el contraejemplo mas pequeno estuviera en el orden de magnitudde los billones, se producira un error de desbordamiento antes de que fueraposible encontrar una posible solucion. De hecho, se podrıa argumentar queun computador con 128 megabytes de memoria principal de memoria prin-cipal y 30 gigabytes de disco solo tiene 25630128000000 estados, y es, porlo tanto, un automata finito. Sin embargo, no es productivo considerar quelos computadores se comporten como automatas finitos, como tampoco lo esconsiderar que el cerebro lo hace (aunque la idea original del automata finitofuera esta). El numero de estados implicados es tan grande, y los limites tanpoco claros, que no se obtendra ninguna conclusion util. De hecho, existenrazones para creer que es posible expandir el conjunto de estados de unacomputadora tanto como se quiera.Es un error habitual intentar demostrar que un problema P2 es indecidiblemediante la reduccion de P2 a algun problema P1 que se sabe que es inde-cidible. Esto equivale a demostrar la proposicion si P1 es decidible, entonces

4.1. DEFINICION DE UNA MAQUINA DE TURING 63

P1 es decidible. Esa proposicion, aunque ciertamente es verdadera, no es util,ya que su hipotesis, P1 es decidible, es falsa. La unica manera de demostrarque un problema nuevo P2 es indecidible es reducir a P2 un problema P1

que se sabe es indecidible. De esta forma se demuestra la proposicion si P2

es decidible, entonces P1 es decidible. La conversion contradictoria de estaproposicion 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. Definicion de una Maquina 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 programadoresuna guıa sobre lo que se puede o no llevar a cabo mediante la programacion.Esta teorıa tambien tiene un gran impacto practico si se trata de discu-tir, problemas que, aun siendo decidibles, requieren un tiempo muy grandepara su resolucion. Para los programadores y disenadores de sistemas, estosproblemas, llamados problemas intratables tienden a presentar mas dificul-tades que los problemas indecidibles. La razon para ello es que, mientras quesuele ser obvio que los problemas indecidibles efectivamente lo son y, en lapractica, raramente se intentan resolver, los problemas intratables aparecencontinuamente. Ademas, a menudo dan lugar a pequenas modificaciones delos requisitos o a soluciones heurısticas. Por tanto, los disenadores tienen queenfrentarse frecuentemente al hecho de tener que decidir si un problema es ono intratable, y que hacer si lo es.

A finales del siglo XIX, el matematico David Hilbert se pregunto siera posible encontrar un algoritmo para determinar la verdad o falsedad decualquier proposicion matematica. En particular, se preguntaba si existirıaun modo de determinar si cualquier formula del calculo de predicados deprimer orden, aplicada a enteros, es verdadera. Dado que el calculo de predi-cados de primer orden sobre los enteros es suficientemente potente como paraexpresar frases como esta gramatica es ambigua, si Hilbert hubiera tenido exi-to, existirıan algoritmos para dichos problemas, que ahora sabemos que noexisten esta proposicion se conoce con el nombre de problema de Hilbert.

En 1963, Alan Mathinson Turing propuso la maquina que lleva su nombre

64 CAPITULO 4. MAQUINAS DE TURING

como modelo de cualquier computacion posible. Este modelo se parece mas auna computadora que a un programa, aunque las verdaderas computadoraselectronicas, o incluso los electromecanicas, tardaron varios anos en ser con-struidas.

La maquina de Turing consta de una unidad de control, que pueda estaren cualquier estado tomado de un conjunto infinito. Hay una cinta divididaen cuadrados o casillas, y cada casilla puede contener un sımbolo, tomado deotro conjunto infinito. Inicialmente, se situa en la cinta de entrada, que esuna 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 laderecha y hacia la izquierda, contiene, inicialmente, un sımbolo denominadoespacio en blanco. El espacio en blanco es un sımbolo de cinta, pero no unsımbolo de entrada, y puede haber tambien otros sımbolos de cinta ademasde los sımbolos de entrada y del espacio en blanco. Existe una cabeza dela cinta que siempre esta situada sobre una de las casillas de la cinta. Sedice que la maquina de Turing esta senalando dicha casilla. Al principio, lacabeza de la cinta se encuentra en la casilla de la entrada situada mas a laizquierda. Un movimiento de la maquina de Turing es una funcion del estadode la unidad de control y del sımbolo de la cinta al que senala la cabeza. Enun movimiento, la maquina de Turing:

1. Cambiara de estado, el siguiente estado puede ser el mismo que elactual.

2. Escribira un sımbolo de cinta en la casilla senalada por la cabeza. Estesımbolo de cinta sustituye al sımbolo que estuviera anteriormente en lacasilla, el sımbolo escrito puede ser el mismo que habıa en dicha casilla.

3. Movera la cabeza de la cinta hacia la izquierda o hacia la derecha.Es necesario que haya un movimiento, y no se permite que la cabezapermanezca en el mismo lugar. Esta limitacion no restringe lo que unamaquina de Turing puede computar, dado que cualquier secuencia demovimientos con la cabeza estacionaria podrıa condensarse, junto conel movimiento siguiente de la cabeza, en un unico cambio de estado, unnuevo sımbolo de cinta y un movimiento hacia la izquierda o hacia laderecha.

La notacion formal para una Maquina de Turing (MT) es similar a la utilizadapara los automatas finitos o para los automatas a pila.

4.2. CONSTRUCCION MODULAR DE UNA MT 65

Definicion 32 Una Maquina 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 subconjuntode Γ

δ La funcion de transicion. Los argumentos de δ(q,X) son un estado q y unsımbolo de la cinta X. el valor de δ(q,X), si esta es una tupla (p, Y, S)donde

1. p es el estado siguiente de Q

2. Y es el sımbolo de Γ, que se escribe en la casilla senalada por lacabeza de la cinta y que sustituye al sımbolo que se encontraba endicha casilla.

3. S es un sentido I o D (izquierda o derecha) que nos indica en quesentido se mueve la cabeza

q0 Es el estado inicial.

B Es el sımbolo del espacio en blanco B ∈ Γ, y aparecera inicialmenteen todas las casillas de la cinta, menos en aquellas que contienen lossımbolos de entrada

F ⊂ es el conjunto de estados finales o de aceptacion

4.2. Construccion modular de una MT

Para describir formalmente lo que hace una maquina de Turing, es nece-sario desarrollar una notacion para describir sus configuraciones o descrip-ciones instantaneas, parecida a la notacion que desarrollo para los automatasa pila.

En principio una maquina de Turing dispone de una cinta de longitud in-finita, por lo cual podrıa suponerse que no es posible describir especificamentesu configuracion. Sin embargo, despues de un numero finito de movimientos,la maquina de Turing solo habra recorrido un numero finito de casillas. Por

66 CAPITULO 4. MAQUINAS DE TURING

tanto, para cualquier configuracion existe un prefijo y un sufijo infinito decasillas que no se han recorrido nunca. El contenido de dichas casillas debeser

espacios en blanco o

sımbolos del conjunto finito de sımbolos de entrada.

por lo tanto, en una configuracion solo se muestran las casillas que seencuentren entre el sımbolo mas a la izquierda y el sımbolo mas a la derechade la cinta que no sean espacios en blanco, ademas, habra que incluir unnumero finito de espacios en blanco en la configuracion, si se da la condicionespecial de que la cabeza de la cinta senale a uno de los espacios en blancosituados antes o despues de la cadena de entrada.

Ademas de la representacion de la cinta, debe ser posible representar elestado de la unidad de control, ası como la posicion de la cabeza de la cin-ta. Para ello, insertaremos el estado en la cinta, situandolo inmediatamentea la izquierda de la casilla senalada por la cabeza. Para que la cadena querepresenta 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 comoestado ningun 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 notengan nada en comun con los sımbolos de la cinta, dado que la operacionde la maquina de Turing no depende de como se llamen sus estados. Portanto, utilizaremos la cadena x1x2 . . . xi−1qxixi+1 . . . xn para representar unaconfiguracion en la que:

1. q es el estado de la maquina de Turing.

2. La cabeza de la cinta senala al i-esimo sımbolo a partir de la izquierda.

3. x1x2 . . . xn es la porcion de la cinta que se encuentra entre los sımbolosno blancos situados mas a la izquierda y mas a la derecha. Como ex-cepcion, si la cabeza senala a alguna casilla a la izquierda del sımbolono blanco que se encuentre mas a la izquierda, o a alguna casilla a laderecha del sımbolo no blanco que se encuentre mas a la derecha, en-tonces algunos caracteres prefijos o sufijos de x1x2 . . . xn seran espaciosen blanco, siendo i = 1 o i = n, respectivamente.

4.2. CONSTRUCCION MODULAR DE UNA MT 67

Los movimientos de una maquina de Turing se describen utilizando lanotacion 7→M .

Ejemplo 24 La siguiente maquina de Turing acepta el lenguaje 0n1n|n ≥ 1.Inicialmente, sobre la cinta se escribe una secuencia finita de ceros y unos,precedida y seguida por un numero finito de espacios en blanco. Alternativa-mente, la maquina de Turing cambiara primero un 0 por una x y luego un 1por una y, hasta que se hayan cambiado todos los ceros y unos. La maquinade Turing repite los pasos que se describen a continuacion mas detallada-mente, y comenzando por el extremo izquierdo de la entrada. Cambia un 0por una x y se mueve hacia la derecha, pasando por encima de todos los cerose y que encuentre, hasta llegar a un 1. Cambia el 1 por una y y se muevehacia la izquierda, pasando por encima de todas las y y de todos los cerosque vaya encontrando, hasta llegar a una x. Entonces, busca el primer 0 quese encuentre inmediatamente a su derecha y, si lo encuentra, lo sustituyepor una x y repite el proceso igual que antes, cambiando un 1 por una y. Sila entrada no es de la forma 0∗1∗, la maquina de Turing no conseguira fi-nalmente realizar ningun movimiento, y dejara de operar sin aceptar. Sinembargo, si termina cambiando todos los ceros por x en la misma pasada enla que cambia el ultimo 1 por una y, entonces determina que la cadena deentrada era de la forma 0n1n y acepta. La maquina de Turing que realiza laserie de movimientos es la siguiente:

M = (q0, q1q2, q3, q4 , 0, 1 , 0, 1, X, Y,B , δ, q0, B, q4)

donde δ esta representada mediante la siguiente tabla

Estado 0 1 X Y Bq0 (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 maquina de Turing para 0n1n

Mientras M realiza los pasos anteriores, la porcion de la cinta que ya hasido recorrida por la cabeza de la cinta correspondera siempre a una secuen-cia de sımbolos descrita mediante la expresion regular X∗0∗Y ∗1∗. Es decir,

68 CAPITULO 4. MAQUINAS DE TURING

habra algunos ceros que ya han sido sustituidos por X, seguidos de algunosceros que todavıa no han sido sustituidos. Luego, se encontraran algunos unosya reemplazados por Y , seguidos de unos que aun no han sido reemplazados.A continuacion, 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 senalar al 0 quequede mas a la izquierda. Si M se encuentra en el estado q0 y la cabeza senalaa un 0, la regla del extremo superior izquierdo de la figura anterior indica queM debe pasar por el estado q1, reemplazar el 0 por una X, y moverse haciala derecha. Una vez en el estado q1, M sigue moviendose hacia la derecha,pasando por encima de todos los ceros y todas las Y que encuentre, mientraspermanece en el estado q1. Si M encuentra una X o una B, deja de oper-ar. Sin embargo, si M encuentra un 1 cuando esta en el estado q1, sustituyedicho 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 delos ceros y las Y que encuentre, mientras permanece en el estado q2. CuandoM alcanza la X que se encuentra mas a la derecha, que determina cual esel extremo derecho del bloque de ceros que ya han sido sustituidos por X, Mvuelve 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 acabamosde escribir.

2. Si M encuentra una Y , significa que ya ha cambiado todos los cerospor X. Si habıa cambiado todos los unos por Y , entonces la entradaera de la forma 0n1n, y M aceptarıa. Por tanto, M pasa al estado q3 ycomienza a moverse hacia la derecha, pasando por encima de las Y . Siel primer sımbolo distinto de una Y que encuentra M es un espacio enblanco, entonces efectivamente habıa en la entrada el mismo numerode ceros que de unos, de forma que M pasa al estado q4 y acepta. Porotra 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ıaque la entrada era incorrecta, y M tambien se detendrıa.

A continuacion emplearemos la maquina M anterior para comprobar sila cadena 0011 es aceptada por la maquina de Turing. Comenzamos con Men el estado q0, y senalando al primer 0, con lo cual la configuracion iniciales q00011, presntamos a continuacion la secuencia completa de movimientos

4.2. CONSTRUCCION MODULAR DE UNA MT 69

de M es:

q0001 7→ Xq1011 7→ X0q111 7→ Xq20Y 1 7→ q2X0Y 1 7→ Xq00Y 1 7→

XXq1Y 1 7→ XXq11 7→ XXq2Y Y 7→ Xq2XY Y 7→ XXq0Y Y 7→

XXY q3Y 7→ XXY Y q3B 7→ XXY Y Bq4B

Aqui se presenta otro ejemplo, en el que se examina que hace M con laentrada 0010, la cual es una cadena que no pertence al lenguaje aceptadopor la maquina.

q00011 7→ Xq1010 7→ X0q110 7→ Xq20Y 0 7→ q2X0Y 0 7→

Xqo0Y 0 7→ XXq1Y 0 7→ XXY q10 7→ XXY q1B

El comportamiento de M con 0010 recuerda su comportamiento con 0011,hasta que alcanza la configuracion XXY 0q1B. Sin embargo, en el estado q1,M no puede realizar ningun movimiento si el sımbolo de la entrada al quesenala es B. Por tanto, M deja de operar sin aceptar esta entrada.

La simbologıa que se usa normalmente en las maquinas de Turing essimilar a la utilizada en otros tipos de automatas.

Las letras minusculas iniciales del alfabeto se utilizan para los sımbolos deentrada.

Las letras mayusculas, normalmente las de la zona final del alfabeto, seutiliza como sımbolos de la cinta que pueden o no formar parte delconjunto de sımbolos de entrada. Sin embargo, generalmente se usa Bpara representar el sımbolo correspondiente al espacio en blanco.

Las letras minusculas del final del alfabeto se utilizan para designar cadenasformadas por sımbolos de entrada.

Las letras griegas representan cadenas de sımbolos de cinta.

Letras como q, p, u otras proximas, representan estados.

70 CAPITULO 4. MAQUINAS DE TURING

4.3. El lenguaje de una Maquina de Turing

Podremos decir que la forma en la que una maquina de Turing aceptauna cadena es la siguiente: la cadena de entrada se situa en la cinta y lacabeza comienza senalando el sımbolo de entrada que se encuentra mas a laizquierda; si la maquina de Turing llega a un estado de aceptacion al final delproceso, se considera que la cadena es reconocida, en caso contrario, decimosque la cadene no fue aceptada.

De manera formal dada una maquina de Turing M = (Q,Σ,Γ, δ, q0, B, F ),el lenguaje L(M) es el conjunto de cadenas ω de Σ∗ tales que q0ω 7→∗ αpβpara algun estado p del conjunto de estado finales F , y cualesquiera dos ca-denas de cinta α y β. Los lenguajes que son pueden ser aceptados por lamaquina de Turing reciben el nombre de lenguajes recursivamente enumer-ables o lenguajes RE.

Sin embargo este no es el unico metodo para la aceptacion de una cadena,existe otro que comunmente se le conoce con el nombre de aceptacion porparada. Se dice que una maquina de Turing se para si alcanza un estadoq cuando senala a un sımbolo de la cinta X, sin que se produzca ningunmovimiento en dicha situacion; es decir δ(q,X) no esta definida. Siemprese puede suponer que una maquina deTuring se para si acepta, es decir sinintroducir variaciones en el lenguaje aceptado, se puede hacer que δ(q,X) sequede sin definir siempre que q sea un estado de aceptacion. En general amenos que se especifique lo contrario, suponemos que una maquina de Turingsiempre se para cuando esta en un estado de aceptacion, aunque no en todoslos casos ocurre esto. Los lenguajes reconocidos por maquinas de Turing quesiempre se paran, acepten o no, se les conoce con el nombre de recursivos.Las maquinas de Turing que siempre se paran con independencia de queacepten o no, son un buen modelo de algoritmo. Si existe un algoritmo pararesolver un problema dado, entonces se dice que el problema es decidible, conlo cual se observa que las maquinas de Turing que siempre se paran, tienenun papel importante en la teoria de la decidibilidad.

4.4. VARIANTES DE UNA MAQUINA DE TURING 71

4.4. Variantes de una Maquina de Turing

Existen mucho modelos de computacion relacionados con las maquinas deTuring, que poseen el mismo potencial como reconocedores de lenguajes, Unode ellos es la maquina de Turing con varias cintas, la cual puede simular auna computadora, sin embargo las cintas extra no anaden mejoras al modelo,en cuanto a la cuestion de aceptar lenguajes.

4.4.1. Maquina de Turing con varias cintas

este dispositivo dispone de una unidad de control (estado) y un numerofinito de cintas. Cada cinta se divide en casillas y cada casilla puede contenercualquier sımbolo del alfabeto finito de la cinta, ademas de contener al espacioen blanco. Un subconjunto de la cinta que no incluye al blanco, es el conjuntode los sımbolos de entrada. el conjunto de los estados incluye un estado inicialy varios estado de aceptacion, inicialmente

1. La entrada se situa en la primera cinta.

2. Las casilla de las cintas restantes contienen espacios en blanco.

3. La unidad de control esta en el estado inicial.

4. La cabeza de la primera cinta apunta a la izquierda de la entrada.

5. El resto de las cabezas de las otras cintas apuntan a casillas arbitrarias.

Cada movimiento dependera del estado y del sımbolo leıdo por cada unade las cabezas de la cinta, en cada movimiento la maquina hace los siguiente

1. La unidad de control pasa a un nuevo estado.

2. Se escribe un nuevo sımbolo de la cinta en las casillas a las que apuntala cabeza de cada cinta.

3. Cada una de las cabezas de cinta realiza un movimiento que puedeser, hacia la izquierda, hacia la derecha o estacionario, las cabezas semueven de manera independiente.

Una diferencia entre las transiciones de la maquina con una cinta y lade varias cintas es que en la primero no podiamos tener movimientos esta-cionarios, mientras que en la maquina con varias cintas si es permitido.

72 CAPITULO 4. MAQUINAS DE TURING

4.4.2. Maquinas con pilas multiples

Este modelo esta basado en la generalizacion de los automatas de pila.Pues si el automata de pila tuviera dos pila podria reconocer lenguajes re-conocidos por las maquinas de Turing, mientras que con una sola pila (comoes su definicion) no es posible. Como consecuencia de esta generalizacion,surgen las maquinas contadoras, las cuales solo se limitan a almacenar unnumero finito de enteros y a realizar movimientos diferentes dependiendo desi alguno de sus contadores esta en cero.

Figura 4.2: Esquema de una maquina de turing con multiples pilas

La maquina con pilas multiples tiene una unidad de control, que se en-cuentra en un estado de su conjunto finito de estados posibles, y un alfabetode pila finito que utiliza para todas sus pilas, cada movimiento se basa en

1. El estado de su unidad de control.

2. El sımbolo de entrada leıdo, que ha de formar parte del alfabeto finitode los sımbolos de entrada, no permitiendo transiciones sin valor (ε)

3. El sımbolo en el tope de cada una de sus pilas.

En cada movimiento la maquina puede

Pasar a un nuevo estado.

Sustituir el sımbolo en el tope de cada una de sus pilas por una cadenaformada por cero o mas sımbolos de pila. La cadena que se introduceen cada pila puede ser diferente para cada una de ellas. La maquina conpilas multiples acepta una o varias cadenas si llega a un estado final.

Teorema 4 Si un lenguaje L es aceptado por una maquina de Turing, en-tonces L es aceptado por una maquina con dos pilas.

4.4.3. Maquinas contadoras

Una maquina contadora puede verse de dos formas

4.4. VARIANTES DE UNA MAQUINA DE TURING 73

1. La maquina contadora tiene la misma estructura que la maquina conpilas multiples, pero dispone de contadores en lugar de pilas. Los con-tadores almacenan cualquier entero no negativo, peros solo puede dis-tinguir si un contador esta a cero o no. Es decir, cada movimiento dela maquina contadora depende de su estado, de su sımbolo de entrada,y de cuales de sus contadores estan en cero, suponiendo que alguno loeste. En un movimiento, la maquina contadora puede

a) Cambiar de estado.

b) Sumar o restar uno a cualquiera de sus contadores independiente.

c) Sin embargo, los contadores no pueden llegar a ser negativos, demodo que no se puede restar 1 a un contador que ya se encuentraa 0.

2. Como una maquina con pilas multiples con las siguientes restricciones

a) Solo hay dos sımbolos de pila, a los que lamaremos Z0 (el marcadorde fondo de la pila) y X.

b) En cada pila se encuentra inicialmente Z0.

c) Z0 solo puede sustituirse por una cadena de la forma XiZ0, paraalgun i ≥ 0.

d) X solo puede sustituirse por Xi para algun i ≥ 0. Es decir, Z0

unicamente aparece en el fondo de cada pila, y todos los demassımbolos que se encuentren en la pila son X.

Ambas deiniciones son equivalentes, ası que no existe problema por queusemos una u otra.

Hay algunas observaciones acerca de los lenguajes aceptados por las maquinascontadoras que, aunque evidentes, merece la pena mencionar:

Observacion 7 Todo lenguaje aceptado por una maquina contadora es re-cursivamente enumerable. Esto ocurre porque una maquina contadora es uncaso especial de maquina con pilas, y una maquina con pilas es un caso es-pecial de maquina de Turing con varias cintas, que solo acepta lenguajesrecursivamente enumerables.

74 CAPITULO 4. MAQUINAS DE TURING

Observacion 8 Todo lenguaje aceptado por una maquina con un contadores independiente del contexto. Una maquina contadora por la definicion 2,es una pila, ası que una maquina con un contador es un caso especial demaquina con una sola pila o, lo que es lo mismo, un automata a pila. Dehecho, todos los lenguajes aceptados por las maquinas con un contador sonaceptados por automatas a pila.

El resultado mas sorprendente acerca de las maquinas contadoras es quedos contadores son suficientes para simular una maquina de Turing y, por lotanto, para aceptar cualquier lenguaje recursivamente enumerable.

Teorema 5 Todo lenguaje recursivamente enumerable es aceptado por unamaquina con tres contadores.

Teorema 6 Todo lenguaje recursivamente enumerable es aceptado por unamaquina con dos contadores.

Actividad 9 Investigar las caracteristicas y funcionamiento de las sigu-ientes variantes de maquina de Turing

1. Maquinas de Turing Deterministas

2. Maquinas de turing no deterministas

3. Maquinas de turing con cintas semiinfinitas

Capıtulo 5

Decibilidad

Objetivo de la unidad: Comprender las caracteristicas de los lenguajesdecidibles

Diremos que un problema de decision es decidible por una maquina deTuring sı solo si la maquina responde correctamente cada una de las respues-tas a las preguntas asociadas al problema. Por otro lado se ha considera-do formas de simplificar la construccion de maquinas de Turing mediantela introduccion de la modularidad, esto quiere decir, considerado algunasmaquinas elementales a partir de las cuales podremos construir otras conmayor eficiencia. En este capitulo trataremos alguno de los problemas quemotivaron el estudio de los capitulos anteriores y que se plantearon al iniciodel primero.

Primero es necesario crear un planteamiento que nos permita determinarde manera eficiente si un problema puede ser tratado como un caso de de-cision, o solamente es un problema intratable, recordemos que la diferenciaentre ambos radica en que el problema de decision tenemos casos en los queno existen algoritmos que nos permitan resolver el problema, mientras queel segundo, presenta algoritmos muy extensos que ocupan todos los recursosde una computadora, o que requieren de mucho tiempo para su solucion porejemplo

¿ Hay enteros tales que satisfagan la ecuacion 3x + 6y = 151? no es unproblema de decision.

¿ Hay enteros x, y tales que se cumple la ecuacion ax + by = c? si es unproblema de decision (aqu’i es importante mencionar que para cada

75

76 CAPITULO 5. DECIBILIDAD

valor de a, b y c tenemos un problema distinto.

El problema de la parada ¿Existe algun procedimiento efectivo algorit-mo o maquina de Turing que nos permita determinar, para cualquiermaquina de Turing concreta representada en la cinta si la maquinallegara a detenerse en algun momento despues de iniciar su computo?(esta cuestion se menciono en la seccion de lenguaje de una maquinade Turing). Este problema tiene una respuesta negativa, por lo que setrata de un problema indecidible.

5.1. Lenguajes Decidibles

Un lenguaje decidible es aquel lenguaje L para el cual existe una maquinade Turing que le puede aceptar cualquier cadena ω ∈ L. Hay lenguajes for-mados por cadenas tales que una maquina de Turing logra un estado finalcon las cadenas que reconoce y acepta, solamente. En este caso se dice que lamaquina de Turing semidecide al lenguaje. Los lenguajes semidecididos poruna maquina de Turing se llaman recursivos numerables. Las gramaticas sinrestricciones son las que generan los lenguajes recursivos numerables y estosgeneralizan a los lenguajes recursivos, los cuales generalizan a los lengua-jes libres de contexto, y estos a los lenguajes regulares. Lo anterior tienerelacion directa con el hecho de que las maquinas de Turing generalizan a losautomatas de pila y estos a su vez a los automatas finitos.

En terminos de procedimientos, las cadenas de un lenguaje decidible cor-responden a procedimientos que terminan, ya sea realizando lo que indicala palabra o senalando que no tienen la capacidad de realizarlo. Para unlenguaje semidecidible, las cadenas decididas por la maquina de Turing soninstrucciones realizadas por la maquina de Turing. De manera complemen-taria, las cadenas no decidibles por la maquina de Turing corresponden aprocedimientos que no terminan utilizando una maquina de Turing. con loanterior podemos dar la definicion de algoritmo

Definicion 33 Un algoritmo es una implementacion de una maquina deTuring tal que el conjunto de sus entradas es el lenguaje decidible.

En otras palabras si dado conjunto de entradas bajo las cuales una maquinade Turing logra un estado de parada para cada entrada, la maquina corre-

5.2. EL PROBLEMA DE HALTING 77

sponde a la implementacion de un algoritmo. Esta es la Tesis de Church -Turing. No es un teorema pues no se puede demostrar matematicamente, demanera general y categorica. Es solo la afirmacion de que el concepto informaldel algoritmo corresponde a un objeto matematico. Al ser solo una afirmacionno demostrable, puede suceder que en un futuro sea refudada. Sin embargopara que esto ocurra, se necesita encontrar un automata mas potente que unamaquina de Turing tal que sea la implementacion de un algoritmo. Si bienhay algunas propuestas interesantes que pretende generalizar a la maquinade Turing, hasta la fecha ninguna de ellas ha sido aceptada para sustituirla.es importante mencionar que los lenguajes que tienen asociados algoritmosson finitos, mientras que aquellos a los cuales no les podemos asignar unalgoritmo son infinitos (en terminos de la cantidad de problemas).

5.2. El problema de Halting

El problema de Halting o tambien conocido como el problema de la parada(se menciono en la seccion anterior) , es equivalente a construir un programaque decida si un algoritmo finaliza alguna vez o no. Respecto a este problemaTuring provo que no es posible construir una maquina de Turing que decidasi otra maquina de Turing aceptara alguna cadena durante su procesamiento,debido a que mientras la maquina de turing trabaja, las cadenas almacenadasen la cinta, son pasos intermedios que no tiene nada que ver con el resultadofinal.

El problema se desarrolla suponiendo que dada una maquina de turingMT1 existe una cadena de sımbolos ω1, que nos informa si otra maquina deturing M2 con programa P2 y datos iniciales D2 se detendra proporcionandouna salida ω1 = P1 [P2, D2]. Suponga que aplicamos el programa P1, quedetermina el comportamiento de MT1, que determina el comportamiento so-bre el mismo programa, pero tomando como datos los propios P1 [P1, D1],entonces para que MT1 pueda informar si MT2, para o no debe existir unprograma P1 que para cuando un programa anterior P1 (recuerde que se estatrabajando sobre MT1) que pare cuando un segundo programa P1 introduci-do como dato anterior no para. Aqui el programa se esta ejecutando sobresı mismo, lo cual no es posible.

78 CAPITULO 5. DECIBILIDAD

5.3. Decibilidad de teorıas logicas

Una teorıa logica TL se define a partir de un conjunto de enunciados da-dos llamados axiomas, unas reglas de inferencia y un esquema de derivacion.A partir de los axiomas y aplicando la regla de inferencia y el esquema dederivacion se infieren los teoremas de la teorıa. El conjunto de teoremas de lateorıa forma un lenguaje formal.Si es posible definir una maquina de Turingtal que reconozca al lenguaje de los teoremas, este lenguaje es decidible yla teorıa tambien lo es consecuencia. Dicho en otras palabras, si el conjun-to de teoremas visto como un lenguaje es reconocido por una maquina deTuring, entonces la TL es decidible, y viceversa. Puede hablarse entonces demanera indistinta de teorıas logicas o de lenguajes decidibles, como aquel-los para los que existe una maquina de Turing capaz de reconocerlos. Luegola correspondencia entre la sintaxis de una teorıa logica (lenguaje formal)y reconocimiento simbolico del mismo por parte de un automata queda es-tablecida.

Ejemplo 25 Muestre que la coleccion de lenguajes decidibles por maquinade Turing para un alfabeto cualquiera es infinita, pero contable. Solucion

El cinjunto de lenguajes independientes de contexto es infinito.

los conjuntos de los lenguajes independientes de contexto, lenguajes decidi-bles por Turing, lenguajes estructurados por frases son contables.

La coleccion de lenguajes decidibles es contable por ser un subconjuntode los lenguajes estructurados por frases (que son contables). Es infinita porque contiene a los lenguajes independientes de contexto, que son infinitos.Los lenguajes decidibles en tiempo polinomico son aquellos lenguajes paralos que una maquina de Turing puede determinar si una cadena pertenece allenguaje. Implica reconocer el complemento del lenguaje.

El desarrollo de la teorıa de la computabilidad ha ido ıntimamente ligadoal desarrollo de la logica matematica. Esto ha sido ası porque la decibilidadde los distintos sistemas logicos es una cuestion fundamental. Es bastantefacil ver que el calculo proposicional no era decidible. Por otro lado, paracada una de las distintas teorıas se ha ido estudiando su posible decibilidad,son muchos los problemas interesantes que se han demostrado computables.Todas las funciones construidas por recursividad primitiva o minimalizacion

5.3. DECIBILIDAD DE TEORIAS LOGICAS 79

a partir de funciones calculables resultan ser calculables, siendo el resultadomas significativo en relacion con esta cuestion el dado por el siguiente teorema

Teorema 7 Primer teorema de Recursion: Todo operador entre fun-ciones calculables que sea recursivo (esto es que se defina la imagen de fmediante una funcion calculable en terminos de una parte finita de f), tieneuna funcion parcial computable que es el menos punto fijo, es decir, esa fun-cion es un punto fijo y cualquier otro punto fijo del operador es una extensionde esa funcion.

Este teorema recibe su nombre porque podemos definir una funcion medi-ante una ecuacion recursiva mas general que la permitida por la recursividadprimitiva, a saber donde es un operador recursivo. El primer teorema derecursion nos dice que hay una funcion que satisface esta ecuacion. Comoen matematicas se requiere que la funcion sea univoca, se dice que dichaecuacion define el menor punto fijo del operador. Ası, y de acuerdo al primerteorema de recursion, la clase de las funciones calculables es cerrada bajouna muy general forma de definicion por recursion.

A menudo se utiliza la tecnica de reducir un problema a otro para com-probar si tiene o no solucion efectiva. La estrategia en el caso de la respuestanegativa es la siguiente, si se reduce de forma efectiva un problema sin solu-cion efectiva a otro problema (mediante una funcion calculable), entonceseste nuevo problema tampoco tendra solucion efectiva. La razon es muy sim-ple, si tuviese solucion efectiva, componiendo el algoritmo solucion con elalgoritmo de transformacion obtendrıamos una solucion para el problemaefectivamente irresoluble. En sentido inverso, si se reduce un problema a otropara el que se conoce una solucion efectiva, entonces componiendo se obtieneuna solucion para el primer problema. Esta tecnica es muy util y se utilizaa menudo. Por otro lado, esta misma tecnica es muy empleada en el campode la complejidad algorıtmica. Para asegurarse de que un problema esta enuna clase de complejidad, basta reducir el problema a otro de dicha clase sinmas que asegurarse que la reduccion se realiza en la correspondiente clase decomplejidad.

80 CAPITULO 5. DECIBILIDAD

Capıtulo 6

Reducibilidad

Objetivo de la unidad: Aplicar la reducibilidad a los lenguajes estudi-ados medisnte maquinas de Turing

6.1. Problemas insolubles para la teorıa de

lenguajes

En el capitulo anterior se trata a grandes rasgos, los problemas que puedenser resueltos mediante un algoritmo y aquellos que no; con lo cual ahora solonos queda analizar que problemas pueden ser resueltos por una computadoracon mas o menos eficiencia; es claro que para resolver esta interrogante esnecesario que solo tomemos los problemas decidibles y seleccionemos soloaquellos que se pueden resolver mediante maquinas de Turing en un tiempoque crece en funcion polinomica del tamao de la entrada. Para comenzar aestudiar este capitulo es conveniente tomar en cuenta lo siguiente:

Los problemas que se pueden resolver en tiempo polinomico en una com-putadora, son exactamente los mismo que se pueden resolver en tiempopolinomico en una maquina de Turing.

Existe una lınea divisoria fundamental entre los problemas que se puedenresolver en tiempo polinomico y los que requieren de un tiempo expo-nencial o mayor. Los problemas practicos que requieren de un tiempopolinomico son casi siempre resolubles en un tiempo tolerable, mien-tras que los que requieren de un tiempo exponencial, en general no sepueden resolver, excepto en casos sencillos.

81

82 CAPITULO 6. REDUCIBILIDAD

La teorıa de la intratabilidad se refiere al conjunto de tecnicas que sepueden utilizar para mostrar que un problema no se puede resolver en tiem-po polinomico; la teorıa de la reducibilidad tra de aquellos problemas quepueden ser reducidos a casos particulares y que pueden ser resueltos en tiem-pos polinomicos.

El analizar si es posible satisfacer una expresion booleana, es decir quela expresion reuslte verdadera para alguna asignacion de los valores de ver-dad verdadero y falso a sus variables, este problema no se puede decidir entiempo polinomico, y ademas se puede reducir a muchos otros y con esto seprueba que las reducciones tambien son intratables. Con este tipo de proble-mas, ya no bastara con que exista un algoritmo que nos permita transformarlos casos de un problema en casos de otro, ademas dicho algoritmo debera eje-cutarse a lo mas en tiempo polinomico, ya que de lo contrario, la reduccionno nos podria ayudar a saber si el segundo problema es intratable, aunqueel primero lo sea.En otras palabras

Definicion 34 Un problema A es reducible a otro B si un metodo pararesolver B proporciona un metodo para resolver A. Cada problema puederepresentarse a traves de una codificacion como un conjunto de numeros.Ası, es posible estudiar la reducibilidad como una relacion entre conjuntos denumeros, bajo el siguiente principio Un conjunto A es reducible al conjuntoB si un metodo para decidir si algo pertenece a B, proporciona un metodopara decidir que algo pertenece al conjunto A.

Esta definicion esta fundamentada en una conjutura llamada N 6= NP ,que permite suponer que la clase de los problemas que se pueden resolveren tiempo polinomico mediante maquinas de Turing no deterministicas, con-tienen al menos algunos problemas que no se pueden resolver en tiempopolinomico usando maquinas de Turing deterministicas, aunque estas ocu-pen un tiempo poliniomico de grado mas alto.

Actividad 10 Investigar la definicion de las clases de problemas N y NP ,y en que consisten sus diferencias

Definicion 35 Se dice que una maquina de Turing M tiene un tiempo decalculo (complejidad temporal) T (n) si se detiene despues de T (n) movimien-tos como maximo cuando recibe una entrada ω de longitud n (ya sea aceptadao rechazada)

6.2. UN PROBLEMA SIMPLE INSOLUBLE 83

Esta definicionse aplica a cualquier funcion T (n) que sea un polinomio enn, y de aqui se desprende que

Definicion 36 Un languaje esta en la clase P , si existe algun polinomioT (n) tal que L = L(M) para alguna maquina de Turing determinista M ,cuya complejidad temporal es T (n).

6.2. Un problema simple insoluble

6.2.1. Algoritmo de Kruskal

Para este problema, se necesitara retomar los conceptos de grafos quese estudiaron en la materia de Matematicas para computadora en primersemestre.

Considere el problema de encontrar un arbol de peso mınimo asociadoa un grafo APMAG, a continuacion se presenta un ejemplo de un grafo,en el cual los nodos estan numerados del 1 al 4 y hay arcos entre pares denodos, y cada uno tiene un peso en entero, un arbol que abarca el grafo esun subconjunto de los arcos tal que todos los nodos quedan conectados entresı mediante estos arcos pero no se forma ningun ciclo.

Figura 6.1: Ejemplo para APMAG

El arbol para el nodo 3 esta compuesto por todas las aristas que partende el.

El arbol de peso mınimo es el que tiene la ,enor suma total de pesos de losarcos entre todos los que abarcan el grafo. Existe un algoritmo llamado algo-ritmo de Kruskal para encontrar un APMAG que consiste en los siguientespasos:

1. Para cada nodo anotar la componente conexa en la que aparece, usandolos arcos del arbol seleccionados hasta el momento. Inicialmente no seha seleccionado ningun arco, por lo que cada nodo formara por si solouna componente conexa.

84 CAPITULO 6. REDUCIBILIDAD

2. Se elige el arco de menor peso que aun no se halla examinado, y serompen las ligaduras como se desee. Si este arco conecta dos nodossituados actualmente en componentes conexas distintas:

a) Se selecciona este arco, para el arbol que abarca el grafo.

b) Se unen las dos componentes conexas, cambiando el numero decomponente asociado a todos los nodos de una de las componentes,para que sea el mismo que el numero de componente de la otra.

3. Se eligen arcos hasta que todos los nodos hallan sido examinados, ohasta que el numero de arcos seleccionados pra el arbol que abarcael grafo sea igual al numero de nodos menos uno. en este caso todoslos nodos deben estar en una solo componente conexa, y es posibleolvidarse de todos los arcos restantes.

Este algoritmo puede implementarse en una computadora, para hallar elarbol que abarca un grafo de m nodos y e arcos en un tiempo O(m+ eloge).Una implementacion mas simple, mas facıl de seguir lo consigue en e pasos.Una tabla da la componente actual de cada nodo. Elegimos el arco siguientede menor peso en un tiempo O(e), y encontramos las componentes de los dosnodos que conectan este arco en tiempo O(m). Si son diferentes unimos losnodos con esos numeros en tiempo O(m), recorriendo la tabla de nodos. Estetiempo es polinomico respecto al tamao de la entrada que podemos consid-erar, informalmente, igual a la suma de e y m.

Para aplicar este algoritmo a las maquinas de Turing hay que resolveralgunas cuestiones:

Al estudiar algoritmos, nos encontramos con problemas que necesitanque se generaen salidas de diversas formas, tales como la lista de arcosen una APMAG. en cambio cuando tratamos con maquinas de Turing,los problemas se vaen como lenguajes y su unico resultado es si ono, es decir aceptado o rechazado, para nuestro problema podriamosredactarlo ası Dado el grafo G y el limite W , ¿Existe en G unarbol que lo abarque con peso menor o igual a W? Este problemapuede parecer mas sencillo, puesto que no se pide el arbol asociado algrafo. En este caso el hecho de que la version si − no de un problemasea difıcil implica que tambien lo sera la version completa, de la cualse tiene que obtener una respuesta mas detallada.

6.2. UN PROBLEMA SIMPLE INSOLUBLE 85

Se podria pensar que el tamao de un grafo es el numero de nodos o arcosque tiene, sin embargo en una maquina de turing los datos de entradatienen la forma de una cadena de caracteres extraıdos de cierto alfabeto.Como consecuencia los problemas que tienen que ver con nodos y arcosdeberan ser codificados de alguna manera, con lo cual las maquinas deTuring seran mas largas que lo que se habia pensado al inicio; aunqueesto no es significativo por las siguiente razones:

1. La diferencia entre el tamano de la cadena de entrada de unamaquina de Turing y el de la cadena del problema informal, de-pende de un factor pequeo, que es aproximado al logaritmo deltamao de la entrada. Por lo cual, lo que se puede hacer en tiempopolinomico en funcion de una medida, tambien puede hacerse entiempo polinomico utilizando la otra medida.

2. La longitud de la cadena que representa la entrada es una medidamas exacta que el numero de bits que tiene que leer una computa-dora para obtener la entrada del problema, pues en nuestro casoelnumero de bits para representar a un nodo es proporcional allogaritmo del tamono del entero en el nodo. en lugar de un bytepor nodo.

Este algoritmo puede ser implementado en una maquina de Turing convarias cintas en un tiempo O(n2) utilizando las cintas de la siguiente forma:

1. Una cinta puede utilizarse para guardar los nodos y su numero decomponentre en cada momento. La longitud de esta tabla es O(n)

2. A medida que se analizan los arcos sobre la cinta de entrada, se puedeusar otra cinta para encontrar el peso menor encontrado hasta el mo-mento entre todos los arcos que no han sido marcados como usados.se puede usar una segunda pista de la cinta de entrada para marcarlos arcos que fueron seleccionados por su peso minimo, en las pasadasanteriores del algoritmo. La busqueda del arco no marcado lleva untiempo O(n).

3. Los dos nodos que unen al arco seleccionado se pueden almacenar enotra cinta, para despues buscar las componentes de esos nodos en untiempo O(n)

86 CAPITULO 6. REDUCIBILIDAD

4. Se puede usar otra cinta para guardar las dos componentes i y j, quese uniran cuando se encuentre un arco que conecta dos componentespreviamento no conectadas. Despues se buscara en la tabla de nodos ycomponentes, para cambiar a jla componente de todos los nodos queestaban en la componente i, esta busqueda lleva un tiempo O(n).

6.3. Funciones computables

Formalmente diremos que un lenguaje L esta en la clase NP (no deter-ministico, polinomico), si existe una maquina de Turing no deterministca My una complejidad de tiempo polinomico T (n) tal que L = L(M) y cuandoM recibe una entrada de longitud n, no existen secuencias de mas de T (n)movimientos de M . Con estadefinicion podemos concluir que P ⊆ NP , esnecesario enfatizar que la contencion contraria no se cumple.

Actividad 11 Desarrolle el problema NP del viajante de comercio,

Actividad 12 Defina que es un problema NPcompleto y escriba dos ejem-plos.

A continuacion se muestran algunos resultados que nos permite establecercondiciones para reducir un algoritmo.

Una maquina de Turing calcula una funcion a partir de la entrada de lacinta y pone fin con la salida de la funcion en la cinta.

Definicion 37 Una funcion f : E∗ −→ E∗ es una funcion computable si lamaquina de Turing M asociada, solo se detiene con f(ω), en cada entradaω en su cinta.

Ejemplo 26 Todas las operaciones aritmeticas habituales en enteros sonfunciones computables. Podemos hacer una maquina que tiene entrada (m,n)y devuelva m+ n.

Un lenguaje A es reducible a un lenguaje B, si existe una funcion com-putable f : E∗ −→ E∗ donde para cada ω, f(ω) esta en B, a la funcion f sellama la reduccion de A a B.

6.3. FUNCIONES COMPUTABLES 87

Si un problema es reducible a un segundo problema ya resuelto con an-terioridad, podemos obtener una solucion al problema original. Tenemos esaidea en el siguiente teorema.

Teorema 8 Si A ≤ B en cuanto a tamano y B es reducible, entonces A esreducible.

Y como consecuencia si A es irreducible B tambien sera irreducible.

88 CAPITULO 6. REDUCIBILIDAD

Bibliografıa

[1] Denning, Dennis, Qualitz, Machines, languages and computa-tion. Editorial Prentice Hall 1978.

[2] John E. Hopcroft y Jeffrey D. Ullman, Introduccion a la teorıade automatas, lenguajes y computacion.Editorial CECSA 1979.

[3] Howie, John M. Automata and languages. Editorial Oxford sci-ence publications, 1991.

[4] Dean, Kelley. Teorıa de automatas y lenguajes formales. Edi-torial Prentice Hall, 1998.

89