NP-Schwere

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von NP-schwer)
Zur Navigation springen Zur Suche springen
Mengendiagramm der möglichen Beziehungen zwischen P, NP und den Mengen der NP-schweren und NP-vollständigen Probleme. Zu beachten ist, dass auf der rechten Seite die leere Sprache und ihr Komplement außen vor gelassen werden (beide sind zwar in P und NP, aber nicht NP-schwer).

NP-Schwere bezeichnet die Eigenschaft eines algorithmischen Problems, mindestens so schwer lösbar zu sein wie die Probleme der Klasse NP.

Die Komplexitätstheorie, ein Teilgebiet der theoretischen Informatik, beschäftigt sich mit der Klassifizierung von Problemen bezüglich ihrer Komplexität, d. h. der algorithmischen Schwierigkeit, sie zu lösen. Eine wichtige Problemklasse ist die Komplexitätsklasse NP, die Klasse der Probleme, die mit einer nichtdeterministischen Turingmaschine in Polynomialzeit gelöst werden können. Anschaulich ist NP die Klasse aller Entscheidungsprobleme, für die eine gefundene Lösung effizient überprüft werden kann. Ein NP-schweres Problem ist nun mindestens so „schwer“ wie alle Probleme in NP. Das bedeutet, dass ein Algorithmus, der ein NP-schweres Problem effizient (also deterministisch in Polynomialzeit) löst, mithilfe einer Polynomialzeitreduktion genutzt werden kann, um ein beliebiges Problem in NP effizient zu lösen.

Der umgangssprachlich auftretende Begriff NP-Härte ist eine Fehlübersetzung des englischen NP-hard.

Um die Schwere von Problemen zu vergleichen, werden in der theoretischen Informatik Problemreduktionen benutzt. Ein Problem A heißt reduzierbar auf ein anderes Problem B, wenn jeder Algorithmus, der B löst, auch verwendet werden kann, um A zu lösen, indem man eine Probleminstanz von A umrechnet in eine Instanz von B und diese anschließend löst.

Will man durch Reduktionen Aussagen über die Effizienz von Problemen machen, ist die Effizienz der Reduktion ebenfalls wichtig. Wird die Anzahl der Rechenschritte einer Reduktion in Abhängigkeit von der Eingabelänge durch ein Polynom (und nicht etwa durch eine Exponentialfunktion) beschrieben, dann wird diese Reduktion als Polynomialzeitreduktion bezeichnet. Kann nun ein Problem 1 durch eine Polynomialzeitreduktion in ein Problem 2 überführt werden, dessen Aufwand ebenfalls polynomial von der Eingabe abhängt, so kann Problem 1 selbst in Polynomialzeit gelöst werden.

Anfang der 1970er Jahre zeigten Stephen A. Cook und Leonid Levin unabhängig voneinander, dass es in NP ein Problem gibt, auf das alle anderen Probleme in NP in Polynomialzeit reduziert werden können: das Erfüllbarkeitsproblem der Aussagenlogik (SAT, von englisch satisfiability). Das Problem SAT ist also ein schwerstes Problem in NP (Satz von Cook). Es ist allerdings nicht das einzige schwerste Problem, denn Richard M. Karp zeigte, dass es in NP Probleme gibt, auf die SAT reduziert werden kann, die also genauso schwer sind wie SAT. Diese schwersten Probleme in NP werden NP-vollständig genannt. Alle Probleme, auch solche außerhalb von NP, die mindestens so schwer sind wie sie (auf die also SAT in Polynomialzeit reduziert werden kann), heißen NP-schwer.

Sei eine formale Sprache. heißt dann NP-schwer, wenn gilt:

(Alle aus NP sind polynomiell reduzierbar auf .)

Dies bedeutet, dass mindestens so schwer wie jedes beliebige Problem aus NP ist. Diese intuitive Deutung wird gerechtfertigt durch die Tatsache, dass sich mit einem Algorithmus , der in Polynomialzeit löst, für jedes Problem aus NP ebenfalls ein polynomialer Algorithmus konstruieren ließe:

  1. führe zuerst die Reduktion auf aus und
  2. anschließend Algorithmus .

selbst kann jedoch auch schwerer sein. Insbesondere muss nicht notwendigerweise in NP liegen (liegt jedoch zusätzlich in NP, so heißt NP-vollständig).

Ein klassisches Beispiel für ein Problem, das NP-schwer ist und nicht in NP liegt, ist das Halteproblem für Turingmaschinen. Beispielsweise lässt sich das Erfüllbarkeitsproblem auf das Halteproblem reduzieren, indem eine Instanz des Erfüllbarkeitsproblems in eine Turingmaschine transformiert wird, die nacheinander alle möglichen Belegungen durchprobiert und hält, sobald eine erfüllende Belegung gefunden ist, andernfalls jedoch in eine Endlosschleife übergeht. Darüber hinaus liegt das Halteproblem aber selbst nicht in NP, da es überhaupt nicht entscheidbar ist.

  • Michael R. Garey und David S. Johnson: Computers and Intractability. A Guide to the Theory of NP-Completeness. W. H. Freeman and Company, New York 1979, ISBN 0-7167-1045-5, Kapitel 5: NP-Hardness.