Upload
poletiux
View
806
Download
0
Tags:
Embed Size (px)
Citation preview
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
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
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.
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.
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
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.
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
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
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
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
Aˈ
B Copia
d(M)d(M)
d(M)
B para con d(B)
B no para con d(B)
cicla
0
Aˈ
B
Copia
d(B)d(B)
d(B)
(b)Maquina B
(c)Contradicción
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
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.
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
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.
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.
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
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.
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)
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
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.