Ich lerne die Komplexität von Berechnungen und frage mich, warum die NP-Complete (NPC) -Probleme überhaupt eine wichtige Klasse sind. Ich finde es offensichtlich, warum wir daran interessiert sind, zu zeigen, dass ein bestimmtes NP-Problem NP-schwer ist.
Ich verstehe auch die Definition von NPC und dass es NP-schwer ist, ein bestimmtes Entscheidungsproblem zu zeigen, wenn man weiß, dass es sich um NP handelt, ist genau das, was NPC bedeutet.
Was ich jedoch nicht verstehe, ist: Warum ist dieses Konzept so wichtig? Wenn wir einen NP-harten Algorithmus finden, der in der Zeit P abläuft (unabhängig davon, ob dieser in NP ist oder nicht), haben wir sicherlich gezeigt, dass .
Warum ist dieses Konzept so wichtig?
complexity-theory
np-complete
Amnestic
quelle
quelle
Antworten:
Es gibt mindestens ein paar Gründe, warum NPC interessant ist:
Mit anderen Worten, NPC ist wahrscheinlich die Grenze dessen, was wir hoffen können, dass es polynomiell lösbar ist. Es scheint eine Strecke zu sein, es mit PSPACE = P zu versuchen (zum Beispiel).
quelle
Aus der Sicht von jemandem, der Code für seinen Lebensunterhalt schreibt, ist eine gute Kenntnis der NP-Vollständigkeit wichtig für:
1. Erkennen, wann Sie den falschen Baum bellen
NP-vollständige Probleme sind die einfachsten der NP-harten Probleme. Soweit wir das beurteilen können, nimmt die Lösung eines solchen Entscheidungsproblems exponentiell viel Zeit in Anspruch. Wenn Sie also praktisch nachweisen können, dass das Problem, das Sie zu lösen versuchen, NP-schwer ist (in der Regel, indem Sie zeigen, dass eine effiziente Lösung auch eine effiziente Lösung für ein NP-vollständiges Problem darstellt), wissen Sie, dass dies der Fall ist Sie können aufhören, nach einem effizienten Algorithmus zu suchen , um ihn im Allgemeinen genau zu lösen. Stattdessen können Sie aus bekannten Algorithmen auswählen, die gute Näherungen für NP-harte Optimierungsprobleme versprechen, und mit dem Rest Ihres Projekts weitermachen.
2. Den richtigen Baum finden
Da Computer häufig für den Angriff auf NP-schwierige Probleme eingesetzt werden, wurden spezielle Löser entwickelt, mit denen einige NP-schwierige Problemfälle effizient gelöst werden können . Das Erkennen, dass Ihr Problem NP-vollständig ist, ist der erste Schritt, um ein vorhandenes Tool (SAT, ILP, SMT, CSP, um nur einige zu nennen) zu finden, mit dem Sie in einigen Fällen, in denen Sie sich andernfalls mit einem hätten zufrieden geben müssen, genaue Lösungen finden können Annäherung.
quelle
"Wenn wir einen NP-harten Algorithmus finden, der in der Zeit P abläuft (ob das nun in NP ist oder nicht), haben wir gezeigt, dass NP = P ist. Warum ist dieses Konzept so wichtig?"
Jedes NP-Problem reduziert sich auf ein NPC-Problem, aber es ist nicht wahr, dass jedes NP-Problem auf ein NP-hartes Problem reduziert wird, so dass der Beweis, dass ein Algorithmus NP-hart ist, in P nicht beweist, dass P = NP ist. Für ein NPC-Problem wäre es jedoch genau das, was "reduziert" bedeutet. Wenn wir also einen P-Algorithmus für ein NPC-Problem finden, haben wir bewiesen, dass P = NP ist.
quelle