Warum ist Nichtdeterminismus ein nützliches Konzept?


23

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?


1
Es wäre möglicherweise hilfreich zu fragen, wer ursprünglich NTMs beschrieben hat und was ihr Zweck / Ziel zu der Zeit war.
Usul

2
Beachten Sie, dass die Tatsache, dass die Maschine deterministisch ist, nicht immer unseren Code bedeutet. Jeder, der Multitasking / Multithreading durchgeführt hat, kann bestätigen, dass die Zeiten, zu denen der Taskwechsel stattfindet, in der Praxis oft nicht vorhersehbar sind und wir explizite Interlocks entwerfen müssen, um ihr Verhalten deterministisch erscheinen zu lassen. (Grundsätzlich gibt es im Status versteckte Variablen.) Die Kommunikation wirft dasselbe Problem auf. Ich weiß ehrlich gesagt nicht, ob NDAs dabei helfen - ich bin ein Software-Ingenieur, kein Informatiker -, aber in der realen Welt ist Ihre Prämisse überoptimistisch.
Keshlam

Wenn Sie über Multithreading sprechen, haben Sie wahrscheinlich einen Nicht-Determinismus, zumindest wenn Sie Metall und Betriebssystem in Betracht ziehen, um die Maschine zu formen. Was lustig ist , dass der Code selbst ist deterministisch .
Raphael


@keshlam Ich habe deinen Punkt in meine Antwort aufgenommen, @ Tanmoy read hat meine Antwort aktualisiert.
Grijesh Chauhan

Antworten:


16

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:

(01)*01(0 + 1)*  

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 wie a.bMittel so etwas wie: .(q0)─a→(q1)─b→(q2)

Also, bei meinem ersten Versuch würde ich eine NFA zeichnen wie:

Feige

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:

  1. Die Schleife im Zustand q 0 sollte für sein(01)*
  2. 01(nach (01)*) gibt(q0)─0→(q1)─1→(q2)
  3. (0 + 1)* gibt eine Selbstschleife im Zustand q 2 für das Label 0, 1

Nach 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:

fig-2

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 :

Beim Algorithmusdesign werden häufig nicht deterministische Algorithmen verwendet, wenn das durch den Algorithmus gelöste Problem von Natur aus mehrere Ergebnisse zulässt (oder wenn es ein einzelnes Ergebnis mit mehreren Pfaden gibt, auf denen das Ergebnis entdeckt werden kann, wobei jeder gleichermaßen vorzuziehen ist). Entscheidend ist, dass jedes Ergebnis des nicht deterministischen Algorithmus gültig ist, unabhängig davon, welche Auswahl der Algorithmus während der Ausführung trifft.

Eine große Anzahl von Problemen kann durch nichtdeterministische Algorithmen konzeptualisiert werden, einschließlich der berühmtesten ungelösten Frage in der Computertheorie, P vs NP.

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


@Grijest: Vielen Dank für diese enorme Ausarbeitung. Nur eine Verwirrung: "Gegensätzlich deterministische Modelle stellen effizientere, minimierte und weniger redundante Lösungen dar." - Ich denke jedoch, dass deterministische Modelle weniger effizient sind als nicht deterministische sind komplexer als P. Ist es nicht?)
Tanmoy

@tan Tatsächlich ist es falsch, das Wort "effizient" zu verwenden. Und ja, Sie haben Recht, dass nicht deterministische Modelle leistungsfähiger sind als deterministische. Die von deterministischen Modellen abgedeckte Klasse von Problemen ist eine Teilmenge des nicht deterministischen Modells.
Grijesh Chauhan

also in welchem ​​kontext sind deterministische modelle "effizient" als nicht deterministische (wie du erwähnt hast)?
Tanmoy

@tan Angenommen, Sie möchten eine weitere Operation ausführen (z. B. FA in RE konvertieren oder den Beweis für das Pumpen von Lemma oder ein anderes Modell erläutern), dann erhalten Sie mit dem deterministischen Modell bessere Ergebnisse (also sagte ich effizient).
Grijesh Chauhan

@tan Verstehst du mehrdeutige Grammatiken?
Grijesh Chauhan

9

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.


Ich denke, der erste Teil Ihrer Antwort ist sachlich falsch. Warum sind Ihrer Meinung nach zuerst Automaten entstanden? Sowohl DFAs als auch NFAs wurden 10+ Jahre nach Turing definierten TMs definiert. Siehe die Diskussion über cstheory
Artem Kaznatcheev

@ArtemKaznatcheev, das Modell der Turing-Maschine ist ein Automat und liegt mit Sicherheit mindestens ein Jahrzehnt vor dem Computer.
Vonbrand

Ja, aber wenn Leute Automaten sagen, meinen sie nicht TM, sondern Automaten mit endlichen Zuständen und ihre direkten Erweiterungen (PDAs, NPDAs usw.). Schauen Sie sich die Frage an, die ich für eine Geschichte verlinkt habe, und Sie werden sehen, dass sowohl TMs als auch die von Neumann-Architektur unabhängig von dem entwickelt wurden, was wir jetzt Automatentheorie nennen.
Artem Kaznatcheev

4
@ArtemKaznatcheev, DFA / NFA, PDA, LBA, TM sind alle Automaten. Ebenso Wandler (FA mit Ausgang, PDA mit Ausgang).
Vonbrand

1
Der letzte Absatz ist falsch. Prolog ist älter als GCL, und es gibt es noch immer und es ist einigermaßen Mainstream. Prolog wurde natürlich nicht in einem luftleeren Raum entworfen, sondern baute auf früheren nicht deterministischen Programmiersprachen wie PLANNER auf. Der Kredit geht wahrscheinlich an Golomb und Baumert "Backtrack Programming" von 1965.
Pseudonym

7

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.)


Verstehen Sie Ihre Antwort, konnten Sie sie aber nicht richtig verstehen. Könnten Sie bitte erläutern, wie einfach die Konstruktion von Powersets mit Nichtdeterminismus durchgeführt werden kann?
Tanmoy

"Nichtdeterminismus ist auch wichtig für die Komplexität der Berechnung, wo er zur Definition der Klasse NP verwendet wird." - Das unterstützt die Bedeutung des Nichtdeterminismus nur, wenn wir davon ausgehen, dass NP ein nützliches Konzept ist, und nur, wenn Nichtdeterminismus nützlich ist.
Raphael

@Raphael NP-Vollständigkeit ist ein wichtiges Konzept, unabhängig von Ihrer Haltung zum Nichtdeterminismus.
Yuval Filmus

2
@Tanmoy Wenn Sie keinen Determinismus haben, brauchen Sie keine Powerset-Konstruktion, aber leider sind echte Computer deterministisch. Dennoch ist es möglicherweise einfacher, eine NFA direkt zu simulieren, als sie zuerst in eine DFA zu konvertieren. Weitere Informationen finden Sie in der Antwort, auf die ich verweise.
Yuval Filmus

4

Sie geben richtig an, dass Automaten Modelle sind, sodass es zwei Verwendungsbereiche gibt, die der Nichtdeterminismus haben kann:

  1. 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.

  2. Verwendung in der Theorie.

    Die Verwendung von Nichtdeterminismus kann Beweise vereinfachen, siehe z. B. Konvertieren regulärer Ausdrücke in endliche Automaten.


4

(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.


2

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.


Kontextfrei versus deterministisch kontextfrei?
Alt

@alto Was ist damit?
Babou

@babou Ich wollte darauf hinweisen, dass "Nichtdeterminismus nichts Mächtigeres ist als Determinismus", eine falsche Aussage ist. NPDAs sind leistungsfähiger als PDAs.
Alt

1
@alto: nein, du missverstehst die aussage. Aus Sicht der Rechenfähigkeit sind sie völlig gleichwertig, da die Klasse der Probleme (oder Sprachen, wenn Sie es vorziehen), die Sie UNABHÄNGIG davon lösen können, wie viel Rechenressourcen erforderlich sind, gleich ist. Und tatsächlich KÖNNEN Sie eine nicht deterministische Maschine mit einer deterministischen Maschine simulieren. Auch hier spielen Zeit und Platz im Kontext der Berechenbarkeit keine Rolle.
Massimo Cafaro

1
@ MassimoCafaro Konnte theoretisch nicht mehr zustimmen. In der Praxis scheint es mir lieber, über Semantik zu streiten.
Alt

2

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 :

Die aufregende Geschichte, wie endliche Automaten zu einem Zweig der Informatik wurden, verdeutlicht das breite Anwendungsspektrum. Die ersten Menschen, die sich mit dem Konzept einer endlichen Maschine befassten, waren ein Team von Biologen, Psychologen, Mathematikern, Ingenieuren und einigen der ersten Informatiker. Sie alle hatten ein gemeinsames Interesse: den menschlichen Denkprozess zu modellieren, sei es im Gehirn oder in einem Computer. Warren McCulloch und Walter Pitts, zwei Neurophysiologen, waren die ersten, die 1943 eine Beschreibung endlicher Automaten vorstellten. Ihr Aufsatz mit dem Titel "Ein logischer Kalkül, der immanent ist für nervöse Aktivitäten" lieferte wichtige Beiträge zur Erforschung der Theorie neuronaler Netze, Theorie von Automaten, die Theorie der Berechnung und der Kybernetik. Später haben zwei Informatiker, GH Mealy und EF Moore, verallgemeinerte die Theorie auf viel leistungsstärkere Maschinen in separaten Papieren, die in den Jahren 1955-56 veröffentlicht wurden. Die Zustandsmaschinen, die Mealy-Maschine und die Moore-Maschine, werden in Anerkennung ihrer Arbeit benannt.

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.


3
Hey, ich habe dein Profil gesehen und es sieht so aus, als hätte jemand absichtlich deine Antworten herabgestimmt (an jeder Stelle, an der du nur zwei Abwertungen hast) ... Diese Antwort ist nicht falsch , die Antwort fügt nützliche Informationen hinzu. +1
Grijesh Chauhan

0

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.


Es ist falsch zu sagen, dass eine nicht deterministische Maschine eine Maschine ist, die immer dem Ausführungspfad folgt, der zur Akzeptanz der Zeichenkette führt . Das macht es nicht! Eine nicht deterministische Maschine ist eine Maschine, deren Betrieb es erlaubt, bestimmte nicht vorab bestimmte (= nicht deterministische) Entscheidungen während der Ausführung zu treffen. Es gibt nichts Unrealistisches an solchen Maschinen, dh sie können die Umgebung bitten, diese Auswahl zu treffen. Diese Maschinen werden dann auf Aufgaben angewendet, für die bestimmte Auswahlmöglichkeiten einen akzeptierenden Zustand erzeugen.
reinierpost

@reinierpost: Sie sagen also, dass es im wirklichen Leben nicht deterministische Maschinen gibt.
Tanmoy

Ja. Hier ein Beispiel: Angenommen, Sie fahren ein Auto und treffen keine Entscheidungen über die zu befolgende Route. Beispielsweise können Sie ziellos herumfahren oder Ihre Anweisungen von einem menschlichen Navigator oder einem Navigationsgerät übernehmen. Das Auto und Sie sind ein nicht deterministisches System, um Orte zu fahren. Sie bewegen sich durch den Verkehr und treffen immer wieder auf Entscheidungen, welche Richtung Sie einschlagen möchten. Für Sie und das Auto sind diese Entscheidungen nicht deterministisch: Sie entscheiden nicht, in welche Richtung Sie gehen, aber wenn Sie diese Entscheidung treffen, werden Sie sie befolgen.
reinierpost

@reinierpost: Gibt es einen nicht deterministischen Computer? Meine Antwort ist nein. denn wenn es existiert, dann hätten NP-Probleme eine polynomielle Zeitkomplexität. ist es nicht?
Tanmoy

Ob Computer deterministisch oder nicht deterministisch sind, hängt davon ab, wie Sie sie betrachten. Wenn ein Computer anhält und darauf wartet, dass der Benutzer etwas unternimmt, und seine nächsten Aktionen davon abhängen, was der Benutzer tut, können Sie sagen, dass dies eine nicht deterministische Wahl ist. Nein, das bedeutet nicht, dass P = NP ist.
reinierpost

0

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.


Ich bin mir nicht sicher, ob die angeblichen Links zur Realität überhaupt hilfreich sind. Es ist ziemlich klar, dass wir (zumindest heute) keine nicht deterministische Maschine bauen können, es ist also ein rein theoretisches Konstrukt.
Raphael

Wir können eine nicht deterministische Maschine bauen, indem wir die nicht deterministischen Entscheidungen von etwas außerhalb der Maschine treffen lassen.
Reinierpost

@ reinierpost, was noch wichtiger ist, wir können nicht deterministische Maschinen als deterministische Maschinen aufbauen, ohne exponentiellen Overhead zu verursachen. siehe Savitch's Theorem. en.wikipedia.org/wiki/Savitch's_theorem
Tom

@ Raphael, einige Verweise auf die reale Welt sind wichtig. Warum funktioniert das Cachen? Weil Ereignisse in der realen Welt, die letztendlich die Quelle aller Daten ist, einer normalen Verteilung folgen. siehe Zeitliche Lokalität: durablescope.blogspot.co.at/2009/11/…
Tom

@ reinierpost, und dass etwas Äußeres ist, was Turing als Orakelmaschine bezeichnet. Ich denke, Sie können sich vorstellen, ob dies Daten sind, die aus dem Cache kommen oder so etwas wie ein Multi-Tape-Computer oder sogar der Zugriff auf den Arbeitsspeicher.
Tom

0

Warum ist Nichtdeterminismus ein nützliches Konzept?

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.


Können Sie ein konkretes Beispiel nennen? Es fällt mir schwer zu verstehen, was Sie hier unter "Symmetrie" verstehen.
Raphael

@Raphael Wie wäre es mit dem Umkehren von (01) * 01 (0 + 1) * zu (0 + 1) * 10 (10) *, sodass die umgekehrte Eingabezeichenfolge erkannt wird, und wenden Sie diese Symmetrie auf die nicht deterministische Maschine an, indem Sie alle umkehren Pfeil und Tausch von Start- und Endzustand? Ich bin mir nicht sicher, ob es wesentlich interessantere Beispiele für Finite-State-Maschinen gibt, aber ich könnte versuchen, stattdessen ein interessantes Beispiel für einen PDA zu finden.
Thomas Klimpel

Über meine Antwort auf eine ähnliche Frage schrieb ich in einem Blogbeitrag über die Reversibilität von binären Beziehungen, substochastischen Matrizen und Teilfunktionen .
Thomas Klimpel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.