Warum ist es wichtig zu beweisen, dass ein Problem NP-vollständig ist?


Antworten:


26

Ali, gute Frage.

Angenommen, Sie möchten zeigen, dass ein Problem P rechenintensiv ist. Man könnte vermuten, dass P schwer ist, nur weil wir noch keine effizienten Algorithmen dafür haben. Aber das sind eher schwache Beweise, oder? Es könnte sein, dass wir einen schönen Blick auf P verpasst haben, der die Lösung sehr einfach macht. Um zu vermuten, dass P schwer ist, möchten wir mehr Beweise sammeln. Reduktionen bieten genau das! Wenn wir ein anderes natürliches Problem Q zu P reduzieren können, dann haben wir gezeigt, dass P mindestens so schwer ist wie Q. Aber Q könnte ein Problem aus einem ganz anderen Bereich der Mathematik sein, und die Menschen haben möglicherweise jahrzehntelang Mühe, Q auch zu lösen . Wir können also feststellen, dass wir keinen effizienten Algorithmus für Q gefunden haben, um zu beweisen, dass P hart ist. Wenn wir viele solcher Q 'haben

Genau das liefert die Theorie der NP-Vollständigkeit. Wenn Sie nachweisen, dass Ihr Problem NP-vollständig ist, haben Sie seine Härte an die Härte von Hunderten anderer Probleme gebunden, von denen jedes für verschiedene Gemeinschaften von großem Interesse ist. Moralisch gesehen können Sie also sicher sein, dass Ihr Problem tatsächlich schwierig ist.


Das ursprüngliche Ziel ist es also, einen effizienten Algorithmus für P zu finden. Da dies jedoch unerreichbar erscheint, nimmt man an, dass P rechenintensiv ist, und dann erklären Ihre Antworten den Rest?
Ali

Wir wollen zeigen, dass unser Problem P rechenintensiv ist, aber wir wollen nicht davon ausgehen, dass P schwer zu beweisen ist, dass P schwer ist :) Stattdessen, wenn Sie beweisen, dass P NP-vollständig ist (oder sogar NP-schwer, aber Lassen Sie uns die Unterscheidung hier ignorieren.) Sie haben gezeigt, dass wenn eines von Hunderten von bereits gut untersuchten Problemen schwierig ist, dann ist auch P schwierig. Wenn es einen effizienten Algorithmus für P gäbe, gäbe es auch effiziente Algorithmen für jedes der Hunderte von Problemen.
Arnab

4
@Ali: Ich empfehle dringend, dass Sie sich ein einführendes Lehrbuch zur Komplexitätstheorie ansehen. Diese Website ist nicht wirklich ein Forum für solche Fragen, sondern eher für Fragen auf Forschungsebene.
Arnab

5
@Ali: Ich empfehle dir definitiv, Garey und Johnson zu lesen . Der berühmte Cartoon im Buch ist ein Muss!
Tsuyoshi Ito

9

Beweisen eines Problems NP-Complete ist ein Forschungserfolg, da Sie nicht mehr nach einer effizienten und genauen Lösung für das allgemeine Problem suchen müssen, das Sie gerade untersuchen. Es beweist, dass Ihr Problem zu einer Klasse von Problemen gehört, die so schwierig sind, dass niemand in der Lage war, einen effizienten und genauen Algorithmus für eines der Probleme zu finden, und eine solche Lösung für eines der Probleme würde eine Lösung für alle bedeuten Probleme.

Es ist in der Regel ein Sprungbrett, denn Ihr Problem ist immer noch da - Sie müssen einfach Ihre Anforderungen entspannen. Normalerweise versuchen die Leute herauszufinden, wie sie sich von "effizient", "genau" oder "allgemein" erholen können. Ineffizient und genau und allgemein ist der Versuch, immer bessere Konstanten im Exponenten für diese Algorithmen zu finden. Effizient-und-ungenau-und-allgemein ist das Studium von Approximationsalgorithmen. Effizient und genau, aber nicht allgemein ist die Untersuchung der Traktabilität fester Parameter und die Suche nach Unterklassen von Eingaben, für die effiziente Algorithmen gefunden werden können.


Schöner Punkt für drei Möglichkeiten, um das Problem zu lösen! Ich denke, randomisierte Algorithmen fallen in die Kategorie "effizient und ungenau und allgemein".
Hsien-Chih Chang 張顯 張顯

"Ja wirklich?" Nicht alle randomisierten Algorithmen sind ungenau.
Jeffs

Und natürlich hast du recht, JeffE. Ich verstehe auch, dass Sie einen meiner ehemaligen Schüler in Algorithmen unterweisen (oder unterrichteten)! Was Hsien-Chihs Punkt betrifft, denke ich nicht, dass zufällige Algorithmen gut in dieses Schema passen. Sicherlich sind einige randomisierte Algorithmen (genetische Algorithmen und neuronale Netze) ungenau, aber effizient und allgemein, aber einige randomisierte Algorithmen sind ziemlich genau - denken Sie daran, dass der Algorithmus zur Überprüfung einer Zahl eine Primzahl ist! Es ist ein zufälliger Algorithmus, aber ich bin ziemlich zuversichtlich, dass noch nie jemand ein Non-Prime aus einer vernünftigen Implementierung herausgeholt hat.
Peter Boothe

5

NP-cOmplete

NP-cOmplete, Sie haben Beweise für Ihre Vermutung und sollten über einen alternativen Ansatz nachdenken (z. B. das Problem zu ändern, damit es einfacher wird).

NP-cOmplete

NP-cOmplete

P=NP3-SEINT

NP-cOmpleteCLichQ.UE

Wenn Sie ein Problem zusammenfassen und charakterisieren, können Sie gängige Techniken anwenden. Wenn Sie die Klasse studieren, auf die es sich bezieht, können Sie in einer abstrakten Ebene denken, ohne sich um die Besonderheiten dieses speziellen Problems zu kümmern, das in Mathematik und Naturwissenschaften im Allgemeinen üblich ist. Wenn Sie mit Klassen statt mit einzelnen Mitgliedern arbeiten, können Sie bekannte Techniken anwenden und außerdem Ihre Erkenntnisse auf eine größere Anzahl von Objekten anstatt nur auf eines anwenden.


2
Viele Leute lösen NP-vollständige Probleme in der Praxis, auch wenn sie NP-schwer zu approximieren sind. Im Durchschnitt stellen sich viele Probleme als viel einfacher heraus, obwohl dies schwer darzustellen sein kann. Es ist noch schwieriger, etwas über heuristische Algorithmen zu beweisen, die in der Praxis gut funktionieren. Ich schlage der Softwarearchitektin vor, jemanden zu fragen, ob das Problem "wirklich" schwierig ist, bevor sie aufgibt und ihr Design ändert.
Yuval Filmus

Ich sage nicht, dass sich das Design ändern muss. Die Verwendung eines heuristischen oder Approximationsalgorithmus scheint mir (fälschlicherweise?) Eine Änderung des Problems zu sein.
Chazisop

3

Jedes Problem hat mehrere Verbindungen mit anderen Problemen. Hinzu kommen Zusammenhänge zwischen Problem- und Komplexitätsklassen.

Wenn wir daher ein Problem als NPC klassifizieren, erhalten wir normalerweise Einblick in andere Probleme sowie in Komplexitätsklassen.

Nehmen wir zum Beispiel das Problem des Graphisomorphismus (GI). In dem folgenden Papier:

Uwe Schöning, Graph Isomorphism is in the low hierarchy , Proceedings of the 4th Annual Symposium on Theoretical Aspects of Computer Science , 1987, 114–124; auch: Journal of Computer and System Sciences, vol. 37 (1988), 312–323.

es ist bewiesen, dass, wenn GI ∈ NPC ist, die Polynomhierarchie (PH) auf ihre zweite Ebene zusammenbricht; Dies wird ein großer Durchbruch in der Theorie der strukturellen Komplexität sein.


3

pppp


1
Ich habe gehört, dass es eine Zeit gab, in der Sie bewiesen haben, dass einige Probleme NP-vollständig sind und Sie Ihre Doktorarbeit haben würden. Ist das wahr?
Hsien-Chih Chang 張顯 張顯

@ Hsien-ChihChang 張顯 張顯: Ich kann das nicht kommentieren, aber diese Ergebnisse waren vor einigen Jahrzehnten sicherlich viel populärer. Es scheint heutzutage immer schwieriger zu sein, eine Veröffentlichung zu veröffentlichen, in der Sie "nur" ein Härteergebnis nachweisen (natürlich mit Ausnahme der "berühmten Probleme"), während dies in den 70er und 80er Jahren kein Problem gewesen wäre Fülle dieser Art von Papieren in dieser Zeit.
Anthony Labarre
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.