Je me suis amusé à réviser la théorie du calcul pour le plaisir et cette question me harcelait depuis un moment (drôle, je n'y ai jamais pensé lorsque j'ai appris la théorie des automates à mes études de premier cycle). Alors "pourquoi" étudions-nous exactement les automates finis déterministes et non déterministes (DFA / NFA)? Voici donc quelques réponses que j'ai trouvées après un discours mais que je ne vois toujours pas dans quelle mesure elles ont contribué au moment "aha":
- Etudier ce qu’ils sont et ne sont pas capables de faire, c’est-à-dire des limitations
- Pourquoi?
- Étant donné qu’ils sont les modèles de base du calcul théorique et fonderaient d’autres modèles de calcul plus performants.
- Qu'est-ce qui les rend "basiques"? Est-ce qu'ils n'ont qu'un seul bit de stockage et de transition d'état?
- Ok, et alors? Comment tout cela contribue-t-il à répondre à la question de la calculabilité? Il semble que les machines de Turing aident à bien comprendre cela et qu'il existe des modèles de calcul moins complexes, tels que les PDA, les DFA / NFA / Regex, etc.
Donc, même si je «comprends» dans une certaine mesure, je suis incapable de me répondre à cette question? Comment expliqueriez-vous le mieux pourquoi étudier les D / N-FA? Quelle est la question à laquelle ils cherchent à répondre? Comment cela aide-t-il et pourquoi est-ce la première chose enseignée dans la théorie des automates?
PS: Je connais les différentes applications lexicographiques et les simulateurs de motifs qui peuvent être implémentés en tant que tels. Cependant, je ne souhaite pas savoir à quoi il sert dans la pratique mais quelle était la raison de leur utilisation / invention / conception lors de l’aboutissement de l’étude de la théorie du calcul. D'un point de vue historique, qu'est-ce qui a amené quelqu'un à commencer par cela et à quelle compréhension «aha» est-il censé aboutir? Si vous deviez expliquer leur importance aux étudiants CS qui commencent tout juste à étudier la théorie des automates, comment le feriez-vous?