Академический Документы
Профессиональный Документы
Культура Документы
PROBLEMA DE LA PARADA
Curso: Teoría de la Computación
Alumna:
TRUJILLO-PERU
2018
Contenido
INTRODUCCIÓN ...................................................................................................................................... 3
EL PROBLEMA DE LA PARADA ................................................................................................................ 5
Problemas y Lenguajes .................................................................................................................... 6
LENGUAJES RECURIVOS Y RECURSIVAMENTE ENUMERABLES. ........................................................ 6
PROBLEMAS DECIDIBLES RELACIONADOS LR (lenguajes regulares) ................................................ 9
PROBLEMAS DECIDIBLES RELACIONADOS CON LLC ........................................................................ 10
PROBLEMAS INDECIDIBLES .............................................................................................................. 10
INDECIDIBILIDAD .................................................................................................................................. 11
PROBLEMA DE LA DETENCION (HALTING PROBLEM) ..................................................................... 13
¿Qué pasaría si el problema de detención se pudiera resolver?........................................................ 17
CONCLUSIONES..................................................................................................................................... 18
2
INTRODUCCIÓN
Desde siempre, pero fundamentalmente desde que Galileo hiciera notar que las leyes
naturales podían describirse gracias a las matemáticas, se había dado por supuesto que todo
problema enunciado en términos matemáticos, más tarde o más temprano, podría resolverse
siguiendo una serie de pasos estipulados, ya fuese en forma geométrica, el método más usual
para los antiguos griegos, o mecanismos de tipo más algebraico, a los cuales estamos más
habituados en la actualidad.
Sin embargo, el hecho de que esto se diera por sentado no significaba que necesariamente
debiera ser así, por lo que se planteaba el despejar cualquier duda de ello. De ahí que se
planteara el que se denominó como "Entscheidungsproblem" o problema de la decisión. Este
problema fue formalizado por David Hilbert, primero parcialmente, a través de su décimo
problema de la Conferencia de París, y ya en forma más elaborada en el VIII Congreso
Internacional de Matemáticas, celebrado en Bolonia en 1928, ya casi al final de su vida. Para
Hilbert era crucial que todo problema dispusiera de una solución exacta, cuya única dificultad
rayara simplemente en encontrarla, pero sobre cuya existencia no cupiera dudas. Y así lo
plasma en una de sus reflexiones:
3
Así pues, en dicho congreso, Hilbert planteó, nada más y nada menos, la búsqueda de un
procedimiento algorítmico general válido para resolver todas las posibles cuestiones
matemáticas. Esta cuestión encajaba en su programa formalista, puesto que su mayor interés
era situar las matemáticas sobre una base inatacable, con axiomas y reglas que quedaran
establecidas de una vez por todas. En definitiva, su planteamiento del problema era obtener
la respuesta a tres importantes preguntas:
1. ¿Son las matemáticas completas, es decir cualquier proposición puede ser probada o
rechazada?
2. ¿Son las matemáticas consistentes, es decir no es posible demostrar algo falso?
3. ¿Son las matemáticas decidibles, es decir cualquier proposición se puede demostrar
como cierta o falsa tras una secuencia finita de pasos?”
Sin embargo, poco después de este congreso, en 1930, Kurt Gödel demostró, por medio de
sus célebres Teoremas de Incompletitud que las dos primeras preguntas no pueden ser
ciertas a la vez para la teoría de los números. El primer teorema de Gödel afirma: “En
cualquier formalización consistente de las matemáticas que sea lo bastante fuerte para definir
el concepto de los números naturales, se puede construir una afirmación que ni se puede
demostrar ni se puede refutar dentro de ese sistema”, mientras que el segundo afirma:
“Ningún sistema consistente se puede usar para demostrarse a sí mismo”.
Sin embargo, aún quedaba la tercera pregunta. La dificultad de resolver esta última cuestión
estribaba, fundamentalmente, en la inexistencia de una definición precisa de lo que se debe
entender por un "procedimiento mecánico" para realizar cálculos. Y es Turing quien lo
establece en 1936 en su trabajo “On computable numbers”.
4
EL PROBLEMA DE LA PARADA
El problema para el que encontró que no había una solución algorítmica era el que, desde
entonces, se conoce como problema de parada (Halting Problem). Es un problema también
sencillo de entender, que consiste en determinar si un determinado programa parará alguna
vez o tendrá una ejecución indefinida.
Pues bien, no existe, y el ingenioso razonamiento de Turing para mostrarlo fue el siguiente.
Supongamos que dicho método existe. Si es así, entonces será programable y existirá, por
tanto, un programa, que denominaremos P, y que hará lo siguiente:
A priori no parece complicado, y no hay razón para suponer que ese programa no pudiera
existir. Ahora bien, el razonamiento al que llegó Turing es el siguiente. Si disponemos de
dicho programa P, podemos entonces construir, a partir de él, otro programa diferente R, que
responderá al siguiente comportamiento:
5
Y ahora viene lo mejor, pues nos podemos preguntar ¿Parará siempre el programa R tal y
como lo hemos diseñado, o existirá alguna posibilidad de que tenga una ejecución infinita?
Para saberlo, qué mejor que recurrir a chequearlo con el programa P que, hemos supuesto,
siempre nos responderá a esta cuestión y para eso sirve. Y así, tenemos dos posibilidades,
que nos responda "SI" o "NO", no cabe ninguna otra. Pero entonces:
En ambas circunstancias tenemos sendas contradicciones que nos llevan a que dicho
programa, simplemente no puede existir.
Este fue el primer caso de problema indecidible que la genial visión de Alan Turing nos mostró
en su artículo que haría historia, aparte de definirnos cómo debería ser un computador, y eso
antes de que existiesen. Como curiosidad, indicar que, en el primer envío del mismo, fue
rechazado con el curioso argumento de que su máquina ni existía ni podía existir.
Problemas y Lenguajes
M acepta α.
M rechaza α.
6
M no acepta ni rechaza pues entra en un ciclo infinito.
Los lenguajes recursivos son conocidos como Turing-Decidibles mientras que los
recursivamente enumerables son conocidos como Turing-Reconocibles.
PROBLEMAS
7
Un problema es una pregunta de tipo SI/NO acerca de un conjunto infinito de posibles
instancias. Ejemplo: El problema del ciclo Hamiltoniano.
Una cadena pertenece a un lenguaje si la respuesta para la instancia que presenta es SI.
Problemas de decisión:
Es un problema formulado como una pregunta y que tiene como únicas respuestas posibles
SI – NO (o VERDADERO – FALSO)
Ejemplos:
DECIDIBLES: existe un ALGORITMO que para TODA INSTANCIA del problema devuelve
la RESPUESTA correcta.
POBLEMAS DECIDIBLES
Un algoritmo es una máquina de Turing que se detiene para todas las entradas sean o no
aceptadas.
8
Un problema decidible es un lenguaje recursivo. Si un lenguaje no es recursivo, entonces
el problema es indecidible.
9
AAFN={(B,W)|B es un AFN que acepta la cadena W}
Determinar si una gramática libre de contexto que genera la cadena W que pertenezca
al lenguaje
Determinar si el lenguaje de una gramática es vacío.
Determine si toda gramática libre de contexto es decidible.
PROBLEMAS INDECIDIBLES
Si un problema es una pregunta del tipo SI/NO acerca de un conjunto infinito de posibles
instancias y puede ser representado como un lengujae.
Algoritmo: es una Maquina de Turing que se detiene para todas las entradas sean o no
aceptadas.
10
Maquina de Turing Universal.
Una maquina Turing Universal U toma como entrada el codigo de una Maquina de Turing M
y una cadna w y acepta si y solo si M acepta w.
INDECIDIBILIDAD
¿Qué pasaría si una máquina con un alfabeto definido tuviera como entrada caracteres
que no reconoce?
Preguntas como está fueron las que se planteaba a medida exploraba las posibilidades de su
invención. Luego descubrió que al resolver el problema de la entrada de caracteres no
aceptados aparecían nuevos problemas que podrían hacer que una máquina fallara. A
medida que resolvía varios de estos problemas encontraba más y más problemas de
complejidad aún mayor.
Luego de batallar con tantas validaciones y problemas tomo una decisión que marcaría el
rumbo de la matemática y la computación hacia como la conocemos hoy en día, decidió hacer
una máquina que tomara el código de otra máquina y que revisara si esta podría cumplir el
propósito para el que fue diseñada. Pronto se encontró con lo que hoy conocemos con el
límite de la computación. Dicha máquina, no existe.
11
Turing logró demostrar que el problema normalmente radica en la decisión de esta máquina.
¿Qué sucedería si a una máquina le insertáramos su propio código para ver si cumple el
propósito para el que fue hecha? Esta es la repuesta dicha pregunta:
P1, es una máquina que determina si una máquina imprimirá “Hola, Mundo” al revisar su
código. Si la máquina de entrada imprime “Hola, Mundo”, entonces P1 imprimirá SI, caso
contrario imprimirá “Hola, Mundo”.
Ahora viene la prueba: Le damos a P1 su propio código como entrada. Al revisar su propio
código, podría determinar que con certeza va a imprimir “Hola, Mundo”, por lo tanto la salida
de P1 es SI. ¿Cómo es posible de que P1 al revisar su código determine que va a imprimir
“Hola, Mundo”, pero al dar su respuesta no lo haga? Ahora bien, en el caso de que P1
determine que su código no imprimirá “Hola, Mundo”, entonces la salida de P1 debería ser
“Hola, Mundo”. Una vez más nos encontramos en una contradicción.
Una máquina como P1 no puede existir, ya que, como aclaramos antes, su problema radica
en la decisión de su salida. No importa qué salida tenga P1, esta siempre será una
contradicción. A este tipo de problemas se les llama Indecidibles.
Alan Turing marcó los límites de la computación al definir que un problema indecidible es
aquel que no puede ser representado por una Máquina de Turing (TM)
12
PROBLEMA DE LA DETENCION (HALTING PROBLEM)
Definición del problema
Demostración de la indecibilidad
Para demostrar que el problema del alto es indecidible tenemos que probar la siguiente
afirmación:
NO existe una máquina MT NO existe una máquina MTh que tomando como entrada
cualquier máquina MT0, termine después de un tiempo finito y responda ‘SÍ’ cuando MT0
termine y ‘NO’ cuando MT0no termine.
Estrategia de la Demostración
Por contradicción demostraremos que no existe una maquina MTh que resuelva el
problema del alto.
Hipótesis:
Supondremos que existe MTh .
Al final llegaremos a una contradicción derivada de esta hipótesis.
Construyamos una nueva máquina MTs que se comporte de la siguiente manera:
- La nueva máquina MTs tomara como entrada una maquina dada MTo.
13
- MTs ejecutara la máquina MTh y le dará como entrada la máquina MTo Por hipótesis,
MTh terminará en algún momento y responderá ‘SÍ’ o ‘NO’ (según MTo termine o no).
- S i MTh dice ‘SÍ’, entonces MTs entra en un ciclo infinito y no termina.
- S i MT h dice ‘NO’, entonces MTs se detiene inmediatamente (la salida no importa).
Para ver por qué la entrada MTscausa una contradicción, supongamos dos casos:
1. Que MTs termina cuando es entrada de sí misma.
2. Que MTs no termina cuando es entrada de sí misma.
Caso 1
14
2. MTh recibe como entrada a MTs.
3. Por hipótesis, MTh responderá ‘SÍ’ ya que supusimos que MTs termina.
Esto implica que la suposición de que MTs termina al aplicarse a sí misma, implica
que MTs no termina
15
Caso 2
3. Por hipótesis, MTh responderá ‘NO’ ya que supusimos que MTs no termina.
16
4. Una vez que MTh responde ‘NO’, MTs termina.
Esto implica que la suposición de que MTs no termina al aplicarse a sí misma implica
que MTs termina
La conjetura de Goldbach podría decidirse. Es fácil construir una máquina de Turing que
pruebe cada número natural par mayor a 2 en si es la suma de dos primos o no; si
encuentra algún contraejemplo, se detiene inmediatamente e informa que se ha
encontrado un contraejemplo; de lo contrario, se ejecutará para siempre. Si el problema
de Detener fuese decidible, podríamos decidir si este programa se detendría o no, y así
dar una respuesta a la conjetura de Goldbach.
La complejidad de Kolmogorov sería computable.
17
La función Busy Beaver también sería computable.
Es útil conocer los tipos de problemas que son indecidibles porque nos ayuda a comprender
las limitaciones de nuestros modelos de computación
CONCLUSIONES
En Teoría de la Computación se estudia este problema desde los años 30, al que se
denomina “el problema de la parada” o “el problema de la detención”, y es considerado
como el problema irresoluble más conocido.
El Problema de la Parada de los Programas ha sido usado como argumento para
intentar diferenciar las capacidades de las personas de las de los programas.
Alan Turing demostró en su famoso teorema de indecibilidad que no es posible escribir
un programa de ordenador que nos diga si otro programa cualquiera se queda o no
se queda colgado.
Saber que un problema es indecidible, permite darse cuenta que el problema debe
ser simplificado o alterado para encontrar una solución computacional.
Ya que MTs fue construido legalmente, la única parte que puede ser responsable de
la contradicción es la máquina hipotética MTh.
La conclusión final es que una máquina de Turing MTh que resuelva el problema del
paro no existe.
18