Ein Automat ist ein abstraktes Modell eines digitalen Computers. Digitale Computer sind vollkommen deterministisch. Ihr Zustand ist jederzeit eindeutig aus der Eingabe und dem Anfangszustand vorhersehbar.
Warum sollte Nichtdeterminismus in die Automatentheorie einbezogen werden, wenn wir versuchen, reale Systeme zu modellieren?
Antworten:
Ja, Sie sind richtig, Computer sind deterministisch zu automatisieren. Nicht-deterministische Modelle sind für theoretische Zwecke nützlicher, manchmal ist die deterministische Lösung für die Definition (oder etwa die Problemstellung) nicht so offensichtlich und so wenig schwer zu finden. Dann besteht ein Ansatz darin, zuerst ein nicht deterministisches Modell zu entwerfen, das vergleichsweise einfach zu entwerfen ist, und dann zu versuchen, es in ein deterministisches Modell umzuwandeln. Im Folgenden habe ich versucht, anhand eines Beispiels zu demonstrieren, was ich meine. Betrachten Sie den regulären Ausdruck:
Angenommen, Sie werden aufgefordert, DFA für die von RE oben generierte Sprache zu zeichnen.
Mit meinem Wissen FAs die Gestaltung, weiß ich , dass (1) , wenn ein
*
in regulärem Ausdruck angegeben Ich brauche entsprechende Schleife in FA (2) verketten Operationen wiea.b
Mittel so etwas wie: .(q0)─a→(q1)─b→(q2)
Also, bei meinem ersten Versuch würde ich eine NFA zeichnen wie:
Dachte, dies ist keine deterministische Lösung, sondern sieht sehr einfach aus FA, die leicht unter Verwendung des gegebenen regulären Ausdrucks entworfen werden kann. Meine Art von Analogie, Ähnlichkeit zwischen dem obigen regulären Ausdruck und meiner NFA zu zeigen, ist wie folgt:
(01)*
01
(nach(01)*
) gibt(q0)─0→(q1)─1→(q2)
(0 + 1)*
gibt eine Selbstschleife im Zustand q 2 für das Label 0, 1Nach meiner Analogie ist der FA, den ich oben gezeichnet habe, vergleichsweise einfach aus dem gegebenen RE zu ziehen. Und zum Glück kann in der Klasse der endlichen Automaten jedes nicht deterministische Modell in ein äquivalentes deterministisches Modell umgewandelt werden. Wir haben eine algorithmische Methode, um eine NFA in eine DFA umzuwandeln . So kann ich problemlos über NFA in einen DFA konvertieren:
Zum anderen ist es leider nicht immer möglich, ein nicht deterministisches Modell in ein deterministisches zu konvertieren. Beispielsweise ist die Klasse für deterministische Push-Down-Automatisierung eine Teilmenge der Klasse für deterministische Push-Down-Automatisierung "check venn diagram ", und Sie können nicht immer konvertieren eine NPDA in einen PDA.
Wenn es normalerweise nicht möglich ist, eine nicht deterministische Lösung in eine deterministische Lösung umzuwandeln, definieren wir die deterministische Lösung mit Hilfe der nicht deterministischen Lösung in der Unterdomäne (oder Teildomäne) anstelle der vollständigen Domäne. Oder wir definieren die Lösung auf andere Weise (z. B. gierige Vorgehensweise), die Ihnen möglicherweise nicht die optimale Lösung bietet .
Manchmal ist Nicht-Determinismus ein effektiver Mechanismus, um ein kompliziertes Problem / eine komplizierte Lösung präzise und effektiv zu beschreiben. Beispielsweise können nicht-deterministische Maschinen als Modell für Such- und Rückverfolgungsalgorithmen dienen (siehe: Wie Zeichenfolgen im nicht-deterministischen Modell mithilfe von Rückverfolgung verarbeitet werden) ). Entgegengesetzt deterministische Modelle stehen besser für effiziente, minimierte und weniger redundante Lösungen.
Hier möchte ich auch aus Wikipedia zitieren Verwendung eines nicht deterministischen Algorithmus :
Wie @keshlam auch in seinem Kommentar erwähnte : "Nichtdeterminismus" wird in der Praxis verwendet, um auf jede Unvorhersehbarkeit im Ergebnis eines Prozesses hinzuweisen . Beispiel: Gleichzeitige Programme weisen ein nicht deterministisches Verhalten auf. Zwei Ausführungen desselben Programms mit derselben Eingabe können zu unterschiedlichen Ergebnissen führen (wenn kein Mechanismus zur Steuerung der Gleichzeitigkeit angewendet wird). Lesen Sie mehr darüber in "Nützlichkeit des Nicht-Determinismus" .
Ich würde Ihnen auch empfehlen, die folgenden Links zu lesen:
1. Was ist der Unterschied zwischen Nichtdeterminismus und Zufälligkeit?
2. 9.2.2 Nichtdeterministische vs. probabilistische Modelle: (a). Nicht deterministisch: Ich habe keine Ahnung, was die Natur tun wird. (b). Probabilistisch: Ich habe die Natur beobachtet und Statistiken gesammelt.
3. Nichtdeterministische Programmierung
quelle
Es ist eher umgekehrt: Automaten entstanden zuerst als mathematische Modelle. Und Nichtdeterminismus ist ganz natürlich. Oft stehen Ihnen mehrere Wege offen. Anstatt unsauber zu spezifizieren, dass alle Pfade in einer bestimmten Reihenfolge bis zum Ende befolgt werden müssen, und sich vielleicht durch unendliche Äste zu verzetteln, und ... einfach Nichtdeterminismus zu verwenden.
Und obwohl nicht deterministische Programmiersprachen kein Mainstream sind, haben sie eine unrühmliche Geschichte, möglicherweise beginnend mit der GCL von Dijkstra . Da Maschinen immer mehr Kerne (unabhängige Prozessoren) anhäufen, durchdringt jede Programmierung irgendeine Form von Nichtdeterminismus.
quelle
NFAs können in der Praxis verwendet werden. Sehen Sie sich diese Antwort beim Stapelaustausch an. Der Grund ist, dass die Konstruktion des Powersets sozusagen on-the-fly simuliert werden kann. Um eine NFA auf einem deterministischen Computer zu simulieren, verfolgen wir nur die möglichen Zustände, in denen sich die NFA befinden könnte. In der Regel ist diese Anzahl klein und die Simulation daher schnell. Dies ist viel praktischer als das Ausführen der eigentlichen Powerset-Konstruktion: Der resultierende Automat könnte sehr groß sein, obwohl in der Praxis die meisten Sets selten erreicht würden.
Der Nichtdeterminismus ist auch wichtig für die Komplexität der Berechnung, wo er zur Definition der Klasse NP verwendet wird. (Die Klasse NP hat auch andere, äquivalente Definitionen, zum Beispiel unter Verwendung von Zeugen.)
quelle
Sie geben richtig an, dass Automaten Modelle sind, sodass es zwei Verwendungsbereiche gibt, die der Nichtdeterminismus haben kann:
Verwendung bei der Modellierung realer Probleme.
Darüber hinaus können nicht deterministische Automaten kompaktere Darstellungen von Sprachen liefern. Beispielsweise ist bekannt, dass es NFA gibt, deren minimaler äquivalenter DFA exponentiell größer ist.
Verwendung in der Theorie.
Die Verwendung von Nichtdeterminismus kann Beweise vereinfachen, siehe z. B. Konvertieren regulärer Ausdrücke in endliche Automaten.
quelle
(Dies ist eine Umformulierung einiger der anderen Antworten, aber ich werde es trotzdem posten :)
Sie schreiben: Ein Automat ist ein abstraktes Modell eines digitalen Computers.
Ich stimme dir nicht zu! Automaten modellieren, wie wir Menschen die Berechnung spezifizieren, und nicht nur, wie Computer sie ausführen. Nichtdeterminismus ist genau der Unterschied. Unsere Angaben sind oft nicht deterministisch.
Nehmen Sie zum Beispiel Merge Sort . Beim Sortieren nach Zusammenführung werden die zu sortierenden Elemente in zwei Hälften mit ungefähr gleicher Größe aufgeteilt, wobei jede Hälfte nach dem Sortieren nach Zusammenführung sortiert und die sortierten Ergebnisse zusammengeführt werden. Dies legt die Idee der Zusammenführungssortierung vollständig fest, ist jedoch nicht deterministisch: Es legt keine Reihenfolge fest, in der die Hälften sortiert werden sollen (soweit es uns wichtig ist, kann dies gleichzeitig erfolgen), und es gibt auch keinen genauen Weg dazu an Bestimmen Sie die Aufteilung. Diese Details müssen ausgefüllt werden, um zu einer deterministischen, sequentiellen Version der Zusammenführungssortierung zu gelangen, die von einem Single-Thread-Computerprogramm implementiert werden kann, aber ich würde sagen, dass sie Teil einer bestimmten Art der Zusammenführungssortierung sind, nicht die Idee der Verschmelzung sortieren sich.
Gleiches gilt für Algorithmen im Allgemeinen - zB Kochbuchrezepte. Einige Leute definieren Algorithmen als deterministisch. In diesem Fall benötigt dieser allgemeinere und meiner Meinung nach natürlichere Begriff des Algorithmus einen anderen Namen.
Die Idee, mit nicht deterministischen Spezifikationen zu arbeiten, wurde durch die Programmiermethode von Dijkstra formalisiert, die von Spezifikationen ausgeht, die nur Vor- und Nachbedingungen für das Programm enthalten, und aus diesen systematisch ein deterministisches Imperativprogramm entwickelt. Dijkstra hätte wahrscheinlich gesagt: Sortieren ist das Problem, die Beziehung zwischen Vor- und Nachbedingungen, die wir herstellen wollen; Zusammenführen, sortierenist ein Ansatz, dies irgendwo zwischen der Problembeschreibung und einer deterministischen Lösung zu tun; Ein bestimmter deterministischer Mischungssortieralgorithmus ist eine konkrete deterministische Lösung. Der gleiche allgemeine Ansatz kann jedoch für die Entwicklung von parallelen Programmen verwendet werden, bei denen das endgültige Programm noch nicht deterministisch ist. Solche Programme können zB in verteilten Computerumgebungen ausgeführt werden.
quelle
Sie haben recht, wir können KEINE nicht deterministische Maschine bauen. Das Konzept für den Bau besserer Maschinen ist daher nicht das Ziel. Nichtdeterminismus ist vielmehr ein nützliches Konzept, wenn man versucht, die Berechnung zu verstehen. Zum Beispiel wissen wir jetzt, dass Nichtdeterminismus aus Sicht der Berechenbarkeit nicht mächtiger ist als Determinismus, was bedeutet, dass wir eine nichtdeterministische Maschine mit einer deterministischen Maschine simulieren können. Unter dem Gesichtspunkt der Komplexität erlaubt uns der Nichtdeterminismus beispielsweise, den Zusammenhang zwischen der Schwierigkeit, eine effiziente Lösung für ein Problem zu finden, und der Schwierigkeit, eine Lösung zu überprüfen (das ist das berühmte P versus NP-Problem), zu überlegen und zu verstehen. . Und so weiter. Daher ist der Hauptgrund für das Studium des Nichtdeterminismus die Theorie.
quelle
Die Erfindung der Turing-Maschine erfolgte 1936 durch Turing. FSM-ähnliche Modelle wurden von eingeführt McCulloch und Pitts , zwei Neurophysiologen, als Modell für die neurobiologische Aktivität im Jahr 1943 von der Stanford CS Geschichte Seite :
keine CS Historiker, aber vermutet , dass das McCulloch-Pitts Modell Nichtdeterminismus nicht enthalten war und das Mealy - Moore in einer natürlichen verallgemeinernde / Abstraktion des formalen / theoretischen Konzepts Modell tat. Beachten Sie, dass DFAs und NFAs die gleiche Repräsentationskraft haben, sodass Sie, wenn Sie reale Systeme modellieren möchten, zwischen beiden wählen können. Ein grundlegender Unterschied besteht darin, dass eine NFA viel kleiner sein kann als eine äquivalente DFA (so gibt es beispielsweise ein natürliches Element der Daten- / Informationskomprimierung). Es gibt auch natürliche Aspekte / Analoga der Parallelität in der NFA-Studie.
quelle
Zunächst möchte ich mich bei allen Personen bedanken, die die Frage beantwortet haben. Alle Antworten sind wichtig und enthalten einige nützliche Informationen. Da es sich jedoch um eine schwierige Frage für Anfänger handelt und ich genügend Zeit benötige, um sie gut zu verstehen Ich würde versuchen, zusammenzufassen, was ich aus all den Antworten und einigen Büchern gewonnen habe:
Eigentlich hatte ich eine Verwirrung, die sich mit dem Mechanismus des nicht deterministischen Modells befasste. Ich habe mich immer über die nichtdeterministische Maschine gewundert, da es sich um eine nichtmechanische Maschine handelt, die es in der realen Welt nicht gibt. Ich habe Automata immer mit unseren heutigen Computern verglichen, die völlig deterministisch sind. Eigentlich habe ich das nicht deterministische Modell nicht richtig verstanden. Jetzt denke ich, dass ich das nicht-terministische Modell recht gut verstehe: Eine nicht-deterministische Maschine ist eine Maschine, die immer dem Ausführungspfad folgt, der zur Akzeptanz der Zeichenfolge führt (ohne Rückverfolgung). Aber wie kann dies im wirklichen Leben möglich sein? : Heutzutage ist es absolut unmöglich, dass Computer so intelligent sind, um die Zukunft vorherzusagen. Warum also überhaupt Nichtdeterminismus? Die Antwort auf diese Frage ist ziemlich knifflig. Zu der Frage kam ich zu folgendem Schluss: Die Automatentheorie existierte, als es keine Computer gab (erste Theorie, dann praktisch). Es ist ein rein theoretisches Thema, und das Konzept des Nichtdeterminismus ist intuitiv entstanden. Das Motiv des Themas 'Automatentheorie' bestand nicht darin, sich mit praktischen Computern zu befassen. Aber wenn praktisch Computer zum Einsatz kommen, können wir mithilfe der Automatentheorie praktische Computer genau definieren: Was sind die Einschränkungen heutiger Computer? Welches algorithmische Problem ist für Computer sehr komplex und so unpraktisch? (Hier ist die Rolle des Nondererminismus von entscheidender Bedeutung kann zwei Komplexitätsklassen (P und NP) unterscheiden. Was sind die Lösungen für diese unpraktischen Probleme, mit denen es vergleichsweise schneller ausgeführt werden kann. Dies ist der Nutzen des Nichtdeterminismus. Es ist ein rein theoretisches Thema, und das Konzept des Nichtdeterminismus ist intuitiv entstanden. Das Motiv des Themas 'Automatentheorie' bestand nicht darin, sich mit praktischen Computern zu befassen. Aber wenn praktisch Computer zum Einsatz kommen, können wir mithilfe der Automatentheorie praktische Computer genau definieren: Was sind die Einschränkungen heutiger Computer? Welches algorithmische Problem ist für Computer sehr komplex und so unpraktisch? (Hier ist die Rolle des Nondererminismus von entscheidender Bedeutung kann zwei Komplexitätsklassen (P und NP) unterscheiden. Was sind die Lösungen für diese unpraktischen Probleme, mit denen es vergleichsweise schneller ausgeführt werden kann. Dies ist der Nutzen des Nichtdeterminismus. Es ist ein rein theoretisches Thema, und das Konzept des Nichtdeterminismus ist intuitiv entstanden. Das Motiv des Themas 'Automatentheorie' bestand nicht darin, sich mit praktischen Computern zu befassen. Aber wenn praktisch Computer zum Einsatz kommen, können wir mithilfe der Automatentheorie praktische Computer genau definieren: Was sind die Einschränkungen heutiger Computer? Welches algorithmische Problem ist für Computer sehr komplex und so unpraktisch? (Hier ist die Rolle des Nondererminismus von entscheidender Bedeutung kann zwei Komplexitätsklassen (P und NP) unterscheiden. Was sind die Lösungen für diese unpraktischen Probleme, mit denen es vergleichsweise schneller ausgeführt werden kann. Dies ist der Nutzen des Nichtdeterminismus. Aber wenn praktisch Computer zum Einsatz kommen, können wir mithilfe der Automatentheorie praktische Computer genau definieren: Was sind die Einschränkungen heutiger Computer? Welches algorithmische Problem ist für Computer sehr komplex und so unpraktisch? (Hier ist die Rolle des Nondererminismus von entscheidender Bedeutung kann zwei Komplexitätsklassen (P und NP) unterscheiden. Was sind die Lösungen für diese unpraktischen Probleme, mit denen es vergleichsweise schneller ausgeführt werden kann. Dies ist der Nutzen des Nichtdeterminismus. Aber wenn praktisch Computer zum Einsatz kommen, können wir mithilfe der Automatentheorie praktische Computer genau definieren: Was sind die Einschränkungen heutiger Computer? Welches algorithmische Problem ist für Computer sehr komplex und so unpraktisch? kann zwei Komplexitätsklassen (P und NP) unterscheiden. Was sind die Lösungen für diese unpraktischen Probleme, mit denen es vergleichsweise schneller ausgeführt werden kann. Dies ist der Nutzen des Nichtdeterminismus. Was sind die Lösungen für diese unpraktischen Probleme, mit denen es vergleichsweise schneller ausgeführt werden kann. Dies ist der Nutzen des Nichtdeterminismus. Was sind die Lösungen für diese unpraktischen Probleme, mit denen es vergleichsweise schneller ausgeführt werden kann. Dies ist der Nutzen des Nichtdeterminismus.
Bitte korrigieren Sie mich, wenn etwas nicht stimmt.
quelle
Nichtdeterminismus ist nützlich, weil er Ihnen hilft, den Determinismus zu verstehen, aber nicht umgekehrt. Man könnte sagen, Nichtdeterminismus ist die größere Idee. Eine deterministische Drehmaschine ist ein Sonderfall einer nicht deterministischen. - Nichtdeterminismus kann uns helfen zu verstehen, warum es auf heutigen Plattformen schwierig ist, einige Probleme zu lokalisieren. Es gibt eine Reihe von Rechenproblemen, die auf einer deterministischen Computerplattform nicht effizient gelöst werden können, aber wir verstehen, dass es auf nicht deterministischen Plattformen effiziente Lösungen geben kann. ... Zustand, Kodierung, Nichtdeterminismus sind alle miteinander verknüpft http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf
In einer deterministischen Turing-Maschine schreibt das Regelwerk höchstens eine Aktion für eine bestimmte Situation vor. Im Gegensatz dazu kann eine nicht deterministische Turing-Maschine (NTM) eine Reihe von Regeln haben, die mehr als eine Aktion für eine gegebene Situation vorschreiben . http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine Wenn Sie eine Software-Box erstellen können, die Zustandsübergänge so gut verwaltet, dass sie mehr als eine Aktion verarbeiten kann, können Sie eine Leistung erzielen, die über deterministische Maschinen hinausgeht.
quelle
Der Determinismus hat eine starke Tendenz, Symmetrien zu brechen. Diese Tendenz ist für sequentiellen Determinismus noch stärker, aber die Vorstellung eines azyklisch gerichteten Graphen und einer topologischen Ordnung eines solchen Graphen erlaubt es, den Unterschied zwischen Determinismus und sequentiellem Determinismus zu ignorieren. Der Nichtdeterminismus ist eine Obermenge des Determinismus, die es ermöglicht, mehr Symmetrien beizubehalten. Wenn Sie die Lösung eines Problems entwerfen, können Sie mit der nicht deterministischen Lösung beginnen, um nützliche Symmetrien beizubehalten, und die Beschreibung der Lösung bleibt klein und kompakt. Das Aufbrechen der Symmetrien kann dann zu einem späteren Zeitpunkt während der Implementierung delegiert werden, während die nicht deterministische Lösung in eine deterministische Lösung umgewandelt wird.
Nichtdeterminismus bedeutet oft, dass der Begriff einer Teilfunktion durch den Begriff einer Beziehung ersetzt wird. In diesem Fall kann eine nicht deterministische Maschine zeitlich sowohl vorwärts als auch rückwärts laufen, während dies für eine deterministische Maschine im Allgemeinen nicht möglich ist. Wenn wir stattdessen mit Gesamtfunktionen für den Determinismus und mehrwertigen Gesamtfunktionen für den Nicht-Determinismus arbeiten, ist die Symmetrie nicht mehr so schön, aber sie kann trotzdem zum Funktionieren gebracht werden.
quelle