Ich bin ein bisschen neu, aber sehr interessiert am Gebiet der Computer- und Komplexitätstheorie, und ich möchte mein Verständnis darüber klären, wie man Probleme klassifiziert und wie stark sich die Probleme auf die Maschine beziehen, mit der sie gelöst werden.
Mein Verständnis
- Standard Turing Machine - eine Turing-Maschine, die ein endliches Alphabet, eine endliche Anzahl von Zuständen und ein einzelnes rechts-unendliches Band hat
- Turing-äquivalente Maschine - eine Turing-Maschine, die eine Standard-Turing-Maschine emulieren und von ihr emuliert werden kann (häufig mit einem gewissen Kompromiss zwischen Raum und Zeit, der durch die Emulation erreicht wird)
P
- die Klasse von Problemen, die in Polynomzeit mit einer Standard-Turing-Maschine (oben definiert) gelöst werden könnenNP
- die Klasse von Problemen, die mit einer Standard-Turing-Maschine in Polynomzeit verifiziert werden könnenNP-complete
- die schwierigsten Probleme, die es noch gibt, inNP
die alleNP
Probleme in polynomialer Zeit umgewandelt werden können
Meine Frage
Sind die Komplexitätsklassen ( P
, NP
, NP-complete
, usw.) im Zusammenhang mit dem Algorithmus oder den Algorithmus und die Maschine?
Anders gesagt, wenn Sie eine Turing-äquivalente Maschine (die alle Probleme lösen kann, die ein Standard TM kann, aber in einer anderen Zeit / Raum-Menge) und diese neue Maschine ein NP-complete
Problem lösen könnten, das mit der Zeit wächst Polynom in Bezug auf die Eingabe, würde das bedeuten P=NP
?
Oder muss das NP-complete
Problem auf allen möglichen Turingmaschinen in polynomialer Zeit lösbar sein, um berücksichtigt zu werden P
?
Oder verstehe ich etwas Grundlegendes falsch?
Ich habe nachgesehen (vielleicht nicht mit den richtigen Suchbegriffen, ich kenne die Fachsprache nicht so gut), aber es scheint, dass sich die meisten Vorträge / Notizen usw. auf Standardmaschinen konzentrieren, aber sagen, dass benutzerdefinierte Maschinen oft eine gewisse Zeit- / Raumgeschwindigkeit haben auf Kosten von Raum / Zeit, ohne zu sagen, wie sich das auf Komplexitätsklassen auswirkt. Ich kenne die Fachsprache auf diesem Gebiet noch nicht gut genug, um Papiere zu finden, die dies erklären.
Antworten:
Algorithmen und Maschinen sind in Ihrer Frage nicht definiert und ich glaube nicht, dass sie benötigt werden, um zu fragen, was Sie fragen möchten.
Komplexitätsklassen werden mit Turing-Maschinen definiert. Das ist ihre Definition. Wenn Sie etwas beweisen wollen, müssen Sie diese Definitionen verwenden. Alles, was mit einem anderen Modell zu tun hat, hat nichts zu tun, es sei denn, Sie weisen eine Übereinstimmung zwischen diesem Modell und Turing-Maschinen nach.
quelle
Nur eine triviale Anmerkung, um zu unterstreichen, dass die effiziente Simulation einer Turing-Maschine nicht nur bedeutet, dass sie die Berechnung einer Turing-Maschine und umgekehrt effizient simulieren kann (Verlangsamung der Polynomzeit); aber auch, dass seine Eingabe / Ausgabe effizient von einem Modell zum anderen konvertiert werden muss .
Ein triviales Beispiel: Wenn Sie ein Turing-äquivalentes Gerät finden, das ein SAT-Problem in konstanter Zeit lösen kann, aber als Eingabe einen Haufen Murmeln (unär) verwendet, können Sie keine Schlussfolgerung ziehen. Dasselbe gilt, wenn Ihr Gerät einen Binäreingang verwendet, jedoch eine exponentielle Anzahl von Schritten erforderlich ist, um eine SAT-Instanz in das von ihm verwendete Eingabeformat zu konvertieren .
quelle
Ihr Verständnis ist sehr gut! Sie können bei Interesse auch weitere Informationen in einem Text finden, z. B. Sipsers Einführung in die Berechnungstheorie.
Es gibt diese Idee, die so genannte Church-Turing-These, die besagt, dass alles, was irgendwie berechnet werden kann, mit einer Turing-Maschine berechnet werden kann. (Es ist nicht beweisbar, sondern nur eine Idee oder ein Naturgesetz, das wir für wahr halten.)
Ich erwähne dies, weil es auch die "Extended Church Turing Thesis" gibt, die besagt, dass alles, was irgendwie in Polynomzeit berechnet werden kann, mit einer Turing-Maschine in Polynomzeit berechnet werden kann.
Es gibt guten Grund, diese Vermutung zu bezweifeln, da wir Quantencomputer-Algorithmen kennen, die gegenüber den bekanntesten klassischen Algorithmen eine überpolynomielle Beschleunigung erzielen. Abgesehen davon wird jedoch angenommen, dass jede klassische Maschine, die Sie bauen können (sicherlich jede Variante einer Turing-Maschine), nicht exponentiell schneller sein kann als eine Turing-Maschine. Wenn Ihre "Turing-äquivalente Maschine" also einen Algorithmus ausführen könnte, der ein NP-Complete-Problem in Polynomzeit löst, dann ist P = NP, weil ich ihn für dasselbe Problem auf einem TM in einen Polynomzeitalgorithmus umwandeln könnte.
Aber wenn Sie sich eine Art Turing-äquivalente Maschine ausgedacht haben, ist wahrscheinlich eines der ersten Dinge, die Sie tun würden, um sie mit einem klassischen TM zu simulieren, und das würde Ihnen sagen, ob Sie eine Polynom-Zeit-Konvertierung haben oder nicht. Und die Antwort wäre mit ziemlicher Sicherheit ja, es sei denn, Sie könnten exponentiell langsamer sein (aber nicht schneller - wir denken, es sei denn, es ist ein Quantum, dann vielleicht).
quelle