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
Respuestas:
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.
fuente
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:
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.
fuente
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.
fuente
Me gustaría responder a esta parte de la pregunta, agregada en una edición:
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.
fuente
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:
¿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.
fuente
¿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.
fuente