Las computadoras reales tienen memoria limitada y solo un número finito de estados. Por lo tanto, son esencialmente autómatas finitos. ¿Por qué los informáticos teóricos usan las máquinas de Turing (y otros modelos equivalentes) para estudiar computadoras? ¿Cuál es el punto de estudiar estos modelos mucho más fuertes con respecto a las computadoras reales? ¿Por qué el modelo de autómatas finitos no es suficiente?
42
Respuestas:
Hay dos enfoques al considerar esta pregunta: histórico que se refiere a cómo se descubrieron los conceptos y técnico que explica por qué ciertos conceptos fueron adoptados y otros abandonados o incluso olvidados.
Históricamente, la máquina de Turing es quizás el modelo más intuitivo de varios desarrollados que intentan responder al problema de Entscheidung . Esto está íntimamente relacionado con el gran esfuerzo en las primeras décadas del siglo XX para axiomatizar completamente las matemáticas. La esperanza era que una vez que haya demostrado que un pequeño conjunto de axiomas es correcto (lo que requeriría un esfuerzo considerable), podría usar un método sistemático para obtener una prueba de la declaración lógica que le interesaba. Incluso si alguien considerara autómatas finitos en este contexto, serían descartados rápidamente ya que no pueden calcular incluso funciones simples.
Técnicamente, la afirmación de que todas las computadoras son autómatas finitos es falsa. Un autómata finito tiene memoria constante que no puede modificarse dependiendo del tamaño de la entrada. No hay ninguna limitación, ya sea en matemáticas o en realidad, que impida proporcionar cinta adicional, discos duros, RAM u otras formas de memoria, una vez que se haya utilizado la memoria en la máquina. Creo que esto a menudo se empleó en los primeros días de la informática, cuando incluso los cálculos simples podían llenar la memoria, mientras que ahora para la mayoría de los problemas y con la infraestructura moderna que permite una administración de memoria mucho más eficiente, la mayoría de las veces no es un problema .
EDITAR: consideré los dos puntos planteados en los comentarios, pero elegí no incluirlos por brevedad y por el tiempo que tenía disponible para escribir la respuesta. Este es mi razonamiento de por qué creo que estos puntos no disminuyen la efectividad de las máquinas de Turing para simular computadoras modernas, especialmente en comparación con los autómatas finitos:
Permítanme abordar primero el problema físico de un límite en la memoria del universo. En primer lugar, no sabemos realmente si el universo es finito o no. Además, el concepto del universo observable que es, por definición, finito, también es irrelevante para un usuario que puede viajar a cualquier punto del universo observable para usar la memoria. La razón es que el universo observable se refiere a lo que podemos observar desde un punto específico, es decir, la Tierra, y sería diferente si el observador pudiera viajar a una ubicación diferente en el universo. Por lo tanto, cualquier argumentación sobre el universo observable se convierte en la cuestión de la finitud del universo. Pero supongamos que a través de algún avance adquirimos conocimiento de que el universo es realmente finito. Aunque esto tendría un gran impacto en asuntos científicos, Dudo que tenga algún impacto en el uso de las computadoras. En pocas palabras, podría ser que, en principio, las computadoras son de hecho autómatas finitos y no máquinas de Turing. Pero para la gran mayoría de los cálculos y con toda probabilidad todos los cálculos en los que los humanos están interesados, las máquinas de Turing y la teoría asociada nos ofrecen una mejor comprensión. En un crudo ejemplo, aunque sabemos que la física newtoniana está esencialmente equivocada, dudo que los ingenieros mecánicos usen principalmente la física cuántica para diseñar automóviles o maquinaria de fábrica; Los casos de esquina donde esto se necesita se pueden tratar a nivel individual. Pero para la gran mayoría de los cálculos y con toda probabilidad todos los cálculos en los que los humanos están interesados, las máquinas de Turing y la teoría asociada nos ofrecen una mejor comprensión. En un crudo ejemplo, aunque sabemos que la física newtoniana está esencialmente equivocada, dudo que los ingenieros mecánicos usen principalmente la física cuántica para diseñar automóviles o maquinaria de fábrica; Los casos de esquina donde esto es necesario se pueden tratar a nivel individual. Pero para la gran mayoría de los cálculos y con toda probabilidad todos los cálculos en los que los humanos están interesados, las máquinas de Turing y la teoría asociada nos ofrecen una mejor comprensión. En un crudo ejemplo, aunque sabemos que la física newtoniana está esencialmente equivocada, dudo que los ingenieros mecánicos usen principalmente la física cuántica para diseñar automóviles o maquinaria de fábrica; Los casos de esquina donde esto es necesario se pueden tratar a nivel individual.
Cualquier restricción técnica como los buses y el direccionamiento son simplemente limitaciones técnicas del hardware existente y pueden superarse físicamente. La razón por la que esto no es cierto para las computadoras actuales es porque el direccionamiento de 64 bits nos permitió mover el límite superior en el espacio de direcciones a pocas alturas si alguna aplicación puede lograrlo. Además, la implementación de un sistema de direccionamiento "extensible" podría tener un impacto en la gran mayoría de los cálculos que no lo necesitarán y, por lo tanto, es ineficiente. Nada le impide organizar un sistema de direccionamiento jerárquico, por ejemplo, para dos niveles, la primera dirección podría referirse a cualquiera de los bancos de memoria y luego cada banco tiene 2 64264 264 diferentes direcciones Esencialmente, la creación de redes es una excelente manera de hacer esto, cada máquina solo se preocupa por su memoria local, pero pueden calcular juntas.
fuente
Para completar las otras respuestas: creo que Turing Machine es una mejor abstracción de lo que hacen las computadoras que los autómatas finitos. De hecho, la principal diferencia entre los dos modelos es que con autómatas finitos, esperamos tratar datos que son más grandes que el espacio de estado, y Turing Machine es un modelo al revés (espacio de estado >> datos) al hacer el estado espacio infinito Este infinito puede ser percibido como una abstracción de "muy grande frente al tamaño de los datos". Al escribir un programa de computadora, intenta ahorrar espacio para la eficiencia, pero generalmente asume que no estará limitado por la cantidad total de espacio en la computadora. Esa es parte de la razón por la cual las máquinas de Turing son una mejor abstracción de las computadoras que los autómatas finitos.
fuente
Andrej Bauer dio una razón importante en los comentarios:
Permítanme completar las otras respuestas por algunos puntos, que probablemente eran demasiado obvios para mencionar:
fuente
Un formalismo es útil o no, basado en lo que la gente quiere usar el formalismo para modelar y comprender.
La máquina de Turing es un formalismo útil para comprender los programas . Vale la pena entender los programas; La mayor parte del cómputo real es realizado por programas, en lugar de por máquinas especiales. El formalismo de la máquina de Turing nos permite modelar preocupaciones importantes del mundo real, como la complejidad del tiempo y el espacio. Es mucho menos natural tratar de estudiar estas nociones utilizando autómatas de estado finito.
Las máquinas de Turing no son muy útiles cuando se trata de estudiar la complejidad de calcular funciones finitas (por ejemplo, funciones cuyo dominio consiste en entradas de longitud como máximo 10 millones). La complejidad del circuito es mucho mejor para describir la complejidad de las funciones finitas ... pero las máquinas de Turing a su vez han sido muy útiles para comprender la complejidad del circuito.
Los autómatas finitos también han sido útiles para comprender la complejidad del circuito; Todos estos modelos tienen su lugar en el arsenal matemático.
Rechazo el argumento que dice que los autómatas de estado finito son un mejor modelo de realidad simplemente porque las computadoras del mundo real tienen solo un número finito de estados internos. El estudio de autómatas de estado finito trata de manera crucial las entradas que provienen del conjunto infinito de cadenas, mientras que las computadoras del mundo real manejan entradas de solo una longitud máxima fija (a menos que creas que vivimos en un universo infinito, ya sea en términos de espacio o tiempo).
Un modelo debe juzgarse en términos de su utilidad para comprender los aspectos de la realidad que nos interesan. O (alternativamente) en términos de su utilidad para comprender un universo matemático que las personas encuentran lo suficientemente convincente, incluso si ese universo matemático no tiene una manifestación física obvia.
Las máquinas de Turing, las máquinas de estado finito y los circuitos (y otros modelos además) han demostrado su utilidad.
fuente
Las computadoras reales no son FSA. Una computadora real es una computadora universal, en el sentido de que podemos describir una computadora para que una computadora emule y la computadora la emulará. Para muchos ejemplos, busque "máquina virtual".
Es posible construir una máquina universal de Turing: una TM que recibe una descripción de otra TM y luego emula el funcionamiento de esa TM en una entrada suministrada.
Como punto de partida en la literatura, puedo recomendar " Sobre la existencia de autómatas universales finitos o pushdown ", que estudia la inexistencia de autómatas universales. También puede mirar sus referencias (y así sucesivamente).
fuente
Lo que hace que la máquina Turing sea especial es que, si bien es muy, muy simple, puede ejecutar todos los (clases de) algoritmos que podamos imaginar. No hay una máquina conocida que sea más poderosa (ya que puede ejecutar algoritmos que la máquina Turing no es capaz de hacer).
Siendo mecánicamente simple, es fácil mostrar si, o en qué grado, otras máquinas son equivalentes a una máquina de Turing. Esto a su vez hace que sea relativamente fácil mostrar si una computadora (o lenguaje de computadora) es verdaderamente universal (c / f "Turing-complete").
fuente
Si bien otras respuestas ya han mencionado muchos aspectos relevantes, creo que la mayor ventaja de las máquinas Turing sobre los autómatas finitos es la separación de datos y programas . Esto le permite analizar un programa bastante finito y hacer declaraciones sobre cómo ese programa manejaría diferentes entradas, sin restringir el tamaño de la entrada.
Si bien es teóricamente posible describir una computadora real y algo así como una máquina de Turing con cinta finita como una máquina de estado, eso no es realmente factible: el número de estados es exponencial en la cantidad de memoria que tiene su máquina y el finito general el formalismo de autómatas de estado requiere que haga una lista explícita de las transiciones entre estos estados. Entonces, para un autómata de estado finito general de ese tamaño, es bastante inviable hacer deducciones basadas en una enumeración completa de todas las transiciones de estado.
Por supuesto, en una computadora real, las transiciones de estados no pueden ocurrir arbitrariamente. No hay un comando para intercambiar un tercio de los bits en la memoria en un solo paso del cálculo. Por lo tanto, podría intentar obtener una especificación más compacta para las transiciones de estado. Algo así como la especificación del conjunto de instrucciones de su arquitectura. Por supuesto, las arquitecturas informáticas reales son complicadas en aras del rendimiento, por lo que podría simplificar esto aún más, a un conjunto de instrucciones muy simple, que solo realiza pasos muy pequeños con entradas y salidas muy limitadas. Al final, es posible que su arquitectura se parezca a algo así como un intérprete de máquina de Turing: usando algunos bits de código de programa y un bit de entrada, genere un bit de salida y se mueva en su código de programa.
Una alternativa sería utilizar los estados de un autómata de estado finito solo para representar los datos que procesa el programa, mientras codifica el programa en las transiciones de estado. Eso implicaría el mismo problema de cómo enumerar todos los estados, y una representación compacta podría estar nuevamente cerca de lo que hace una máquina de Turing.
En general, diría que una máquina Turing de cinta finita probablemente sería un mejor modelo para las computadoras reales. Pero para muchas preguntas científicas, la distinción entre una cinta finita pero grande e infinita es irrelevante, por lo que solo reclamar una cinta infinita facilita las cosas. Para otras preguntas, la cantidad de cinta utilizada está en el centro de la pregunta, pero el modelo le permite hablar fácilmente sobre la cantidad de uso de la cinta sin la molestia de especificar qué sucede si el cálculo se queda sin cinta.
fuente
La mayoría de los problemas requieren máquinas de Turing de tamaño finito
Si bien suponer que la cinta no limitada es una simplificación útil, la mayoría de los problemas / algoritmos requieren una cantidad limitada de cinta, y los límites de la memoria requerida (posiblemente según el tamaño de la entrada) pueden analizarse y a menudo demostrarse.
Esto a menudo también se generaliza a otros tipos de computadoras (para las cuales el análisis o la prueba encuadernados pueden ser mucho más desordenados que en una máquina Turing), y permite estimar la cantidad de almacenamiento temporal requerido para un problema en particular. ¿Se puede hacer en una cantidad fija? ¿del espacio? Proporcional a la entrada? ¿Requiere cantidades exponenciales de espacio a medida que crecen las entradas?
fuente
Una característica importante de las máquinas de Turing que los autómatas finitos no comparten es que pueden escalar la cantidad de memoria necesaria para resolver el problema con el tamaño del problema .
El punto: muchos problemas tienen soluciones naturales que usan más memoria cuanto mayor es el problema. Por lo tanto, es natural describir estas soluciones con representaciones que pueden usar memoria infinita, no porque cualquier instancia use cantidades infinitas, sino porque hay una instancia que usa cada cantidad. Puede hacerlo con máquinas de turing, pero también con secuencias de autómatas finitos.
fuente
Las máquinas de Turing son derivados de autómatas finitos. Las máquinas de Turing son prácticamente arquitectura von Nuemann.
fuente