teoria delacompuu v-vi

20
1 SEP SEST DGEST INSTITUTO TECNOLÓGICO DE TOLUCA INGENIERÍA EN SISTEMAS COMPUTACIONALES TEORIA DE LA COMPUTACIÓN Resumen unidad V y VI PROFESORA: Pulido Alba Rocío Elizabeth REALIZADO POR: SALAZAR TORRES KARLA POLET GARCIA VICENCIO OSVALDO GARCIA CARBAJAL JULIO CESAR Toluca Mex. 14 de Noviembre de 2011

Upload: poletiux

Post on 21-Jul-2015

805 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Teoria delacompuu v-vi

1

SEP SEST DGEST

INSTITUTO TECNOLÓGICO DE TOLUCA

INGENIERÍA EN SISTEMAS COMPUTACIONALES

TEORIA DE LA COMPUTACIÓN

Resumen unidad V y VI

PROFESORA:

Pulido Alba Rocío Elizabeth

REALIZADO POR:

SALAZAR TORRES KARLA POLET

GARCIA VICENCIO OSVALDO

GARCIA CARBAJAL JULIO CESAR

Toluca Mex. 14 de Noviembre de 2011

Page 2: Teoria delacompuu v-vi

2

INDICE

Introducción.......................................................................................................................03

Planteamiento.............................................................................................................. ....04

Delimitacion.......................................................................................................................04

Justi�cación………………………………………………..………………………………….….05

Objetivos............................................................................................................................05

DECIBILIDAD

Lenguajes decidibles ……………………………………… ..…………………………….…….06

El Problema de Halting…………………………………………………………………………..09

Decibilidad de teorías lógicas…………………………………………………………………...12

REDUCIBILIDAD

Problemas insolubles para la teoría de lenguajes………………………………………….. ..13

Un problema simple insoluble…………………………………………………………………..14

Funciones Computables…………………………………………………………………….. ….. 15

Reducibilidad de Turing………………………………………………………………………….16

Conclusiones………………………… ……………………………………………………... ……19

Bibliografía……………………………………………………………………………… …………20

03

04

04

05

05

06

09

12

13

14

15

16

19

20

Page 3: Teoria delacompuu v-vi

3

INTRODUCCIÓN

El desarrollo de la teoría de la computabilidad ha sido íntimamente ligado al desarrollo de la lógica matemática.

Esto ha sido así porque la decibilidad de los distintos sistemas lógicos es una cuestión fundamental.

Podemos empezar a desarrollar el tema de decibilidad con la identificación de problemas que son computables lo cual tiene un gran interés pues indica el alcance y los límites de la computabilidad y así se puede demostrar los límites teóricos de los ordenadores. Esto nos lleva a los problemas de halting el cual nos plantea la interrogante si podemos construir una solución que nos diga si un algoritmo finaliza alguna vez o no.

También hablaremos de la decibilidad de las teorías lógicas la cual se rige por axiomas dados a partir de un conjunto de enunciados que no son más que las reglas de inferencia con un esquema de derivación, va íntimamente ligada al desarrollo de la lógica matemática esto a sido así porque la decibilidad de los distintitos sistemas lógicos es una cuestión fundamentalmente matemática.

En el tema de reducibilidad trataremos de aquellos problemas que pueden ser reducidos a casos particulares y que pueden ser resueltos en tiempos polinomios.

Page 4: Teoria delacompuu v-vi

4

PLANTEAMIENTO DEL PROBLEMA

Investigar y Comprender la teoría de la decibilidad aplicada a lenguajes. Enfocado a temas específicos como los lenguajes decibles, los problemas de halting y la decibilidad de teorías lógicas. También es aplicar la teoría de la reducibilidad e indagar en los problemas insolubles de la teoría de lenguajes, las funciones computables y la reducibilidad de turing.

DELIMITACIÓN La investigación está delimitada y guiada por los temas generales que son Decibilidad y Reducibilidad y temas específicos los cuales son:

Lenguajes decibles

Los problemas de halting

Decibilidad de teorías lógicas

Problemas insolubles para la teoría de lenguajes

Un problema simple insoluble

Reducibilidad de Turing Estos a su vez conforman las unidades 5 y 6 del temario de la materia de la teoría de la computación.

Page 5: Teoria delacompuu v-vi

5

JUSTIFICACIÓN El presente trabajo está motivado por la comprensión del concepto de decibilidad y reducibilidad, enfocándonos en temas específicos entre ellos pueden ser lo problemas de halting, la decibilidad de teorías lógicas, reducibilidad de turing. También es la búsqueda de las herramientas teóricas para la resolución de problemas que la solución sea un ejemplo de decibilidad y reducibilidad.

OBJETIVOS Objetivos Generales

Comprender la teoría de Decibilidad

Comprender la teoría de Reducibilidad

Aplicar la teoría de Reducibilidad Objetivos Específicos

Comprender los Lenguajes Decidibles.

Comprender los problemas de Halting.

Comprender la Decidibilidad de Teorías Lógicas.

Comprender un problema simple insoluble.

Comprender las funciones computables.

Comprender la Reducibilidad de Turing

Page 6: Teoria delacompuu v-vi

6

DECIBILIDAD

Un problema de decisión es decidible por una máquina de Turing sı y sólo si la máquina

responde correctamente cada una de las respuestas a las preguntas asociadas al problema.

Por otro lado se han considera do formas de simplificar la construcción de máquinas de

Turing mediante la introducción de la modularidad, esto quiere decir, considerado algunas

maquinas elementales a partir de las cuales podremos construir otras con

mayor eficiencia. Primero es necesario crear un planteamiento que nos permita determinar

de manera eficiente si un problema puede ser tratado como un caso de decisión, o solamente

es un problema intratable, recordemos que la diferencia entre ambos radica en que el problema

de decisión tenemos casos en los que no existen algoritmos que nos permitan resolver el

problema, mientras que el segundo, presenta algoritmos muy extensos que ocupan todos los

recursos de una computadora, o que requieren de mucho tiempo para su solución por

Ejemplo

¿ Hay enteros tales que satisfagan la ecuación 3x + 6y = 151? R= no es un

problema de decisión.

¿ Hay enteros x, y tales que se cumple la ecuación ax + by = c? si es un

problema de decisión (aquí es importante mencionar que para cada valor de a, b y c tenemos

un problema distinto.

Lenguajes Decidibles

Un lenguaje decidible es aquel lenguaje L para el cual existe una máquina de Turing que le

puede aceptar cualquier cadena ω ∈ L. Hay lenguajes formados por cadenas tales que una

máquina de Turing logra un estado final con las cadenas que reconoce y acepta, solamente. En

este caso se dice que la máquina de Turing semidecide al lenguaje. Los lenguajes semidecididos

por una máquina de Turing se llaman recursivos numerables. Las gramáticas sin restricciones

son las que generan los lenguajes recursivos numerables y estos generalizan a los lenguajes

recursivos, los cuales generalizan a los lenguajes libres de contexto, y estos a los lenguajes

regulares. Lo anterior tiene relación directa con el hecho de que las máquinas de Turing

generalizan a los autómatas de pila y estos a su vez a los autómatas finitos.

Un problema puede ser descripto con un Lenguaje y la solución algorítmica a dicho problema se describe con un lenguaje recursivo. Problemas de decisión (Si/No) -Decidibles: Existe un algoritmo que da respuesta para todas las instancias. (Se describen con lenguajes Recursivos) -Indecidibles: Existe un procedimiento que da respuesta a algunas instancias.

(Se describen con lenguajes recursivo-enumerables)

Teoremas Teorema1.-Si L es un lenguaje regular, entonces L es también un lenguaje recursivo.

Teorema2.- Si L es un lenguaje independiente del contexto, entonces L es también un

lenguaje recursivo.

Teorema3.- Si L1 y L2 son lenguajes recursivos, entonces L1 L2 también lo es.

Page 7: Teoria delacompuu v-vi

7

Lema1.- Si L es un lenguaje recursivo, entonces * L es un lenguaje recursivo

Teorema4.-Hay un lenguaje recursivamente enumerable L para el cual * L no es

recursivamente enumerable.

Teorema5.- Si L1 y L2 son lenguajes recursivamente enumerables, entonces L1 L2 es

también recursivamente enumerable.

Teorema6.- Si L es un lenguaje recursivamente enumerable para el cual * L también

es recursivamente enumerable, entonces L es un lenguaje recursivo.

Teorema7.- Un lenguaje L es recursivamente enumerable si y solo si L es enumerado por

alguna máquina de Turing.

Teorema8.-Si G es una gramática no restringida, entonces L(G) es un lenguaje

recursivamente enumerable.

Teorema9.- Si L = L(M) es un lenguaje recursivamente enumerable y G se construye de la

forma descrita, entonces L = L(G).

Teorema10.- Un lenguaje L es recursivamente enumerable si y solo si L = L(G) para

alguna gramática G, no restringida

Teorema11.- Si L es un lenguaje sensible al contexto, entonces L es recursivo.

Lema2.-Hay lenguajes recursivos que no son lenguajes sensibles al contexto

Teorema12.-Los lenguajes sensibles al contexto contienen, propiamente, a los lenguajes

independientes del contexto. A su vez, los lenguajes recursivos contienen, propiamente, a

los lenguajes sensibles al contexto.

Teorema 13.- Sobre un alfabeto dado, el conjunto de los lenguajes recursivamente

enumerable contienen propiamente a los lenguajes recursivos que contienen propiamente

al conjunto de los lenguajes sensibles al contexto que contienen propiamente al conjunto

de los lenguajes independientes del contexto. Que a su vez, contienen propiamente los

lenguajes regulares.

Lregular Li.c. Ls.c. Lrecursivo Lr.e

Teorema14.- El lenguaje universal Lu no es recursivo. Teorema15- Dadas una gramática G y una palabra w, es posible decidir si w ∈ L(G) cuando las reglas de G cumplen la propiedad: "Para toda regla A → α, |α| > 1, o bien α ϵ ∑, es decir el lado derecho tiene varios símbolos o si tiene exactamente un símbolo, éste es terminal.".

Si dado conjunto de entradas bajo las cuales una máquina de Turing logra un estado de parada

para cada entrada, la máquina corresponde a la implementación de un algoritmo.

Un algoritmo es una implementación de una máquina de Turing tal que el conjunto de sus

entradas es el lenguaje decidible.

Gráficamente el algoritmo se ve de la siguiente manera

Page 8: Teoria delacompuu v-vi

8

Los lenguajes que tienen asociados algoritmos son finitos, mientras que aquellos a los cuales no les podemos asignar un algoritmo son infinitos (en términos de la cantidad de problemas).

La clase de los lenguajes recursivos es cerrada bajo P. Para ello proporcionamos el siguiente esquema de una máquina de Turing que para ante cualquier entrada y acepta las cadenas de P(L) siempre que L sea recursivo

Ejemplos

1.-Sean los conjuntos de naturales A y B tales que A es decidible y B es r.e. pero no decidible. Es la siguiente afirmación verdadera o falsa? Justifique. Afirmación: B-A necesariamente es r.e. Respuesta: Verdadero. Observar que B-A = BAc . Como A es un conjunto decidible, su complemento también lo es (teorema 2) y por lo tanto también es r.e. Como los conjuntos r.e. son cerrados bajo la intersección, BAc es r.e. 2.- Utilizando los teoremas y utilizando los conjuntos del ejercicio anterior justifique porque la afirmación siguiente es falsa: Afirmación: B-A necesariamente no es decidible. Respuesta: Consideremos al conjunto K y al conjunto N. K-N es el conjunto vacío, que es decidible.

3.- Sea P una operación sobre lenguajes definida como P(L) = {x ∈ Σ∗ | Pr(x)∩L= ∅}. ¿Es la clase de los lenguajes recursivos cerrada bajo P ? (Nota: Pr(x) denota el conjunto de prefijos de la cadena x)

Respuesta:

Podemos expresar P(L) = LΣ∗. Dado que Σ∗ es un lenguaje regular, entonces es recursivo y también recursivamente enumerable. Por lo tanto, en el caso de ambas familias de lenguajes la operación P es de cierre.

Pref LY

Rechaza/siguient

Fin prefijo

X

acepta

Rechaza

Page 9: Teoria delacompuu v-vi

9

El problema de Halting

El problema de Halting o también conocido como el problema de la parada es equivalente a

construir un programa que decida si un algoritmo finaliza alguna vez o no. Respecto a este

problema Turing probó que no es posible construir una máquina de Turing que decida si otra

máquina de Turing aceptara alguna cadena durante su procesamiento, debido a que mientras la

máquina de turing trabaja, las cadenas almacenadas en la cinta, son pasos intermedios que no

tiene nada que ver con el resultado final.

El problema se desarrolla suponiendo que dada una máquina de turing MT1 existe una

cadena de símbolos ω1, que nos informa si otra máquina de turing M2 con programa P2 y

datos iniciales D2 se detendrá proporcionando una salida ω1 = P1 [P2,D2]. Suponga que

aplicamos el programa P1, que determina el comportamiento de MT1, que determina el

comportamiento sobre el mismo programa, pero tomando como datos los propios P1 [P1,D1],

entonces para que MT1 pueda informar si MT2, para o no debe existir un programa P1 que

para cuando un programa anterior P1 (recuerde que se está trabajando sobre MT1) que pare

cuando un segundo programa P1 introducido como dato anterior no para. Aquí el programa se

está ejecutando sobre sı mismo, lo cual no es posible.

Teorema.- No existe ninguna MT tal que, para cualquier palabra w y cualquier MT M,

decida si w ∈ L(M).

Fig1: Problema de parada de una MT

En la figura 1 se muestra como debería funcionar la máquina de turing que resolvería el problema de la parada

D(M)

W

M para con w

M no para con w

1

0

D(M)

W

M para con w

M no para con w

1

0

(a)Maquina A

Page 10: Teoria delacompuu v-vi

10

Figura 2: prueba del paro de MT

Prueba por contradicción.- Sea A la MT de la figura 2(a). Entonces construimos otra MT B, como se representa en la figura 2(b), esto es, se tiene una única entrada con la codificación d(M) de la MT M, y se pasa esta palabra a una MT copiadora, que duplica la entrada d(M). La salida de la copiadora será dos veces d(M). Esto es pasado como entrada a una máquina A′ que es A modificada de la siguiente manera: a la salida 1 de A la cambiamos de forma que en vez de dar el halt se cicle; debe quedar claro que esto siempre puede hacerse. Ahora bien, comparando A con A′ se ve que la salida 1 corresponde al hecho de que M para con d(M). Finalmente supongamos que aplicamos la máquina B a una entrada formada por la misma máquina codificada, esto es, d(B). Entonces cuando B se cicla, esto corresponde a la salida que indica que "B se para con d(B)", lo cual es contradictorio. Similarmente, B entrega un resultado 0 -esto es, se para- en el caso que corresponde a "B no se para con d(B)", que también es contradictorio. Esto se ilustra en la figura 2(c).

Ejemplos

1.- Supóngase que fuera posible predecir la parada de un proceso; es decir, que se dispone de una función llamada Halts, tal que int Halts(char *P, char *I){ /* Pre: P e I son cadenas de caracteres, siendo P */ /* el código fuente de un programa e I los datos */ /* (1) Se determina si P es un programa correcto */ /* Sintácticamente (compilación)*/ /* (2) Se determina si P finaliza su ejecución */ /* Cuando lee la cadena de entrada I */ return halt; } /* Devuelve 1 si P para con I, 0 en caso contrario */

M para con w

M no para con w

cicla

0

B Copia

d(M)d(M)

d(M)

B para con d(B)

B no para con d(B)

cicla

0

B

Copia

d(B)d(B)

d(B)

(b)Maquina B

(c)Contradicción

Page 11: Teoria delacompuu v-vi

11

Sabiendo esto, se escribe el programa siguiente: int main() { char I[100000000]; /* Hacer I tan grande como se quiera, o usar malloc */ read a C program into(I); if (Halts(I,I)) { while(1){} /* bucle infinito */ }else return 1; } Este programa se almacena en el fichero Diagonal.c. y se ejecuta:

a) ¿Cuáles son los casos posibles de solución?

b) ¿Existe la función halt?

Respuesta

a) Caso 1: Halts(I,I) devuelve 1.

Según la definición de Halts, esto significa que él programa finaliza su ejecución cuando recibe como entrada Diagonal.c. Pero, según la definición de Diagonal.c, que Halts(I,I) devuelva 1, significa que en el condicional se ejecutara la rama “if”, que contiene el bucle infinito; es decir, la ejecución de Diagonal.c no finaliza NUNCA. Se llega a una contradicción.

Caso 2: Halts(I,I) devuelve 0. Según la definición de Halts, esto significa que Diagonal.c NUNCA finaliza su ejecución cuando recibe como entrada Diagonal.c. PERO, según la definición de Diagonal.c, que Halts(I,I) devuelva 0, significa que en el condicional se ejecutara la rama “else”, por lo que finaliza la ejecución de Diagonal.c. Se llega, de nuevo, a una contradicción.

b) Puesto que no hay más casos posibles la suposición inicial debe ser falsa: no es

posible que exista la función Halts. 2.- dada una máquina de Turing M, ¿es cierto que M se detiene con entrada C(M)? Problema de decisión: H = {w ϵ {0, 1}* | existe una MT M tal que w = C(M) y M se detiene con entrada C(M)}. Demostrar que no es decidible Respuesta: Asumimos que existe una MT M* que se detiene en todas las entradas y tal que H = L(M*). Para cada MT M, si M se detiene con su propio código entonces M* con entrada C(M) se detiene en un estado final. En caso contrario, M* se detiene en un estado que no es final. Sea M0 una MT que con entrada w funciona de la siguiente forma:

Hace funcionar la maquina M* con entrada C(M0) si M* se detiene en un estado final

entonces M0 no se detiene en caso contrario M0 se detiene en un estado final

Page 12: Teoria delacompuu v-vi

12

Probamos si M* acepta M0

M* acepta M0 si y solo si

M0 se detiene con entrada C(M0) si y solo si

M* se detiene en un estado no final con entrada C(M0) si y solo si

M* no acepta M0

En esta última línea existe una contradicción por lo que el lenguaje es indecible Decibilidad de teorías lógicas

Una teoría lógica TL se define a partir de un conjunto de enunciados dados llamados axiomas,

unas reglas de inferencia y un esquema de derivación.

A partir de los axiomas y aplicando la regla de inferencia y el esquema de derivación se

infieren los teoremas de la teoría. El conjunto de teoremas de la teoría forma un lenguaje formal.

Si es posible definir una máquina de Turing tal que reconozca al lenguaje de los teoremas,

este lenguaje es decidible y la teoría también lo es consecuencia. Dicho en otras palabras, si

el conjunto de teoremas visto como un lenguaje es reconocido por una máquina de

Turing, entonces la TL es decidible, y viceversa. Puede hablarse entonces de manera indistinta

de teorías lógicas o de lenguajes decidibles, como aquellos para los que existe una máquina

de Turing capaz de reconocerlos. Luego la correspondencia entre la sintaxis de una teoría

lógica (lenguaje formal) y reconocimiento simbólico del mismo por parte de un autómata

queda establecida.

Ejemplos

1.-Muestre que la colección de lenguajes decidibles por máquina

de Turing para un alfabeto cualquiera es infinita, pero contable.

Respuesta

El conjunto de lenguajes independientes de contexto es infinito.

Los conjuntos de los lenguajes independientes de contexto, lenguajes decidibles por Turing,

lenguajes estructurados por frases son contables.

La colección de lenguajes decidibles es contable por ser un subconjunto de 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 para los que una máquina de Turing puede determinar si una cadena

pertenece al lenguaje. Implica reconocer el complemento del lenguaje.

2.-Cite dos ejemplos de decibilidad de teorías lógicas

Respuesta

El cálculo de predicados no es decidible

La teoría de los números reales es decidible.

Page 13: Teoria delacompuu v-vi

13

REDUCIBILIDAD

Problemas insolubles para la teoría de lenguajes

La teoría de la reducibilidad trata de aquellos problemas que pueden ser reducidos a casos particulares y que pueden ser resueltos en tiempos polinomios.

Existe una línea divisoria fundamental entre los problemas que se pueden resolver en tiempo polinomio y los que requieren de un tiempo exponencial o mayor. Los problemas prácticos que requieren de un tiempo polinomio son casi siempre resolubles en un tiempo tolerable, mientras que los que requieren de un tiempo exponencial, en general no se pueden resolver, excepto en casos sencillos.

Un problema A es reducible a otro B si un método para resolver B proporciona un método para resolver A. Cada problema puede representarse a través de una codificación como un conjunto de números. Así, es posible estudiar la reducibilidad como una relación entre conjuntos de números, bajo el siguiente principio, Un conjunto A es reducible al conjunto B si un método para decidir si algo pertenece a B, proporciona un método para decidir que algo pertenece al conjunto A.

Esta definición está fundamentada en una conjetura llamada N ≠ NP , que permite suponer que la clase de los problemas que se pueden resolver en tiempo polinomio mediante máquinas de Turing no determinística, contienen al menos algunos problemas que no se pueden resolver en tiempo polinomio usando máquinas de Turing determinística, aunque estas ocupen un tiempo polinomio de grado más alto.

Se dice que el par (A, B) es reducible al par (M, N) vía f, si f es una función recursiva Verificando

X ϵ A f(x) ϵ M X ε B f(x) ϵ N

Esta condición equivale a que A = f -1(M) y B = f -1(N). Obsérvese que esta condición significa que f aplica A en M, B en M y A U B en M U N Obsérvese también que si (A, B) es reducible al par (M, N) vía f, entonces también ( A , B ) es reducible a ( M , N ) vía f

Page 14: Teoria delacompuu v-vi

14

Un problema simple insoluble

Ejemplo

1.- Una partícula se mueve en el espacio de manera aleatoria, si en el instante de tiempo t se encuentra en la posición x, ¿Cuál será la posición exacta de dicha partícula 10 segundos después?

Objeto desconocido. Una posición Objetos conocidos. Posición en el instante de tiempo t. Condiciones. La partícula se mueve en el espacio de manera aleatoria Tipo de problema. Insoluble. Debido a que no existe forma de predecir la posición de la partícula, pues se mueve de manera aleatoria

2.-De las siguiente imágenes, cual es la más llamativa?

nuestro autómata no puede saber cuál es la imagen más llamativa ya que para cada usuario la respuesta puede variar convirtiendo en este problema insoluble.

3.-Algoritmo de Kruskal

Considere el problema de encontrar un árbol de peso mínimo asociado a un grafo AP MAG, a continuación se presenta un ejemplo de un grafo, en el cual los nodos están numerados del 1 al 4 y hay arcos entre pares de nodos, y cada uno tiene un peso en entero, un árbol que abarca el grafo es un subconjunto de los arcos tal que todos los nodos quedan conectados entre s mediante estos arcos pero no se forma ningún ciclo.

El árbol para el nodo 3 está compuesto por todas las aristas que parten de el. El árbol de peso mínimo es el que tiene la menor suma total de pesos de los arcos entre todos los que abarcan el grafo. Existe un algoritmo llamado algoritmo de Kruskal para encontrar un AP MAG que consiste en los siguientes pasos:

1. Para cada nodo anotar la componente conexa en la que aparece, usando los arcos del árbol seleccionados hasta el momento. Inicialmente no se ha seleccionado ningún arco, por lo que cada nodo formara por si solo una componente conexa.

2. Se elige el arco de menor peso que aún no se halla examinado, y se rompen las ligaduras como se desee. Si este arco conecta dos nodos situados actualmente en componentes conexas distintas:

a) Se selecciona este arco, para el árbol que abarca el grafo. b) Se unen las dos componentes conexas, cambiando el número de componente asociado a todos los nodos de una de las componentes, para que sea el mismo que el numero de componente de la otra.

Page 15: Teoria delacompuu v-vi

15

3. Se eligen arcos hasta que todos los nodos hayan sido examinados, o hasta que el número de arcos seleccionados para el árbol que abarca el grafo sea igual al número de nodos menos uno. en este caso todos los nodos deben estar en una solo componente conexa, y es posible olvidarse de todos los arcos restantes.

Para aplicar este algoritmo a las máquinas de Turing hay que resolver algunas cuestiones:

Cuando tratamos con máquinas de Turing, los problemas se valen como lenguajes y su único resultado es si o no, es decir aceptado o rechazado, para nuestro problema podríamos redactarlo Dado el grafo G y el limite W, >Existe en G un árbol que lo abarque con peso menor o igual a W?. Este algoritmo puede ser implementado en una máquina de Turing con varias cintas en un tiempo O(n2) utilizando las cintas de la siguiente forma: 1. Una cinta puede utilizarse para guardar los nodos y su número de componente en cada momento. La longitud de esta tabla es O(n) 2. A medida que se analizan los arcos sobre la cinta de entrada, se puede usar otra cinta para encontrar el peso menor encontrado hasta el momento entre todos los arcos que no han sido marcados como usados, se puede usar una segunda pista de la cinta de entrada para marcar los arcos que fueron seleccionados por su peso mínimo, en las pasadas anteriores del algoritmo. La búsqueda del arco no marcado lleva un tiempo O(n). 3. Los dos nodos que unen al arco seleccionado se pueden almacenar en otra cinta, para después buscar las componentes de esos nodos en un tiempo O(n) 4. Se puede usar otra cinta para guardar las dos componentes i y j, que se unirán cuando se encuentre un arco que conecta dos componentes previamente no conectadas. Después se buscara en la tabla de nodos y componentes, para cambiar a la componente de todos los nodos que estaban en la componente i, esta búsqueda lleva un tiempo O(n). Funciones computables

Las funciones computables son el objeto básico de estudio de la teoría de la computabilidad y consisten en las funciones que pueden ser calculadas por una máquina de Turing.

Las funciones computables son una formalización de la noción intuitiva de algoritmo y según la Tesis de Church-Turing son exactamente las funciones que pueden ser calculadas con una máquina de cálculo. La noción de la computabilidad de una función puede ser relativizada a un conjunto arbitrario de números naturales A, o equivalentemente a una función arbitraria f de los naturales a los naturales, por medio de máquinas de Turing extendidas con un oráculo por A o f. Tales funciones puede ser llamados A-computable of-computable respectivamente. Por ejemplo suponiendo que quieres hacer un nuevo platillo. Esto podría ser fácil si se tuviera una receta. Así tú puedes reducir el problema encontrando los ingredientes correctos, al problema de obtener la receta exacta. Las funciones computables son las que se calculan por programas-while Ejercicios 1.-Demuestre que: La suma f1 + f2; ::: + fn es una función computable.

Page 16: Teoria delacompuu v-vi

16

Respuesta Caso Base: n = 1 Por hipótesis, f1 es computable. Paso de inducción: n n + 1 Sea h = f1 + f2; ::: + fn, que, por hipótesis de inducción es computable. Entonces: f1 + f2; ::: + fn + fn+1 = h + fn+1 = C(+; h; fn+1) que es computable. Para cualquier n ¸ 1, la suma de n funciones computables de igual aridad es también computable. 2.- Dada una función f : N- N se define Vf (x) = |{y ε N : y < x ^ f(y) = 0}| Supongamos que f es total y GOTO{computable. Diseñar un programa GOTO que calcule Vf , utilizando f como única macro.

Respuesta

IF X = 0 GOTO A GOTO E [A] Z2 f(Z) IF Z2 ≠ 0 GOTO B Y Y + 1 [B] X X - 1 Z Z + 1 IF X = 0 GOTO A

3.- Diseñar un programa GOTO que al recibir un dato de entrada n devuelva el elemento n-esimo De la sucesión: 0; 1; 2; 2; 3; 4; 4; 5; 6; 6; 7;

Respuesta

[A] IF X = 0 GOTO B GOTO E [B] X X -1 Y Y + 1 IF X ≠ 0 GOTO C GOTO E [C] X X - 1 X X - 1 Y Y + 1 Z Z + 1 GOTO A

Reducibilidad de Turing

El concepto de “reducibilidad", en el cual se ha reducido el lenguaje l1 a l2 encontrando un algoritmo que mapeaba cadenas en l1 en cadenas de l2 y cadenas que no estaban en l1 en cadenas que no estaban en l2. Este concepto de reducibilidad es a menudo llamado

Page 17: Teoria delacompuu v-vi

17

reducibilidad muchos a uno, una técnica más general, se conoce como Reducibilidad de turing, y sencillamente consiste en mostrar que l1 es recursivo en l2. Si L1 es reducible muchos a uno en L2, entonces seguramente L1 es Turing reducible en L2. Como prueba de esto, supóngase que f es una función calculable por una MT que siempre para, tal que f(x) está en L2 si y sólo si x está en L1. Entonces considérese el oráculo ML2 que, dada la entrada x, calcula f(x) y luego, entra en el estado q? con f(x) a la derecha de su cabeza. La máquina ML2 acepta si y sólo si esta entra en qs. Seguramente, L (ML2) = L1, L1 es Turing-reducible en L2. El recíproco es falso. Si L1 es Turing-reducible en L2, y L1 es indecidible, entonces L2 también lo es. Si L2 fuese recursivo, entonces el oráculo ML2 tal que L(ML2 ) = L1 puede simularse con una MT ordinaria que siempre para. Así, se podría usar una reducción de Turing para mostrar que L2 es indecidible, dado que L1 resultaba Indecidible, incluso en circunstancias donde una reducción muchos a uno no existiera o fuese difícil de encontrar.

Ejercicios

1: = {0, 1}

L1 = {w * / cant1(w) es par}

L2 = {w * / cant1(w) es impar}

Donde cant1(w) es la cantidad de 1 que hay en w

Demostrar que L1 L2.

Se construye Mf, una MT que computa la función de reducibilidad.

Mf = <{q0, q1}, {a, b}{a, b, B}, q0, >

Demostrar que Mf siempre se detiene y que w L1 Mf(w) L2

Respuesta 1) Mf siempre se detiene: claramente sí, pues solamente ejecuta un movimiento

2) w L1 Mf(w) L2

Claramente si w comienza con 1 entonces cant1(Mf(w)) = cant1(w) – 1, y si w no comienza

con 1 cant1(Mf(w)) = cant1(w) + 1. Por lo tanto

a) Si w L1 cant1(w) es par cant1(Mf(w)) es impar Mf(w) L2

b) Si w L1 cant1(w) es impar cant1(Mf(w)) es par Mf(w) L2

De a) y b) se tiene que w L1Mf(w) L2.

Page 18: Teoria delacompuu v-vi

18

2.- L*= {<M> / L(M) = *} no es recursivo.

Mostrar que existe una reducción Lu a LS*

Respuesta Encontrar una función total computable tal que

(<M>,w)Lu f (<M>,w) L*

Sea Mf la máquina de Turing que computa la función f (<M>,w) = <M'> y trabaja de la

siguiente manera:

Mf construye <M'> escribiendo las quíntuplas necesarias para que M' borre la entrada y escriba

w en la cinta, posicione el cabezal y simule M sobre w. Así M' para en qAM acepta w

1) f((<M>,w)) es computable? Claramente sí, pues Mf para, luego de realizar una

cantidad finita de acciones

2) (<M>,w)Lu <M’> L* ?

a) Sea (<M>,w)Lu M para en qA con input w M' para en qA con cualquier input

M'> L*

b) Sea (<M>,w) Lu

i. <M> no es un código válido de máquina de Turing M'> no es un código

válido M'> L*

ii. M rechaza w M' rechaza todo input M'> L*

De a) y b) se tiene que (<M>,w)Lu <M’> L*

De 1) y 2) se tiene que Lu L*

Por lo tanto L* a R (porque Lu a R)

Page 19: Teoria delacompuu v-vi

19

CONCLUSIONES

La investigación no permitió observar los problemas que en su sencillez no son

computables por factores humanos y lógicos

La decibilidad de un lenguaje esta íntimamente relacionada con las maquinas de turing por

que al aceptar todas las cadenas se dice que el lenguajes es decible

El problemas de halting es la incertidumbre del desconocimiento del final de una maquina

de Turín por otra externar ya que la información el la banda no tiene que relación que nos

ayude a concluir el final

Que la decibilidad de una Teoría lógica se puede definir a partir de axiomas que estos a su

vez son reglas de inferencia

Que una comprensión de la reducibilidad puede ser el transformar un problema A a uno B

buscando simplificar el contenida del problema A

Que las funciones computables son la formalización de un algoritmo

El algoritmo de reducibilidad de turing esta basado en el mapeo de un problema A para así

transfórmalo en B siendo A recursivo en B

Page 20: Teoria delacompuu v-vi

20

BIBLIOGRAFÍA

Deán Kelly Teoría De Autómatas Lenguajes Formales. Editorial: Prentice Hall 1995

Elisa Viso Gurovich. Teoría de la computación. Facultad de ciencias UNAM. 2012 Ramón Brena. Autómatas y Lenguajes, Un enfoque de diseño. Tecnológico de monterrey verano 2003 Jorge Eduardo Carrión Miramontes. Teoría de la computación. Editorial:Lumisa 2009 Denning, Dennis, Qualitz, Machines, languages y computacion. Editorial Prentice Hall 1978. John E. Hopcroft y Jerey D. Ullman, Introducción a la teoría de autómatas, lenguajes y computacion.Editorial CECSA 1979.