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?
Antworten:
Ich habe persönlich mehrere Aha genossen ! Momente aus dem Studium der grundlegenden Automatentheorie. NFAs und DFAs bilden einen Mikrokosmos für die gesamte theoretische Informatik.
Ich könnte weitermachen. (Und so weiter.) * Ich finde es nützlich, Automaten im Hinterkopf zu haben und sie von Zeit zu Zeit abzurufen, um ein neues Konzept zu verstehen oder um mich über mathematische Ideen auf hohem Niveau zu informieren. Ich bezweifle, dass alles, was ich oben erwähne, in den ersten Vorlesungen eines Kurses oder sogar in einem ersten Kurs kommuniziert werden kann. Dies sind langfristige Belohnungen, die auf einer Anfangsinvestition in die ersten Vorlesungen eines Kurses zur Automatentheorie beruhen.
Um Ihren Titel anzusprechen: Ich suche nicht immer Erleuchtung, aber wenn, dann bevorzuge ich endliche Automaten. Bleib durstig, mein Freund.
quelle
Es gibt viele gute theoretische Gründe, N / DFAs zu studieren. Zwei, die sofort in den Sinn kommen, sind:
Wir denken, Turing-Maschinen erfassen alles, was berechenbar ist. Wir können jedoch fragen: Welche Teile einer Turingmaschine sind "wesentlich"? Was passiert, wenn Sie eine Turing-Maschine auf verschiedene Arten einschränken? DFAs sind eine sehr schwerwiegende und natürliche Einschränkung (Speicherentzug). PDAs sind eine weniger schwerwiegende Einschränkung usw. Theoretisch ist es interessant zu sehen, welche Speicher Sie haben und was passiert, wenn Sie darauf verzichten. Es scheint mir eine sehr natürliche und grundlegende Frage zu sein.
Turingmaschinen brauchen ein unendliches Band. Unser Universum ist endlich, so dass in gewisser Weise jedes Computergerät ein DFA ist. Scheint ein wichtiges und natürlich zu untersuchendes Thema zu sein.
Zu fragen, warum man DFAs studieren sollte, ist vergleichbar mit der Frage, warum man Godels Vollständigkeitssatz lernen sollte, wenn das wirklich Interessante sein Unvollständigkeitssatz ist.
Der Grund, warum sie das erste Thema in der Automatentheorie sind, liegt darin, dass es naheliegend ist, kompliziertere Modi aus weniger komplizierten zu erstellen.
quelle
Um den Rest der Antworten um eine Perspektive zu erweitern: weil man im Gegensatz zu Turing-Maschinen tatsächlich Dinge mit endlichen Automaten machen kann.
Fast jede interessante Eigenschaft von Turingmaschinen ist unentscheidbar. Im Gegenteil, mit endlichen Automaten, so ziemlich alles ist entscheidbar. Sprachgleichheit, Inklusion, Leere und Universalität sind alle entscheidbar. In Kombination damit, dass endliche Automaten unter nahezu jeder denkbaren Operation geschlossen werden und diese Operationen berechenbar sind, können Sie so ziemlich alles tun, was Sie jemals mit endlichen Automaten tun wollten.
Das heißt, wenn Sie etwas mit Hilfe von endlichen Automaten erfassen können, erhalten Sie automatisch viele Werkzeuge, um es zu analysieren. Beispielsweise können beim Testen von Software Systeme und ihre Spezifikationen als endliche Automaten modelliert werden. Sie können dann automatisch testen, ob Ihr System die Spezifikation korrekt implementiert.
Turingmaschinen und endliche Automaten vermitteln den Menschen daher einen interessanten und allgegenwärtigen Kontrast: Mehr beschreibende Kraft geht Hand in Hand mit weniger Traktierbarkeit. Endliche Automaten können nicht viel beschreiben, aber wir können zumindest etwas damit anfangen.
quelle
Zustand. Sie müssen lernen, dass man die Welt (für bestimmte Probleme) als endlichen Zustandsraum modellieren und in diesen Einstellungen über Berechnungen nachdenken kann. Dies ist eine einfache Einsicht, aber äußerst nützlich, wenn Sie programmieren - Sie würden immer wieder auf einen Zustand stoßen, und FA gibt Ihnen die Möglichkeit, darüber nachzudenken. Ich halte dies für eine ausreichende Ausrede, um eine ganze Klasse zu unterrichten. Natürlich kann der Zustand deterministisch oder nicht deterministisch sein. Also DFA und NFA, aber du kannst zwischen ihnen konvertieren, etc.
Das zweite, was Sie lernen müssen, ist das Halting-Theorem. Was mit dem Gödelschen Unvollständigkeitssatz zusammenhängt. (Sie können keine Maschine bauen, die alles berechnen kann, und es gibt mathematische Behauptungen, die Sie weder beweisen noch widerlegen können und die als Axiome betrachtet werden müssen. Das heißt, wir leben in einer Welt, die keine endliche Beschreibung oder Realität hat Orakel - yey für uns!)
Jetzt habe ich mein Mathematikstudium abgeschlossen und du gewöhnst dich an die Vorstellung, dass du Dinge lernst, von denen du keine Ahnung hast, warum du lernst (Gruppentheorie, Maßtheorie, Mengenlehre, Hilbert-Räume usw. usw. usw. [alles gute Sachen Übrigens]). Es gibt etwas zu lernen, wie man lernt - das nächste Mal muss man etwas bizarres Rechnen lernen (weil man es benutzen muss, um etwas in der realen Welt zu tun), das sehr seltsam aussieht, wenn man es in Kauf nimmt. Das dritte, was Sie lernen müssen, ist die mathematische Reife - Sie müssen in der Lage sein, sorgfältig über die Dinge zu diskutieren, zu wissen, ob Beweise korrekt sind oder nicht, Beweise aufzuschreiben usw. Wenn Sie sie bereits haben, ist dieser Kurs einfach und es interessiert Sie auch nicht viel, warum du es lernst.
Abgesehen davon ist der Kurs wie alles andere eine reine Zeitverschwendung. Insbesondere können Sie ein glückliches Leben führen, ohne dieses Zeug zu kennen. Dies gilt jedoch buchstäblich für alles Wissen. Mehr oder weniger. Ein Studium lohnt sich für mich, wenn man die Welt nach dem Lernen anders betrachtet. Dies ist definitiv einer der Kurse, die meine Sicht auf die Welt verändert haben. Was können Sie mehr fragen?
quelle
Obwohl es nicht der eigentliche Grund ist, warum sie ursprünglich studiert wurden, sind endliche Automaten und die regulären Sprachen, die sie erkennen, so handhabbar, dass sie als Bausteine für kompliziertere mathematische Theorien verwendet wurden. In diesem Zusammenhang sind insbesondere automatische Gruppen (Gruppen, in denen die Elemente durch Strings in einer regulären Sprache dargestellt werden können und in denen die Produkte von Elementen durch Gruppengeneratoren durch Finite-State-Wandler berechnet werden können) und softe Teilverschiebungen (Teilverschiebungen eines Verschiebungsraumes) zu nennen verbotene Wörter bilden eine reguläre Sprache). Es gibt also Gründe, sie zu studieren, auch wenn Sie sich eher für reine Mathematik als für Informatik interessieren.
Endliche Automaten wurden auch beim Entwurf von Algorithmen für andere Arten von Objekten verwendet. Ein Algorithmus von Culik zum Testen, ob ein eindimensionaler zellularer Automat reversibel ist, umfasst beispielsweise das Konstruieren, Modifizieren und Testen der Eigenschaften bestimmter NFAs. Ein 1986er FOCS-Artikel von Natarajan zeigte, wie man ein bestimmtes Problem bei der Konstruktion mechanischer Montagelinien löst, indem man es auf eine Berechnung über endliche Automaten reduziert.
quelle
Sie stellen (mindestens) zwei verschiedene Fragen: (a) Welche Teile der Theorie bauen heutzutage auf endlichen Automaten auf? (b) Warum wurden überhaupt endliche Automaten entwickelt? Ich denke, der beste Weg, um letzteres anzusprechen, ist, sich die alten Papiere anzuschauen, wie zum Beispiel:
Hier sind die ersten beiden Absätze:
Kurz gesagt, sie wurden als Modell für echte Computer entwickelt, die über endliche Ressourcen verfügen.
quelle
Ein weiterer Grund ist, dass es sich um relativ praktische theoretische Modelle handelt. Eine Turing-Maschine ist, abgesehen von der Unmöglichkeit des unendlichen Bandes, irgendwie unangenehm für die Programmierung eines Computers (beachten Sie, dass dies zunächst keine gute Analogie ist!). PDAs und DFAs können jedoch durchaus als Modelle tatsächlicher Programme verwendet werden, da ein PDA / DFA-Design oft leicht in ein echtes Programm umgewandelt werden kann. Compiler-Design verwendet sie zum Beispiel ausgiebig. An solchen Verbindungspunkten zwischen Theorie und Praxis bekommen wir einen Überblick darüber, wie alles zusammen hängt und was wir können und was nicht.
quelle
Schauen Sie sich das Spiel "Living Binary Adder" hier an: http://courstltc.blogspot.com/2012/12/living-binary-adder-game.html Früher habe ich meinen Schülern dieses Spiel in den frühen Kapiteln über DFA / vorgestellt. NFA. Es zeigt zwei wichtige Dinge in der Automatentheorie:
Dies bringt manchmal den "Aha" -Moment zu meinen Schülern.
quelle
Das Konzept der DFAs ist sehr nützlich, um effiziente Lösungen für viele Arten von Problemen zu entwerfen. Ein Beispiel ist die Vernetzung. Jedes Protokoll kann als Zustandsmaschine implementiert werden. Wenn Sie die Lösung auf diese Weise implementieren, wird der Code einfacher und bedeutet eine geringere Fehlerrate. Dies bedeutet auch, dass Änderungen am Code einfacher sind und geringere Auswirkungen haben, was wiederum eine geringere Fehlerrate zur Folge hat.
Einige Leute finden es schwierig, ein Netzwerkprotokoll als eine Zustandsmaschine anzusehen, aber diejenigen, die den Sprung schaffen können, finden es sehr lohnend in Bezug auf die Rendite.
quelle
Eigentlich fragen meine Studenten manchmal genau das - nachdem sie einen großen Teil des Semesters mit endlichen Automaten verbracht haben und endlich bei Turing-Maschinen angekommen sind. Warum so viel Zeit mit einem schwächeren Formalismus verbringen, wenn ein stärkerer verfügbar ist? Ich erkläre also den inhärenten Kompromiss zwischen Ausdruckskraft und analytischer Komplexität. Die reichhaltigeren Modelle sind in der Regel schwieriger zu analysieren. Die Dichotomie zwischen DFA und TM ist extrem, da das Mitgliedsproblem für das eine trivial und für das andere nicht berechenbar ist. Ein weniger extremes Beispiel wäre DFA vs. PDA. Das Mitgliedschaftsproblem für letztere erweist sich als effizient lösbar, aber die Lösung ist keineswegs trivial. Wir sehen dieses Phänomen in vielen Bereichen der Mathematik und Naturwissenschaften: Studieren Sie ein einfaches Modell, um ein möglichst vollständiges Verständnis zu erhalten, was in der Regel auch zu Einsichten in komplexere Modelle führt.
quelle
Ich sehe mehrere Antworten, die FMs als "weniger" als Turing-Maschinen bezeichnen.
Ein Hauptaugenmerk in der Postgraduiertenklasse lag auf deren Gleichwertigkeit, nicht auf Unterschieden. Für jedes von uns untersuchte FSM-Modell mussten wir die Gleichwertigkeit mit Turing Machines nachweisen. Dies erfolgt durch die Implementierung einer Turing-Maschine im FSM. IIRC, wir haben auch einige andere Computermodelle untersucht, die kein TM implementieren, aber ich vergesse, was das waren. Der Punkt ist, dass Sie, wenn Sie ein TM implementieren können, jedes TM-Programm auf dem Modell ausführen können, vorausgesetzt, dass ein ausreichend großes Bandanalog für das ausgeführte Problem vorhanden ist.
Die Antwort auf die Frage lautete: TM ist das grundlegende Berechnungsmodell, aber nicht sehr praktisch, wenn es um den Bau nützlicher Maschinen geht. Daher die FSM-Modelle.
Dies wurde mir ins Auge gefasst, als ich ungefähr zur selben Zeit (1984) die Sprache FORTH entdeckte. Die Ausführungs-Engine basiert auf der reinen Realisierung eines Dual-Stack-PDAs. Wenn ich tiefer gehe, mag ich die gleiche Engine unter Expression-Compilern
Obwohl für mich die eigentliche Wirkung von FSM darin bestand, das Buch "Theory of Finite Automata" von Trakhtenbrot und Korzynski (?) Zu entdecken, als ich 18 Jahre alt war, eine Entdeckung, die mir im Wesentlichen meine Karriere verlieh.
quelle