¿Por qué la máquina de Turing es un modelo popular de computación?

68

Soy un estudiante universitario de CS. Entiendo cómo se le ocurrió a Turing su máquina abstracta (modelar a una persona haciendo un cálculo), pero me parece una abstracción incómoda y poco elegante. ¿Por qué consideramos una "cinta" y una cabeza de máquina que escribe símbolos, cambia de estado y desplaza la cinta de un lado a otro?

¿Cuál es el significado subyacente? Un DFA es elegante: parece capturar con precisión lo que es necesario para reconocer los idiomas normales. Pero la máquina de Turing, a mi juicio novato, es solo un artilugio abstracto torpe.

Después de pensarlo, creo que el modelo de cómputo más idealizado sería decir que algún sistema físico correspondiente a la cadena de entrada, después de ponerse en movimiento, alcanzaría un equilibrio estático que, con una interpretación equivalente a la utilizada para formar el sistema de la cadena original correspondería a la cadena de salida correcta. Esto captura la noción de "automatización", ya que el sistema cambiaría determinísticamente basándose únicamente en el estado original.

Editar :

Después de leer algunas respuestas, me di cuenta de que lo que me confunde acerca de la máquina de Turing es que no parece mínima. ¿No debería el modelo canónico de computación transmitir obviamente la esencia de la computabilidad?

Además, en caso de que no estuviera claro, sé que los DFA no son modelos completos de cómputo.

Gracias por las respuestas

Alex
fuente
2
Esperemos que las clases futuras ayuden a aclarar.
Yuval Filmus
19
Tal vez encuentre el cálculo lambda como un modelo de cálculo más natural. Es en lo que se basa la programación funcional.
Bakuriu
44
En realidad, estoy a punto de graduarme. El curso de más alto nivel que tomé que involucraba la teoría de autómatas se detuvo con las máquinas de Turing, aunque mencionaron la equivalencia entre los diversos modelos de computación. Incluso hice mi parte justa de la "programación" TM, justamente básica. Sin embargo, el TM siempre me molestó. No parecía "mínimo"; no me expuso la esencia de la computación.
Alex
44
" algún sistema físico correspondiente a la cadena de entrada ": ¿cómo se vería esa correspondencia? La máquina de turing es un modelo formal bastante simple pero potente para exactamente tal cosa.
Bergi
2
Las máquinas de Turing cambian determinísticamente según el estado original (si se refiere a la configuración). Entonces, ¿qué tiene de malo?
user23013

Respuestas:

72

Bueno, un DFA es solo una máquina de Turing que solo puede moverse hacia la derecha y que debe aceptar o rechazar tan pronto como se quede sin caracteres de entrada. Así que no estoy seguro de que realmente se pueda decir que un DFA es natural, pero una máquina de Turing no lo es.

Dejando a un lado la crítica de la pregunta, recuerde que Turing estaba funcionando antes de que existieran las computadoras. Como tal, no estaba tratando de codificar lo que hacen las computadoras electrónicas sino, más bien, la computación en general. Mis padres tienen un diccionario de la década de 1930 que define la computadora como "alguien que computa" y esto es básicamente de dónde venía Turing: para él, en ese momento, el cómputo era sobre reglas de cálculo, tablas de registro, lápices y trozos de papel. En esa mentalidad, reescribir símbolos en una cinta de papel no parece una mala abstracción.

Bien, bien, estás diciendo (¡espero!) Pero ya no estamos en la década de 1930, ¿por qué todavía usamos esto? Aquí, no creo que haya una razón específica. La ventaja de las máquinas de Turing es que son razonablemente simples y somos bastante buenos para probar cosas sobre ellas. Aunque especificar formalmente un programa de máquina de Turing para realizar una tarea en particular es muy tedioso, una vez que lo ha hecho varias veces, tiene una intuición razonable sobre lo que pueden hacer y ya no necesita escribir las especificaciones formales. El modelo también se extiende fácilmente para incluir otras características naturales, como el acceso aleatorio a la cinta. Por lo tanto, son un modelo bastante útil que entendemos bien y también tenemos una muy buena comprensión de cómo se relacionan con las computadoras reales.

Uno podría usar otros modelos, pero luego tendría que hacer una gran cantidad de traducción entre los resultados para el nuevo modelo y la gran cantidad de trabajo existente sobre lo que pueden hacer las máquinas de Turing. Nadie ha encontrado un reemplazo para las máquinas de Turing que han tenido las ventajas suficientes para que parezca una buena idea.

David Richerby
fuente
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Gilles 'SO- deja de ser malvado'
56

Estás haciendo varias preguntas diferentes. Déjame responder brevemente uno por uno.

¿Qué es tan importante sobre el modelo de máquina de Turing?

λ

En ese momento, el intento de Turing de definir la computabilidad parecía ser el más satisfactorio. Eventualmente resultó que todos los modelos de computación descritos anteriormente son equivalentes ; todos describen la misma noción de computabilidad. Por razones históricas, el modelo de Turing salió como la forma más canónica de definir la computabilidad. El modelo también es muy rudimentario y muy fácil de trabajar, en comparación con muchos otros modelos, incluidos los enumerados anteriormente.

La informática habitual enseña a las máquinas de Turing como la definición de computabilidad, y luego las usa también para explorar la teoría de la complejidad. Pero los algoritmos se analizan con respecto a un modelo más realista conocido como la máquina RAM, aunque este problema generalmente se oculta bajo la alfombra como un secreto para los expertos.

¿No son los DFA un mejor modelo?

Esta fue la motivación original detrás del famoso artículo de Rabin y Scott, los autómatas finitos y sus problemas de decisión:

Las máquinas de Turing son ampliamente consideradas como el prototipo abstracto de las computadoras digitales; Sin embargo, los trabajadores en el campo han sentido cada vez más que la noción de una máquina de Turing es demasiado general para servir como un modelo preciso de computadoras reales. Es bien sabido que incluso para cálculos simples es imposible dar un límite superior a priori sobre la cantidad de cinta que necesitará una máquina Turing para cualquier cálculo dado. Es precisamente esta característica la que hace que el concepto de Turing sea poco realista.

En los últimos años, la idea de un autómata finito ha aparecido en la literatura. Estas son máquinas que tienen solo un número finito de estados internos que se pueden usar para la memoria y la computación. La restricción de la finitud parece dar una mejor aproximación a la idea de una máquina física. Por supuesto, tales máquinas no pueden hacer tanto como las máquinas de Turing, pero la ventaja de poder calcular una función recursiva general arbitraria es cuestionable, ya que muy pocas de estas funciones surgen en aplicaciones prácticas.

Sin embargo, resultó que mientras que las máquinas de Turing son demasiado fuertes, los DFA son demasiado débiles . Hoy en día los teóricos prefieren la noción de cálculo de tiempo polinómico , aunque esta noción tampoco está exenta de problemas. Dicho esto, los DFA y NFA todavía tienen sus usos, principalmente en compiladores (utilizados para el análisis léxico) y dispositivos de red (utilizados para un filtrado extremadamente eficiente).

¿No es el modelo de máquina Turing demasiado limitado?

La tesis de Church-Turing establece que las máquinas de Turing capturan la noción física de computabilidad. Yuri Gurevich ha liderado un intento de probar esta tesis, formulando una clase más general de dispositivos de computación conocidos como máquinas de estado abstractas y demostrando que son equivalentes en potencia a las máquinas de Turing. Quizás estas máquinas son análogas a su modelo idealizado.

Yuval Filmus
fuente
17

El significado subyacente es sobre la idea de equivalencia de Turing. El modelo exacto no es importante, siempre que sea equivalente a Turing. Pero es mejor usar un modelo más simple para que pueda probar la equivalencia con otros modelos más fácilmente.

Más exactamente, es mejor facilitar la simulación de este modelo en otros modelos, ya que sabemos que la mayoría de los lenguajes de programación avanzados son equivalentes a Turing (con ciertos supuestos sobre las direcciones de memoria) y pueden usarse para simular otros modelos.

Hay otros modelos, como el cálculo lambda y las gramáticas (reescritura de cadenas). Pero es más fácil definir restricciones de tiempo y espacio en una máquina Turing. También puede usar un lenguaje de programación como Brainfuck, pero requiere un trabajo innecesario para, por ejemplo, redefinir los símbolos para obtener una modificación lógicamente trivial a veces.

Entonces, la máquina de Turing me pareció bastante apropiada si tienes que aprender un solo modelo para todo. Pero si vas a aprender varios modelos de todos modos, no veo nada de malo en aprender cálculo lambda para la idea de equivalencia de Turing, Brainfuck para probar otros modelos equivalentes de Turing y lenguajes de programación prácticos (mejor con pila accesible y sin variables ocultas) para las limitaciones de tiempo / espacio, y solo considere la máquina Turing como una herramienta para probar estas cosas equivalentes si a nadie le molesta encontrar una forma de evitarlo. Esto sucede naturalmente si no comenzaste por aprender la teoría subyacente primero, pero solo lo hiciste cuando los encontraste útiles.

usuario23013
fuente
1
Esencialmente, todas las CPU modernas reales son máquinas de registro con RAM. Incluso los microcontroladores o las arquitecturas de juguetes con un solo registro de acumulador suelen tener algún tipo de registro de dirección separado en el que puede cargar punteros, en lugar de ser una máquina de acumulador puro. Pero el hardware real tiene direcciones de tamaño fijo, y por lo tanto no está completo de Turing. IDK si el modelo de máquina de registro se usa mucho en CS teórico, pero es cómo funciona el lenguaje ensamblador en la vida real, y puede ser útil de entender para el análisis de rendimiento porque todo se compila en asm.
Peter Cordes
14

Me gustaría responder a esta parte de la pregunta, agregada en una edición:

"¿No debería el modelo canónico de computación transmitir obviamente la esencia de la computabilidad?"

TTT

Esa es una de las esencias de la computabilidad: cualquiera que sea la noción general de computabilidad que uno tenga en mente, debería haber una sola máquina que lo haga todo. Eso es exactamente lo que hace una máquina universal de Turing. También es lo que hacen las computadoras modernas (sujeto a la idealización físicamente irreal de tener memoria infinita).

Otra forma de decir esto, que aborda directamente su preocupación de que las máquinas de Turing no sean mínimas, es que son tan mínimas como pueden ser, sujetas al requisito de que describan una noción general de computabilidad para la cual existe una máquina universal.

Lee Mosher
fuente
Gracias por recordarme sobre la máquina universal. Veo cómo eso implica un cálculo "completo".
Alex
5

Las máquinas de Turing no están destinadas a ser utilizadas literalmente; programar en ellos es algo que uno solo haría una vez como ejercicio, para entender cómo funcionan.

No están hechos específicamente para "hacer" nada. No necesitan ser mínimos, no necesitan estar cómodos para trabajar.

Son simplemente un modelo de una máquina que podrías construir, que sería tan expresiva y poderosa como cualquier otra máquina que puedas construir en el universo físico (hasta donde sabemos hoy).

Fueron definidos por Turing tal como son por estas razones principales:

  • Para poder demostrar que abarcan todos los algoritmos que podamos imaginar.
  • Para trabajar en el problema de detención / problema de decisión.
  • Para poder reducir cualquier otra máquina / lenguaje a este.

¿Hubiera sido posible elegir otro idioma? ¡Sin lugar a duda! Cualquiera de los idiomas completos que conocemos hoy podría haberse utilizado. Pero hubiera sido mucho más difícil construir la base teórica en una máquina más compleja.

Yo diría que ni siquiera son un "modelo popular de computación"; nadie calcularía nada con una máquina de Turing. Es un concepto puramente teórico, creado por informáticos teóricos, para tcs.

AnoE
fuente
De acuerdo en todos los puntos. La popularidad es solo relativa a los modelos más oscuros como las máquinas Thue y el cálculo Lambda y las cosas de Emil Post.
luser droog
Lo sentimos, pero se pierde un punto muy central que otros idiomas habrían estropeado gravemente. Una máquina de Turing define lo que realmente puedes calcular. Cualquier otro idioma restringiría la pregunta de cómo puede calcularlo, por lo que es muy poco probable que pueda probar lo que puede calcular o no.
Doblado
Si se supone que las máquinas de Turing son un objetivo de reducción para otros modelos, ¿por qué no deberían ser mínimas?
Bergi
@Bent, admito que no entiendo muy bien lo que estás tratando de decir, además de lo que mencioné con "Pero hubiera sido mucho más difícil construir las bases teóricas en una máquina más compleja". (es decir, en un lenguaje de programación real como el que conocemos y usamos).
AnoE
Por popularidad, me refería a lo que se usa en CS teórico. Nuevamente, fue el único modelo que aprendí (aunque creo que estuve expuesto a un poco del cálculo lambda). Me preguntaba por qué, quizás pedagógicamente, siempre es el primero en ser enseñado. Veo cómo su practicidad lo garantiza.
Alex
5

¿Por qué es popular, quizás el más popular? Debe recordar que Turing inventó esta "máquina" muchos años antes que las computadoras electrónicas. El TM funciona con un papel, un bolígrafo, una goma y, por último, un cerebro humano. Entonces todos pueden ejecutar un "cálculo" con esta máquina. Todo el mundo significa una persona que nunca aprendió computadoras, programando idiomas. Es simple de usar. Cuando lo piensa, descubre una paradoja: esta máquina es un conjunto de casi nada, pero puede operar todo. En mi opinión, la paradoja de "casi nada / versus / todo" es la razón por la cual es popular. Notaría que la TM no explica explícitamente la recursividad, la TM solo trata del "salto". Esa característica (explícitamente hablando de recursividad) puede ser una fuente de dolor de cabeza para los novatos, por ejemplo, en el cálculo lambda, el concepto de combinador Y es casi incomprensible; Más precisamente, el TM es popular porque la paradoja de "casi nada / versus / todo" sin el dolor de cabeza recurrente.

usuario88464
fuente