Ich habe Theory of Computation zum Spaß überarbeitet und diese Frage hat mich eine Weile genervt (lustig, ich habe nie daran gedacht, als ich in meinem Grundstudium die Automatentheorie lernte). Warum untersuchen wir also genau deterministische und nicht deterministische endliche Automaten (DFA / NFAs)? Hier sind einige Antworten, die ich mir nach dem Soliloquing ausgedacht habe, deren Gesamtbeitrag zum Aha-Moment jedoch immer noch nicht absehbar ist:
- Zu studieren, was sie sind und was nicht, dh Einschränkungen
- Warum?
- Da sie die Grundmodelle der theoretischen Berechnung sind und den Grundstein für andere leistungsfähigere Berechnungsmodelle legen würden.
- Was macht sie "grundlegend"? Haben sie nur ein Bit für Speicher- und Statusübergänge?
- Okay, na und? Wie trägt das alles dazu bei, die Frage der Berechenbarkeit zu beantworten? Es scheint, dass Turing-Maschinen dabei helfen, dies wirklich gut zu verstehen, und es gibt 'weniger' Modelle für Berechnungen wie PDAs, DFA / NFAs / Regexes usw. Aber wenn man FAs nicht kennt, woran mangelt es ihnen?
Also, obwohl ich es bis zu einem gewissen Grad verstehe, kann ich diese Frage nicht selbst beantworten? Wie würden Sie am besten erklären, warum Sie D / N-FAs studieren? Welche Frage möchten sie beantworten? Wie hilft es und warum wird es als erstes in der Automatentheorie gelehrt?
PS: Mir sind die verschiedenen lexikografischen Anwendungen und Pattern Matcher bekannt, die als solche implementiert werden können. Ich möchte jedoch nicht wissen, wofür es praktisch verwendet werden kann, sondern was der Grund für die Verwendung / Erfindung / das Design während des Studiums der Berechnungstheorie war. Historisch gesehen, was hat dazu geführt, dass man damit anfängt und zu welchem „Aha“ -Verständnis soll es führen? Wenn Sie CS-Schülern, die gerade erst mit dem Studium der Automatentheorie begonnen haben, ihre Wichtigkeit erklären wollten, wie haben Sie das gemacht?