Ich habe diese [irgendwie witzige] Frage im Kopf. Warum ist das nicht-deterministischen endlichen Automaten genannt nicht-deterministisch, während wir die Übergänge für Eingänge definieren. Nun, obwohl es mehrere und Epsilon- Übergänge gibt, sind diese definiert, was bedeutet, dass die Maschine für diese Übergänge deterministisch ist. Das heißt, es ist deterministisch.
finite-automata
nondeterminism
Madhusoodan P
quelle
quelle
Antworten:
"Deterministisch" bedeutet "Wenn Sie das System zweimal in dieselbe Situation versetzen, wird garantiert, dass Sie beide Male dieselbe Wahl treffen".
"Nicht deterministisch" bedeutet "nicht deterministisch", oder mit anderen Worten "wenn Sie das System zweimal in dieselbe Situation versetzen, trifft es möglicherweise beide Male dieselbe Wahl oder nicht".
Ein nicht deterministischer endlicher Automat (NFA) kann mehrere Übergänge aus einem Zustand heraus haben. Dies bedeutet, dass es mehrere Möglichkeiten gibt, was in dieser Situation getan werden kann. Es ist nicht gezwungen, immer dasselbe zu wählen; Bei einem Eingang wird möglicherweise der erste Übergang und bei einem anderen Eingang derselbe Übergang ausgewählt.
Hier können Sie sich "Situation" als "Zustand der NFA zusammen mit dem Symbol vorstellen, das als nächstes von der Eingabe gelesen wird". Selbst wenn beide identisch sind, kann ein NFA immer noch mehrere übereinstimmende Übergänge haben, die aus diesem Zustand entfernt werden können, und es kann willkürlich auswählen, welcher davon verwendet werden soll. Im Gegensatz dazu verfügt ein DFA nur über einen passenden Übergang, der in dieser Situation ausgeführt werden kann. Daher hat er keine Wahl - er folgt immer demselben Übergang, wenn er sich in dieser Situation befindet.
quelle
Nehmen wir zum Beispiel diesen Automaten, es ist ein NFA und er akzeptiert den String . Um pedantischer zu sein, werden Zeichenfolgen akzeptiert, die mit 10 enden .0110 10
Um zu sehen, müssen wir nur prüfen, ob es einen Akzeptanzstatus erreicht.
Jetzt in der roten Linie gab es eine andere Möglichkeit, nämlich beim Lesen der zweiten könnte ich in q 0 bleiben und dann in q 0 bleiben, wenn ich die letzte 0 lese . Automaten haben keinen Speicher, daher gibt es keine Möglichkeit, einen Status zu speichern und später zu überprüfen, ob meine Zeichenfolge mit 10 endet1 q0 q0 0 10 10
Es ist einfacher, eine NFA zu erstellen als eine DFA. Das Gute ist, dass beide gleichwertig sind .
quelle
Die Übergangsfunktion eines NFA gibt die zulässigen Übergänge zu jedem Zeitpunkt an. Es könnte mehr als eine Option geben, und die NFA wählt einen nicht deterministischen Übergang mit dem Ziel, schließlich einen akzeptierenden Zustand zu erreichen.
Vielleicht sollten Sie warten, bis Sie etwas über nichtdeterministische Turingmaschinen erfahren. Nichtdeterminismus bedeutet in beiden Fällen dasselbe.
quelle
Beginnen Sie mit einem endlichen Automaten. Es hat Zustände und Akzeptanzzustände und Übergänge.
Geben Sie nun mehr als eine Übergangsregel für jeden Staat an und sagen Sie, dass sie akzeptiert, wenn es eine Reihe von Übergangsregeln gibt, die nachträglich ausgewählt werden die Führung der Akzeptanzzustand eine Eingabezeichenfolge gegeben.
Sobald Sie Ihre Eingabezeichenfolge haben, gibt es einen festen Satz konkreter Übergänge und es wird (nacheinander) angegeben, dass diese Zeichenfolge akzeptiert werden soll. Welche Übergänge es auswählt, wird jedoch erst am Ende der Zeichenfolge ausgewählt . Während des Lesens der Zeichenfolge wird nicht festgelegt, welcher Pfad verwendet werden soll.
Es ist nicht deterministisch. Es kann seinen Pfad durch das Diagramm wählen, nachdem Sie ihm das gesamte Problem gegeben haben, und nicht, während es die Eingabe liest.
Nun, wir formalisieren dies anders als dieses Gedankenexperiment, aber dies gibt Ihnen Motivation, warum es diesen Namen bekam.
Dies erklärt, wie es überhaupt zu dem Namen kam. Ja, Sie können NDFA vollständig deterministisch modellieren, aber die Namen sind nicht eindeutig . Sobald Sie etwas Bob angerufen haben, entstehen Kommunikationskosten, wenn Sie es in etwas anderes umbenennen, da niemand weiß, wovon Sie sprechen, wenn Sie es Alice nennen.
quelle
Aus Wikipedia ist es am besten, mit deterministischen Finite-State-Maschinen (DFA) zu beginnen. Bei einem DFA wird jeder Übergang eindeutig durch den aktuellen Status und das zu verarbeitende Eingabesymbol bestimmt. Nichtdeterministische Zustandsautomaten (NFA) sind einfach das, was Sie erhalten, wenn Sie diese Determinismusregel lockern, um zuzulassen, dass Übergänge nicht eindeutig definiert werden. Dies erhalten Sie, wenn Sie die Determinisim-Regel aus DFAs entfernen.
quelle
NFA und DFA werden beide verwendet, um (unter anderem) bestimmte Zeichenfolgen zu erkennen.
Nicht deterministischer endlicher Automat funktioniert so, als hätte er Einfluss auf seine Entscheidungen - er kann "wählen", ob er einem Pfad folgt oder nicht.
Beachten Sie, dass es in der obigen Abbildung, wenn es sich um die Zeichenfolge "00111" handelt, zwei Möglichkeiten gibt, der ersten "1" zu begegnen. Man kann bei "p" bleiben oder zu "q" gehen. Wenn sich die Automaten auf das "q" bewegen sollten, würde sie die Zeichenfolge nicht akzeptieren (da aus dem "q" keine Kanten herauskommen). Aber die Zeichenkette kann von diesen Automaten akzeptiert werden, indem sie nur mit der letzten 1 zum "q" wechselt, während sie für alles andere auf "p" bleibt (und genau das passiert).
NFA lässt es so aussehen, als ob die Automaten "wüssten", was vor ihnen liegt, und wählt entsprechend aus.
Natürlich nicht. DFA und NFA sind in Bezug auf die Leistung gleichwertig (Sie können NFA auf DFA reduzieren und DFA (wahrscheinlich) durch Verwendung von NFA vereinfachen), aber NFA ist nützlich, da es ermöglicht, die gleichen Sprachen wie DFA zu definieren und dabei die Diagramme weitgehend beizubehalten kürzer und lesbarer.
Da ist nichts Zufälliges drin. Der nicht deterministische Teil betont die Tatsache, dass es eine "Wahl" gibt, aber die Wahrheit ist, dass die Automaten keine Entscheidungen treffen.
quelle
Nun, hier ist die Mischung aus einigen Inhalten aus Buch [Einführung in formale Sprachen und Automaten von Peter Linz 4E] und meinem Verständnis.
Stellen Sie sich ein Spielprogramm vor, in dem die Maschine die Entscheidung für den nächsten Zug treffen muss [z. B. für Tic-Tac-Toe]. Da mehrere Züge möglich sind, wählen wir jeden Zug deterministisch aus und werten den Zug aus und entscheiden uns für den besten. Obwohl der Auswahlprozess deterministisch war und es viele mögliche Züge gab, war der endgültige Zug ein einziger und wurde als bester Zug ausgewählt, während alle erprobten Zugberechnungen vor dem Gegner verborgen wurden. [Hier nehmen wir an, dass der Bewertungsprozess für jeden möglichen Zug vor dem Gegner verborgen war].
Daher wurde nur eine Wahl getroffen und dem Gegner wird eine Illusion gegeben, dass der Zug nicht deterministisch war.
Nun, wenn Sie noch nicht überzeugt sind, dass der beste Zug das Produkt einiger deterministischer Berechnungen war, müssen Sie die Maschine in Betracht ziehen, die vollkommen zufällige Züge ausführt (es kann sein, dass die Maschine verliert, aber es ist eine NFA).
quelle