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.