Articulo de referencia

Problema de parada

En la teoría de la computabilidad , el problema de la parada es el problema de decisión de, dado un programa informático arbitrario y una entrada, determinar si dicho programa t...

En la teoría de la computabilidad , el problema de la parada es el problema de decisión de, dado un programa informático arbitrario y una entrada, determinar si dicho programa terminará de ejecutarse y se detendrá, o continuará ejecutándose indefinidamente. [ 1 ] [ 2 ] [ 3 ] Alan Turing demostró en 1937 que el problema de la parada es indecidible , lo que significa que no existe ningún algoritmo general que pueda resolver correctamente el problema para todos los pares programa-entrada posibles. [ 4 ] El problema surge a menudo en las discusiones sobre computabilidad, ya que demuestra que algunas funciones son matemáticamente definibles pero no computables .

Una parte fundamental del planteamiento formal del problema es la definición matemática de un ordenador y un programa, generalmente mediante una máquina de Turing . La demostración muestra que, para cualquier programa f que pueda determinar si los programas se detienen, existe un programa "patológico" g para el cual f realiza una determinación incorrecta. Específicamente, g es el programa que, al ser llamado con cierta entrada, pasa su propio código fuente y su entrada a f y realiza la acción opuesta a la que f predice que hará g . El comportamiento de f sobre g demuestra indecidibilidad, ya que implica que ningún programa f resolverá el problema de la parada en todos los casos posibles.

Fondo

El problema de la parada es un problema de decisión sobre las propiedades de los programas informáticos en un modelo de computación Turing-completo fijo . Este modelo incluye todos los programas en lenguajes de programación Turing-equivalentes . Dado un programa y una entrada, la pregunta es si el programa se detendrá finalmente al ejecutarse con esa entrada en particular. En este marco abstracto, no existen limitaciones en la memoria ni en el tiempo necesarios para la ejecución del programa; este puede ejecutarse durante un tiempo arbitrario y consumir cantidades arbitrariamente grandes de almacenamiento antes de detenerse.

Por ejemplo, en pseudocódigo , el programa

while (true) continue

nunca se detiene; más bien, continúa para siempre en un bucle infinito . Por el contrario,

print "Hello, world!"

Se detiene inmediatamente después de imprimir.

Los casos sencillos como estos son fáciles de resolver, pero los programas más complejos no lo son. Turing demostró que no existe ningún algoritmo que determine correctamente si, para un programa y una entrada arbitrarios dados, el programa se detiene al ejecutarse con dicha entrada. La esencia de la demostración de Turing radica en que cualquier algoritmo de este tipo puede generar resultados contradictorios y, por lo tanto, no puede ser correcto.

Consecuencias de la programación

Algunos bucles infinitos pueden ser bastante útiles. Por ejemplo, los bucles de eventos suelen codificarse como bucles infinitos. [ 5 ] Sin embargo, la mayoría de las subrutinas están diseñadas para finalizar. [ 6 ]

En la computación en tiempo real estricto , las subrutinas no solo deben terminar, sino que deben terminar antes de una fecha límite determinada. [ 7 ] Para cumplir con estos requisitos, los programadores aplican la regla de mínima potencia y utilizan estilos restringidos, que no son completamente Turing-completos, lo que facilita demostrar que las subrutinas resultantes terminan antes de la fecha límite dada. Estos incluyen lenguajes como MISRA C , SPARK y Rocq .

errores comunes

El problema de la parada requiere un procedimiento de decisión que funcione para todos los programas y entradas. Sin embargo, para cualquier programa y entrada específicos, la respuesta es simplemente "se detiene" o "no se detiene". Consideremos dos procedimientos de decisión sencillos: uno que siempre responde "se detiene" y otro que siempre responde "no se detiene". En cualquier caso dado, uno de estos dos algoritmos responde correctamente, pero ninguno resuelve el problema de la parada.

Los intérpretes son programas que simulan la ejecución de programas, independientemente del código fuente que se les proporcione. Dichos programas pueden demostrar que un programa se detiene, ejecutándolo durante un número determinado de pasos. Sin embargo, un intérprete no se detendrá si el programa de entrada no se detiene, por lo que este enfoque no resuelve el problema de la parada tal como se plantea; no responde satisfactoriamente a la pregunta "¿no se detiene?" para programas que no se detienen, ni determina si un programa se detendrá finalmente o se ejecutará indefinidamente.

El problema de la parada es decidible para autómatas lineales acotados (LBA) o máquinas deterministas con memoria finita. Dicha máquina tiene un número finito de configuraciones posibles, por lo que cualquier programa determinista en ella debe eventualmente detenerse o repetir una configuración anterior: [ 8 ]

... cualquier máquina de estados finitos, si se la deja completamente a su suerte, acabará cayendo en un patrón repetitivo perfectamente periódico . La duración de este patrón repetitivo no puede exceder el número de estados internos de la máquina...

Sin embargo, Minsky señala: [ 9 ]

...las magnitudes involucradas deberían llevar a sospechar que los teoremas y argumentos basados ​​principalmente en la mera finitud [del] diagrama de estado pueden no tener mucha importancia.

Por ejemplo, una computadora con un millón de componentes de dos estados tendría al menos 2 1 000 000 de estados posibles: [ 9 ]

Esto es un 1 seguido de unos trescientos mil ceros... Incluso si una máquina así funcionara a las frecuencias de los rayos cósmicos, los eones de la evolución galáctica no serían nada comparados con el tiempo de un viaje a través de un ciclo de ese tipo.

En el caso de las máquinas de memoria finita no deterministas , también es posible decidir si la máquina se detiene en ninguna, algunas o todas las secuencias posibles de decisiones no deterministas, enumerando los estados después de cada decisión posible.

Historia

En abril de 1936, Alonzo Church publicó su demostración de la indecidibilidad de un problema en el cálculo lambda . La demostración de Turing se publicó más tarde, en enero de 1937. Desde entonces, se han descrito muchos otros problemas indecidibles, incluido el problema de la parada, que surgió en la década de 1950.

Cronología

  • 1900  ( 1900 ) : David Hilbert plantea sus "23 preguntas" (ahora conocidas como los problemas de Hilbert ) en el Segundo Congreso Internacional de Matemáticos en París. "De estas, la segunda era la de demostrar la consistencia de los ' axiomas de Peano ' de los que, como había demostrado, dependía el rigor de las matemáticas". [ 10 ]
  • 1920  ( 1920 ) 1921  ( 1921 ) : Emil Post explora el problema de la parada para los sistemas de etiquetas , considerándolo como un candidato a ser irresoluble. [ 11 ] Su irresolubilidad no se estableció hasta mucho más tarde, por Marvin Minsky . [ 12 ]
  • 1928  ( 1928 ) : Hilbert reformula su «Segundo Problema» en el Congreso Internacional de Bolonia. [ 13 ] Planteó tres preguntas: 1. ¿Eran las matemáticas completas ? 2. ¿Eran las matemáticas consistentes ? 3. ¿Eran las matemáticas decidibles ? [ 14 ] La tercera pregunta se conoce como el Entscheidungsproblem (Problema de Decisión). [ 15 ]
  • 1930  ( 1930 ) : Kurt Gödel anuncia una demostración como respuesta a las dos primeras preguntas de Hilbert de 1928. [ 16 ] "Al principio, él [Hilbert] solo estaba enojado y frustrado, pero luego comenzó a tratar de abordar el problema de manera constructiva... El propio Gödel sintió —y expresó esa idea en su artículo— que su trabajo no contradecía el punto de vista formalista de Hilbert". [ 17 ]
  • 1931  ( 1931 ) : Gödel publica "Sobre proposiciones formalmente indecidibles de Principia Mathematica y sistemas relacionados I". [ 18 ]
  • 19  de abril  de 1935  ( 1935-04-19 ) : Alonzo Church publica "Un problema irresoluble de la teoría elemental de números", en el que propone que la noción intuitiva de una función efectivamente calculable puede formalizarse mediante las funciones recursivas generales o, equivalentemente, mediante las funciones definibles por lambda . Demuestra que el problema de la parada para el cálculo lambda (es decir, si una expresión lambda dada tiene una forma normal ) no es efectivamente calculable. [ 19 ]
  • 1936  ( 1936 ) : Church publica la primera prueba de que el Entscheidungsproblem es irresoluble, utilizando una noción de cálculo mediante funciones recursivas . [ 20 ]
  • 7  de octubre  de 1936  ( 1936-10-07 ) : Se recibe el artículo de Emil Post titulado "Procesos combinatorios finitos. Formulación I". Post añade a su "proceso" una instrucción "(C) Stop". Denominó a dicho proceso "tipo 1... si el proceso que determina termina para cada problema específico". [ 21 ]
  • Mayo  de 1936  ( 1936-05 ) Enero  de 1937  ( 1937-01 ) : El artículo de Alan Turing, «Sobre los números computables con una aplicación al problema de decisión» , se imprimía en mayo de 1936 y se publicaba en enero de 1937. [ 22 ] Turing demostró que tres problemas eran indecidibles: el problema de la «satisfacción», el problema de la «impresión» y el problema de decisión . [ 23 ] La demostración de Turing difiere de la de Church al introducir la noción de computación por máquina. Este es uno de los «primeros ejemplos de problemas de decisión que se demostraron irresolubles». [ 24 ]
  • 1939  ( 1939 ) : J. Barkley Rosser observa la equivalencia esencial del "método efectivo" definido por Gödel, Church y Turing. [ 25 ]
  • 1943  ( 1943 ) : En un artículo, Stephen Kleene afirma que "Al establecer una teoría algorítmica completa, lo que hacemos es describir un procedimiento... que necesariamente termina y de tal manera que a partir del resultado podemos leer una respuesta definida, 'Sí' o 'No', a la pregunta, '¿Es verdadero el valor del predicado?'".
  • 1952  ( 1952 ) : Kleene incluye una discusión sobre la imposibilidad de resolver el problema de la parada para las máquinas de Turing y lo reformula en términos de máquinas que "eventualmente se detienen", es decir, se detienen: "...no existe un algoritmo para decidir si una máquina dada, cuando se inicia desde una situación dada, eventualmente se detiene ." [ 24 ]
  • 1952  ( 1952 ) : Martin Davis utiliza el término «problema de parada» en una serie de conferencias en el Laboratorio de Sistemas de Control de la Universidad de Illinois en 1952. Es probable que este sea el primer uso de este término. [ 26 ]

Origen del problema de la parada

Muchos artículos y libros de texto remiten la definición y la prueba de la indecidibilidad del problema de la parada al artículo de Turing de 1936. Sin embargo, esto no es correcto. [ 23 ] [ 27 ] Turing no utilizó los términos "halt" ni "halting" en ninguna de sus obras publicadas, incluido su artículo de 1936. [ 28 ] Una búsqueda en la literatura académica de 1936 a 1958 mostró que el primer material publicado que utilizó el término "problema de la parada" fue Rogers (1957) . Sin embargo, Rogers dice que tenía disponible un borrador de Davis (1958) , [ 23 ] y Martin Davis afirma en la introducción que "el experto tal vez encuentre alguna novedad en la organización y el tratamiento de los temas", [ 29 ] por lo que la terminología debe atribuirse a Davis. [ 23 ] [ 27 ] Davis afirmó en una carta que se había referido al problema de la parada desde 1952. [ 26 ] El uso en el libro de Davis es el siguiente: [ 30 ]

"[...] deseamos determinar si [una máquina de Turing] Z, al ser colocada en un estado inicial dado, eventualmente se detendrá o no. A este problema lo llamamos el problema de la parada para Z. [...]

Teorema 2.2 Existe una máquina de Turing cuyo problema de parada es irresoluble recursivamente .

Un problema relacionado es el problema de impresión para una máquina de Turing simple Z con respecto a un símbolo S i ".

Un posible precursor de la formulación de Davis es la declaración de Kleene de 1952, que difiere únicamente en la redacción: [ 23 ] [ 24 ]

No existe ningún algoritmo para decidir si una máquina determinada, al ser puesta en marcha desde una situación dada, finalmente se detendrá.

El problema de la parada es Turing equivalente tanto al problema de impresión de Davis («¿imprime alguna vez una máquina de Turing que parte de un estado dado un símbolo dado?») como al problema de impresión considerado en el artículo de Turing de 1936 («¿imprime alguna vez una máquina de Turing que parte de una cinta en blanco un símbolo dado?»). Sin embargo, la equivalencia de Turing es bastante imprecisa y no significa que los dos problemas sean iguales. Hay máquinas que imprimen pero no se detienen, y que se detienen pero no imprimen. Los problemas de impresión y parada abordan cuestiones diferentes y presentan importantes diferencias conceptuales y técnicas. Por lo tanto, Davis simplemente estaba siendo modesto cuando dijo: [ 23 ]

También cabe mencionar que la imposibilidad de resolver esencialmente estos problemas fue demostrada por primera vez por Turing.

Formalización

En informática teórica, un problema de decisión es cualquier problema que puede formularse como una pregunta de sí o no sobre un objeto matemático. Formalmente, el problema de la parada es un problema de decisión:

Dada la descripción de un programa (P) y una entrada (x), ¿finalmente se detiene (P(x))?

La representación convencional de los problemas de decisión es el conjunto de objetos que poseen la propiedad en cuestión. El conjunto de parada.

K = {( i , x ) | el programa i se detiene cuando se ejecuta con la entrada x }

representa el problema de la parada.

Este conjunto es recursivamente enumerable , lo que significa que existe una función computable que enumera todos los pares ( i , x ) que contiene. Sin embargo, el complemento de este conjunto no es recursivamente enumerable. [ 31 ] 

Indecidibilidad

Se dice que un problema de decisión es decidible si existe un algoritmo que siempre da la respuesta correcta, y un problema indecidible si no existe tal algoritmo. En su demostración original, Turing formalizó el concepto de algoritmo introduciendo las máquinas de Turing . Sin embargo, el resultado no es exclusivo de ellas; se aplica igualmente a cualquier otro modelo de computación que sea equivalente en su potencia computacional a las máquinas de Turing, como los algoritmos de Markov , el cálculo lambda , los sistemas de Post , las máquinas de registro o los sistemas de etiquetas .

Lo importante es que la formalización permita una correspondencia directa entre algoritmos y algún tipo de dato sobre el que puedan operar. Por ejemplo, si el formalismo permite que los algoritmos definan funciones sobre cadenas (como las máquinas de Turing), entonces debería existir una correspondencia entre estos algoritmos y las cadenas; y si el formalismo permite que los algoritmos definan funciones sobre números naturales (como las funciones computables ), entonces también debería existir una correspondencia entre los algoritmos y los números naturales. La correspondencia con cadenas suele ser la más directa, pero las cadenas sobre un alfabeto de n caracteres también pueden asignarse a números interpretándolas como números en un sistema numérico n -ario .

Existen muchos problemas indecidibles; cualquier conjunto cuyo grado de Turing sea igual al del problema de la parada es una formulación de este tipo. Ejemplos de tales conjuntos incluyen, además del problema de la parada:

  • { i | el programa i finalmente se detiene cuando se ejecuta con la entrada 0}
  • { i | existe una entrada x tal que el programa i finalmente se detiene cuando se ejecuta con la entrada x }.

Concepto de prueba

Christopher Strachey esbozó una demostración por contradicción de que el problema de la parada no tiene solución. [ 32 ] [ 33 ] La demostración procede de la siguiente manera: Supongamos que existe una función computable total halts(f) que devuelve verdadero si la subrutina f se detiene (cuando se ejecuta sin entradas) y falso en caso contrario. Ahora consideremos la siguiente subrutina:

def g () -> None : if halts ( g ): loop_forever ()

La función `halts(g)` debe devolver verdadero o falso, ya que se asumió que `halts` era una función computable total . Si `halts(g)` devuelve verdadero, entonces `g` llamará a `loop_forever` y nunca se detendrá, lo cual es una contradicción. Si `halts(g) ` devuelve falso, entonces `g` se detendrá, porque no llamará a `loop_forever` ; esto también es una contradicción. En resumen, `g` hace lo contrario de lo que ` halts` indica que debería hacer, por lo que `halts(g)` no puede devolver un valor de verdad que sea consistente con si `g` se detiene o no. Por lo tanto, la suposición inicial de que `halts` es una función computable total debe ser falsa.

Bosquejo de prueba rigurosa

El concepto anterior muestra el método general de la demostración, pero la función computable ` halts` no toma directamente una subrutina como argumento; en cambio, toma el código fuente de un programa. Además, la definición de `g` es autorreferencial . Una demostración rigurosa aborda estos problemas. El objetivo general es demostrar que no existe una función computable total que decida si un programa arbitrario `i` se detiene ante una entrada arbitraria `x` ; es decir, la siguiente función `h` (de "halts") no es computable: [ 34 ]

h(i,incógnita)={1si  programa i se detiene en la entrada incógnita,0de lo contrario.{\displaystyle h(i,x)={\begin{cases}1&{\text{si }}{\text{ el programa }}i{\text{ se detiene en la entrada }}x,\\0&{\text{en otro caso.}}\end{cases}}}

Aquí, el programa i se refiere al i -ésimo programa en una enumeración de todos los programas de un modelo de computación Turing-completo fijo.

Valores posibles para una función computable total f dispuestos en una matriz bidimensional. Las celdas naranjas representan la diagonal. Los valores de f ( i , i ) y g ( i ) se muestran en la parte inferior; U indica que la función g no está definida para un valor de entrada específico.

La demostración procede estableciendo directamente que ninguna función computable total con dos argumentos puede ser la función requerida h . Como en el esbozo del concepto, dada cualquier función binaria computable total f , la siguiente función parcial g también es computable por algún programa e :

gramo(i)={0si F(i,i)=0,indefinidode lo contrario.{\displaystyle g(i)={\begin{cases}0&{\text{si }}f(i,i)=0,\\{\text{indefinido}}&{\text{en otro caso.}}\end{cases}}}

La verificación de que g es computable se basa en las siguientes construcciones (o sus equivalentes):

  • subprogramas computables (el programa que calcula f es un subprograma en el programa e ),
  • duplicación de valores (el programa e calcula las entradas i , i para f a partir de la entrada i para g ),
  • ramificación condicional (el programa e selecciona entre dos resultados dependiendo del valor que calcula para f ( i , i )),
  • no producir un resultado definido (por ejemplo, mediante un bucle infinito),
  • devuelve un valor de 0.

El siguiente pseudocódigo para e ilustra una forma sencilla de calcular g :

procedimiento e ( i ) : si f ( i , i ) == 0 entonces devolver 0 sino bucle infinito

Dado que g es parcialmente computable, debe existir un programa e que calcule g , suponiendo que el modelo de computación sea Turing-completo. Este programa es uno de todos los programas en los que se define la función de parada h . El siguiente paso de la demostración muestra que h ( e , e ) no tendrá el mismo valor que f ( e , e ).

De la definición de g se deduce que debe cumplirse exactamente uno de los dos casos siguientes:

  • f ( e , e ) = 0 y por lo tanto g ( e ) = 0. En este caso, el programa e se detiene en la entrada e , por lo tanto h ( e , e ) = 1.
  • f ( e , e ) ≠ 0 y por lo tanto g ( e ) no está definido. En este caso, el programa e no se detiene en la entrada e , por lo que h ( e , e ) = 0.

En cualquier caso, f no puede ser la misma función que h . Dado que f era una función total computable arbitraria con dos argumentos, todas esas funciones deben ser diferentes de h .

Esta demostración es análoga al argumento diagonal de Cantor . Se puede visualizar una matriz bidimensional con una columna y una fila para cada número natural, como se indica en la tabla anterior. El valor de f ( i , j ) se coloca en la columna i , fila j . Dado que se supone que f es una función totalmente computable, cualquier elemento de la matriz se puede calcular usando f . La construcción de la función g se puede visualizar usando la diagonal principal de esta matriz. Si la matriz tiene un 0 en la posición ( i , i ), entonces g ( i ) es 0. De lo contrario, g ( i ) no está definida. La contradicción proviene del hecho de que hay alguna columna e de la matriz que corresponde a la propia g . Ahora supongamos que f fuese la función de parada h . Si g ( e ) está definida ( g ( e ) = 0 en este caso), entonces el programa e se detiene con la entrada e , por lo tanto f ( e,e ) = 1. Pero g ( e ) = 0 solo cuando f ( e,e ) = 0, lo que contradice f ( e,e ) = 1. De manera similar, si g ( e ) no está definida, entonces el programa e no se detiene con la entrada e , por lo tanto f ( e,e ) = 0, lo que lleva a g ( e ) = 0 bajo la construcción de g . Esto contradice la suposición de que g ( e ) no está definida. En ambos casos surge una contradicción. Por lo tanto, cualquier función computable arbitraria f no puede ser la función de parada h .

teoría de la computabilidad

Un método típico para demostrar un problemaPAG{\displaystyle P}ser indecidible es reducir el problema de la parada aPAG{\displaystyle P}Por ejemplo, no puede existir un algoritmo general que determine si una afirmación sobre los números naturales es verdadera o falsa. Esto se debe a que la proposición que indica que un programa se detendrá ante una entrada determinada puede convertirse en una afirmación equivalente sobre los números naturales. Si un algoritmo pudiera hallar el valor de verdad de cada afirmación sobre los números naturales, sin duda podría hallar el valor de verdad de esta; pero eso determinaría si el programa original se detiene.

El teorema de Rice generaliza el teorema de que el problema de la parada es irresoluble. Afirma que, para cualquier propiedad no trivial, no existe un procedimiento de decisión general que, para todos los programas, determine si la función parcial implementada por el programa de entrada posee dicha propiedad. (Una función parcial es una función que no siempre produce un resultado, por lo que se utiliza para modelar programas que pueden producir resultados o no detenerse). Por ejemplo, la propiedad "detenerse para la entrada 0" es indecidible. En este caso, "no trivial" significa que el conjunto de funciones parciales que satisfacen la propiedad no es ni el conjunto vacío ni el conjunto de todas las funciones parciales. Por ejemplo, "detenerse o no detenerse con la entrada 0" es claramente cierto para todas las funciones parciales, por lo que es una propiedad trivial y puede ser determinada por un algoritmo que simplemente indique "verdadero". Además, este teorema solo se aplica a las propiedades de la función parcial implementada por el programa; el teorema de Rice no se aplica a las propiedades del programa en sí. Por ejemplo, "detenerse al recibir la entrada 0 en 100 pasos" no es una propiedad de la función parcial implementada por el programa, sino una propiedad del programa que implementa la función parcial, y es perfectamente decidible.

Gregory Chaitin definió una probabilidad de parada , representada por el símbolo Ω , un tipo de número real que, informalmente, se dice que representa la probabilidad de que un programa generado aleatoriamente se detenga. Estos números tienen el mismo grado de Turing que el problema de la parada. Es un número normal y trascendental que se puede definir , pero no se puede calcular completamente . Esto significa que se puede demostrar que no existe ningún algoritmo que produzca los dígitos de Ω, aunque sus primeros dígitos se pueden calcular en casos sencillos.

Dado que la respuesta negativa al problema de la parada demuestra que existen problemas que una máquina de Turing no puede resolver, la tesis de Church-Turing limita lo que puede lograr cualquier máquina que implemente métodos efectivos . Sin embargo, no todas las máquinas concebibles por la imaginación humana están sujetas a la tesis de Church-Turing (por ejemplo, las máquinas oráculo ). Queda por determinar si existen procesos físicos deterministas reales que, a largo plazo, escapen a la simulación de una máquina de Turing, y en particular si algún proceso hipotético de este tipo podría aprovecharse útilmente en forma de una máquina calculadora (un hiperordenador ) capaz de resolver el problema de la parada para una máquina de Turing, entre otras cosas. También queda por determinar si dichos procesos físicos desconocidos intervienen en el funcionamiento del cerebro humano y si los humanos pueden resolver el problema de la parada. [ 35 ]

Aproximaciones

La prueba de Turing demuestra que no existe un método mecánico general (es decir, una máquina de Turing o un programa en algún modelo de computación equivalente ) para determinar si los algoritmos se detienen. Sin embargo, cada instancia individual del problema de la parada tiene una respuesta definitiva, que puede o no ser computable en la práctica. Dado un algoritmo y una entrada específicos, a menudo se puede demostrar si se detiene o no, y de hecho, los informáticos suelen hacerlo como parte de una prueba de corrección . Existen algunas heurísticas que se pueden utilizar de forma automatizada para intentar construir una prueba, las cuales suelen tener éxito en programas típicos. Este campo de investigación se conoce como análisis de terminación automatizado .

Se han establecido algunos resultados sobre el rendimiento teórico de las heurísticas del problema de la parada, en particular la fracción de programas de un tamaño dado que pueden ser clasificados correctamente por un algoritmo recursivo. Estos resultados no proporcionan cifras precisas porque las fracciones son incalculables y también dependen en gran medida de la codificación del programa elegida para determinar el "tamaño". Por ejemplo, consideremos clasificar los programas por su número de estados y utilizar un modelo específico de computación de "cinta semiinfinita de Turing" que genera un error (sin detenerse) si el programa se sale del lado izquierdo de la cinta.límitenortePAG(incógnitaLas paradas son decidiblesincógnitatienenorteestados)=1{\displaystyle \lim _{n\to \infty }P(x\,{\text{se detiene es decidible}}\mid x\,{\text{tiene}}\,n\,{\text{estados}})=1}, sobre programasincógnita{\displaystyle x}elegidos uniformemente por número de estados. Pero este resultado es en cierto sentido "trivial" porque estos programas decidibles son simplemente los que se desprenden de la cinta, y la heurística consiste simplemente en predecir que no se detendrán debido a un error. Por lo tanto, un detalle aparentemente irrelevante, a saber, el tratamiento de los programas con errores, puede resultar ser el factor decisivo para determinar la fracción de programas. [ 36 ]

Para evitar estos problemas, se han desarrollado varias nociones restringidas del "tamaño" de un programa. Una numeración densa de Gödel asigna números a los programas de tal manera que cada función computable aparece una fracción positiva en cada secuencia de índices del 1 al n, es decir, una Gödelización φ es densa si y solo si para todoi{\displaystyle i}, existe undo>0{\displaystyle c>0}de tal manera quelímite inferiornorte#{jnorte:0j<norte,ϕi=ϕj}/nortedo{\displaystyle \liminf _{n\to \infty }\#\{j\in \mathbb {N} :0\leq j<n,\phi _{i}=\phi _{j}\}/n\geq c}. Por ejemplo, una numeración que asigna índices2norte{\displaystyle 2^{n}}Para programas no triviales y todos los demás índices, el estado de error no es denso, pero existe una numeración de Gödel densa de programas Brainfuck sintácticamente correctos. [ 37 ] Una numeración de Gödel densa se denomina óptima si, para cualquier otra numeración de Gödelα{\displaystyle \alpha }, hay una función recursiva total 1-1F{\displaystyle f}y una constantedo{\displaystyle c}de tal manera que para todosi{\displaystyle i},αi=ϕF(i){\displaystyle \alpha _{i}=\phi _{f(i)}}yF(i)doi{\displaystyle f(i)\leq ci}Esta condición garantiza que todos los programas tengan índices no mucho mayores que sus índices en cualquier otra numeración de Gödel. Las numeraciones de Gödel óptimas se construyen numerando las entradas de una máquina de Turing universal . [ 38 ] Una tercera noción de tamaño utiliza máquinas universales que operan sobre cadenas binarias y mide la longitud de la cadena necesaria para describir el programa de entrada. Una máquina universal U es una máquina para la cual para cada otra máquina V existe una función computable total h tal queV(incógnita)=U(h(incógnita)){\displaystyle V(x)=U(h(x))}Una máquina óptima es una máquina universal que alcanza la cota de invariancia de complejidad de Kolmogorov , es decir, para cada máquina V , existe c tal que para todas las salidas x , si un programa V de longitud n produce x , entonces existe un programa U de longitud como máximonorte+do{\displaystyle n+c}generando x . [ 39 ]

Consideramos funciones computables parciales (algoritmos).A{\displaystyle A}. Para cadanorte{\displaystyle n}consideramos la fracciónϵnorte(A){\displaystyle \epsilon _ {n}(A)}de errores entre todos los programas de tamaño métrico como máximonorte{\displaystyle n}, contando cada programaincógnita{\displaystyle x}para quéA{\displaystyle A}no termina, produce una respuesta de "no lo sé" o produce una respuesta incorrecta, es decirincógnita{\displaystyle x}paradas yA(incógnita){\displaystyle A(x)}salidas DOES_NOT_HALT, oincógnita{\displaystyle x}no se detiene yA(incógnita){\displaystyle A(x)}salidas HALTS. El comportamiento puede describirse de la siguiente manera, para Gödelizaciones densas y máquinas óptimas: [ 37 ] [ 39 ]

  • Para cada algoritmoA{\displaystyle A},límite inferiornorteϵnorte(A)>0{\displaystyle \liminf _{n\to \infty }\epsilon _{n}(A)>0}En otras palabras, cualquier algoritmo tiene una tasa de error mínima positiva, incluso cuando el tamaño del problema se vuelve extremadamente grande.
  • Existeϵ>0{\displaystyle \epsilon >0}de tal manera que para cada algoritmoA{\displaystyle A},límite superiornorteϵnorte(A)ϵ{\displaystyle \limsup _{n\to \infty }\epsilon _{n}(A)\geq \epsilon }En otras palabras, existe una tasa de error positiva para la cual cualquier algoritmo tendrá un rendimiento peor que esa tasa de error con una frecuencia arbitraria, incluso a medida que el tamaño del problema crece indefinidamente.
  • infAlímite inferiornorteϵnorte(A)=0{\displaystyle \inf _{A}\liminf _{n\to \infty }\epsilon _{n}(A)=0}En otras palabras, existe una secuencia de algoritmos tal que la tasa de error se aproxima arbitrariamente a cero para una secuencia específica de tamaños crecientes. Sin embargo, este resultado permite secuencias de algoritmos que producen respuestas incorrectas.
  • Si consideramos únicamente algoritmos "honestos" que pueden no estar definidos pero que nunca producen respuestas incorrectas, entonces, dependiendo de la métrica,infAhonestolímite inferiornorteϵnorte(A){\displaystyle \inf _{A\,{\textrm {honesto}}}\liminf _{n\to \infty }\epsilon _{n}(A)}puede ser 0 o no. En particular, es 0 para máquinas universales de total izquierdo, pero para máquinas efectivamente óptimas es mayor que 0. [ 39 ]

La naturaleza compleja de estos límites se debe al comportamiento oscilatorio deϵnorte(A){\displaystyle \epsilon _ {n}(A)}Existen variedades nuevas de programas que aparecen con poca frecuencia y que se presentan en "bloques" arbitrariamente grandes, y una fracción de repeticiones que crece constantemente. Si se incluyen completamente los bloques de variedades nuevas, la tasa de error es al menosϵ{\displaystyle \epsilon }, pero entre bloques la fracción de repeticiones correctamente categorizadas puede ser arbitrariamente alta. En particular, una heurística de "conteo" que simplemente recuerda las primeras N entradas y reconoce sus equivalentes permite alcanzar una tasa de error arbitrariamente baja infinitamente a menudo. [ 37 ]

Teoremas de incompletitud de Gödel

Los conceptos planteados por los teoremas de incompletitud de Gödel son muy similares a los del problema de la parada, y las demostraciones son bastante parecidas. De hecho, una forma más débil del Primer Teorema de Incompletitud es una consecuencia directa de la indecidibilidad del problema de la parada. Esta forma más débil se diferencia del enunciado estándar del teorema de incompletitud al afirmar que es imposible una axiomatización efectiva de los números naturales que sea a la vez completa y sólida . La parte de "sólida" es el debilitamiento: implica que exigimos que el sistema axiomático en cuestión demuestre únicamente enunciados verdaderos sobre los números naturales. Dado que la solidez implica consistencia , esta forma más débil puede considerarse un corolario de la forma fuerte. Es importante observar que el enunciado de la forma estándar del Primer Teorema de Incompletitud de Gödel no se preocupa en absoluto por el valor de verdad de un enunciado, sino únicamente por la posibilidad de hallarlo mediante una demostración matemática .

La forma más débil del teorema se puede demostrar a partir de la indecidibilidad del problema de parada de la siguiente manera. [ 40 ] Supongamos que tenemos una axiomatización efectiva sólida (y por lo tanto consistente) y completa de todas las afirmaciones lógicas de primer orden verdaderas sobre los números naturales . Entonces podemos construir un algoritmo que enumere todas estas afirmaciones. Esto significa que hay un algoritmo N ( n ) que, dado un número natural n , calcula una afirmación lógica de primer orden verdadera sobre los números naturales, y que para todas las afirmaciones verdaderas, hay al menos un n tal que N ( n ) produce esa afirmación. Ahora supongamos que queremos decidir si el algoritmo con representación a se detiene en la entrada i . Sabemos que esta afirmación se puede expresar con una afirmación lógica de primer orden, digamos H ( a , i ). Dado que la axiomatización es completa, se deduce que o bien existe un n tal que N ( n ) = H ( a , i ) o bien existe un n tal que N ( n ) = ¬H ( a , i ). Por lo tanto, si iteramos sobre todos los n hasta encontrar H ( a , i ) o su negación, siempre nos detendremos, y además, la respuesta que nos dé será verdadera (por corrección). Esto significa que esto nos proporciona un algoritmo para resolver el problema de la parada. Dado que sabemos que no puede existir tal algoritmo, se deduce que la suposición de que existe una axiomatización efectiva, completa y correcta de todas las proposiciones verdaderas de lógica de primer orden sobre números naturales debe ser falsa.

Generalización

En los libros de texto sobre computabilidad se pueden encontrar muchas variantes del problema de la parada. [ 41 ] Típicamente, estos problemas son RE-completos y describen conjuntos de complejidadΣ10{\displaystyle \Sigma _{1}^{0}}En la jerarquía aritmética , es igual que el problema de parada estándar. Por lo tanto, las variantes son indecidibles, y el problema de parada estándar se reduce a cada una de ellas y viceversa. Sin embargo, algunas variantes tienen un mayor grado de insolubilidad y no pueden reducirse al problema de parada estándar. Los dos ejemplos siguientes son comunes.

Detención en todas las entradas

El problema de la parada universal , también conocido (en teoría de la recursión ) como totalidad , es el problema de determinar si un programa informático dado se detendrá para cada entrada (el nombre totalidad proviene de la pregunta equivalente de si la función calculada es total ). Este problema no solo es indecidible, como lo es el problema de la parada, sino altamente indecidible. En términos de la jerarquía aritmética , esΠ20{\displaystyle \Pi _{2}^{0}}-completo. [ 42 ]

Esto significa, en particular, que no se puede decidir ni siquiera con un oráculo para el problema de la parada.

Reconocer soluciones parciales

Hay muchos programas que, para algunas entradas, devuelven una respuesta correcta al problema de la parada, mientras que para otras entradas no devuelven ninguna respuesta. Sin embargo, el problema "dado el programa p , ¿es un solucionador parcial de la parada?" (en el sentido descrito) es al menos tan difícil como el problema de la parada. Para ver esto, supongamos que existe un algoritmo PHSR ("reconocedor de solucionadores parciales de la parada") para hacer eso. Entonces se puede usar para resolver el problema de la parada, de la siguiente manera: Para probar si el programa de entrada x se detiene en y , construya un programa p que para la entrada ( x , y ) reporte verdadero y diverja para todas las demás entradas. Luego pruebe p con PHSR.

El argumento anterior es una reducción del problema de parada al reconocimiento PHS, y de la misma manera, problemas más difíciles como la parada en todas las entradas también pueden reducirse, lo que implica que el reconocimiento PHS no solo es indecidible, sino que ocupa un lugar más alto en la jerarquía aritmética , específicamenteΠ20{\displaystyle \Pi _{2}^{0}}-completo.

Computación con pérdidas

Una máquina de Turing con pérdida es una máquina de Turing en la que parte de la cinta puede desaparecer de forma no determinista. El problema de la parada es decidible para una máquina de Turing con pérdida, pero no recursivo primitivo . [ 43 ]

Máquinas Oracle

Una máquina con un oráculo para el problema de la parada puede determinar si determinadas máquinas de Turing se detendrán con determinadas entradas, pero no puede determinar, en general, si las máquinas equivalentes a sí mismas se detendrán.

Véase también

Notas

  1. Calude, Cristian S. (2021). "Incompletitud y el problema de la parada". Studia Logica . Springer Nature . doi : 10.1007/s11225-021-09945-2 .
  2. Sipser 2006 .
  3. Davis 1958 , pág. 70.
  4. Turing 1937 .
  5. McConnell, Steve (2004). Code Complete (2.ª ed.). Pearson Education. pág. 374. ISBN   978-0-7356-3697-2.
  6. Huang, Han-Way (2009). El HCS12 / 9S12: Una introducción a la interfaz de software y hardware . pág. 197. ... si el programa se queda atascado en un bucle determinado, ... averigüe qué está mal. 
  7. Simon, David E. (1999). Un manual básico de software embebido . pág. 253. Por lo tanto, para los sistemas de tiempo real estricto, es importante escribir subrutinas que siempre se ejecuten en la misma cantidad de tiempo o que tengan un peor caso claramente identificable. 
  8. Minsky 1967 , p. 24. Cursiva en el original. 
  9. 1 2 Minsky 1967 , pág. 25.
  10. Hodges 1983 , pág. 83 ; comentario de Davis en Davis 1965 , pág. 108  
  11. Problemas absolutamente irresolubles y proposiciones relativamente indecidibles  : relato de una anticipación , reimpreso en Davis 1965 , págs. 340–433
  12. Minsky 1967 .
  13. Reid 1996 , págs. 188–189.
  14. Hodges 1983 , pág. 91.
  15. Hodges 1983 , pág. 91; Penrose 1989 , pág. 34.
  16. Reid 1996 , pág. 198.
  17. Reid 1996 , pág. 199.
  18. reimpreso en Davis 1965 , pág. 5 y siguientes 
  19. Iglesia 1936 .
  20. Una nota sobre el problema de decisión , reimpreso en Davis 1965 , pág. 110 
  21. Davis 1965 , pág. 289 y ss.
  22. reimpreso en Davis 1965 , pág. 115
  23. 1 2 3 4 5 6 Lucas 2021 .
  24. 1 2 3 Kleene 1952 , pág. 382.
  25. Rosser, "Exposición informal de las demostraciones del teorema de Gödel y del teorema de Church", reimpreso en Davis 1965 , pág. 223 
  26. 1 2 Carta de Davis a Copeland, 12 de diciembre de 2001, nota al pie 61 en Copeland 2004 , pág. 40 
  27. 1 2 Copeland 2004 , pág. 40.
  28. Búsqueda textual de las obras completas de Turing: Good (1992) , Gandy y Yates (2001) , Ince (1992) , Saunders (1992) . De manera similar, Hodges (1983) no tiene la palabra "halting" ni las palabras "halting problem" en su índice.
  29. ^ Davis 1958 , págs. vii-viii.
  30. Davis 1958 , págs. 70–71.
  31. Moore y Mertens 2011 , págs. 236–237.
  32. Strachey, C. (1 de enero de 1965). "Un programa imposible" . The Computer Journal . 7 (4): 313. doi : 10.1093/comjnl/7.4.313 .
  33. Daylight, Edgar G. (16 de abril de 2021). "El problema de la parada y el enfoque teórico del lenguaje de la seguridad: elogios y críticas de un historiador técnico" (PDF) . Computability . 10 (2): 141– 158. doi : 10.3233/COM-180217 . S2CID 233329507. Recuperado el 26 de agosto de 2021 . 
  34. Penrose 1989 , págs. 57–63.
  35. Copeland 2004 , pág. 15.
  36. Hamkins, Joel David; Miasnikov, Alexei (1 de octubre de 2006). "El problema de la parada es decidible en un conjunto de probabilidad asintótica uno" (PDF) . Notre Dame Journal of Formal Logic . 47 (4). doi : 10.1305/ndjfl/1168352664 . S2CID 15005164. Recuperado el 5 de noviembre de 2022 . 
  37. 1 2 3 Köhler, Sven; Schindelhauer, Christian; Ziegler, Martin (2005). "Sobre la aproximación de problemas de parada del mundo real" . Fundamentos de la teoría de la computación . Notas de clase en ciencias de la computación. Vol. 3623. págs. 454–466 . doi : 10.1007/11537311_40 . ISBN   978-3-540-28193-1.
  38. Lynch, Nancy (octubre de 1974). "Aproximaciones al problema de la parada" (PDF) . Journal of Computer and System Sciences . 9 (2): 143– 150. doi : 10.1016/S0022-0000(74)80003-6 .
  39. 1 2 3 Bienvenu, Laurent; Desfontaines, Damien; Shen, Alexander (5 de abril de 2016). "Algoritmos genéricos para el problema de la parada y máquinas óptimas revisitadas". Métodos lógicos en informática . 12 (2) 1633: 1. arXiv : 1505.00731 . doi : 10.2168/LMCS-12(2:1)2016 . S2CID 14763862 . 
  40. Aaronson, Scott (21 de julio de 2011). "El teorema de Rosser mediante máquinas de Turing" . Shtetl-Optimized . Consultado el 2 de noviembre de 2022 .
  41. por ejemplo, Sipser 2006 , Davis 1958 , Minsky 1967 , Hopcroft y Ullman 1979 , Börger 1989
  42. Börger 1989 , pág. 121.
  43. ^ Abdulla y Jonsson 1996 , pág. 92.

Referencias

  • Church, Alonzo (1936). "Un problema irresoluble de la teoría elemental de números". American Journal of Mathematics . 58 (2): 345– 363. doi : 10.2307/2371045 . JSTOR 2371045 . 
  • Copeland, B. Jack, ed. (2004). The essential Turing: seminal writings in computing, logic, philosophy, artificial intelligence, and artificial life, plus the secrets of Enigma . Oxford: Clarendon Press. ISBN 0-19-825079-7.
  • Davis, Martin (1965). Lo indecidible, trabajos básicos sobre proposiciones indecidibles, problemas irresolubles y funciones computables . Nueva York: Raven Press.El artículo de Turing es el número 3 de este volumen. Entre los artículos incluidos se encuentran los de Gödel, Church, Rosser, Kleene y Post.
  • Davis, Martin (1958). Computabilidad e insolubilidad . Nueva York: McGraw-Hill..
  • Rogers, Hartley (hijo) (1957). Teoría de las funciones recursivas y la computabilidad efectiva . Instituto Tecnológico de Massachusetts.
  • Kleene, Stephen Cole (1952). Introducción a la metamatemática . North-Holland. OCLC 523942. OL 52444455M .  El capítulo XIII ("Funciones computables") incluye un análisis de la imposibilidad de resolver el problema de la parada para las máquinas de Turing. A diferencia de la terminología de Turing sobre máquinas sin parada y sin círculos, Kleene se refiere en cambio a máquinas que "se detienen", es decir, se detienen.
  • Lucas, Salvador (junio de 2021). "Los orígenes del problema de la parada". Journal of Logical and Algebraic Methods in Programming . 121 100687. doi : 10.1016/j.jlamp.2021.100687 . hdl : 10251/189460 . S2CID 235396831 . 
  • Minsky, Marvin (1967). Computación: máquinas finitas e infinitas . Englewood Cliffs, NJ: Prentice-Hall. ISBN 0-13-165563-9.Véase el capítulo 8, sección 8.2, «La imposibilidad de resolver el problema de la parada».
  • Moore, Cristopher ; Mertens, Stephan (2011). La naturaleza de la computación . Oxford University Press. doi : 10.1093/acprof:oso/9780199233212.001.0001 . ISBN 978-0-19-923321-2.
  • Reid, Constance (1996). Hilbert . Nueva York: Copernicus. ISBN 0-387-94674-8.Publicada por primera vez en 1970, esta fascinante historia de las matemáticas y la física alemanas abarca desde la década de 1880 hasta la de 1930. Cientos de nombres conocidos por matemáticos, físicos e ingenieros aparecen en sus páginas. Si bien adolece de la falta de referencias explícitas y de escasas notas a pie de página, Reid afirma que sus fuentes fueron numerosas entrevistas con personas que conocieron personalmente a Hilbert, así como sus cartas y documentos.
  • Sipser, Michael (2006). «Sección 4.2: El problema de la parada» . Introducción a la teoría de la computación (segunda  edición). PWS Publishing. págs. 173-182 . ISBN  0-534-94728-X.
  • Turing, AM (1937). "Sobre los números computables, con una aplicación al problema de decisión" . Actas de la Sociedad Matemática de Londres . s2-42 (1). Wiley: 230–265 . Bibcode : 1937PLMS...42..230T . doi : 10.1112/plms/s2-42.1.230 . ISSN 0024-6115 . S2CID 73712. Archivado del original el 7 de octubre de 2003.  Turing , AM (1938). "Sobre los números computables, con una aplicación al problema de decisión. Una corrección" . Actas de la Sociedad Matemática de Londres . s2-43 (1). Wiley: 544–546 . doi : 10.1112/plms/s2-43.6.544 . ISSN 0024-6115 . Archivado del original el 7 de octubre de 2003. Este es el artículo trascendental donde Turing define las máquinas de Turing , formula el problema de la parada y demuestra que este (así como el problema de decisión ) es irresoluble.
  • Penrose, Roger (1989). La nueva mente del emperador: sobre ordenadores, mentes y las leyes de la física (  edición reimpresa corregida de 1990). Oxford: Oxford University Press. ISBN 0-19-286198-0.Véase el capítulo 2, «Algoritmos y máquinas de Turing». Una presentación demasiado compleja (véase el artículo de Davis para un modelo mejor), pero una exposición exhaustiva de las máquinas de Turing, el problema de la parada y el cálculo lambda de Church.
  • Hopcroft, John E .; Ullman, Jeffrey D. (1979). Introducción a la teoría de autómatas, lenguajes y computación (1.ª  ed.). Addison-Wesley. ISBN 81-7808-347-7.Véase el capítulo 7, «Máquinas de Turing». Un libro centrado en la interpretación automática de «lenguajes», la NP-completitud, etc.
  • Hodges, Andrew (1983). Alan Turing: el enigma . Nueva York: Simon and Schuster. ISBN 0-671-49207-1.Véase el capítulo "El espíritu de la verdad" para un análisis histórico de su demostración y una discusión sobre la misma.
  • Börger, Egon (1989). Computabilidad, complejidad, lógica . Ámsterdam: Holanda Septentrional. ISBN 0-08-088704-X.
  • Abdulla, Parosh Aziz; Jonsson, Bengt (1996). "Verificación de programas con canales poco fiables" . Information and Computation . 127 (2): 91– 101. doi : 10.1006/inco.1996.0053 .
  • Obras completas de A. M. Turing
    • Good, Irving John, ed. (1992). Matemáticas puras . North-Holland. ISBN 978-0-444-88059-8.
    • Gandy, RO; Yates, CEM, eds. (5 de diciembre de 2001). Lógica matemática . Elsevier. ISBN 978-0-08-053592-0.
    • Ince, DC, ed. (1992). Inteligencia mecánica . North-Holland. ISBN 978-0-444-88058-1.
    • Saunders, PT, ed. (26 de noviembre de 1992). Morfogénesis . Elsevier. ISBN 978-0-08-093405-1.

Lecturas adicionales

  • c2:Problema de parada
  • Alfred North Whitehead y Bertrand Russell , Principia Mathematica hasta *56, Cambridge en University Press, 1962. Re: el problema de las paradojas, los autores discuten el problema de un conjunto que no es un objeto en ninguna de sus "funciones determinantes", en particular "Introducción, Cap. 1 pág. 24 "...dificultades que surgen en la lógica formal", y Cap. 2.I. "El principio del círculo vicioso" pág.  37 y ss., y Cap. 2.VIII. "Las contradicciones" pág.  60 y ss.
  • Martin Davis , "¿Qué es un cálculo?", en Mathematics Today , Lynn Arthur Steen, Vintage Books (Random House), 1980. Un artículo breve pero excelente, quizás el mejor jamás escrito sobre máquinas de Turing para el público general. Davis simplifica la máquina de Turing a un modelo mucho más sencillo basado en el modelo de cálculo de Post. Analiza la demostración de Chaitin . Incluye breves biografías de Emil Post y Julia Robinson .
  • Edward Beltrami , ¿Qué es el azar? Azar y orden en matemáticas y en la vida , Copernicus: Springer-Verlag, Nueva York, 1999. Una lectura amena y accesible para el lector no especializado con inclinación por las matemáticas; los temas más complejos se presentan al final. Incluye un modelo de máquina de Turing. Analiza las contribuciones de Chaitin .
  • Ernest Nagel y James R. Newman , La prueba de Gödel , New York University Press, 1958. Excelente obra sobre un tema muy complejo. Dirigida a lectores no especialistas con inclinación matemática. Analiza la prueba de Gentzen en las páginas 96-97 y en las notas a pie de página. Los apéndices abordan brevemente los axiomas de Peano e introducen al lector en la lógica formal.
  • Daras, Nicholas J.; Rassias, Themistocles M. (2018). Matemáticas discretas modernas y análisis: con aplicaciones en criptografía, sistemas de información y modelado . Cham, Suiza: Springer International Publishing. ISBN 978-3-319-74324-0.El capítulo 3, sección 1, contiene una descripción detallada del problema de la parada, una demostración por contradicción y una útil representación gráfica del problema de la parada.
  • Taylor Booth , Sequential Machines and Automata Theory , Wiley, Nueva York, 1967. Véase el capítulo 9, Máquinas de Turing. Libro complejo, dirigido a ingenieros eléctricos y técnicos especializados. Trata sobre recursión, recursión parcial con referencia a las máquinas de Turing y el problema de la parada. Incluye un modelo de máquina de Turing . Las referencias al final del capítulo 9 abarcan la mayoría de los libros antiguos (de 1952 a 1967, incluyendo a autores como Martin Davis, F. C. Hennie, H. Hermes, S. C. Kleene, M. Minsky y T. Rado) y diversos artículos técnicos. Véase la nota en Programas Busy-Beaver.
  • Los programas Busy Beaver se describen en Scientific American, agosto de 1984, y también en marzo de 1985, pág.  23. Una referencia en Booth los atribuye a Rado, T. (1962), On non-computable functions, Bell Systems Tech. J. 41. Booth también define el problema Busy Beaver de Rado en los problemas 3, 4, 5 y 6 del capítulo 9, pág.  396.
  • David Bolter , Turing's Man: Western Culture in the Computer Age , The University of North Carolina Press, Chapel Hill, 1984. Para el público general. Puede estar desactualizado. Incluye otro modelo (muy simple) de la máquina de Turing.
  • Sven Köhler, Christian Schindelhauer, Martin Ziegler, Sobre la aproximación de problemas de parada del mundo real , págs. 454-466 (2005) ISBN 3540281932Springer Lecture Notes in Computer Science, volumen 3623: La indecidibilidad del problema de la parada implica que no todas las instancias pueden resolverse correctamente; pero ¿quizás "algunas", "muchas" o "la mayoría" sí? Por un lado, la respuesta constante "sí" será correcta infinitamente a menudo, e incorrecta también infinitamente a menudo. Para que la pregunta sea razonable, consideremos la densidad de las instancias que pueden resolverse. Esta depende significativamente del sistema de programación en cuestión.
  • Limitaciones lógicas a la ética de las máquinas, con consecuencias para las armas autónomas letales - artículo analizado en: ¿Significa el problema de la parada que no existen robots morales?
  • Descifrando el problema de la parada : una prueba poética de la indecidibilidad del problema de la parada.
  • Película de animación : una animación que explica la demostración de la indecidibilidad del problema de la parada.
  • Una demostración de 2 minutos del segundo teorema más importante del segundo milenio : una demostración en tan solo 13 líneas.
  • haltingproblem.org - Vídeos y documentos populares que explican el problema de la parada.