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':
- Estudiar lo que son y no son capaces, es decir, limitaciones.
- ¿Por qué?
- 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?
- ¿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?