¿Cuál es la iluminación que debo alcanzar después de estudiar autómatas finitos?


247

He estado revisando Theory of Computation por diversión y esta pregunta me ha estado molestando por un tiempo (curioso, nunca lo pensé cuando aprendí Automata Theory en mi licenciatura). Entonces, ¿por qué exactamente estudiamos autómatas finitos deterministas y no deterministas (DFA / NFA)? Así que aquí hay algunas respuestas que se me ocurrieron después del soliloquio, pero aún no veo su contribución general al momento 'aha':

  1. Estudiar lo que son y no son capaces, es decir, limitaciones.
    • ¿Por qué?
  2. Dado que son los modelos básicos de computación teórica y sentarían las bases de otros modelos de computación más capaces.
    • ¿Qué los hace 'básicos'? ¿Es que tienen solo un poco de almacenamiento y transiciones de estado?
  3. ¿Y qué? ¿Cómo contribuye todo esto a responder la pregunta de computabilidad? Parece que las máquinas de Turing ayudan a entender esto realmente bien y hay modelos 'menores' de cómputos como PDA, DFA / NFA / Regexes, etc. Pero si uno no conociera los FA, ¿qué es lo que se están perdiendo?

Entonces, aunque 'lo entiendo' hasta cierto punto, ¿no puedo responderme esta pregunta? ¿Cómo explicarías mejor por qué estudiar D / N-FAs? ¿Cuál es la pregunta que buscan responder? ¿Cómo ayuda y por qué es lo primero que se enseña en Automata Theory?

PD: Soy consciente de las diversas aplicaciones lexicográficas y patrones que se pueden implementar como tal. Sin embargo, no deseo saber para qué se puede usar prácticamente, sino cuál fue su razón de uso / invención / diseño durante la culminación del estudio de la teoría de la computación. Históricamente hablando, ¿qué lo llevó a uno a comenzar con esto y a qué comprensión 'ajá' se supone que debe conducir? Si explicaras su importancia a los estudiantes de CS que recién comienzan a estudiar Teoría de Autómatas, ¿cómo lo harías?


10
Entonces, ¿esta es una pregunta de nivel de investigación en TCS?
Hendrik Jan

13
No se trata tanto de una pregunta de investigación como de pedir una perspectiva general sobre un tema. Tenemos una serie de preguntas de este tipo aquí. En lugar de comenzar un debate en los comentarios, le animo a que publique una pregunta sobre meta si desea analizar más a fondo la conveniencia de tales preguntas.
Suresh Venkat

66
Doctorado: Su pregunta dio algunas respuestas muy buenas, así que le agradezco. Fuiste honesto en tus declaraciones, y no fue mi intención descalificarte a ti ni a tu pregunta. En realidad, es al revés de lo que sugiere mi comentario: he visto algunas otras preguntas que se descartaron demasiado fácilmente usando esta cita de las preguntas frecuentes. Tienes razón Suresh: este no es el lugar para comenzar un debate. Lo siento.
Hendrik Jan

1
@HendrikJan - ¡Oh, no te preocupes! El texto oculta el tono. Nunca lo dije de esa manera. Pensé que me preguntabas si era una pregunta de investigación de mi parte.
Doctorado

16
Felicitaciones a PhD y Hendrik por un nivel de cortesía que rara vez encuentro en foros públicos.
Lucas

Respuestas:


342

¡Personalmente he disfrutado varios Aha! momentos del estudio de la teoría básica de autómatas. Los NFA y los DFA forman un microcosmos para la informática teórica en su conjunto.

  1. ¿El no determinismo conduce a la eficiencia? Hay ejemplos estándar donde el autómata determinista mínimo para un lenguaje es exponencialmente más grande que un autómata no determinista mínimo. Comprender esta diferencia para las máquinas de Turing es el núcleo de la informática (teórica). Los NFA y DFA proporcionan el ejemplo más simple que sé donde se puede ver explícitamente la brecha estricta entre el determinismo y el no determinismo.
  2. Computabilidad! = Complejidad. Los NFA y los DFA representan lenguajes regulares y son equivalentes en lo que calculan. Difieren en cómo calculan.
  3. Máquinas refinan idiomas. Esta es una versión diferente de lo que calculamos y cómo lo hacemos. Puede pensar en lenguajes computables (y funciones) como la definición de una clase de equivalencia de autómatas. Este es un cambio de perspectiva fundamental en TCS, donde nos enfocamos no solo en el qué, sino también en el cómputo y tratamos de elegir el 'cómo' correcto al diseñar un algoritmo o entender el espacio de diferentes cómo en el estudio de las clases de complejidad.
  4. El valor de la representación canónica. Los DFA son el ejemplo por excelencia de una estructura de datos que admite una representación canónica. Cada idioma normal tiene un DFA único y mínimo. Esto significa que dado un DFA mínimo, las operaciones importantes como la inclusión del lenguaje, la complementación y la verificación de la aceptación de una palabra se vuelven triviales. Diseñar y explotar representaciones canónicas es un truco útil al desarrollar algoritmos.
  5. La ausencia de representaciones canónicas. No existe una representación canónica bien aceptada de expresiones regulares o NFA. Entonces, a pesar del punto anterior, las representaciones canónicas no siempre existen. Verá este punto en muchas áreas diferentes de la informática. (por ejemplo, las fórmulas lógicas proposicionales tampoco tienen representaciones canónicas, mientras que los ROBDD sí).
  6. El costo de una representación canónica. Incluso puede comprender la diferencia entre los NFA y los DFA como un teorema algorítmico sin almuerzo gratuito . Si queremos verificar la inclusión del idioma entre, o complementar un NFA, puede determinarlo y minimizarlo y continuar desde allí. Sin embargo, esta operación de "reducción" tiene un costo. Verá ejemplos de canonización a un costo en varias otras áreas de la informática.
  7. Infinito! = Indecidible. Un error común es que los problemas de naturaleza infinita son inherentemente indecidibles. Los lenguajes regulares contienen infinitas cadenas y, sin embargo, tienen varias propiedades decidibles. La teoría de los lenguajes regulares muestra que el infinito por sí solo no es la fuente de indecidibilidad.
  8. Mantenga Infinity en la palma de su autómata. Puede ver un autómata finito simplemente como una estructura de datos para representar conjuntos infinitos. Un ROBDD es una estructura de datos para representar funciones booleanas, que puede entender como representaciones de conjuntos finitos. Un autómata finito es una extensión natural e infinita de un ROBDD.
  9. El humilde procesador. Un procesador moderno tiene mucho, pero puedes entenderlo como un autómata finito. Solo esta comprensión hizo que la arquitectura de la computadora y el diseño del procesador fueran mucho menos intimidantes para mí. También muestra que, en la práctica, si estructura y manipula sus estados con cuidado, puede llegar muy lejos con autómatas finitos.
  10. La perspectiva algebraica. Los lenguajes regulares forman un monoide sintáctico y pueden estudiarse desde esa perspectiva. En términos más generales, en estudios posteriores también puede preguntarse cuál es la estructura algebraica correcta correspondiente a algún problema computacional.
  11. La perspectiva combinatoria. Un autómata finito es un gráfico etiquetado. Comprobar si se acepta una palabra se reduce a encontrar una ruta en un gráfico etiquetado. Los algoritmos de autómatas equivalen a transformaciones gráficas. Comprender la estructura de los autómatas para varias subfamilias de idiomas regulares es un área de investigación activa.
  12. El triángulo amoroso de álgebra, lenguaje y combinatoria. El teorema de Myhill-Nerode le permite comenzar con un lenguaje y generar un autómata o un monoide sintáctico. Matemáticamente, obtenemos una traducción entre tipos muy diferentes de objetos matemáticos. Es útil tener en cuenta dichas traducciones y buscarlas en otras áreas de la informática, y moverse entre ellas según su aplicación.
  13. Las matemáticas son el lenguaje de los grandes cuadros. Los lenguajes regulares se pueden caracterizar por NFA (gráficos), expresiones regulares (gramática formal), máquinas de Turing de solo lectura (máquina), monoides sintácticos (álgebra), álgebras de Kleene (álgebra), lógica monádica de segundo orden, etc. El fenómeno es que los conceptos importantes y duraderos tienen muchas caracterizaciones matemáticas diferentes, cada una de las cuales aporta diferentes sabores a nuestra comprensión de la idea.
  14. Lemas para el matemático que trabaja. El Lema de bombeo es un gran ejemplo de una herramienta teórica que puede aprovechar para resolver diferentes problemas. Trabajar con Lemmas es una buena práctica para tratar de aprovechar los resultados existentes.
  15. ¡Necesario! = Suficiente. El teorema de Myhill-Nerode le brinda las condiciones necesarias y suficientes para que un idioma sea regular. El Lema de bombeo nos da las condiciones necesarias. Comparar los dos y usarlos en diferentes situaciones me ayudó a comprender la diferencia entre las condiciones necesarias y suficientes en la práctica matemática. También aprendí que una condición reutilizable necesaria y suficiente es un lujo.
  16. La perspectiva del lenguaje de programación. Las expresiones regulares son un ejemplo simple y hermoso de un lenguaje de programación. En la concatenación, tienes un análogo de composición secuencial y en la estrella de Kleene, tienes el análogo de la iteración. Al definir la sintaxis y la semántica de las expresiones regulares, se da un pequeño paso en la dirección de la teoría del lenguaje de programación al ver definiciones inductivas y semántica compositiva.
  17. La perspectiva del compilador. La traducción de una expresión regular a un autómata finito es también un compilador teórico simple. Puede ver la diferencia entre el análisis, la generación de código intermedio y las optimizaciones del compilador, debido a la diferencia entre leer una expresión regular, generar un autómata y luego minimizar / determinar el autómata.
  18. El poder de la iteración. Al ver lo que puede hacer en un autómata finito con un bucle y uno sin él, puede apreciar el poder de la iteración. Esto puede ayudar a comprender las diferencias entre circuitos y máquinas, o entre lógicas clásicas y lógicas de punto fijo.
  19. Álgebra y Coalgebra. Los lenguajes regulares forman un monoide sintáctico, que es una estructura algebraica. Los autómatas finitos forman lo que en el lenguaje de la teoría de categorías se llama coalgebra. En el caso de un autómata determinista, podemos movernos fácilmente entre una representación algebraica y una representación coalgebraica, pero en el caso de los NFA, esto no es tan fácil.
  20. La perspectiva aritmética. Existe una profunda conexión entre el cálculo y la teoría de números. Puede elegir entender esto como una declaración sobre el poder de la teoría de números y / o la universalidad de la computación. Por lo general, sabe que los autómatas finitos pueden reconocer un número par de símbolos, y que no pueden contar lo suficiente como para que coincidan los paréntesis. Pero, ¿cuánto aritmética son capaces de hacer? Los autómatas finitos pueden decidir las fórmulas aritméticas de Presburger. El procedimiento de decisión más simple que conozco para la aritmética de Presburger reduce una fórmula a un autómata. Esta es una visión desde la que puede avanzar al décimo problema de Hilbert y su resolución condujo al descubrimiento de una conexión entre las ecuaciones de Diophantine y las máquinas de Turing.
  21. La perspectiva lógica. La computación se puede entender desde una perspectiva puramente lógica. Los autómatas finitos pueden caracterizarse por una lógica débil y monádica de segundo orden sobre palabras finitas. Este es mi ejemplo favorito, no trivial, de una caracterización lógica de un dispositivo computacional. La teoría de la complejidad descriptiva muestra que muchas clases de complejidad también tienen caracterizaciones puramente lógicas.
  22. Los autómatas finitos se esconden en lugares que nunca imaginaste. (Punta del sombrero para el comentario de Martin Berger sobre la conexión con la teoría de la codificación) El Premio Nobel de Química 2011 se otorgó al descubrimiento de cuasicristales. La matemática detrás de los cuasicristales está conectada a las inclinaciones aperiódicas. Un mosaico aperiódico específico del avión se llama Cartwheel Tiling, que consiste en una forma de cometa y una forma de pajarita. Puede codificar estas formas en términos de 0s y 1s y luego estudiar las propiedades de estas secuencias, que codifican secuencias de patrones. De hecho, si asigna 0 a 01 y 1 a 0, y aplica repetidamente este mapa al dígito 0, obtendrá 0, 01, 010, 01001, etc. Observe que las longitudes de estas cadenas siguen la secuencia de Fibonacci. Las palabras generadas de esta manera se llaman palabras de Fibonacci. Ciertas secuencias de formas observadas en las inclinaciones de Penrose pueden codificarse como palabras de Fibonacci. Dichas palabras se han estudiado desde una perspectiva teórica automática, y adivina qué, algunas familias de palabras son aceptadas por autómatas finitos, e incluso proporcionan ejemplos del peor de los casos para algoritmos estándar como el algoritmo de minimización de Hopcroft. Por favor dime que estás mareado.

Podría seguir. (Y seguir.) * Me parece útil tener autómatas en la parte posterior de mi cabeza y recordarlos de vez en cuando para comprender un nuevo concepto o para obtener intuición sobre ideas matemáticas de alto nivel. Dudo que todo lo que menciono anteriormente se pueda comunicar en las primeras conferencias de un curso, o incluso en un primer curso. Estas son recompensas a largo plazo basadas en una inversión inicial realizada en las conferencias iniciales de un curso de teoría de autómatas.

Para abordar su título: no siempre busco la iluminación, pero cuando lo hago, prefiero autómatas finitos. Ten sed, amigo mío.


27
Hermosa lista Me gustaría agregar que los autómatas proporcionan una perspectiva interesante sobre la teoría de la codificación, iniciada por Schuetzenberger. Además, la teoría moderna de concurrencia y la teoría de procesos son una generalización de la teoría de autómatas donde los autómatas pueden componerse en paralelo y sincronizarse en sus acciones.
Martin Berger

66
Guau. (+ 0.5 para la última oración. :-)
LarsH

66
Acabo de unirme a TCS.SE únicamente para hacer +1 en esto.
Tynam

55
A pesar de saber casi todo en esta lista, de alguna manera me siento iluminado por haberlo leído. (Además, (y así sucesivamente) * me hizo reír.)
CA McCann

2
Honestamente, nunca había pensado en la mayoría de estas cosas (y algunos de los teoremas de los que nunca había oído hablar), y tomé un curso de teoría de la computación. ¿Es necesario tener un maestro o currículum particularmente bueno para señalar estas revelaciones?
Ken Bloom

33

Hay muchas buenas razones teóricas para estudiar N / DFA. Dos que vienen a la mente de inmediato son:

  1. Las máquinas de Turing (pensamos) capturan todo lo que es computable. Sin embargo, podemos preguntar: ¿Qué partes de una máquina de Turing son "esenciales"? ¿Qué sucede cuando limitas una máquina de Turing de varias maneras? Los DFA son una limitación muy grave y natural (le quitan la memoria). Las PDA son una limitación menos severa, etc. Es teóricamente interesante ver qué memoria le brinda y qué sucede cuando se queda sin ella. Me parece una pregunta muy natural y básica.

  2. Las máquinas de Turing necesitan una cinta infinita. Nuestro universo es finito, por lo que, en cierto sentido, cada dispositivo informático es un DFA. Parece un tema importante, y nuevamente natural, para estudiar.

Preguntar por qué uno debería estudiar DFA es similar a preguntar por qué uno debería aprender el teorema de integridad de Godel cuando lo realmente interesante es su teorema de incompletitud .

La razón por la que son el primer tema en la teoría de autómatas es porque es natural construir modos más complicados a partir de otros menos complicados.


2
# 1 tiene sentido y creo que veo la razón. Pero, ¿cómo explicaría la razón por la que los FA 'siguen adelante'? Aquellos que saben algo sobre ToC pueden retroceder en retrospectiva y reflexionar sobre ello. ¿Cómo explicar mejor el 'por qué' a los estudiantes que comienzan a aprender teoría de autómatas y solo conocen AF? ¿Acabamos de decir que estamos comenzando con máquinas de un bit ya que son básicas? ¿Por qué? ¿Cuál es la mejor manera de responder 'eso' por qué? Agradecería un poco de luz al responder esta pregunta para los novatos totales a ToC :)
PhD

2
El argumento "directo" proviene del hecho (como mencionó Sariel) de que las máquinas de estado son quizás los dispositivos informáticos más básicos. Estás en un estado: algo sucede y luego te mueves a un nuevo estado. Tenga en cuenta que las cadenas de Markov (que son muy importantes en el aprendizaje automático) son solo FSM probabilísticos.
Suresh Venkat

31

Para agregar una perspectiva más al resto de las respuestas: porque en realidad puedes hacer cosas con autómatas finitos, en contraste con las máquinas Turing.

Casi cualquier propiedad interesante de las máquinas de Turing es indecidible. Por el contrario, con autómatas finitos, casi todo es decidible. La igualdad del lenguaje, la inclusión, el vacío y la universalidad son todos decidibles. Combinado con esos autómatas finitos se cierran en casi todas las operaciones que se te ocurran, y que estas operaciones son computables, puedes hacer casi cualquier cosa que quieras hacer con autómatas finitos.

Esto significa que si puede capturar algo utilizando autómatas finitos, automáticamente obtendrá muchas herramientas para analizarlo. Por ejemplo, en las pruebas de software, los sistemas y sus especificaciones pueden modelarse como autómatas finitos. Luego puede probar automáticamente si su sistema implementa correctamente la especificación.

Por lo tanto, las máquinas de Turing y los autómatas finitos le enseñan a las personas un contraste interesante y omnipresente: más poder descriptivo va de la mano con menos capacidad de trazabilidad. Los autómatas finitos no pueden describir mucho, pero al menos podemos hacer cosas con ellos.


2
"... en realidad puedes hacer cosas con autómatas finitos, en contraste con las máquinas de Turing". entiendo el pt, sin embargo, una cita que suena irónica o que no tiene mucho sentido fuera de contexto ...
vzn

27

Estado. necesita aprender que uno puede modelar el mundo (para ciertos problemas) como un espacio de estado finito, y uno puede pensar en el cálculo en esta configuración. Esta es una idea simple pero extremadamente útil si realiza alguna programación: se encontraría con el estado una y otra y otra vez, y FA le dará una forma de pensar sobre ellos. Considero que esto es una excusa suficiente para enseñar una clase completa. Por supuesto, el estado puede ser determinista o no determinista. Por lo tanto, DFA y NFA, pero puede convertir entre ellos, etc.

Lo segundo que hay que aprender es el teorema de Halting. Lo cual está relacionado con el teorema de incompletitud de Godel. (No se puede construir una máquina que pueda computarlo todo, y hay afirmaciones matemáticas que no se pueden probar ni refutar, y como tales deben tomarse como axiomas. Es decir, vivimos en un mundo que no tiene una descripción finita o real oráculos - ¡sí por nosotros!)

Ahora, hice mi licenciatura en matemáticas, y te acostumbras a la idea de que aprendes cosas que no tienes idea de por qué estás aprendiendo (teoría de grupos, teoría de medidas, teoría de conjuntos, espacios de Hilbert, etc., etc., etc. [todo lo bueno , Por cierto]). Hay algo que decir sobre aprender a aprender: la próxima vez que tengas que aprender algunas matemáticas extrañas (porque necesitas usarlas para hacer algo en el mundo real) que se ve muy extraño, te tomas con calma. Específicamente, lo tercero que hay que aprender es la madurez matemática: poder discutir cuidadosamente sobre las cosas, saber cuándo las pruebas son correctas o no, escribir las pruebas, etc. Si ya lo tiene, este curso es fácil y no le importaría demasiado mucho por qué lo estás aprendiendo.

Excepto por estos, el curso es una completa pérdida de tiempo, como todo lo demás. Específicamente, puedes vivir una vida feliz sin saber esto. Pero esto es literalmente cierto para todo conocimiento. Más o menos. Para mí, un curso en la universidad vale la pena si miras el mundo de manera diferente después de aprenderlo. Este es definitivamente uno de los cursos que cambió la forma en que pienso sobre el mundo. ¿Qué más puedes pedir?


21

Aunque no es realmente la razón por la que se estudiaron originalmente, los autómatas finitos y los lenguajes regulares que reconocen son lo suficientemente manejables como para ser utilizados como bloques de construcción para teorías matemáticas más complicadas. En este contexto, ver grupos particularmente automáticos (grupos en los que los elementos pueden ser representados por cadenas en un lenguaje regular y en el que los productos de los elementos por los generadores de grupo pueden ser calculados por transductores de estado finito) y sub-cambios de sonido (sub-cambios de un espacio de cambio cuyo las palabras prohibidas forman un lenguaje regular). Por lo tanto, existen razones para estudiarlos, incluso si está interesado en las matemáticas puras en lugar de la informática.

Los autómatas finitos también se han utilizado en el diseño de algoritmos para otros tipos de objetos. Por ejemplo, un algoritmo de Culik para probar si un autómata celular unidimensional es reversible implica construir, modificar y probar las propiedades de ciertos NFA. Y un documento de 1986 FOCS de Natarajan mostró cómo resolver un cierto problema en el diseño de líneas de ensamblaje mecánico reduciéndolo a un cálculo sobre autómatas finitos.


18

Estás haciendo (al menos) dos preguntas diferentes: (a) ¿Qué partes de la teoría se basan en autómatas finitos hoy en día? (b) ¿Por qué se desarrollaron autómatas finitos en primer lugar? Creo que la mejor manera de abordar este último es mirar los documentos antiguos, como:

Aquí están los primeros dos párrafos:

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 sobre 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.

En resumen, se desarrollaron como un modelo de computadoras reales, que tienen recursos finitos.


16

Otra razón es que son modelos teóricos relativamente prácticos . Una máquina de Turing, aparte de la imposibilidad de la cinta infinita, es un poco incómoda para lo que es programar una computadora (¡tenga en cuenta que, para empezar, esta no es una buena analogía!). Sin embargo, los PDA y los DFA son bastante susceptibles de ser modelos de programas reales en el sentido de que un diseño de PDA / DFA a menudo se puede convertir fácilmente en un programa real. El diseño del compilador, por ejemplo, los usa ampliamente. Entonces, en este tipo de puntos de conexión entre la teoría y la práctica, tenemos una idea de cómo todo se une y qué podemos y qué no podemos hacer.


10

Mira el juego "Living Binary Adder" aquí: http://courstltc.blogspot.com/2012/12/living-binary-adder-game.html Solía ​​presentar este juego a mis alumnos en los primeros capítulos sobre DFA / NFA Ilustra dos cosas importantes en la teoría de autómatas:

  1. Cómo transformar un proceso mental en uno simple y mecánico
  2. Lo que realmente significa la abstracción. Dos estados, como los estados C y Z anteriores, pueden ser cualquier cosa: transistores en una computadora, un mecanismo hidráulico o dos jugadores humanos.

Esto, a veces trae el momento "Ajá" a mis alumnos.


9

El concepto de DFA es muy útil para diseñar soluciones eficientes para muchos tipos de problemas. Un ejemplo es la creación de redes. Cada protocolo puede implementarse como una máquina de estado. Implementar la solución de esta manera hace que el código sea más simple y más simple significa una tasa de defectos más baja. También significa que los cambios en el código son más fáciles y tienen un impacto menor, de nuevo con una tasa de defectos más baja.

A algunas personas les resulta difícil ver un protocolo de red como una máquina de estado, pero aquellos que pueden dar el salto lo encuentran muy gratificante en términos de retorno del esfuerzo.


Suena muy ingerido pero ¿puedes explicar un poco más? que es difícil imaginar un protocolo de red como una máquina de estados. gracias.
hkoosha

3

En realidad, mis alumnos a veces preguntan exactamente esto, después de pasar una gran parte del semestre en autómatas finitos y finalmente llegar a las máquinas Turing. ¿Por qué dedicar tanto tiempo a un formalismo más débil cuando hay uno más fuerte disponible? Así que explico la compensación inherente en el poder expresivo frente a la complejidad analítica. Los modelos más ricos suelen ser más difíciles de analizar. La dicotomía DFA vs. TM es extrema, ya que el problema de la membresía es trivial para uno e incuestionable para el otro. Un ejemplo menos extremo sería DFA vs. PDA. El problema de la membresía para este último resulta ser eficientemente solucionable, pero la solución no es para nada trivial. Vemos esta ocurrencia en muchas ramas de las matemáticas y las ciencias: estudie un modelo simple para obtener una comprensión lo más completa posible, que generalmente también conduce a la comprensión de modelos más complejos.


-4

Veo varias respuestas que llaman a los FM "menores" que las máquinas de Turing.

Un enfoque principal en la clase de posgrado que tomé fue su equivalencia, no distinciones. Para cada modelo FSM que estudiamos, tuvimos que demostrar su equivalencia con las máquinas de Turing. Esto se realiza mediante la implementación de una máquina de Turing en el FSM. IIRC, también estudiamos algunos otros modelos de computación que no implementan una TM, pero olvido cuáles eran. El punto es que si puede implementar una TM, puede ejecutar cualquier programa de TM en el modelo, dado un análogo de cinta suficientemente grande para el problema que se está ejecutando.

El objetivo de la respuesta a la pregunta fue: TM es el modelo básico de computabilidad, pero no es muy práctico cuando se trata de construir máquinas útiles. De ahí los modelos FSM.

Me lo trajeron a casa visceralmente cuando, más o menos al mismo tiempo (1984), descubrí el lenguaje FORTH. Su motor de ejecución se basa en una realización pura de un PDA de doble pila. Yendo más profundo, aprecio este mismo motor bajo compiladores de expresión

Aunque, para mí, el verdadero impacto de FSM fue descubrir el libro "Theory of Finite Automata" de Trakhtenbrot y Korzynski (?) Cuando tenía 18 años, un descubrimiento que esencialmente me dio mi carrera.


1
Sin embargo, supongo que no probó una equivalencia entre autómatas finitos no deterministas y máquinas de Turing. Es este objeto específico sobre el que el OP preguntó y que el resto de nosotros estamos llamando "menor".
Vijay D

2
Y un FA no es lo mismo que un FSM.
Suresh Venkat
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.