En la teoría del computability el problema que para del es un problema de decisión que puede ser indicado como sigue: el
l dado una descripción de un programa y de una entrada finita, decide a si el programa acaba de funcionar o funcionará por siempre, dado esa entrada.
Alan Turing probado en 1936 que un algoritmo general para solucionar el problema que para para el todos los pares posibles de la programa-entrada de no puede existir. Decimos que el problema que para es el undecidable del sobre las máquinas de Turing Copeland (2004) atribuye el problema que para del real del término al Martin Davis .
El problema que para es un problema de decisión sobre características de los programas de computadora sobre un modelo Turing-completo fijo del cómputo. La pregunta es, dado un programa y una entrada al programa, si el programa parará eventual cuando está funcionado con esa entrada. En este marco abstracto, no hay limitaciones del recurso de la memoria o del tiempo en la ejecución de programa; puede tomar arbitrariamente de largo, y utiliza arbitrariamente mucho espacio de almacenaje, antes de parar. La pregunta es simplemente si el programa dado parará nunca en una entrada particular.
Por ejemplo, el lang=" del
La razón que el problema que para es famoso es porque es undecidable, que significa que no hay función computable que determina correctamente qué programas paran y cuáles no hacen.
Los problemas de decisión son representados convencionalmente por el sistema de los objetos que tienen la característica en la pregunta. El K del del sistema que para: = {(i, x) | el i del programa parará eventual si está funcionado con el x de la entrada}. representa el problema que para.
Este sistema es el recurrentemente enumerable, que significa que hay una función computable que enumera todos los pares ( i, x ) que contiene. Esta función computable simula todos los programas sobre todas las entradas paralelamente, de una forma similares a un programa de computadora con hilos múltiples, y a los avisos siempre que uno de los programas que son altos simulados.
Hay muchas formulaciones equivalentes del problema que para; cualquier sistema cuyo grado de Turing esté igual que el del problema que para se puede pensar en como tal formulación. Los ejemplos de tales sistemas incluyen:
{ i | el i del programa para eventual cuando está funcionado con la entrada 0}
{ i | hay cualquier x de la entrada tales que los altos del i del programa eventual cuando están funcionados con el x de la entrada}
Una tal consecuencia del undecidability del problema que para es que no puede haber un algoritmo general que decide a si una declaración dada sobre los números naturales es verdad o no. La razón de esto es que el asunto que indica que cierto algoritmo parará dado cierta entrada se puede convertir en una declaración equivalente sobre números naturales. Si teníamos un algoritmo que podría solucionar cada declaración sobre números naturales, podría solucionar ciertamente éste; pero eso determinaría si el programa original para, que es imposible, puesto que el problema que para es undecidable.
Otra más consecuencia del undecidability del problema que para es el teorema del arroz que indica que la verdad del cualquie declaración no trivial de sobre la función que es definida por un algoritmo es undecidable. Así pues, por ejemplo, el " del problema de decisión; este alto del algoritmo para la entrada 0" es ya undecidable. Observar que este teorema se sostiene para la función del definida por el algoritmo y no el algoritmo sí mismo. Es, por ejemplo, absolutamente posible decidir a si un algoritmo para dentro de 100 pasos, solamente esto no es una declaración sobre la función que es definida por el algoritmo.
El Gregorio Chaitin ha definido una probabilidad que paraba, representada por el símbolo Ω, un tipo de número verdadero que se dice informal para representar la probabilidad que un programa aleatoriamente producido para. Estos números tienen el mismo grado de Turing que el problema que para. Es un normal y el número trascendental que pueden ser definido pero no puede ser totalmente computado . Esto significa que uno puede probar que no hay algoritmo cuál produce los dígitos de Ω, aunque sus primeros dígitos se puedan calcular en casos simples.
Mientras que la prueba de Turing demuestra que no puede haber método o algoritmo general para determinar si los algoritmos paran, los casos individuales de ese problema pueden muy bien ser susceptibles al ataque. Dado un algoritmo específico, uno puede demostrar a menudo que debe parar para cualquier entrada, y de hecho los informáticos hacen a menudo apenas eso como parte de una prueba de la corrección. Pero cada prueba tiene que ser desarrollada específicamente para el algoritmo actual; no hay mecánico, manera general de determinar si los algoritmos en una máquina de Turing paran. Sin embargo, hay una cierta heurística que se puede utilizar en una manera automatizada para intentar construir una prueba, que tienen éxito con frecuencia en programas típicos. Este campo de la investigación se conoce como análisis automatizado de la terminación.
La introducción de Turing del modelo de máquina que se ha conocido como la máquina de Turing, introducida en el papel, ha probado un modelo conveniente para mucho de informática teórico desde entonces.
La prueba procede directo estableciendo que cada función computable total con dos discusiones diferencia del required h de la función. Con este fin, fijar un total arbitrario f de la función computable. Entonces el parcial g de la función siguiente es también computable: Porque el g es computable parcial, será asignado por lo menos un e del programa en el modelo elegido del cómputo, bajo asunción que el modelo es Turing-completo. La verificación que el g es computable confía en las construcciones siguientes (o sus equivalentes):
subprogramas (el programa que computa el f es un subprograma en el e del programa),
duplicación de valores (el e del programa computa el i de las entradas, el i para el f del i de la entrada para el g ),
ramificación condicional (el e del programa selecciona entre dos resultados dependiendo del valor que computa para el f ( i, i )),
no produciendo un resultado definido (por ejemplo, colocando por siempre),
vuelta de un valor de 0.
Sigue de la definición del g que uno de los dos casos siguientes debe sostenerse exactamente:
g ( e ) = f ( e, e ) = 0. En este caso h ( e, e ) = 1, porque el e del programa para en el e de la entrada.
el g ( e ) es &ne indefinido y del f ( e, e ); 0. En este caso h ( e, e ) = 0, porque el e del programa no para en el e de la entrada. En cualquier caso, el f no puede ser la misma función que el h . Porque el f era una función computable total arbitraria del con dos discusiones, todas tales funciones deben diferenciar del h .
style=" del
Hay los programas (intérpretes ) de los cuales simular la ejecución cualquier código fuente se dan. Tales programas pueden demostrar que un programa para si éste es el caso: el intérprete sí mismo parará eventual su simulación, que demuestra que el programa original paró. Sin embargo, un intérprete no parará si su programa de entrada no para, así que este acercamiento no puede solucionar el problema que para según lo indicado. No contesta con éxito al " no hace el halt" para los programas que no paran.
El problema que para está, en la teoría si no en la práctica, decidible para las máquinas deterministas con memoria finita. Una máquina con memoria finita tiene un número finito de estados, y cualquier programa determinista sobre él debe parar así o repetir eventual un estado anterior: " del ; … el cualquier máquina finite-state, si está ido totalmente sí mismo, caerá eventual en un patrón repetidor perfectamente periódico . La duración de este patrón de repetición no puede exceder el número de estados internos del " de la máquina…; (it3alicos en la original, Minsky 1967, P. 24)
Minsky nos advierte, sin embargo, que las máquinas tales como computadoras con e. millón de pequeñas porciones, cada uno con dos estados, tengan en la pedido de los estados posibles 21,000,000: " del ; Éste es un 1 seguido por cerca de trescientos mil ceros… incluso si tal máquina era funcionar en las frecuencias de rayos cósmicos, los eones de la evolución galáctica estaría como nada comparada a la época de un viaje a través de tal cycle" (Minsky P. 25) Minsky suplica a lector que sea sospechoso -- aunque una máquina pueda ser " de los autómatas finitos, y finitos; tener un número de limitations" teórico;: " del ; … las magnitudes implicadas deben llevar uno a sospechar que los teoremas y las discusiones basaron principalmente en el aspecto finito mero que el diagrama de estado puede no llevar mucho de significance" (ibid).
Para más en esta aplicación el " intractability" ver el castor ocupado del artículo.
Puede también ser decidido automáticamente si una máquina no determinista con memoria finita para en no, algunas, o todas las secuencias posibles de decisiones no deterministas, enumerando estados después de cada decisión posible.
Cuál es importante es que la formalización permite un directo que traza de algoritmos a un cierto tipo de datos que el algoritmo pueda funcionar sobre. Por ejemplo, si el formalismo deja algoritmos definir funciones sobre secuencias (tales como máquinas de Turing) entonces debe haber un trazado de estos algoritmos a las secuencias, y si el formalismo deja algoritmos definir funciones sobre números naturales (tales como funciones computables entonces allí debe ser un trazado de algoritmos a los números naturales. El trazado a las secuencias es generalmente el más directo, pero las secuencias sobre un alfabeto con los carácteres n se pueden también trazar a los números interpretándolos como números en un n - sistema de numeración ary.
La forma más débil del teorema se puede probar del undecidability del problema que para como sigue. Asumir que tenemos un constante y la axiomatización completa de todas las declaraciones de primer orden de la lógica verdadero sobre los números naturales entonces nosotros puede construir un algoritmo que enumere todas estas declaraciones. Esto significa que hay un N ( n ) del algoritmo eso, dado un n del número natural, computa una declaración de primer orden verdadera de la lógica sobre números naturales tales que, para todas las declaraciones verdaderas, hay por lo menos un n tales que el N ( n ) rinde esa declaración. Ahora suponer que queremos decidir si el algoritmo con el de la representación que un para en el i de la entrada. Sabemos que esta declaración se puede expresar con una declaración de primer orden de la lógica, decimos el H ( un, i ). Puesto que la axiomatización es completa sigue que cualquiera allí es un n tales que el N ( n ) = el H ( un, i ) o hay un n' tales que N ( n' ) = H ( un, i ) del ¬. Tan si iteramos sobre todo el n hasta nosotros o encontramos el H ( un, i ) o su negación, pararemos siempre. Esto significa que éste nos da un algoritmo para decidir al problema que para. Puesto que sabemos que no puede haber tal algoritmo, sigue que la asunción que hay un constante y la axiomatización completa de todas las declaraciones de primer orden verdaderas de la lógica sobre números naturales debe ser falsa.
Al " solve" el problema que para significa poder mirar el cualquier programa de y decir si para. No es bastante a poder mirar el los programas de alguÌn y decidir. Los seres humanos pueden también no poder solucionar el problema que para, debido al tamaño escarpado de la entrada (un programa con millones de líneas de código). Incluso para los programas cortos, no está claro que los seres humanos pueden decir siempre si paran. Por ejemplo, puede ser que preguntemos si esta función del pseudocode, que corresponde a una máquina particular de Turing, para nunca:
searchForOddPerfectNumber de la función () internacional del var n = 1 número entero arbitrary-precision de // del lazo { sumOfFactors del internacional del var = 0 para el del factor de de 1 a n - 1 { si el factor de es un factor del entonces de n sumOfFactors = sumOfFactors + factor } si sumOfFactors de = entonces de n lazo de la salida del n = n + 2 } de vuelta
Este programa busca hasta que encuentre un número perfecto impar, después para. Para si y solamente si existe tal número, que es un no se sabe importante en las matemáticas . Así pues, después de siglos de trabajo, los matemáticos tienen todavía descubrir si un programa simple, de diez líneas para. Esto hace difícil ver cómo los seres humanos podrían solucionar el problema que paraba.
Más generalmente, es generalmente fácil ver cómo escribir un programa simple de la búsqueda de la fuerza bruta que busque contraejemplos a cualquier teoría particular de la conjetura en gran número; si el programa encuentra un contraejemplo, para e imprime el contraejemplo, y guarda de otra manera el buscar por siempre. Por ejemplo, considerar la conjetura de la prima del gemelo famoso (y aún sin resolver). Esto pregunta si hay arbitrariamente el grande p de los números primeros y el q con el p +2 = el q . Ahora considerar el programa siguiente, que acepta un N de la entrada:
findTwinPrimeAbove de la función ( internacional N) internacional p = N lazo el si p es primero y p + 2 es el primero entonces de vuelta otro p = p + 1
Este programa busca para el gemelo prepara el p y el p +2 ambos por lo menos tan grandes como el N . Si hay arbitrariamente grande el gemelo prepara, él parará para todas las entradas posibles. Pero si hay un par más grande de gemelo prepara el P y el P +2, después el programa nunca parará si se da un N de la entrada más grande que el P . Así si podríamos contestar a la cuestión de si este programa para en todas las entradas, tendríamos la respuesta long-sought a la conjetura primera gemela. Es semejantemente directa escribir los programas que paran dependiendo de la verdad o de la falsedad para muchas otras conjeturas de la teoría de número .
Debido a esto, uno pudo decir que la insolubilidad del problema que para es poco sorprendente. Si hubiera una manera mecánica de decidir a si los programas arbitrarios pararían, después muchos problemas matemáticos al parecer difíciles sucumbirían a ella. Un argumento contrario a esto, sin embargo, es que incluso si el problema que paraba era decidible sobre las máquinas de Turing, como está sobre las computadoras físicas y el otro LBAs puede ser que todavía sea infeasible en la práctica porque toma demasiado tiempo o memoria para ejecutar. Por ejemplo, hay algunos límites superiores muy grandes en números con cierta teoría de las características en gran número (el ejemplo predominante de este ser el número de Graham), pero no es factible comprobar todos los valores debajo de este límite de una manera del naïve con un &mdash de la computadora; no pueden incluso llevar a cabo algunos de estos números en memoria.
Suponer que alguien demanda que el programa PHSR es un reconocedor parcial del disolvente que para. Construir un programa H: entrar un programa P X: = " entrar el del Q. si Q = P hizo salir el forever" otro del lazo del de los “altos”; funcionar PHSR con X como entrada
Si PHSR reconoce el programa construido X como disolvente que para parcial, ese significa ese P, la única entrada para que X produce un resultado, para. Si PHSR no puede reconocer X, después debe ser porque P no para. Por lo tanto H puede decidir a si un programa arbitrario P para; soluciona el problema que para. Puesto que esto es imposible, el programa PHSR no habría podido ser un reconocedor parcial del disolvente que paraba según lo demandado. Por lo tanto ninguÌn programa puede ser un reconocedor parcial del disolvente que para.
Otro ejemplo, HT, de una máquina de Turing que dé a respuestas correctas solamente para el casos de alguÌn del problema que para se puede describir por los requisitos que, si el HT se comienza a explorar un campo que lleve las primeras de una secuencia finita del un " consecutivo de ; 1" s, seguido por un campo con el " del símbolo; 0" (i. un campo en blanco), y seguido alternadamente por una secuencia finita del " consecutivo del i ; 1" s, en una cinta de otra manera en blanco, entonces
El HT para para cualquier estado que comienza, i. para cualquie entrada del positivo finito de los números enteros un y del i ;
Altos del HT en totalmente una cinta en blanco del si y solamente si la máquina de Turing representó por el un no para cuando está dado el estado y la entrada que comienzan representados por el i ; y
El HT para en una cinta del nonblank del, explorando un campo apropiado (que sin embargo no lleve necesario el " del símbolo; 1") si y solamente si la máquina de Turing representó por el un para cuando está dado el estado y la entrada que comienzan representados por el i . En este caso, el estado final en el cual el HT paró (contenido de la cinta, y campo que es explorado) será igual a un cierto estado intermedio particular que la máquina de Turing representó por el un logra cuando está dado el estado y la entrada que comienzan representados por el i ; o, si todos esos estados intermedios (estado que comienza incluyendo representado por el i ) salen del espacio en blanco de la cinta, después el estado final en el cual el HT paró explorará un " 1" en una cinta de otra manera en blanco. Mientras que su existencia no se ha refutado (esencialmente: porque no hay máquina de Turing que pararía el solamente si estuvo comenzada en una cinta en blanco), tal HT de la máquina de Turing solucionaría el parcialmente del problema que para solamente cualquiera (porque no explora necesario el " del símbolo; 1" en el estado final, si la máquina de Turing representó por el un para cuando está dado el estado que comienza y la entrada representada por el i, como declaraciones explícitas del problema que para para las máquinas de Turing puede requerir).
l para más considera la historia .
1900 -- El Hilbert plantea su " questions" 23; problemas de Hilbert de los cf en el congreso internacional del segundo de los matemáticos en París, " De éstos, el segundo era el de probar la consistencia “de los axiomas de Peano” en cuál, como él había demostrado, el rigor del depended" de las matemáticas; (Comentario de Hodges P.
1928 -- El Hilbert modifica su “segundo problema” en el congreso internacional de Bolonia (cf Reid págs. Las demandas de Hodges él planteó tres preguntas: es decir #1: ¿Era el de las matemáticas completo? #2: ¿Era el de las matemáticas constante? #3: ¿Era el de las matemáticas decidible? (Hodges P. La tercera pregunta se conoce como el Entscheidungsproblem (problema de decisión) (Hodges P. 34) del
1930 -- El Gödel anuncia una prueba como respuesta a los primeros dos del " de Reid P. 198 de las preguntas de Hilbert 1928.; Él era al principio solamente enojado y frustrated, pero por otra parte él comenzó a intentar ocuparse constructivo del problema… Gödel mismo sentía -- y expresado el pensamiento en su papel -- que su trabajo no contradijo el " formalista del punto de vista de Hilbert; (Reid P.
1931 -- El papel Kurt Gödel aparece: " En formalmente los asuntos de Undecidable de Principia Mathematica y sistemas relacionados I", (reimpreso en U P. 5ff)
1935 del 19 de abril -- Papel del " de la iglesia de Alonzo; Un problema insoluble del número elemental Theory" identifica lo que significa para una función al calculable eficaz. Tal función tendrá un algoritmo, y " … el hecho de que el algoritmo tenga terminado se convierte en… " con eficacia sabido; (it3alicos agregados, U P.
1936 -- La iglesia de Alonzo publica la primera prueba que el Entscheidungsproblem es nota insoluble sobre el Entscheidungsproblem '', reimpreso en U P.
1936 del 7 de octubre -- " de papel de s del poste Emilio '; Procesos combinatorios finitos. Formulación I" se recibe. El poste agrega a su " process" un " de la instrucción; (c) Stop". Él llamó un " tan de proceso; el tipo 1… si el proceso que determina termina para cada problem." específico; (U.289ff)
1937 -- de papel de s de Turing Alan el 'en números computables con un uso a los alcances de Entscheidungsproblem imprime en enero de 1937 (reimpreso en U, P. La prueba de Turing sale del cálculo por las funciones recurrentes e introduce la noción del cómputo por la máquina. Stephen Kleene (1952) refiere a esto como uno del " los primeros ejemplos de los problemas de decisión probaron el unsolvable".
1939 -- El Rosser de J. observa la equivalencia esencial del " method" eficaz; definido por Gödel, la iglesia, y Turing (Rosser en U P. 273, " Exposición informal de pruebas del teorema de Gödel y de Theorem" de la iglesia;).
1943 -- En su 1943 de papel Stephen Kleene indica ese " En la determinación de una teoría algorítmica completa, qué lo hacemos consiste describe un procedimiento… que el procedimiento termine necesario y en tal manera que en el resultado poder leer una respuesta definida, " Yes" o " No, " a la pregunta, " ¿Es el valor del predicado verdad? ". "
1952 -- Capítulos XIII (" de Stephen Kleene 1952) (; Functions" computable;) incluye una discusión de la insolubilidad del problema que para para las máquinas de Turing y la reformula en términos de máquinas que " eventual stop", es decir alto: " … no hay algoritmo para decidir a si cualquier máquina dada, cuando está salida de cualquier situación dada, del para eventual . " (Kleene (1952) p.382)
1952 -- " Davis [[Martin Davis]] lo piensa probablemente que él primero utilizó el término “problema que paraba” en una serie de las conferencias que él dio en el laboratorio de los sistemas de control en la Universidad de Illinois en 1952 (letra de Davis a Copeland, el 12 de diciembre de 2001.)" (Nota al pie de la página 61 en Copeland (2004) pp.40ff)
.
| Random links: | Neoliotomus | Centro de Laval | Rimantadine | Hun Ginjeet de Thela | Squatch |