Randomisierte Algorithmen (Polynomialzeit, Boolesches Ergebnis) gehören zur RP-Komplexitätsklasse. Hierbei handelt es sich um eine Teilmenge von NP, in der sich nicht deterministische Algorithmen (Polynomialzeit, Boolesches Ergebnis) und eine Obermenge von P, in der deterministische Algorithmen (Polynomialzeit, Boolesches Ergebnis) befinden. Algorithmen sind vorhanden.
Bei der Teilmengenkomplexität geht es darum , Probleme in einer Menge auf eine andere Menge zu reduzieren . Somit schließt RP ⊆ NP die Möglichkeit von randomisierten Algorithmen aus, die ebenfalls nicht deterministisch sind, da definitiv eine Obermenge die Untermenge enthält. Untermenge bedeutet, dass jeder RP-Algorithmus (oder ein beliebiger RP-vollständiger Algorithmus) auf einen NP-Algorithmus (oder einen beliebigen NP-vollständigen Algorithmus) reduziert werden kann. P ist eine Teilmenge von RP, da jedes Problem in P auf ein Problem in RP reduziert werden kann, bei dem der Betrag der unkontrollierten Entropie 0 ist.
Tangential ist dies analog dazu, wie jedes Problem in NC (parallele Berechnung) durch Simulieren der parallelen Berechnung in einer Reduktion auf ein serielles Problem in P auf ein Problem in P reduziert werden kann, aber es ist noch nicht bewiesen, dass das Gegenteil zutrifft, d. H dass jedes Problem in P auf ein Problem in NC reduzierbar ist oder sich als nicht wahr erwiesen hat, dh der unplausible Beweis, dass ein P-vollständiges Problem nicht auf ein Problem in NC reduzierbar ist. Es ist möglich, dass es Probleme gibt, die von Natur aus seriell sind und nicht parallel berechnet werden können, aber den Beweis zu erbringen, dass P ≠ NC nicht plausibel ist (aus Gründen, die in dieser Antwort nicht erörtert werden können).
Allgemeiner (dh nicht beschränkt auf boolesche Ergebnistypen) unterscheiden sich randomisierte Algorithmen von deterministischen Algorithmen darin, dass ein Teil der Entropie von außen stammt . Randomisierte Algorithmen unterscheiden sich von nicht deterministischen Algorithmen, da die Entropie begrenzt ist und somit bewiesen werden kann, dass randomisierte (und nicht deterministische) Algorithmen immer enden.
Die Unvorhersehbarkeit von nichtdeterministischen Algorithmen ist wegen Unfähigkeit, aufzuzählen , alle möglichen Permutationen der Eingangs Entropie (die Ergebnisse in Unvorhersehbarkeit der Terminierung). Die Unvorhersehbarkeit eines randomisierten Algorithmus ist auf die Unfähigkeit zur Steuerung zurückzuführendie gesamte Eingabe-Entropie (was zu einer Unvorhersehbarkeit eines unbestimmten Ergebnisses führt, obwohl die Rate der Unvorhersehbarkeit vorhergesagt werden kann). Keines davon sind Aussagen über die Unvorhersehbarkeit der richtigen Antwort auf das Problem, sondern die Unvorhersehbarkeit manifestiert sich im Seitenkanal der Beendigung bzw. im unbestimmten Ergebnis. Es scheint, dass viele Leser Unvorhersehbarkeit in einem Bereich mit Unvorhersehbarkeit des korrekten Ergebnisses in Konflikt bringen, was eine von mir nie geschriebene Konfluenz ist (siehe Editierverlauf).
Es ist wichtig zu verstehen, dass Nichtdeterminismus immer (in jeder Wissenschaft oder Verwendung des Begriffs) die Unfähigkeit ist, universelle (dh unbegrenzte) Entropie aufzuzählen. Während sich Randomisierung auf den Zugriff auf eine andere Entropiequelle bezieht (in Programmen, deren Entropie nicht von den Eingabevariablen gesteuert wird), die möglicherweise unbegrenzt ist oder nicht.
Ich habe den folgenden Kommentar unter der derzeit beliebtesten Antwort auf den anderen Thread hinzugefügt, der eine ähnliche Frage stellt.
Alle Wissenschaften verwenden dieselbe Definition des Nichtdeterminismus, die sich auf den Begriff der unbegrenzten Entropie bezieht. 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 des Rests der Entropie des Universums, während derselbe Zustandswechsel wiederholt wird. Computing ermöglicht diese Entropieisolation, die Naturwissenschaften dagegen nicht.
Fügen Sie einige der besten Kommentare hinzu, um meinen Standpunkt über die einzige hervorstechende Unterscheidung zwischen randomisiert und nicht deterministisch zu verdeutlichen.
Es ist wirklich sehr elegant und leicht, die Unterscheidung zu erkennen, wenn Sie aufhören, sie durcheinander zu bringen, indem Sie versuchen, sie vom betrieblichen Standpunkt aus anstatt vom Standpunkt der hervorstechenden Entropie aus zu beschreiben.
@reinierpost Jeder verschmilzt den Unterschied zwischen randomisiert und nicht deterministisch. Dies führt dazu, dass Ihr Kommentar durcheinander gerät. Der Algorithmus reagiert auf die Interaktion der Eingabe- (Variablen-) Entropie und der (invarianten) internen Entropie des Quellcodes. Nichtdeterminismus ist unbegrenzte Entropie. Invariante Entropie kann sogar intern unbegrenzt sein, z. B. durch Erweitern der Stellen von π . Randomisiert ist, dass ein Teil der Entropie nicht wie definiert an den Eingang gekoppelt ist (dh, es kann sich um einen Systemaufruf /dev/random
oder eine simulierte Zufälligkeit handeln, z. B. NFA oder ein PRNG).
.
@Raphaels formale Definition des nicht deterministischen endlichen Automs (NFA) ist die endliche Eingabe-Entropie (Daten: das 5-Tupel). Somit kann jede NFA auf einer deterministischen Turing-Maschine ausgeführt werden, dh es ist keine nicht deterministische Turing-Komplett-Maschine erforderlich. Somit gehören NFAs nicht zu den nicht deterministischen Problemen. Der Begriff "Nichtdeterminismus" in NFA ist, dass sein Determinismus (obwohl er eindeutig vorhanden ist, da jeder NFA in einen DFA umgewandelt werden kann) nicht explizit erweitert wird - nicht dasselbe wie Nichtdeterminismus der Berechnung
.
@Raphael der behauptete "Nichtdeterminismus" in NFAs ist wirklich Zufälligkeit ist Sinn meiner Definition der Unterscheidung zwischen Zufälligkeit und Nichtdeterminismus. Meine Definition ist, dass Zufälligkeit ein Teil der Entropie ist, der nicht unter der Kontrolle, dem Wissen (oder der gewünschten nicht expliziten Erweiterung im Fall einer NFA) der Eingabe in das Programm oder die Funktion steht. Ein echter Nichtdeterminismus ist die Unfähigkeit, die Entropie in jedem Fall zu kennen, weil sie unbegrenzt ist. Genau das unterscheidet den randomisierten vom Nichtdeterminismus. NFA sollte also ein Beispiel für das erstere sein, nicht für das letztere, wie Sie behauptet haben.
.
@Raphael Wie ich bereits erklärte, verbindet der Begriff des Nichtdeterminismus in NFAs das Nichtdeterministische mit der endlichen Entropie. Somit ist der Nicht-Determinismus ein lokales Konzept, den Determinismus nicht als eine Form der Komprimierung oder Zweckmäßigkeit zu erweitern. Wir sagen daher nicht, dass NFAs nicht deterministisch sind, sondern eher den Anschein von Zufälligkeit für ein Orakel, das nicht bereit ist, die deterministische Expansion zu berechnen. Aber es ist alles ein Trugbild, weil es deterministisch erweitert werden muss, weil die Entropie nicht unbegrenzt, dh endlich ist.
Wörterbücher sind Werkzeuge. Lerne sie zu benutzen.
zufälliges Adjektiv
Statistiken. von oder Charakterisieren eines Auswahlprozesses, bei dem jeder Gegenstand einer Menge die gleiche Wahrscheinlichkeit hat, ausgewählt zu werden.
Sein oder sich auf eine Menge oder ein Element einer Menge beziehend, von denen jedes Element die gleiche Auftrittswahrscheinlichkeit hat
Die Randomisierung erfordert daher nur, dass ein Teil der Eingabe-Entropie gleich wahrscheinlich ist, was mit meiner Definition übereinstimmt, dass ein Teil der Eingabe-Entropie nicht vom Aufrufer der Funktion gesteuert wird. Beachten Sie, dass für die Randomisierung nicht erforderlich ist, dass die Eingabe-Entropie für die Beendigung unentscheidbar ist.
In der Informatik ist ein deterministischer Algorithmus ein Algorithmus, der bei einer bestimmten Eingabe immer dieselbe Ausgabe erzeugt, wobei die zugrunde liegende Maschine immer dieselbe Folge von Zuständen durchläuft.
Formal berechnet ein deterministischer Algorithmus eine mathematische Funktion; Eine Funktion hat einen eindeutigen Wert für jede Eingabe in ihrer Domäne, und der Algorithmus ist ein Prozess, der diesen bestimmten Wert als Ausgabe erzeugt.
Deterministische Algorithmen können als Zustandsmaschine definiert werden: Ein Zustand beschreibt, was eine Maschine zu einem bestimmten Zeitpunkt tut. Zustandsautomaten gehen auf diskrete Weise von einem Zustand in einen anderen über. Kurz nachdem wir die Eingabe eingegeben haben, befindet sich die Maschine in ihrem Ausgangszustand oder Startzustand. Wenn die Maschine deterministisch ist, bedeutet dies, dass ab diesem Zeitpunkt der aktuelle Zustand den nächsten Zustand bestimmt. sein Verlauf durch die Menge der Zustände ist vorbestimmt. Beachten Sie, dass eine Maschine deterministisch sein und dennoch niemals anhalten oder enden kann und daher kein Ergebnis liefern kann.
Dies sagt uns also, dass deterministische Algorithmen vollständig durch den Eingangszustand der Funktion bestimmt werden müssen, dh wir müssen nachweisen können, dass die Funktion beendet wird (oder nicht beendet wird) und das kann nicht unentscheidbar sein. Trotz des durcheinandergebrachten Versuchs von Wikipedia, nicht deterministisch zu beschreiben, sind Algorithmen, deren Eingabezustand (Entropie) schlecht definiert ist, die einzige Antithese zur Deterministik, wie sie oben von Wikipedia definiert wurde. Und der einzige Weg, wie der Eingabezustand falsch definiert werden kann, ist, wenn er nicht begrenzt ist (daher kann er nicht deterministisch voranalysiert werden). Dies ist genau das, was eine nicht deterministische Turing-Maschine (und viele reale Programme, die in gängigen Turing-Komplettsprachen wie C, Java, Javascript, ML usw. geschrieben sind) von deterministischen TMs und Programmiersprachen wie HTML, Tabellenkalkulationsformeln unterscheidet. Coq, Epigramm,
In der Theorie der rechnerischen Komplexität sind nichtdeterministische Algorithmen solche, die bei jedem möglichen Schritt mehrere Fortsetzungen ermöglichen können (stellen Sie sich einen Mann vor, der auf einem Waldweg geht, und jedes Mal, wenn er weitergeht, muss er die gewünschte Weggabelung auswählen nehmen). Diese Algorithmen finden nicht für jeden möglichen Rechenweg eine Lösung; Es wird jedoch garantiert, dass sie zu einer korrekten Lösung für einen bestimmten Pfad gelangen (dh der Mann, der durch den Wald geht, findet möglicherweise nur dann seine Hütte, wenn er eine Kombination von "richtigen" Pfaden auswählt). Die Auswahl kann als Vermutung in einem Suchprozess interpretiert werden.
Wikipedia und andere versuchen, Randomisierung mit Nichtdeterminismus zu verbinden, aber wozu sind die beiden Konzepte gut, wenn Sie sie nicht eloquent voneinander unterscheiden wollen?
Bei Determinismus geht es eindeutig um die Fähigkeit zu bestimmen. Bei der Randomisierung geht es eindeutig darum, einen Teil der Entropie gleich wahrscheinlich zu machen.
Die Einbeziehung der Zufallsentropie in den Zustand eines Algorithmus macht ihn nicht unbedingt unbestimmbar. Zum Beispiel kann ein PRNG die geforderte gleichwahrscheinliche statistische Verteilung haben, aber auch vollständig deterministisch sein.
Orthogonale Konzepte zu konflationieren, ist das, was Menschen mit niedrigem IQ tun. Ich erwarte mehr von dieser Community!