Antworten:
Um zu zeigen, dass ein Problem NP vollständig ist, müssen Sie:
Mit anderen Worten, mit einigen Informationen C
können Sie einen Polynomzeitalgorithmus erstellen V
, der für jede mögliche Eingabe überprüft, X
obX
sich in Ihrer Domäne befindet oder nicht.
Beweisen , dass das Problem des Scheitel Abdeckungen (dass für einige Graph ist G
, hat es eine Knotenüberdeckung Satz Größe hat , k
so daß jede Kante in G
im Deckel Satz zumindest einen Scheitelpunkt hat ?) Ist in NP:
Unsere Eingabe X
ist eine Grafik G
und eine Zahl k
(dies stammt aus der Problemdefinition).
Nehmen Sie unsere Informationen C
als "jede mögliche Teilmenge von Eckpunkten in einem Diagramm G
mit Größe k
".
Dann können wir einen Algorithmus schreiben V
, der gegeben G
ist k
und in polynomialer ZeitC
zurückgibt, ob diese Menge von Eckpunkten eine Eckpunktabdeckung ist G
oder nicht .
G
Wenn dann für jeden Graphen eine "mögliche Teilmenge von Scheitelpunkten in G
der Größe k
" existiert, die eine Scheitelpunktabdeckung ist, dann G
ist in NP
.
Beachten Sie, dass wir nichtC
in Polynomzeit finden müssen . Wenn wir könnten, wäre das Problem in `P.
Hinweis , dass Algorithmus V
für Arbeit sollte jeder G
, für einige C
. Für jede Eingabe sollte vorhanden sein Informationen , die uns helfen könnten überprüfen , ob die Eingabe im Problembereich ist oder nicht. Das heißt, es sollte keine Eingabe geben, bei der die Informationen nicht vorhanden sind.
Dies beinhaltet das Erhalten eines bekannten NP-vollständigen Problems wie SAT , der Menge von Booleschen Ausdrücken in der Form:
(A oder B oder C) und (D oder E oder F) und ...
wo der Ausdruck ist erfüllbar , dh es eine Einstellung für diesen booleans existiert, das der Ausdruck macht wahr .
Dann reduzieren das NP-vollständige Problem für Ihr Problem in Polynomialzeit .
Wenn Sie also eine Eingabe X
für SAT
(oder ein beliebiges NP-vollständiges Problem, das Sie verwenden) eingeben, erstellen Sie eine Eingabe Y
für Ihr Problem, z. X
B. in SAT, wenn und nur wenn Y
es in Ihrem Problem enthalten ist. Die Funktion f : X -> Y
muss in Polynomzeit ausgeführt werden .
Im obigen Beispiel Y
wäre die Eingabe das Diagramm G
und die Größe der Scheitelpunktabdeckung k
.
Für einen vollständigen Beweis müssten Sie beides beweisen:
das X
ist in SAT
=> Y
in deinem Problem
und Y
in deinem Problem => X
in SAT
.
Die Antwort von marcog enthält einen Link zu mehreren anderen NP-vollständigen Problemen, die Sie auf Ihr Problem reduzieren könnten.
Fußnote: In Schritt 2 ( Beweisen Sie, dass es NP-hart ist ) reicht es aus, ein anderes NP-hartes (nicht unbedingt NP-vollständiges) Problem auf das aktuelle Problem zu reduzieren, da NP-vollständige Probleme eine Teilmenge von NP-harten Problemen sind (das heißt) auch in NP).
Sie müssen ein NP-Complete-Problem auf das Problem reduzieren, das Sie haben. Wenn die Reduktion in Polynomzeit durchgeführt werden kann, haben Sie bewiesen, dass Ihr Problem NP-vollständig ist, wenn das Problem bereits in NP vorliegt, weil:
Es ist nicht einfacher als das NP-vollständige Problem, da es in Polynomzeit darauf reduziert werden kann, was das Problem NP-schwer macht.
Weitere Informationen finden Sie am Ende von http://www.ics.uci.edu/~eppstein/161/960312.html .
Um zu beweisen, dass ein Problem L NP-vollständig ist, müssen wir die folgenden Schritte ausführen:
Zunächst zeigen Sie, dass es überhaupt in NP liegt.
Dann finden Sie ein weiteres Problem, von dem Sie bereits wissen, dass es NP vollständig ist, und zeigen, wie Sie das NP Hard-Problem polynomiell auf Ihr Problem reduzieren.