Ich gehe davon aus, dass Sie nach intuitiven Definitionen suchen, da das Verständnis der technischen Definitionen einige Zeit in Anspruch nimmt. Erinnern wir uns zunächst an ein vorläufiges Konzept, das zum Verständnis dieser Definitionen erforderlich ist.
- Entscheidungsproblem : Ein Problem mit einer Ja- oder Nein- Antwort.
Definieren wir nun diese Komplexitätsklassen .
P.
P ist eine Komplexitätsklasse, die die Menge aller Entscheidungsprobleme darstellt, die in Polynomzeit gelöst werden können .
Das heißt, bei einer Instanz des Problems kann die Antwort Ja oder Nein in Polynomzeit entschieden werden.
Beispiel
Können bei einem verbundenen Diagramm G
seine Scheitelpunkte mit zwei Farben gefärbt werden, sodass keine Kante monochromatisch ist?
Algorithmus: Beginnen Sie mit einem beliebigen Scheitelpunkt, färben Sie ihn rot und alle seine Nachbarn blau und fahren Sie fort. Halten Sie an, wenn Ihnen die Scheitelpunkte ausgehen oder Sie gezwungen sind, eine Kante zu erstellen, bei der beide Endpunkte dieselbe Farbe haben.
NP
NP ist eine Komplexitätsklasse, die die Menge aller Entscheidungsprobleme darstellt, für die die Fälle, in denen die Antwort "Ja" lautet, Beweise haben, die in Polynomzeit verifiziert werden können.
Dies bedeutet, dass wenn jemand uns eine Instanz des Problems und ein Zertifikat (manchmal als Zeuge bezeichnet) mit der Antwort Ja gibt, wir überprüfen können, ob es in der Polynomzeit korrekt ist.
Beispiel
Die ganzzahlige Faktorisierung erfolgt in NP. Dies ist das Problem, das bei ganzen Zahlen gegeben ist, n
und m
gibt es eine ganze Zahl f
mit 1 < f < m
, so dass sich f
teilt n
( f
ist ein kleiner Faktor von n
)?
Dies ist ein Entscheidungsproblem, da die Antworten Ja oder Nein sind. Wenn uns jemand eine Instanz des Problems übergibt (also gibt er uns ganze Zahlen n
und m
) und eine ganze Zahl f
mit 1 < f < m
und behauptet, dass dies f
ein Faktor von n
(dem Zertifikat) ist, können wir die Antwort in Polynomzeit überprüfen, indem wir die Division durchführen n / f
.
NP-komplett
NP-Complete ist eine Komplexitätsklasse, die die Menge aller Probleme X
in NP darstellt, für die es möglich ist, jedes andere NP-Problem Y
auf die X
Polynomzeit zu reduzieren .
Intuitiv bedeutet dies, dass wir Y
schnell lösen können, wenn wir wissen, wie man X
schnell löst . Genau genommen Y
ist es reduzierbar auf X
, wenn es einen Polynomzeitalgorithmus gibt, f
um Instanzen y
von Y
in Instanzen x = f(y)
von X
in Polynomzeit umzuwandeln , mit der Eigenschaft, dass die Antwort auf y
Ja ist, genau dann, wenn die Antwort auf f(y)
Ja ist.
Beispiel
3-SAT
. Dies ist das Problem, bei dem wir eine Konjunktion (ANDs) von 3-Klausel-Disjunktionen (ORs) erhalten, Anweisungen der Form
(x_v11 OR x_v21 OR x_v31) AND
(x_v12 OR x_v22 OR x_v32) AND
... AND
(x_v1n OR x_v2n OR x_v3n)
Dabei ist jede x_vij
eine boolesche Variable oder die Negation einer Variablen aus einer endlichen vordefinierten Liste (x_1, x_2, ... x_n)
.
Es kann gezeigt werden, dass jedes NP-Problem auf 3-SAT reduziert werden kann . Der Beweis dafür ist technisch und erfordert die Verwendung der technischen Definition von NP ( basierend auf nicht deterministischen Turing-Maschinen ). Dies ist als Cooks Theorem bekannt .
Was NP-vollständige Probleme wichtig macht, ist, dass, wenn ein deterministischer Polynomzeitalgorithmus gefunden werden kann, um eines von ihnen zu lösen, jedes NP-Problem in Polynomzeit lösbar ist (ein Problem, um sie alle zu regieren).
NP-hart
Intuitiv sind dies die Probleme, die mindestens so schwer sind wie die NP-vollständigen Probleme . Beachten Sie, dass NP-harte Probleme nicht in NP sein müssen und keine Entscheidungsprobleme sein müssen .
Die genaue Definition hier ist, dass ein Problem X
NP-schwer ist, wenn es ein NP-vollständiges Problem gibt Y
, das Y
auf die X
Polynomzeit reduziert werden kann .
Da jedoch jedes NP-vollständige Problem in der Polynomzeit auf jedes andere NP-vollständige Problem reduziert werden kann, können alle NP-vollständigen Probleme in der Polynomzeit auf jedes NP-harte Problem reduziert werden. Wenn es dann eine Lösung für ein NP-hartes Problem in der Polynomzeit gibt, gibt es eine Lösung für alle NP-Probleme in der Polynomzeit.
Beispiel
Das Stoppproblem ist ein NP-hartes Problem. Dies ist das Problem, das bei einem Programm P
und einer Eingabe zum I
Stillstand kommt. Dies ist ein Entscheidungsproblem, aber es ist nicht in NP. Es ist klar, dass jedes NP-vollständige Problem auf dieses reduziert werden kann. Als weiteres Beispiel ist jedes NP-vollständige Problem NP-schwer.
Mein Lieblingsproblem bei der vollständigen NP ist das Minesweeper-Problem .
P = NP
Dies ist das bekannteste Problem in der Informatik und eine der wichtigsten offenen Fragen in den mathematischen Wissenschaften. Tatsächlich bietet das Clay Institute eine Million Dollar für eine Lösung des Problems an (Stephen Cooks Bericht auf der Clay-Website ist ziemlich gut).
Es ist klar, dass P eine Teilmenge von NP ist. Die offene Frage ist, ob NP-Probleme deterministische Polynomzeitlösungen haben oder nicht. Es wird weitgehend angenommen, dass dies nicht der Fall ist. Hier ist ein herausragender kürzlich veröffentlichter Artikel über das Neueste (und die Bedeutung) des P = NP-Problems: Der Status des P versus NP-Problems .
Das beste Buch zu diesem Thema ist Computer und Intraktabilität von Garey und Johnson.
I
übern
Variablen ein, versuchen Sie alle2^n
möglichen Zuordnungen zu den Variablen und halten Sie an, wenn einer den Satz erfüllt, und geben Sie andernfalls eine Endlosschleife ein. Wir sehen, dass dieser Algorithmus genau dann anhält, wenn erI
erfüllt werden kann. Wenn wir also einen Polynomzeitalgorithmus zur Lösung des Halteproblems hätten, könnten wir SAT in Polynomzeit lösen. Daher ist das Stoppproblem NP-schwer.Ich habe mich umgesehen und viele lange Erklärungen gesehen. Hier ist ein kleines Diagramm, das nützlich sein kann, um es zusammenzufassen:
Beachten Sie, wie sich der Schwierigkeitsgrad von oben nach unten erhöht: Jeder NP kann in P-Zeit (Polynom) auf NP-Complete und jeder NP-Complete auf NP-Hard reduziert werden.
Wenn Sie eine schwierigere Problemklasse in P-Zeit lösen können, bedeutet dies, dass Sie herausgefunden haben, wie Sie alle einfacheren Probleme in P-Zeit lösen können (z. B. P = NP beweisen, wenn Sie herausfinden, wie Sie ein NP-Complete-Problem in lösen können P Zeit).
Anmerkungen
Yes
oderNo
Einträge:Ich fand dieses Diagramm auch sehr nützlich, um zu sehen, wie all diese Typen einander entsprechen (achten Sie mehr auf die linke Hälfte des Diagramms).
quelle
Dies ist eine sehr informelle Antwort auf die gestellte Frage.
Kann 3233 als Produkt von zwei anderen Zahlen geschrieben werden, die größer als 1 sind? Gibt es eine Möglichkeit, einen Weg um alle sieben Brücken von Königsberg herum zu gehen, ohne zweimal eine Brücke zu nehmen? Dies sind Beispiele für Fragen, die ein gemeinsames Merkmal haben. Es ist vielleicht nicht offensichtlich, wie die Antwort effizient ermittelt werden kann, aber wenn die Antwort "Ja" lautet, gibt es einen kurzen und schnell zu überprüfenden Beweis. Im ersten Fall eine nicht triviale Faktorisierung von 51; im zweiten eine Route zum Gehen über die Brücken (passend zu den Einschränkungen).
Ein Entscheidungsproblem ist eine Sammlung von Fragen mit Ja- oder Nein-Antworten, die nur in einem Parameter variieren. Sagen Sie das Problem COMPOSITE = {"Ist
n
zusammengesetzt":n
ist eine ganze Zahl} oder EULERPATH = {"Hat der GraphG
einen Euler-Pfad?": IstG
ein endlicher Graph}.Nun eignen sich einige Entscheidungsprobleme für effiziente, wenn nicht offensichtliche Algorithmen. Euler entdeckte vor über 250 Jahren einen effizienten Algorithmus für Probleme wie die "Sieben Brücken von Königsberg".
Auf der anderen Seite ist es bei vielen Entscheidungsproblemen nicht offensichtlich, wie Sie die Antwort erhalten. Wenn Sie jedoch zusätzliche Informationen kennen, ist es offensichtlich, wie Sie beweisen müssen, dass Sie die richtige Antwort haben. COMPOSITE ist wie folgt: Die Teilung von Versuchen ist der offensichtliche Algorithmus und langsam: Um eine 10-stellige Zahl zu faktorisieren, müssen Sie etwa 100.000 mögliche Teiler ausprobieren. Aber wenn Ihnen zum Beispiel jemand gesagt hat, dass 61 ein Teiler von 3233 ist, ist eine einfache lange Teilung ein effizienter Weg, um zu sehen, ob sie korrekt sind.
Die Komplexitätsklasse NP ist die Klasse von Entscheidungsproblemen, bei denen die Ja-Antworten kurz und schnell zu prüfen sind. Wie COMPOSITE. Ein wichtiger Punkt ist, dass diese Definition nichts darüber aussagt, wie schwer das Problem ist. Wenn Sie eine korrekte und effiziente Methode zur Lösung eines Entscheidungsproblems haben, ist es Beweis genug, nur die Schritte in der Lösung aufzuschreiben.
Die Forschung an Algorithmen wird fortgesetzt, und es werden ständig neue clevere Algorithmen erstellt. Ein Problem, das Sie heute möglicherweise nicht effizient lösen können, kann sich morgen als effiziente (wenn auch nicht offensichtliche) Lösung herausstellen. Tatsächlich brauchten Forscher bis 2002 , um eine effiziente Lösung für COMPOSITE zu finden! Bei all diesen Fortschritten muss man sich wirklich fragen: Ist es nur eine Illusion, kurze Beweise zu haben? Vielleicht hat jedes Entscheidungsproblem, das sich für effiziente Beweise eignet, eine effiziente Lösung? Niemand weiß es .
Der vielleicht größte Beitrag auf diesem Gebiet war die Entdeckung einer besonderen Klasse von NP-Problemen. Durch Herumspielen mit Schaltungsmodellen zur Berechnung fand Stephen Cook ein Entscheidungsproblem der NP-Sorte, das nachweislich genauso schwer oder schwerer war als jedes andere NP-Problem. Eine effiziente Lösung für das Problem der booleschen Erfüllbarkeit könnte verwendet werden, um eine effiziente Lösung für jedes andere Problem in NP zu erstellen . Bald darauf zeigte Richard Karp, dass eine Reihe anderer Entscheidungsprobleme dem gleichen Zweck dienen könnten. Diese Probleme, in gewissem Sinne die "schwierigsten" Probleme in NP, wurden als NP-vollständige Probleme bekannt.
Natürlich ist NP nur eine Klasse von Entscheidungsproblemen. Viele Probleme werden natürlich nicht auf diese Weise angegeben: "Finden Sie die Faktoren von N", "Finden Sie den kürzesten Pfad in der Grafik G, die jeden Scheitelpunkt besucht", "Geben Sie eine Reihe von Variablenzuweisungen an, die den folgenden booleschen Ausdruck wahr machen". Obwohl man informell über solche Probleme sprechen kann, die "in NP" sind, macht das technisch wenig Sinn - sie sind keine Entscheidungsprobleme. Einige dieser Probleme haben möglicherweise sogar die gleiche Leistung wie ein NP-vollständiges Problem: Eine effiziente Lösung dieser (Nichtentscheidungs-) Probleme würde direkt zu einer effizienten Lösung für jedes NP-Problem führen. Ein solches Problem heißt NP-hard .
quelle
P (Polynomzeit): Wie der Name schon sagt, sind dies die Probleme, die in der Polynomzeit gelöst werden können.
NP (Non-Deterministic-Polynomial Time): Dies sind die Entscheidungsprobleme, die in der Polynomial Time verifiziert werden können. Das heißt, wenn ich behaupte, dass es für ein bestimmtes Problem eine polynomielle Zeitlösung gibt, bitten Sie mich, dies zu beweisen. Dann werde ich Ihnen einen Beweis geben, den Sie in Polynomzeit leicht überprüfen können. Diese Art von Problemen werden NP-Probleme genannt. Beachten Sie, dass wir hier nicht darüber sprechen, ob es für dieses Problem eine polynomielle Zeitlösung gibt oder nicht. Wir sprechen jedoch über die Überprüfung der Lösung eines bestimmten Problems in Polynomzeit.
NP-Hard: Diese sind mindestens so schwer wie die schwierigsten Probleme in NP. Wenn wir diese Probleme in Polynomzeit lösen können, können wir jedes mögliche NP-Problem lösen, das möglicherweise existiert. Beachten Sie, dass diese Probleme nicht unbedingt NP-Probleme sind. Das heißt, wir können die Lösung dieser Probleme in der Polynomzeit überprüfen / nicht überprüfen.
NP-Complete: Dies sind die Probleme, die sowohl NP als auch NP-Hard sind. Das heißt, wenn wir diese Probleme lösen können, können wir jedes andere NP-Problem lösen und die Lösungen für diese Probleme können in Polynomzeit verifiziert werden.
quelle
Zusätzlich zu den anderen großartigen Antworten finden Sie hier das typische Schema, mit dem Menschen den Unterschied zwischen NP, NP-Complete und NP-Hard zeigen:
quelle
Der einfachste Weg, P v. NP und dergleichen zu erklären, ohne auf technische Aspekte einzugehen, besteht darin, "Wortprobleme" mit "Multiple-Choice-Problemen" zu vergleichen.
Wenn Sie versuchen, ein "Wortproblem" zu lösen, müssen Sie die Lösung von Grund auf neu finden. Wenn Sie versuchen, ein "Multiple-Choice-Problem" zu lösen, haben Sie die Wahl: Lösen Sie es entweder wie ein "Wortproblem" oder versuchen Sie, jede der Ihnen gegebenen Antworten einzustecken und die passende Kandidatenantwort auszuwählen.
Es kommt häufig vor, dass ein "Multiple-Choice-Problem" viel einfacher ist als das entsprechende "Wortproblem": Das Ersetzen der Kandidatenantworten und das Überprüfen, ob sie passen, erfordert möglicherweise erheblich weniger Aufwand als das Finden der richtigen Antwort von Grund auf.
Wenn wir uns nun auf den Aufwand einigen würden, der die Polynomzeit "leicht" nimmt, würde die Klasse P aus "einfachen Wortproblemen" bestehen, und die Klasse NP würde aus "einfachen Multiple-Choice-Problemen" bestehen.
Das Wesen von P v. NP ist die Frage: "Gibt es einfache Multiple-Choice-Probleme, die als Wortprobleme nicht einfach sind?" Das heißt, gibt es Probleme, bei denen es einfach ist, die Gültigkeit einer bestimmten Antwort zu überprüfen, aber es schwierig ist, diese Antwort von Grund auf neu zu finden?
Jetzt, da wir intuitiv verstehen, was NP ist, müssen wir unsere Intuition herausfordern. Es stellt sich heraus, dass es "Multiple-Choice-Probleme" gibt, die in gewissem Sinne am schwierigsten sind: Wenn man eine Lösung für eines dieser "schwierigsten von allen" Probleme finden würde, könnte man eine Lösung für ALLE finden NP Probleme! Als Cook dies vor 40 Jahren entdeckte, war dies eine völlige Überraschung. Diese "härtesten von allen" Probleme werden als NP-hart bezeichnet. Wenn Sie eine "Wortproblemlösung" für eine von ihnen finden, finden Sie automatisch eine "Wortproblemlösung" für jedes einzelne "einfache Multiple-Choice-Problem"!
Schließlich sind NP-vollständige Probleme diejenigen, die gleichzeitig NP- und NP-hart sind. Nach unserer Analogie sind sie gleichzeitig "einfach wie Multiple-Choice-Probleme" und "am schwierigsten als Wortprobleme".
quelle
NP-vollständige Probleme sind solche Probleme, die sowohl NP-hart als auch in der Komplexitätsklasse NP sind. Um zu zeigen, dass ein bestimmtes Problem NP-vollständig ist, müssen Sie daher zeigen, dass das Problem sowohl in NP als auch in NP-schwer ist.
Probleme, die in der NP-Komplexitätsklasse liegen, können in Polynomzeit nicht deterministisch gelöst werden, und eine mögliche Lösung (dh ein Zertifikat) für ein Problem in NP kann auf Richtigkeit in Polynomzeit überprüft werden.
Ein Beispiel für eine nicht deterministische Lösung des k-Clique-Problems wäre etwa:
1) wähle zufällig k Knoten aus einem Graphen aus
2) Vergewissern Sie sich, dass diese k Knoten eine Clique bilden.
Die obige Strategie ist in der Größe des Eingabegraphen polynomisch und daher liegt das k-Clique-Problem in NP.
Beachten Sie, dass alle Probleme, die in der Polynomzeit deterministisch lösbar sind, auch in NP liegen.
Das Zeigen, dass ein Problem NP-schwer ist, beinhaltet normalerweise eine Reduzierung von einem anderen NP-harten Problem auf Ihr Problem unter Verwendung einer polynomiellen Zeitzuordnung: http://en.wikipedia.org/wiki/Reduction_(complexity)
quelle
Ich denke, wir können es viel prägnanter beantworten. Ich beantwortete eine verwandte Frage und kopierte meine Antwort von dort
Aber zuerst ist ein NP-hartes Problem ein Problem, für das wir nicht beweisen können, dass es eine polynomielle Zeitlösung gibt. Die NP-Härte einiger "Problem-P" wird normalerweise durch Konvertieren eines bereits nachgewiesenen NP-harten Problems in das "Problem-P" in Polynomzeit bewiesen.
quelle
Es gibt wirklich nette Antworten auf diese spezielle Frage, daher macht es keinen Sinn, meine eigene Erklärung zu schreiben. Daher werde ich versuchen, mit einer hervorragenden Ressource einen Beitrag zu verschiedenen Klassen von Rechenkomplexität zu leisten.
Für jemanden, der der Meinung ist, dass es bei der Komplexität von Berechnungen nur um P und NP geht, ist hier die umfassendste Ressource zu verschiedenen Problemen bei der Komplexität von Berechnungen. Abgesehen von den von OP gestellten Problemen wurden ungefähr 500 verschiedene Klassen von Rechenproblemen mit netten Beschreibungen sowie die Liste der grundlegenden Forschungsarbeiten, die die Klasse beschreiben, aufgelistet.
quelle
So wie ich es verstehe, ist ein np-hartes Problem nicht "schwerer" als ein np-vollständiges Problem. Tatsächlich ist per Definition jedes np-vollständige Problem:
quelle
Finden Sie eine interessante Definition:
quelle