Was ist der Unterschied zwischen Nichtdeterminismus und Zufälligkeit?
38
Ich habe kürzlich folgendes gehört:
"Eine nicht deterministische Maschine ist nicht dasselbe wie eine probabilistische Maschine. In groben Zügen ist eine nicht deterministische Maschine eine probabilistische Maschine, in der Wahrscheinlichkeiten für Übergänge nicht bekannt sind."
Ich habe das Gefühl, dass ich verstanden habe, aber das tue ich wirklich nicht. Könnte mir das jemand erklären (im Zusammenhang mit Maschinen oder allgemein)?
Edit 1:
Nur um zu verdeutlichen, das Zitat stand im Zusammenhang mit dem endlichen Automaten, aber die Frage ist auch für Turing-Maschinen von Bedeutung, wie andere geantwortet haben.
Außerdem höre ich Leute sagen: "... dann wähle ich nicht deterministisch Objekt x aus der Menge". Früher dachte ich, sie meinen "zufällig". Daher die Verwirrung.
In der Informatik wird gelegentlich der Begriff "deterministisch" verwendet, um hervorzuheben, dass ein Algorithmus nicht randomisiert ist. Daher die Verwirrung: Deterministisch bedeutet nicht randomisiert, aber nicht deterministisch bedeutet nicht randomisiert.
Es ist wichtig zu verstehen, dass Informatiker den Begriff "nicht deterministisch" anders verwenden als in anderen Wissenschaften. Ein nicht deterministisches TM ist tatsächlich deterministisch im Sinne der Physik - das heißt, ein NTM liefert bei einer bestimmten Eingabe immer die gleiche Antwort: Es akzeptiert immer oder lehnt immer ab. Ein probabilistisches TM akzeptiert oder lehnt eine Eingabe mit einer bestimmten Wahrscheinlichkeit ab, sodass sie bei einem Durchlauf akzeptiert und bei einem anderen abgelehnt werden kann.
Ausführlicher: Bei jedem Schritt der von einem NTM durchgeführten Berechnung können anstelle einer einzelnen Übergangsregel mehrere Regeln aufgerufen werden. Um festzustellen, ob der NTM akzeptiert oder ablehnt, sehen Sie sich alle möglichen Zweige der Berechnung an. (Wenn also zum Beispiel bei jedem Schritt genau zwei Übergänge zur Auswahl stehen und jeder Berechnungszweig insgesamt N Schritte aufweist, müssen Gesamtwerte berücksichtigt werden.) Für ein Standard-NTM wird eine Eingabe akzeptiert Wenn einer der Berechnungszweige akzeptiert.2N
Dieser letzte Teil der Definition kann geändert werden, um andere verwandte Typen von Turing-Maschinen zu erhalten. Wenn Sie an Problemen interessiert sind, die eine eindeutige Lösung haben, können Sie das TM akzeptieren lassen, wenn genau ein Zweig dies akzeptiert. Wenn Sie am Mehrheitsverhalten interessiert sind, können Sie festlegen, dass das TM akzeptiert wird, wenn mehr als die Hälfte der Zweige akzeptiert wird. Und wenn Sie zufällig (gemäß einer Wahrscheinlichkeitsverteilung) einen der möglichen Zweige auswählen und auf der Grundlage dessen, was dieser Zweig tut, akzeptieren oder ablehnen, haben Sie ein probabilistisches TM.
Kurt, kannst du bitte erklären, wie die 2 ^ N-Zahl entstanden ist? Wenn es für jeden Zweig 2 Möglichkeiten gibt und es N solche Stufen gibt, um zur Lösung zu gelangen, würde das nicht 2 ^ (N + 1) -1 ergeben. Ich versuche, es wie ein Diagramm zu sehen, und ich könnte mich irren. Könnten Sie bitte erläutern, wie Sie zu der 2 ^ N-Nummer gekommen sind? Vielen Dank.
Nun, wenn Sie die Berechnung als Baum darstellen, wobei die Wurzel die Anfangskonfiguration als Schritt 0 darstellt, dann haben Sie nach N Schritten 2 ^ N Blätter, und was ich einen Zweig nenne, ist ein Pfad von der Wurzel zu ein Blatt. Es stimmt, dass Sie 2 ^ (N + 1) -1 Gesamtknoten haben, die alle möglichen Konfigurationen zu einem bestimmten Zeitpunkt der Berechnung darstellen. Ich hoffe, meine Terminologie ist in Ordnung!
Alle Wissenschaften verwenden dieselbe Definition des Nichtdeterminismus, die auf dem Konzept der unbegrenzten Entropie beruht. Unvorhersehbare Ergebnisse in allen Wissenschaften sind auf die Unfähigkeit zurückzuführen, alle möglichen Ausgaben eines Algorithmus (oder Systems) a priori aufzulisten, da er unbegrenzte Zustände, dh NP-Komplexitätsklassen, akzeptiert. Das Angeben einer bestimmten Eingabe, um zu beobachten, ob sie anhält, und das Feststellen, dass das Ergebnis idempotent ist, entspricht in anderen Wissenschaften dem Konstanthalten der restlichen Entropie des Universums, während derselbe Zustandswechsel wiederholt wird. Computing ermöglicht diese Entropieisolation, während dies in den Naturwissenschaften nicht der Fall ist.
@ David Richby Entschuldigung David. Gehen Sie zu dem anderen Thread und sehen Sie, dass ich Sie mit Nachdruck widerlegt habe. Sie können versuchen, die Logik, die ich dort vorgestellt habe, zu widerlegen. Nur ohne Beweise und Erklärung zu behaupten, bringt Ihnen keine Wahrheit.
Im Kontext von Turing Machines bedeutet "nicht deterministisch" wirklich "parallel". Ein randomisierter Algorithmus kann die Zweige des Berechnungsbaums einer nicht deterministischen Turing-Maschine nach dem Zufallsprinzip untersuchen, eine nicht deterministische Turing-Maschine kann sie jedoch gleichzeitig untersuchen, was ihr ihre Kraft verleiht.
In anderen Kontexten (ich kann nicht aus Ihrem Zitat sagen, ob Sie über Turing Machines sprechen) könnte ein zufälliger Algorithmus absichtlich Zufälligkeit verwenden, während ein Algorithmus, den Sie deterministisch sein wollten, aufgrund eines Fehlers möglicherweise Nichtdeterminismus aufweist ...
Wenn Leute als Reaktion auf Ihre Bearbeitung sagen, dass sie ein Element aus einer Menge nicht deterministisch auswählen, meinen sie möglicherweise nur zufällig. Es ist jedoch auch möglich, dass sie "das rechte Element magisch aus der Menge auswählen" bedeuten. Eine übliche Art, nicht deterministische Turing-Maschinen zu betrachten, besteht darin, dass sie eine Lösung zunächst auf magische Weise "erraten" und dann ihre Richtigkeit überprüfen. Natürlich können Sie diese magische Vermutung nur als Ergebnis der parallelen Überprüfung aller Möglichkeiten ansehen.
Bezogen auf "das richtige Element magisch auswählen ": Wenn das Wort "Nichtdeterminismus" in diesem Sinne verwendet wird, wird es manchmal mit "engelhaft" bezeichnet. Es gibt auch "dämonischen" Nichtdeterminismus. (Dennoch, wie Sie sagen, ist das Wesentliche, dass Sachen parallel
Es gibt verschiedene Kontexte, in denen "deterministisch", "zufällig" und "nicht deterministisch" drei verschiedene Bedeutungen haben. In Kontexten mit mehreren Teilnehmern, z. B. Sicherheit und Parallelität, ist die Intuition häufig wie folgt:
deterministisch bedeutet "ich kann wählen"
Nicht deterministisch bedeutet, dass „jemand anderes wählen kann“
zufällig bedeutet "niemand darf wählen"
Einige Beispiele:
[Nebenläufigkeit, zufällig] Betrachten Sie ein Netzwerkprotokoll wie Ethernet , bei dem mehrere Knoten jederzeit eine Nachricht senden können. Wenn zwei Knoten in sehr kurzen Abständen eine Nachricht senden, liegt eine Kollision vor: Die Nachrichten überlappen sich und sind nicht lesbar. Wenn eine Kollision auftritt, müssen beide Knoten später erneut versuchen, die Nachrichten zu senden. Stellen Sie sich vor, Sie schreiben die Spezifikation für Ethernet. Wie legen Sie die Verzögerung zwischen Wiederholungsversuchen fest? (Die Verzögerungen sollten anders sein oder es kommt wieder zu einer Kollision!)
deterministisch: Definieren Sie einen Algorithmus, den beide Knoten verwenden müssen. Dies wird für Ethernet nicht durchgeführt, da der Algorithmus, um unterschiedliche Ergebnisse zu erzielen, einen Knoten über den anderen (für einen bestimmten Nachrichteninhalt) privilegieren muss, und Ethernet dies vermeidet.
Nicht deterministisch: Lassen Sie jeden Implementierer entscheiden. Dies ist nicht gut, da die Implementierer auf beiden Knoten möglicherweise denselben Algorithmus auswählen.
zufällig: Jeder Knoten muss einen zufälligen Verzögerungswert auswählen (mit einer bestimmten Verteilung). So funktioniert das. Es gibt eine geringe Wahrscheinlichkeit, dass die beiden Knoten dieselbe Verzögerung wählen und es eine weitere Kollision gibt, aber die Erfolgswahrscheinlichkeit steigt asymptotisch gegen 1, wenn die Anzahl der Wiederholungsversuche zunimmt.
[Parallelität, nicht deterministisch] Sie schreiben einen parallelen Algorithmus. In einer bestimmten Situation kann es zu einem Deadlock kommen. Wie können Sie das Auftreten eines Deadlocks verhindern? Dies hängt davon ab, welche Art der Zeitplanung in Ihrer Umgebung für den gemeinsamen Zugriff verwendet wird.
deterministisch: Der Scheduler wechselt immer zwischen Threads an bestimmten genau definierten Punkten, z. B. nur, wenn der Code explizit ergibt. Dann sorgen Sie einfach dafür, dass die Threads in schlechten Zeiten nicht nachgeben.
random: Der Scheduler wechselt die Threads garantiert nach dem Zufallsprinzip. Dann kann eine praktikable Strategie darin bestehen, den Deadlock zu erkennen, falls er auftritt, und den Algorithmus von Anfang an neu zu starten.
Nicht deterministisch (die meisten Scheduler sind so): Sie wissen nicht, wann der Scheduler zwischen Threads wechselt. Sie müssen also wirklich den Stillstand vermeiden. Wenn Sie wie im Zufallsfall versucht haben, zu erkennen und neu zu starten, laufen Sie Gefahr, dass der Scheduler Ihre Threads immer wieder auf die gleiche Weise plant.
[Sicherheit, Zufall] Sie schreiben eine Anwendung mit einer Passwortabfrage. Wie modelliert man einen Angreifer?
deterministisch: Der Angreifer versucht immer die gleichen Passwörter. Das ist überhaupt kein nützliches Modell für einen Angreifer - Angreifer sind per Definition nicht vorhersehbar.
Nicht deterministisch: Der Angreifer kennt Ihr Passwort und gibt es ein. Dies zeigt die Beschränkung von Passwörtern: Sie müssen geheim gehalten werden. Wenn Ihr Passwort geheim ist, ist dieser Angreifer unrealistisch.
zufällig: Der Angreifer versucht es mit einem zufälligen Passwort. In diesem Fall handelt es sich um ein realistisches Modell eines Angreifers. Sie können untersuchen, wie lange es dauern würde, bis der Angreifer Ihr Kennwort erraten würde, je nachdem, welche zufällige Verteilung er verwendet. Ein gutes Passwort ist ein Passwort, das lange für eine realistische Verteilung benötigt.
[Sicherheit, nicht deterministisch] Sie schreiben eine Anwendung und befürchten, dass sie eine Sicherheitslücke aufweist. Wie modelliert man einen Angreifer?
deterministisch: Der Angreifer weiß alles, was Sie wissen. Auch dies ist kein nützliches Modell für einen Angreifer.
zufällig: Der Angreifer wirft zufälligen Müll und hofft, dass Ihr Programm abstürzt. Das kann manchmal nützlich sein ( Fuzzing ), aber der Angreifer ist vielleicht schlauer.
Nicht deterministisch: Wenn es ein Loch gibt, wird der Angreifer es schließlich finden. Sie sollten Ihre Anwendung also besser absichern (die Intelligenzanforderung für den Angreifer erhöhen; beachten Sie, dass dies eine Intelligenzanforderung ist und keine Rechenanforderung. Dies gilt als nicht deterministisch, bis die KI eintritt.) Oder besser beweisen, dass es keine gibt Sicherheitslücke und somit einen solchen Angreifer gibt es nicht.
Die Korrektur dreht sich um das fehlende Wort beweisen in Ihren Aussagen: Deterministisch ist "Ich kann beweisen, dass ich eine Wahl getroffen habe (dh das Ergebnis vollständig spezifizieren, das auf meiner Eingabe in der P-Komplexitätsklasse endet)", nicht deterministisch ist "Ich kann nicht beweisen, dass ich eine Wahl getroffen habe" (dh der Abschlussnachweis ist in der NP-Komplexitätsklasse nicht entscheidbar) “und der Zufallsnachweis lautet„ Ich kann beweisen, dass ich die Hälfte der Zeit wählen kann (dh die ZPP-Komplexitätsklasse) “.
@ShelbyMooreIII Ich verstehe nicht, wo Sie hinkommen. Beim Determinismus geht es im Allgemeinen nicht darum, zu beweisen, dass etwas tatsächlich deterministisch ist oder dass ein Problem in einer bestimmten Komplexitätsklasse liegt. Außerdem geht es in Komplexitätsklassen nicht darum, dass das System selbst etwas über seinen Determinismus beweisen kann (die meisten Probleme haben nicht einmal den Begriff, sich innerhalb des Systems zu beweisen!).
Nichtdeterminismus ist immer das Ergebnis einer unbegrenzten Entropie. Eine andere Art zu sagen ist, dass ich nicht beweisen kann, dass ich das Ergebnis wähle (weil ich nicht beweisen kann, dass meine Wahl enden wird). Alles, was ich tun kann, ist zu versuchen, was bedeutet, dass ich jede Entscheidung, die ich treffen möchte, aufzählen muss, bevor ich weiß, ob sie beendet wird. Während ich mit Determinismus beweisen kann, dass ich das Ergebnis wähle, das es beenden muss. Durch Randomisierung kann ich nachweisen, dass ich nur einen zufälligen Zeitraum auswählen kann, da ein Teil der Entropie nicht unter meiner Kontrolle liegt. Wenn ich den Betrag kenne, den ich nicht kontrollieren kann, kann ich die Statistik von genau nachweisen.
Einigermaßen ist es nicht die Komplexitätsklasse NP, die zu Nichtdeterminismus führt, sondern NP ist eine Abhängigkeit. Turing-Complete ist ein Beispiel für Nichtdeterminismus. Bitte beachten Sie meinen Kommentar unter Kurts Antwort sowie meine Antwort auf den entsprechenden Thread . Mein Punkt für Sie ist, was genau für die Begriffe deterministisch, nicht deterministisch und zufällig bewiesen und unvorhersehbar ist. Es dreht sich alles um die Entropie (und nicht um den Bass )
Angenommen, Sie müssen eine Tür auswählen, um zwischen 10000 Türen zu öffnen (sagen wir, hinter einer der Türen befindet sich ein Preis). Zufällig auswählen bedeutet, dass Sie eine der 10000 Türen auswählen und betreten. Wenn sich hinter nur einer Tür ein Preis befindet, werden Sie ihn höchstwahrscheinlich nicht finden. Eine nicht deterministische Maschine würde alle 10000 Türen gleichzeitig betreten. Wenn es irgendwo einen Preis gibt, wird die nicht deterministische Maschine ihn finden.
@RobinKothari: "Alternativ würde eine nicht deterministische Maschine nur eine Tür öffnen, aber es wäre immer die richtige" .Und "Eine nicht deterministische Maschine würde alle 10000 Türen gleichzeitig betreten"? - Welche ist richtig?
@tan: Beides sind korrekte Interpretationen. Im Gegensatz zu deterministischen und randomisierten Maschinen, die physikalisch realisierbar sind, ist eine nicht deterministische Maschine ein imaginäres Objekt. So können Sie es sich vorstellen, wie Sie möchten, der Punkt ist, dass es immer die richtige Tür findet. Vielleicht ist es der beste Ratgeber, vielleicht hat jemand der Maschine heimlich gesagt, wo der Preis war, vielleicht überprüft sie einfach alle Türen auf magische Weise usw.
Definition einer nicht deterministischen Turing-Maschine : Eine Turing-Maschine, die für einige Kombinationen von Inhalten der aktuellen Zelle und des aktuellen Zustands mehr als einen nächsten Zustand aufweist. Eine Eingabe wird akzeptiert, wenn ein Bewegungsablauf zur Annahme führt.
Definition der probabilistischen Turing-Maschine :
Eine nicht deterministische Turing-Maschine (TM), die an jedem Punkt zufällig nach einer Wahrscheinlichkeitsverteilung zwischen verfügbaren Übergängen wählt.
Probabilistische Turingmaschine ist eine nicht deterministische Turingmaschine, die Fehler machen kann.
Eine probabilistische Turingmaschine gibt es nicht! Es gibt nur deterministische Maschinen (in jedem Schritt ein einzelner möglicher Folgezustand) und nicht deterministische Maschinen (in jedem Schritt eine konstante Anzahl möglicher Folgezustände).
Der Nichtdeterminismus funktioniert wie folgt: Betrachten Sie eine nichtdeterministische Maschine, die bei jeder Eingabe anhält (möglich, wenn das Problem entscheidbar ist), bei der jede mögliche Berechnung die gleiche Anzahl von Schritten verwendet und bei der jeder Schritt genau 2 mögliche Folgezustände aufweist ( beides keine wirkliche einschränkung). Wie in der Definition von NP akzeptiert eine nicht deterministische Maschine eine Eingabe, wenn mindestens eine mögliche akzeptierende Berechnung vorhanden ist, und lehnt die Eingabe ab, wenn alle Berechnungen ablehnen.
Die Zufälligkeit kommt wie folgt ins Spiel: Sie können einen einzelnen Berechnungspfad von einer solchen nicht deterministischen Maschine wie oben angegeben gleichmäßig zufällig auswählen. Sie akzeptieren genau dann, wenn dieser zufällig gewählte Berechnungspfad akzeptiert wird. Dieser randomisierte Ansatz "löst" Ihr Problem, wenn diese Antwort mit überwältigender Wahrscheinlichkeit richtig ist.
Der Unterschied zwischen Nichtdeterminismus und Zufälligkeit besteht also darin, ob Sie nach der bloßen Existenz einer richtigen Ja-Antwort (und zuverlässigen Nein-Antworten) suchen oder ob Sie daran interessiert sind, Ihr Problem "die meiste Zeit" zu lösen .
-1 Fehler in Ihrem ersten Absatz. Es gibt probabilistische Turing-Maschinen, die einen Münzwurf aus der externen Entropie der ZPP-Komplexitätsklasse abtasten. Der Nichtdeterminismus hat eine unbegrenzte und nicht endliche Anzahl alternativer Zustände, die der NP-Komplexitätsklasse entsprechen. Determinismus ist die P-Komplexitätsklasse, und Sie haben das richtig verstanden.
Ich glaube, Sie haben meine Antwort falsch verstanden. Ich behaupte, Sie brauchen keine andere Maschine (mit Münzwurf oder anderen Fähigkeiten) als eine "normale" nicht deterministische TM, um probabilistische Komplexitätsklassen zu definieren. Sie können genauso gut ein NTM verwenden und eine andere Definition der Akzeptanz verwenden, nämlich eine Definition, bei der "die meisten Rechenpfade die Eingabe akzeptieren", im Gegensatz zu "es gibt mindestens einen einzigen Akzeptanzpfad für die Eingabe".
Um es einfach zu halten: Eine nicht deterministische Maschine kann das Ergebnis jedes Münzwurfs optimal auswählen (wenn Sie die Analogie mit einer probabilistischen Maschine mögen). Sie können sich auch vorstellen, dass die Berechnung für jedes Ergebnis des Münzwurfs parallel ausgeführt wird.
Rückschritt beim Debuggen als Motivation für Nichtdeterminismus
Der Begriff einer nicht-deterministischen Maschine bietet sich an, wenn Sie während des Debuggens (in der Zeit) einen Rückschritt durch ein Programm machen möchten. In einem typischen Computer ändert jeder Schritt nur eine begrenzte Menge an Speicher. Wenn Sie diese Informationen immer für die vorherigen 10000 Schritte speichern, können Sie im Programm problemlos vorwärts und rückwärts springen, und diese Möglichkeit ist nicht auf Spielzeugprogramme beschränkt. Wenn Sie versuchen, die Asymmetrie zwischen Vorwärts- und Rückwärtsschritten zu beseitigen, erhalten Sie den Begriff einer nicht deterministischen Maschine.
Ähnlichkeiten und Unterschiede zwischen Nichtdeterminismus und Zufälligkeit
Während probabilistische Maschinen einige Merkmale mit nicht deterministischen Maschinen teilen, wird diese Symmetrie zwischen Vorwärts- und Rückwärtsschritten nicht geteilt. Um dies zu sehen, modellieren wir die Schritte oder Übergänge einer deterministischen Maschine durch (vollständige oder teilweise) Funktionen, die Übergänge einer nicht deterministischen Maschine durch (endliche) Beziehungen und die Übergänge einer probabilistischen Maschine durch (sub) stochastische Matrizen . Zum Beispiel sind hier entsprechende Definitionen für endliche Automaten
Q
Σ
δ:Q×Σ→Q
Δ:Q×Σ→P(Q)
Δ⊂Q×Σ×Q
Δ:Σ→P(Q×Q)
δ:Σ→ssM(Q)
P(Q)QssM(Q)Q
Es gibt viele verschiedene angemessene Annahmebedingungen
Die Übergänge sind nur ein Teil einer Maschine, Anfangs- und Endzustände, mögliche Ausgabe- und Abnahmebedingungen sind ebenfalls wichtig. Es gibt jedoch nur sehr wenige nicht äquivalente Annahmebedingungen für deterministische Maschinen, eine Reihe angemessener Annahmebedingungen für nicht deterministische Maschinen (NP, coNP, #P, ...) und viele mögliche Annahmebedingungen für probabilistische Maschinen. Daher konzentriert sich diese Antwort in erster Linie auf die Übergänge.
Die Reversibilität ist für Wahrscheinlichkeitsmaschinen nicht trivial
PPTP≠PPBAkABk
Die Reversibilität ist selbst für nicht deterministische Maschinen schwierig
PPTP≠PR∘Rop∘R≠RRRR∘Rop∘R=RRop∘R∘Rop=RopPQP∘Q
Diese Überlegungen sind auch für Pushdown-Automaten sinnvoll
Dieser Beitrag legt nahe, dass eine Motivation für Nichtdeterminismus darin besteht, diese Asymmetrie zwischen Vorwärts- und Rückwärtsschritten zu beseitigen. Ist diese Symmetrie des Nichtdeterminismus auf endliche Automaten beschränkt? Hier finden Sie entsprechende symmetrische Definitionen für Pushdown-Automaten
Q
Σ
Γ
δ:Q×Γ×(Σ∪{ϵ})→Q×Γ{0,2}δ(q,γ,ϵ)≠ϵδ(q,γ,σ)=ϵσ∈Σ
Δ:Q×Γ{0,1}×(Σ∪{ϵ})→P(Q×Γ{0,1})
Δ⊂Q×Γ{0,1}×(Σ∪{ϵ})×Q×Γ{0,1}
Δ:Σ∪{ϵ}→P(Q×Γ{0,1}×Q×Γ{0,1})
δ:Σ∪{ϵ}→ssM(Q×Γ{0,1})δ(ϵ)+δ(σ)∈ssM(Q×Γ{0,1})σ∈Σ
ϵΓ{0,2}={ϵ}∪Γ∪(Γ×Γ)Γ{0,1}={ϵ}∪ΓΓ∗
Verifizierung der Umkehrung für (nicht) fortschreitende Eingabe- und Stapeloperationen
b∈Σ⊂Σ∪{ϵ}
a|bc→a|bc→ab|c a|bc←ab|c←ab|c c|ba→c|ba→cb|a
ϵ∈Σ∪{ϵ}
a|bc→a|bc→a|bc a|bc←a|bc←a|bc cb|a→cb|a→cb|a
Hier ist ein Diagramm einer fortschreitenden Eingabeoperation, deren Umkehrung schlecht aussehen würde
a|bc→a|bc→ab|ca|bc←ab|c←ab|cc|ba→c|ba→cb|a
Für eine Stapeloperation gibt es die drei Fälle , und . Die Stapeloperation wird wie folgt in umgekehrt(s,t)∈Γ{0,1}×Γ{0,1}(s,t)=(a,ϵ)(s,t)=(ϵ,a)(s,t)=(a,b)(a,ϵ)(ϵ,a)
ab…→ab…→|b… ab…←|b…←b… b…→|b…→ab…
Die Stapeloperation wird wie folgt zu umgekehrt(a,b)(b,a)
ac…→ac…→bc… ac…←bc…←bc… bc…→bc…→ac…
Eine verallgemeinerte würde umgekehrt werden zu(ab,cde)∈Γ∗×Γ∗(cde,ab)
a b f ... ← c d e f ... ← c d e f ... c d e f ... → c d e f ... → a b f ...abf…→abf…→cdef… abf…←cdef…←cdef… cdef…→cdef…→abf…
Reversibilität für Turingmaschinen
Eine Maschine mit mehr als einem Stapel entspricht einer Turing-Maschine, und Stapelvorgänge können leicht umgekehrt werden. Die Motivation am Anfang legt auch nahe, dass das Umkehren (einer Turing-Maschine) nicht schwierig sein sollte. Eine Turingmaschine mit einem typischen Befehlssatz eignet sich nicht so gut zum Umkehren, da das Symbol unter dem Kopf beeinflussen kann, ob sich das Band nach links oder rechts bewegt. Wenn der Befehlssatz jedoch entsprechend geändert wird (ohne die Rechenleistung der Maschine zu verringern), ist die Umkehrung wieder nahezu trivial.
Eine Umkehrung kann auch ohne Änderung des Befehlssatzes erstellt werden, ist jedoch nicht kanonisch und ein bisschen hässlich. Es mag den Anschein haben, dass die Existenz einer Umkehrung genauso schwierig zu entscheiden ist wie viele andere Fragen, die sich auf Turing-Maschinen beziehen. Eine Umkehrung ist jedoch eine lokale Konstruktion, und die schwierigen Fragen haben oft einen globalen Charakter, weshalb Pessimismus hier wahrscheinlich ungerechtfertigt wäre.
Der Drang, zu äquivalenten Anweisungssätzen zu wechseln (einfacher umzukehren), zeigt, dass diese Fragen weniger offensichtlich sind, als sie zuerst erscheinen. Ein subtilerer Wechsel geschah in diesem Beitrag zuvor, als Gesamtfunktionen und stochastische Matrizen durch Teilfunktionen und substochastische Matrizen ersetzt wurden. Dieser Schalter ist nicht unbedingt erforderlich, aber die Umkehrung ist ansonsten hässlich. Der Wechsel zu den substochastischen Matrizen war tatsächlich der Punkt, an dem sich herausstellte, dass Reversibilität doch nicht so trivial ist und dass man Details (wie oben beschrieben) aufschreiben sollte, anstatt nur eine übergeordnete Perspektive einzunehmen (wie in der Begründung unter dargestellt) der Anfang). Die von Niel de Beaudrap aufgeworfenen Fragen trugen auch zur Erkenntnis bei, dass die Perspektive auf hoher Ebene leicht wackelig ist.
Fazit
Nicht deterministische Maschinen erlauben eine endliche Anzahl deterministischer Übergänge bei jedem Schritt. Für probabilistische Maschinen haben diese Übergänge zusätzlich eine Wahrscheinlichkeit. Dieser Beitrag vermittelt eine andere Perspektive auf Nichtdeterminismus und Zufälligkeit. Ignoriert man die globalen Akzeptanzbedingungen, konzentriert man sich stattdessen auf die lokale Reversibilität (als lokale Symmetrie). Da die Zufälligkeit einige lokale Symmetrien beibehält, die nicht durch den Determinismus erhalten bleiben, zeigt diese Perspektive nicht-triviale Unterschiede zwischen nicht-deterministischen und probabilistischen Maschinen.
Gehen Sie davon aus, dass nicht deterministische Übergänge Eins-zu-Viele-Beziehungen sind? Was ist, wenn unter anderem zwei verschiedene Konfigurationen zu einer gemeinsamen Konfiguration übergehen können? - Es scheint mir, dass der Unterschied zwischen Zufälligkeit und Nichtdeterminismus nicht Umkehrbarkeit ist (und auch nicht ohne weitere Einschränkung), sondern vielmehr, wie man Zweigen nach dem Ergebnis Bedeutung zuschreibt: vollkommen demokratisch für Zufälligkeit oder vorzugsweise empfindlich für "Ja" oder "nein" antwortet auf Nichtdeterminismus.
@NieldeBeaudrap Ich gehe davon aus, dass nicht deterministische Übergänge "willkürliche" Beziehungen sind (eine für jedes Symbol aus dem Eingabealphabet). Ich kann sie umkehren, Start- und Endzustand tauschen und wieder eine nicht deterministische endliche Zustandsmaschine erhalten, die die umgekehrte Eingabezeichenfolge akzeptiert. Das nenne ich "Maschine rechtzeitig rückwärts laufen lassen". (Die Maschine akzeptiert, dass es im nicht deterministischen Fall mindestens einen Pfad vom Start- bis zum Endzustand gibt, und diese Bedingung ändert sich beim Umkehren der Zeit nicht.) Bitte versuchen Sie, sich selbst davon zu überzeugen, dass dies zumindest für eine endliche Zustandsmaschine funktioniert .
Sie beziehen sich also auf das Doppel der Maschine. Für NFAs scheint dies ein sinnvoller Begriff der Reversibilität zu sein. Es ist auch klar, dass das Dual eines NTM (mit einem einzelnen Akzeptanzstatus) ein anderes NTM ist, aber ich würde zögern zu sagen, dass es sich um denselben Computer handelt, der in umgekehrter Reihenfolge ausgeführt wird. Beträgt Ihre Antwort nur "Nichtdeterminismus ermöglicht es Ihnen, einen Abschluss unter dualen, zufälligen (und deterministischen) Maschinen zu erzielen, nicht"?
@NieldeBeaudrap Meine Idee ist sicherlich, in der Zeit rückwärts zu laufen, aber ich weiß, dass dies nicht perfekt erfüllt ist (weil die Bedingungen für eine verallgemeinerte Inverse einer inversen Halbgruppe nicht erfüllt sind). Aber ich habe versucht zu vermitteln, dass zufällige (und deterministische) Maschinen diese Art der Umkehrung nicht immer zulassen.
Im Kontext von Turing Machines ( TMs ) und der Automatentheorie ist eine nicht deterministische Maschine eine Maschine, in der jede Instanziierung der Maschine, die akzeptiert, in Ordnung ist. In diesem Sinne ist es so , als würden Sie mehrere deterministische Maschinen parallel ausführen und die Ausgabe aller Instanzen übernehmen, die die Eingabe akzeptieren . Tatsächlich gibt es einen (deterministischen) Algorithmus, um jeden nicht deterministischen Automaten (mit Zuständen) in einen äquivalenten deterministischen Automaten (mit ) umzuwandeln2 nn2n Zustände, exponentiell) durch Berücksichtigung von Äquivalenzklassen von Zuständen, unabhängig davon, ob der in der Maschine implementierte Algorithmus eine Randomisierung oder Wahrscheinlichkeiten beinhaltet (siehe unten).
Wenn der in der Maschine implementierte Algorithmus jedoch eine Randomisierung oder Wahrscheinlichkeiten enthält (die dem Algorithmus eigen sind), handelt es sich um eine randomisierte (oder probabilistische) Maschine.
Im Allgemeinen ist es immer möglich, Nicht-Determinismus aus einer Maschine zu entfernen und ein deterministisches Äquivalent zu konstruieren (siehe Algorithmus oben), aber dasselbe kann (im Allgemeinen) nicht getan werden, um die Randomisierung zu entfernen (im Kontext des oben Gesagten), weil es so ist dem implementierten Algorithmus innewohnend .
Man beachte, dass im Lichte des Vorstehenden sowohl eine deterministische Maschine als auch eine nicht deterministische Maschine probabilistisch sein können, wenn der (beteiligte) Algorithmus auf diese Weise Randomisierung (oder Wahrscheinlichkeiten) verwendet.
Zusammenfassend bezieht sich Nichtdeterminismus in Automaten (in diesem Zusammenhang) auf Klassen ähnlicher Automaten, während sich Randomisierungs- oder Wahrscheinlichkeitsmaschinen auf die (intrinsische Anwendung der Randomisierung in den) tatsächlichen Algorithmen beziehen, die von diesen Automaten implementiert werden.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.