Wenn nicht, dann , was bedeutet es , wenn aus irgendeinem Zustand und einige Symbole ein , δ ( q , a ) nicht existiert?
terminology
automata
finite-automata
Duncan
quelle
quelle
Antworten:
Sie scheinen über ein umstrittenes Thema gestolpert zu sein. Anscheinend streiten Informatiker gern. Ich mag es sicherlich zu streiten, also geht es los!
Meine Antwort ist eindeutig: Nein. Deterministische endliche Automaten benötigen nicht für jedes Symbol einen Übergang von jedem Zustand. Die Bedeutung, wennδ(q,a) nicht existiert, ist einfach, dass der DFA die Eingabezeichenfolge nicht akzeptiert.
Während Sie eine Definition von DFA erstellen können, die erfordert, dassδ(q,a) existiert, ist es einfach nicht so, dass ein fehlender Übergang die resultierende Struktur (wie auch immer Sie sie nennen) in irgendeiner Weise nicht deterministisch macht, wie es viele der Kommentatoren sind behaupten. Wenn Sie einen Kurs über Automatentheorie belegen, sind kontextfreie Sprachen und Push-Down-Automaten das nächste Thema, bei denen die Unterscheidung zwischen nichtdeterministischen und deterministischen Automaten kritisch ist und Sie die korrekte Definition des Nichtdeterminismus verwenden müssen.
Nichtdeterminismus ist mit mehr als einem Rechtsübergang verbunden.
Ich denke, wir sind uns alle einig mit der folgenden Wikipedia-Definition (die ich gleich zeigen werde, ist etwas mehrdeutig):
Ein deterministischer endlicher AutomatM. ist ein 5-Tupel ( Q. , Σ , δ , q0 , F. ), bestehend aus
Seiw = a1ein2⋯ an eine Zeichenkette über dem Alphabet Σ . Der Automat M. akzeptiert die Zeichenkette w wenn eine Folge von Zuständen r0, r1, … , R.n in Q. mit den folgenden Bedingungen existiert:
Die Mehrdeutigkeit und die Kontroverse betrifft die Definition der Übergangsfunktionδ (Nummer "3" in der ersten Liste mit Aufzählungszeichen). Wir sind uns alle einig, dass das, was einen DFA von einem NFA unterscheidet, darin besteht, dass δ eher eine Funktion als eine Beziehung ist . Aber ist δ eine Teilfunktion oder eine Gesamtfunktion ?
Die Definition des DFA funktioniert einwandfrei, wennδ eine Teilfunktion ist. Wenn Sie bei einer Eingabezeichenfolge einen Zustand qich mit einem Eingabesymbol einj in dem es keinen nächsten Zustand gibt, akzeptieren die Automaten dies einfach nicht.
Wenn Sie diese Definition erweitern, um die Definition von Pushdown-Automaten zu erstellen, müssen Sie außerdem unterscheiden, dass Pushdown-Automaten mit Übergangsfunktionen, die Teilfunktionen sind, als deterministisch und nicht als nicht deterministisch klassifiziert werden.
Wenn Sie die Teilfunktion stört, dann ist hier eine triviale Transformation, dieδ einer Gesamtfunktion macht. (Diese Transformation ähnelt nicht dem Teilmengenkonstruktionsalgorithmus, sie fügt höchstens O (1) -Zustände hinzu, ist in der ursprünglichen Anzahl von Zuständen linear und kann auf die Arbeit mit PDAs erweitert werden. Keine dieser Tatsachen trifft auf den Teilmengenkonstruktionsalgorithmus zu .)
Diese Automaten haben einδ , das eine Gesamtfunktion ist und genau die gleichen Zustände akzeptiert und ablehnt, die Ihre ursprünglichen Automaten akzeptiert und abgelehnt haben.
Bearbeiten, Januar 2019
Der Kommentator @Alex Smart kritisiert mich zu Recht dafür, dass ich weder Referenzen gebe noch erkläre, warum wir uns darum kümmern sollten. Also los geht's:
Der Grund , warum wir kümmern vs Nicht-Determinismus über die genaue Definition des Determinismus ist, dass einige Klassen von nicht-deterministischen Automaten mächtiger sind als ihre determinis Cousins, und einige Klassen von nicht-deterministischen Automaten sind nicht mächtiger als ihre determinis Cousins. Für endliche Automaten und Turingmaschinen sind die deterministischen und nicht deterministischen Varianten von gleicher Leistung. Für Pushdown-Automaten gibt es Sprachen, in denen die Unterscheidung wichtig ist: Es gibt NPDA, die die Sprache akzeptieren, und kein DPDA akzeptiert die Sprache. Für die linear begrenzten Automaten ist die Frage offen (oder war das letzte Mal, als ich sie überprüft habe). Die Steigerung der Leistung von NPDA gegenüber DPDA ergibt sich aus der Zulassung mehrerer Übergänge, nicht vom Umschalten der Übergangsfunktion von einer Gesamtfunktion zu einer Teilfunktion.
Bücher aus der Compiler-Community:
Aho und Ullman, Principles of Compiler Design , 1977: Definiert zuerst NFA (Seite 88) mit einer Übergangsbeziehung, dann (S. 90-91):
Aho, Sethi und Ullman, Compiler, Prinzipien, Techniken und Werkzeuge , Nachdruck 1988, ist ähnlich, es definiert zuerst NFA mit einer Übergangsbeziehung, dann (S. 115-116):
(Beachten Sie, dass @Alex Smart in den Kommentaren sagt: "Der Drache erwähnt ausdrücklich, dass die Funktion vollständig ist." Ich gehe davon aus, dass er mit Co-Autor Lam über die spätere Ausgabe spricht, auf die ich derzeit keinen Zugriff habe. )
Appel, Modern Compiler Implementation in Java , 1988 (S. 22):
Appel erklärt dann weiter, dass wir bei der Verwendung von DFA zum Erkennen der längsten Übereinstimmungen explizit die fehlenden Übergänge verwenden, um zu entscheiden, wann gestoppt werden soll (S. 23):
Bücher aus der Community der Switching-Theorie:
Kohavi, Switching and Finite Automata Theory, 2 / e , 1978, p. 611 sagt:
Ich würde normalerweise eindeutig interpretieren , um "genau eins" zu bedeuten, nicht "nicht mehr als eins". (Dh Kohavi scheint zu sagen, dass Determinismus eine Gesamtfunktion erfordert)
Bücher aus der Theorie-der-Berechnung-Community:
Hier scheint es üblicher zu sein, DFAs vor NFAs zu definieren und zu verlangen, dass DFAs eine Gesamtübergangsfunktion haben, dann aber NPDAs vor DPDAs definieren und "Determinismus" als Einschränkung der Übergangsbeziehung auf nicht mehr als definieren -ein Eintrag für jedes Status / Symbol-Paar.
Dies gilt für Hopcroft und Ullman, 1979, Lewis und Papadimitriou, 1981, und insbesondere für Sipser, 2006, der die Definition von DFA pädagogisch verwendet, um genaue formale Definitionen einzuführen, ihre Bedeutung zu erläutern und ausdrücklich zu sagen (S.36):
Dies scheint der historischen Entwicklung zu folgen. Deterministische endliche Automaten wurden in den 40er und 50er Jahren eingeführt. Nicht determinierte endliche Automaten wurden in der Arbeit von Rabin und Scott eingeführt: "Endliche Automaten und ihre Entscheidungsprobleme, IBM J. Rsrch und Dvpt , 3 (2): 114-125, 1959. Nach früheren Autoren definieren Rabin und Scott deterministisch endliche Automaten (die sie gewöhnliche Automaten nennen) mit einer Übergangsfunktion "definiert auf dem kartesischen Produkts × Σ aller Paare von Zuständen und Symbolen" (was ich als Gesamtfunktion interpretieren würde).
Interessanterweise definieren Rabin und Scott auch nicht deterministische endliche Automaten als Gesamtfunktion! Seite 120, Definition 9:
Das heißt: Die Übergangsfunktion, die total ist, macht das System nicht deterministisch!
Sipser 2006 folgt Rabin und Scott und verwendet für seine Definitionen von nicht deterministischen endlichen Automaten, nicht deterministischen PDAs und nicht deterministischen Turing-Maschinen eine Gesamtübergangsfunktion von Zuständen / Symbolen zum Potenzsatz von Zuständen, überspringt jedoch das Thema deterministisch PDA.
Sowohl Hopcroft und Ullman, 1979, als auch Lewis und Papadimitriou, 1981, verwenden Teilfunktionen in ihren Definitionen deterministischer PDAs. Sie definieren zuerst NPDAs mit einer Übergangsbeziehung, und wenn sie dann zu PDAs kommen, sagen Lewis und Papadimitriou (S. 135):
Während Hopcroft und Ullman sagen (S. 112):
quelle
In Bezug auf die Berechenbarkeit entsprechen NFAs DFAs - es gibt einen Algorithmus zum Konvertieren von einem NFA in einen DFA, und ein DFA ist nur trivial ein NFA, der keinen Nichtdeterminismus verwendet, sodass beide die Menge der regulären Sprachen definieren.
quelle
Es gibt Definitionen von DFA in Anlehnung an
In diesem Fall benötigen Sie nicht alle Übergänge. Wenn der Automat keinen Übergang hat, der zum nächsten Eingabesymbol passt, wird er abgelehnt.
Es ist eine schöne Übung zu zeigen, dass beide Definitionen hinsichtlich der akzeptierten Sprachen gleichwertig sind.
quelle
In der Definition von DFA sollte jeder Staat das gesamte Alphabet in £ haben. Für ein Beispiel, wenn £ = {a, b, c} und Q = {q0, q1, q2}, sollten alle diese Zustände alle a, b, c-Symbole haben, die in einen anderen Zustand oder denselben Zustand übergehen.
quelle
Die einfachste Antwort dafür ist, fügen Sie tot Zustand für linkes Symbol . Wie bei der Konvertierung von NFA zu DFA erhalten wir für einige Symbole den Übergang Φ, was bedeutet, dass wir dafür den Dead-Status erstellen.
quelle