DFA, NFA und epsilon NFA alle drei ermöglichen es uns, eine bestimmte reguläre Sprache darzustellen. Mit jeder dieser Darstellungen können wir zu demselben regulären Ausdruck gelangen. Warum müssen wir dann alle drei Darstellungsformen endlicher Automaten untersuchen? Es kann eine Erklärung geben, was NFA tun kann, was DFA nicht kann. Das heißt, NFA könnte uns beim Entwerfen von Unsicherheiten helfen. Zum Beispiel haben wir beim Entwerfen eines Spiels (Schach) viele Möglichkeiten, eine bestimmte Figur von einem bestimmten Ort zu verschieben, der mit NFA leicht dargestellt werden kann. Aber was nützt epsilon NFA, wenn dies auch mit NFA oder DFA möglich ist?
automata
finite-automata
education
Bharat Banavalikar
quelle
quelle
Antworten:
Fügen Sie reguläre Grammatiken für eine vierte hinzu. Da sind andere...
Ein Teil des Interesses an DFA + NFA besteht darin, dass es sich um einfache Berechnungsmodelle handelt, mit NFA- (und NFA-) Beispielen für Nichtdeterminismus (eine entscheidende Idee für komplexere Modelle). Um zu beweisen, dass DFA und NFA die gleichen Sprachen akzeptieren, wird auch ein sehr wichtiges Phänomen in einer einfachen, verständlichen Umgebung untersucht.ϵ
Reguläre Ausdrücke (und auch reguläre Grammatiken) sind völlig unterschiedliche Formalismen, die zufällig denselben Satz von Sprachen beschreiben. Der Beweis dieser Tatsache untersucht wiederum wichtige Wechselbeziehungen und ist ein Beispiel dafür, dass Formalismen sehr unterschiedlich aussehen können, auf radikal unterschiedlichen Konzepten beruhen, aber dieselben Sprachen beschreiben. Wieder in einer ziemlich einfachen Umgebung.
Für die Verwendung in der "realen Welt" können Sie mit einem regulären Ausdruck beginnen und einen minimalen DFA für die Hochleistungssuche erhalten. Digitale Schaltkreise sind im Wesentlichen DFAs, deren Verständnis in der Computertechnik von zentraler Bedeutung ist. Last but not least können Systeme aufgrund externer Reize häufig als "in einem Zustand sein" und "in einen anderen übergehen" modelliert werden, selbst wenn das System sehr weit von einem echten DFA entfernt ist, wenn es auf diese Weise betrachtet wird, kann dies zum Verständnis beitragen.
Später hinzugefügt: Wie von Raphael festgestellt, kann es effizienter sein, eine NFA direkt für die Suche zu interpretieren, da das Erstellen eines DFA teuer und eine NFA viel kleiner sein kann.
quelle
Es gibt eine Vielzahl von Gründen, die unterschiedlichen Formen / Entsprechungen von DFAs gegenüber NFAs zu untersuchen. Hier sind einige ausgewählte Highlights aus der fortgeschrittenen Komplexitätstheorie.
NFAs sind ein interessantes Modell für die "parallele Berechnung". Man kann die Weiterentwicklung von Staaten durch die NFA als eine parallele Version der DFA-Berechnung betrachten. Daher spiegeln DFA- und NFA-Berechnungen einen Teil der Unterscheidung zwischen sequentieller und paralleler Berechnung wider. Durch den Vergleich beider Kontexte hilft es auch, die inhärente algorithmische Komplexität von Problemen zu untersuchen.
NFAs werden häufig in Matching-Systemen für reguläre Ausdrücke verwendet (in allen Sprachen, insbesondere in modernen Sprachen, die in der Unix-Ära entstanden sind), die normalerweise Beschreibungen von regulären Ausdrücken ermöglichen, die in NFAs konvertiert und möglicherweise in DFAs konvertiert werden, um eine effizientere Suche zu unterstützen.
Es gibt noch einige offene Probleme in den Gebieten, die häufig auf der Grundlage der DFA / NFA-Korrespondenz untersucht werden. siehe zB gibt es noch offene Probleme mit DFAs (cstheory stackexchange). Es ist etwas erstaunlich, dass einige von ihnen mit sehr tiefen CS-Bereichen verbunden sind, einschließlich des P-gegen-NP-Problems, dh der Schnittpunkt-Nichtleere von DFAs . Ein weiterer offener Bereich ist beispielsweise die Berechnung des minimalen NFA für einen DFA .
Siehe auch für einige verwandte Einsichten diese semifame / hochstimmige Frage auf cstheory.se : Was ist die Erleuchtung, die ich nach dem Studium endlicher Automaten erreichen soll?
Es gibt sehr unterschiedliche Anwendungen von DFAs gegenüber NFAs, und die Korrespondenz zwischen beiden wird häufig in ihnen ausgenutzt. String String Pattern Matching wurde oben erwähnt, aber DFA / NFA-Konstruktionen werden häufig bei der (automatisierten) Spracherkennung verwendet. siehe z. B. dieses häufig zitierte Papier: Gewichtete Finite-State-Wandler in der Spracherkennung / Mohri, Pereira, Riley
quelle
DFAs sind einfacher zu implementieren als NFA, da ihr nächster Status durch eine Funktion bestimmt wird und NFAs einem Benutzer helfen, das, was er als Ausgabe wünscht, einfach auszudrücken, da der NFA zwischen mehreren Pfaden wählen kann. und epsilon-NFA ist eine Erweiterung von NFA, bei der Übergänge ohne Eingabesymbole durchgeführt werden können.
quelle
Die Anzahl der DFA-Staaten hat eine schlimme Sache. Es explodiert manchmal .
Kurz gesagt, wenn die Anzahl der Zustände einfach zu hoch ist (immer noch begrenzt, aber wir leben in einer physischen Welt), müssen Sie den Abstraktionsgrad erhöhen, um mit der Komplexität der Kosten einer gewissen Verlangsamung fertig zu werden. Die anderen Modelle, wie NFAs und AFAs, sollen prägnantere Möglichkeiten zur Darstellung regulärer Sprachen bieten.
quelle