Was ist "P = NP?" Und warum ist es eine so berühmte Frage? [geschlossen]

234

Die Frage, ob P = NP vielleicht die bekannteste in der gesamten Informatik ist. Was heißt das? Und warum ist es so interessant?

Oh, und für zusätzliche Gutschrift senden Sie bitte einen Beweis für die Wahrheit oder Falschheit der Aussage. :) :)

Raldi
quelle
11
Wie Scott Aaronson, MIT, ausführlich dargelegt hat: "Wenn P = NP, dann wäre die Welt ein völlig anderer Ort, als wir normalerweise annehmen. Es würde keinen besonderen Wert in" kreativen Sprüngen "geben, keine grundlegende Lücke zwischen dem Lösen von a Problem und Erkennen der Lösung, sobald sie gefunden wurde. Jeder, der eine Symphonie schätzen könnte, wäre Mozart; jeder, der einem schrittweisen Argument folgen könnte, wäre Gauß ... "Auszug aus en.wikipedia.org/wiki/Complexity_classes_P_and_NP .
GTS

Antworten:

365

P steht für Polynomzeit. NP steht für nicht deterministische Polynomzeit.

Definitionen:

  • Polynomzeit bedeutet, dass die Komplexität des Algorithmus O (n ^ k) ist, wobei n die Größe Ihrer Daten ist (z. B. Anzahl der zu sortierenden Elemente in einer Liste) und k eine Konstante ist.

  • Die Komplexität ist die Zeit, die in der Anzahl der erforderlichen Operationen in Abhängigkeit von der Anzahl der Datenelemente gemessen wird.

  • Operation ist alles, was als Grundoperation für eine bestimmte Aufgabe sinnvoll ist. Zum Sortieren ist die Grundoperation ein Vergleich. Für die Matrixmultiplikation ist die Grundoperation die Multiplikation zweier Zahlen.

Die Frage ist nun, was bedeutet deterministisch vs. nicht deterministisch? Es gibt ein abstraktes Rechenmodell, einen imaginären Computer namens Turing Machine (TM). Diese Maschine hat eine endliche Anzahl von Zuständen und ein unendliches Band, das diskrete Zellen hat, in die ein endlicher Satz von Symbolen geschrieben und gelesen werden kann. Zu jedem Zeitpunkt befindet sich das TM in einem seiner Zustände und betrachtet eine bestimmte Zelle auf dem Band. Abhängig davon, was aus dieser Zelle gelesen wird, kann es ein neues Symbol in diese Zelle schreiben, das Band eine Zelle vorwärts oder rückwärts bewegen und in einen anderen Zustand wechseln. Dies wird als Zustandsübergang bezeichnet. Erstaunlicherweise können Sie durch sorgfältiges Erstellen von Zuständen und Übergängen ein TM entwerfen, das jedem Computerprogramm entspricht, das geschrieben werden kann.

Es gibt zwei Arten von TMs, die uns hier beschäftigen: deterministisch und nicht deterministisch. Ein deterministisches TM hat nur einen Übergang von jedem Zustand für jedes Symbol, das es vom Band liest. Ein nicht deterministisches TM kann mehrere solcher Übergänge aufweisen, dh es kann mehrere Möglichkeiten gleichzeitig prüfen. Dies ist so etwas wie das Laichen mehrerer Threads. Der Unterschied besteht darin, dass ein nicht deterministisches TM so viele solcher "Threads" erzeugen kann, wie es möchte, während auf einem realen Computer jeweils nur eine bestimmte Anzahl von Threads ausgeführt werden kann (gleich der Anzahl von CPUs). In Wirklichkeit sind Computer grundsätzlich deterministische TMs mit endlichen Bändern. Andererseits kann ein nicht deterministisches TM physikalisch nicht realisiert werden, außer vielleicht mit einem Quantencomputer.

Es wurde nachgewiesen, dass jedes Problem, das durch ein nicht deterministisches TM gelöst werden kann, durch ein deterministisches TM gelöst werden kann. Es ist jedoch nicht klar, wie viel Zeit es dauern wird. Die Aussage P = NP bedeutet, dass, wenn ein Problem auf einem nicht deterministischen TM Polynomzeit benötigt, man ein deterministisches TM erstellen kann, das das gleiche Problem auch in Polynomzeit lösen würde. Bisher konnte niemand zeigen, dass dies möglich ist, aber auch niemand konnte beweisen, dass dies nicht möglich ist.

NP-vollständiges Problem bedeutet ein NP-Problem X, so dass jedes NP-Problem Y durch eine Polynomreduktion auf X reduziert werden kann. Dies bedeutet, dass, wenn jemand jemals eine Polynomzeitlösung für ein NP-vollständiges Problem findet, dies auch eine Polynomzeitlösung für jedes NP-Problem ergibt. Das würde also beweisen, dass P = NP ist. Wenn umgekehrt jemand beweisen würde, dass P! = NP ist, dann wären wir sicher, dass es keine Möglichkeit gibt, ein NP-Problem in Polynomzeit auf einem herkömmlichen Computer zu lösen.

Ein Beispiel für ein NP-vollständiges Problem ist das Problem, eine Wahrheitszuweisung zu finden, die einen booleschen Ausdruck mit n Variablen wahr machen würde.
Momentan kann in der Praxis jedes Problem, das auf dem nicht deterministischen TM Polynomzeit benötigt, nur auf einem deterministischen TM oder einem herkömmlichen Computer in exponentieller Zeit gelöst werden.
Zum Beispiel besteht die einzige Möglichkeit, das Problem der Wahrheitszuweisung zu lösen, darin, 2 ^ n Möglichkeiten auszuprobieren.

Dima
quelle
5
Es ist nicht wahr, dass die einzige Möglichkeit, SAT zu lösen, die Aufzählung von Fällen ist. Unter en.wikipedia.org/wiki/… finden Sie Informationen zum DPLL-Algorithmus, der in vielen Fällen tatsächlich sehr effizient ist.
Doug McClean
44
Derek, ich bin anderer Meinung. Ich verstehe wirklich nicht, wie Sie P und NP ohne Turing-Maschinen erklären. Ich war einmal in einer Algorithmusklasse, die das versucht hat. Wenn ich nichts über TMs wüsste, wäre ich total verloren.
Dima
4
In der Praxis ist das Lösen von NP-vollständigen Problemen auf einem realen Computer zwar länger als die Polynomzeit, aber das bedeutet nicht, es ist nur der aktuelle Stand der Technik, da P = NP unbekannt ist. Wenn jemand einen Polynomalgorithmus finden würde, um ein NP-vollständiges Problem zu lösen, würde dies P = NP beweisen, und wir wissen, dass dies nicht geschehen ist, weil es in den Nachrichten wäre! Umgekehrt, wenn bewiesen wurde, dass P! = NP ist, können wir zuversichtlich sagen, dass kein NP-vollständiges Problem in Polynomzeit lösbar ist.
Steve Jessop
21
Ich weiß, dass dies ziemlich alt ist, aber ich möchte nur sagen, dass die Antwort episch ist und es die erste ist, die für mich geklickt hat! Gute Arbeit
Dimitar Dimitrov
4
Korrektur im vorletzten Absatz: "Wir wären sicher, dass es keine Möglichkeit gibt, ein NP- Komplettproblem in Polynomzeit auf einem herkömmlichen Computer zu lösen ", da P eine Teilmenge von NP ist und der Beweis von P! = NP nicht unbedingt besagt Alles darüber, welche Probleme in NP, die nicht NP-vollständig sind, tatsächlich in P. sind
Millie Smith
88
  1. Ein Ja-oder-Nein-Problem liegt in P ( P- Olynomzeit) vor, wenn die Antwort in Polynomzeit berechnet werden kann.
  2. Ein Ja-oder-Nein-Problem liegt in NP ( N on-deterministische P- Olynomzeit) vor, wenn eine Ja-Antwort in der Polynomzeit verifiziert werden kann.

Intuitiv können wir sehen, dass wenn ein Problem in P ist , es in NP ist . Bei einer möglichen Antwort auf ein Problem in P können wir die Antwort überprüfen, indem wir die Antwort einfach neu berechnen.

Weniger offensichtlich und viel schwieriger zu beantworten ist, ob alle Probleme in NP in P sind . Bedeutet die Tatsache, dass wir eine Antwort in Polynomzeit verifizieren können, dass wir diese Antwort in Polynomzeit berechnen können?

Es gibt eine große Anzahl von wichtigen Problemen , die dafür bekannt sind NP - vollständig (im Grunde, wenn all diese Probleme nachweislich in seine P , dann allen NP - Problemen in seine nachweislich P ). Wenn P = NP ist , haben alle diese Probleme nachweislich eine effiziente Lösung (Polynomzeit).

Die meisten Wissenschaftler glauben, dass P ! = NP . Es wurde jedoch noch kein Beweis für P = NP oder P ! = NP erbracht . Wenn jemand einen Beweis für eine der beiden Vermutungen vorlegt, gewinnt er 1 Million US-Dollar .

Derek Park
quelle
23

Um die einfachste Antwort zu geben, die ich mir vorstellen kann:

Angenommen, wir haben ein Problem, das eine bestimmte Anzahl von Eingaben erfordert und verschiedene mögliche Lösungen hat, die das Problem für bestimmte Eingaben lösen können oder nicht. Ein logisches Puzzle in einem Puzzle-Magazin wäre ein gutes Beispiel: Die Eingaben sind die Bedingungen ("George lebt nicht im blauen oder grünen Haus"), und die mögliche Lösung ist eine Liste von Aussagen ("George lebt im gelben Haus" Haus, baut Erbsen an und besitzt den Hund "). Ein berühmtes Beispiel ist das Problem des reisenden Verkäufers: Angesichts einer Liste von Städten und der Zeiten, um von einer Stadt zu einer anderen zu gelangen, und eines Zeitlimits wäre eine mögliche Lösung eine Liste von Städten in der Reihenfolge, in der der Verkäufer sie besucht, und es würde funktionieren, wenn die Summe der Reisezeiten unter dem Zeitlimit wäre.

Ein solches Problem liegt bei NP vor, wenn wir eine mögliche Lösung effizient prüfen können, um festzustellen, ob sie funktioniert. Wenn wir beispielsweise eine Liste der Städte angeben, die der Verkäufer in der richtigen Reihenfolge besuchen kann, können wir die Zeiten für jede Reise zwischen den Städten addieren und leicht feststellen, ob sie unter dem Zeitlimit liegen. Ein Problem liegt in P vor, wenn wir effizient eine Lösung finden können, falls es eine gibt.

(Effizient hat hier eine genaue mathematische Bedeutung. Praktisch bedeutet dies, dass große Probleme nicht unangemessen schwer zu lösen sind. Bei der Suche nach einer möglichen Lösung wäre es ineffizient, alle möglichen potenziellen Lösungen oder etwas Ähnliches aufzulisten , während ein effizienter Weg die Suche nach einem viel begrenzteren Satz erfordern würde.)

Daher kann das P = NP-Problem folgendermaßen ausgedrückt werden: Wenn Sie eine Lösung für ein Problem der oben beschriebenen Art effizient überprüfen können, können Sie dann effizient eine Lösung finden (oder beweisen, dass es keine gibt)? Die offensichtliche Antwort lautet "Warum sollten Sie dazu in der Lage sein?", Und genau hier steht die Sache heute. Niemand hat es auf die eine oder andere Weise beweisen können, und das stört viele Mathematiker und Informatiker. Deshalb ist jeder, der die Lösung beweisen kann, für eine Million Dollar von der Claypool Foundation bereit.

Wir gehen im Allgemeinen davon aus, dass P nicht gleich NP ist und dass es keinen allgemeinen Weg gibt, Lösungen zu finden. Wenn sich herausstellen würde, dass P = NP ist, würden sich viele Dinge ändern. Zum Beispiel würde Kryptographie unmöglich werden und damit jede Art von Datenschutz oder Überprüfbarkeit im Internet. Schließlich können wir den verschlüsselten Text und den Schlüssel effizient verwenden und den Originaltext erstellen. Wenn also P = NP ist, können wir den Schlüssel effizient finden, ohne ihn vorher zu kennen. Das Knacken von Passwörtern würde trivial werden. Auf der anderen Seite gibt es ganze Klassen von Planungsproblemen und Ressourcenzuweisungsproblemen, die wir effektiv lösen könnten.

Möglicherweise haben Sie die Beschreibung NP-vollständig gehört. Ein NP-vollständiges Problem ist eines, das (natürlich) NP ist und diese interessante Eigenschaft hat: Wenn es in P ist, ist jedes NP-Problem und somit P = NP. Wenn Sie einen Weg finden könnten, das Problem des Handlungsreisenden oder logische Rätsel aus Puzzlemagazinen effizient zu lösen, könnten Sie alles in NP effizient lösen. Ein NP-vollständiges Problem ist in gewisser Weise die schwierigste Art von NP-Problem.

Wenn Sie also eine effiziente allgemeine Lösungstechnik für ein NP-vollständiges Problem finden oder beweisen können, dass es keine solche gibt, gehören Ihnen Ruhm und Reichtum.

David Thornley
quelle
1
In Ihrem vorletzten Absatz haben Sie "in gewisser Weise die schwierigste Sorte". Sie sollten sagen, NP-vollständig sind die schwierigsten, da sie NP-hart sind.
Grom
1
Ich bin mir nicht sicher, ob das Glück dein sein würde. Die Regierung könnte Ihren Kopf wollen.
Millie Smith
9

Eine kurze Zusammenfassung meines bescheidenen Wissens:

Es gibt einige einfache Rechenprobleme (wie das Finden des kürzesten Pfades zwischen zwei Punkten in einem Diagramm), die ziemlich schnell berechnet werden können (O (n ^ k), wobei n die Größe der Eingabe und k eine Konstante ist (in der) Bei Graphen ist dies die Anzahl der Scheitelpunkte oder Kanten.

Andere Probleme, wie das Finden eines Pfads, der jeden Scheitelpunkt in einem Diagramm kreuzt, oder das Abrufen des privaten RSA-Schlüssels vom öffentlichen Schlüssel, sind schwieriger (O (e ^ n)).

Aber CS Speak sagt, dass das Problem darin besteht, dass wir eine nicht deterministische Turing-Maschine nicht in eine deterministische "konvertieren" können, sondern nicht deterministische endliche Automaten (wie den Regex-Parser) in deterministische Automaten umwandeln können (na ja, Sie kann, aber die Laufzeit der Maschine wird lange dauern). Das heißt, wir müssen jeden möglichen Weg ausprobieren (normalerweise können intelligente CS-Professoren einige ausschließen).

Es ist interessant, weil niemand eine Idee von der Lösung hat. Einige sagen, dass es wahr ist, andere sagen, dass es falsch ist, aber es gibt keinen Konsens. Eine weitere interessante Sache ist, dass eine Lösung für Verschlüsselungen mit öffentlichen / privaten Schlüsseln (wie RSA) schädlich wäre. Sie können sie so einfach brechen, wie es jetzt beim Generieren eines RSA-Schlüssels der Fall ist.

Und es ist ein ziemlich inspirierendes Problem.

Terminus
quelle
1
Das ist nicht ganz richtig - Sie können einen NDTM in einen DTM konvertieren, aber der neue Computer hat eine exponentielle Laufzeit in der Laufzeit des Originals (Sie durchsuchen effektiv zuerst den Zustandsübergangsgraphen des NDTM).
Adam Wright
6

Dem Was und Warum des P =? NP-Teils der Frage kann ich nicht viel hinzufügen, aber in Bezug auf den Beweis. Ein Beweis wäre nicht nur einen zusätzlichen Kredit wert, sondern würde auch eines der Millenniumsprobleme lösen . Kürzlich wurde eine interessante Umfrage durchgeführt, und die veröffentlichten Ergebnisse (PDF) sind in Bezug auf das Thema eines Beweises definitiv lesenswert.

rjzii
quelle
5

Zunächst einige Definitionen:

  • Ein besonderes Problem liegt in P vor, wenn Sie eine Lösung in kürzerer Zeit als n^kbei einigen anderen berechnen können k, wobei ndie Größe der Eingabe ist. Zum Beispiel kann eine Sortierung durchgeführt werden, n log ndie kleiner als ist n^2, sodass die Sortierung eine Polynomzeit ist.

  • Ein Problem liegt in NP vor, wenn es eine ksolche gibt, dass es höchstens eine Größenlösung gibt, n^kdie Sie höchstens rechtzeitig überprüfen können n^k. Nehmen Sie eine dreifarbige Darstellung von Diagrammen: Bei einer gegebenen grafischen Darstellung ist eine dreifarbige Darstellung eine Liste von (Scheitelpunkt-, Farb-) Paaren mit einer Größe, O(n)und Sie können rechtzeitig O(m)(oder O(n^2)) überprüfen, ob alle Nachbarn unterschiedliche Farben haben. Ein Diagramm ist also nur dann dreifarbig, wenn es eine kurze und leicht überprüfbare Lösung gibt.

Eine äquivalente Definition von NP ist "Probleme, die durch eine N ondeterministische Turingmaschine in P olynomialzeit lösbar sind ". Das sagt Ihnen zwar, woher der Name kommt, vermittelt Ihnen jedoch nicht das gleiche intuitive Gefühl dafür, wie NP-Probleme aussehen.

Beachten Sie, dass P eine Teilmenge von NP ist: Wenn Sie eine Lösung in Polynomzeit finden können, gibt es eine Lösung, die in Polynomzeit überprüft werden kann. Überprüfen Sie einfach, ob die angegebene Lösung der gefundenen Lösung entspricht.

Warum ist die Frage P =? NPinteressant? Um das zu beantworten, muss man zuerst sehen, was NP-vollständige Probleme sind. Einfach ausgedrückt,

  • Ein Problem L ist NP-vollständig, wenn (1) L in P ist und (2) ein Algorithmus, der L löst, verwendet werden kann, um jedes Problem L 'in NP zu lösen; Das heißt, wenn eine Instanz von L 'gegeben ist, können Sie eine Instanz von L erstellen, die genau dann eine Lösung hat, wenn die Instanz von L' eine Lösung hat. Formal ist jedes Problem L 'in NP auf L reduzierbar .

Es ist zu beachten, dass die Instanz von L polynomzeitberechnbar sein und eine Polynomgröße in der Größe von L 'haben muss; Auf diese Weise erhalten wir durch Lösen eines NP-vollständigen Problems in Polynomzeit eine Polynomzeitlösung für alle NP-Probleme.

Hier ein Beispiel: Nehmen wir an, wir wissen, dass die Dreifarbigkeit von Graphen ein NP-hartes Problem ist. Wir wollen beweisen, dass die Entscheidung über die Erfüllbarkeit von Booleschen Formeln auch ein NP-schwieriges Problem ist.

Haben Sie für jeden Scheitelpunkt v zwei boolesche Variablen v_h und v_l und die Anforderung (v_h oder v_l): Jedes Paar kann nur die Werte {01, 10, 11} haben, die wir uns als Farbe 1, 2 und 3 vorstellen können.

Für jede Kante (u, v) gilt (u_h, u_l)! = (V_h, v_l). Das ist,

not ((u_h and not u_l) and (v_h and not v_l) or ...) Aufzählung aller gleichen Konfigurationen und Bestimmung, dass keine von beiden der Fall ist.

ANDWenn Sie alle diese Einschränkungen zusammenfassen, erhalten Sie eine Boolesche Formel mit der Polynomgröße ( O(n+m)). Sie können überprüfen, ob die Berechnung auch polynomiell dauert: Sie erledigen einfache O(1)Aufgaben pro Scheitelpunkt und pro Kante.

Wenn Sie die von mir erstellte Boolesche Formel lösen können, können Sie auch die Diagrammfärbung lösen: Lassen Sie für jedes Variablenpaar v_h und v_l die Farbe von v diejenige sein, die den Werten dieser Variablen entspricht. Durch die Konstruktion der Formel haben Nachbarn nicht die gleichen Farben.

Wenn also die 3-Färbung von Graphen NP-vollständig ist, ist dies auch die Erfüllbarkeit der Booleschen Formel.

Wir wissen, dass die 3-Färbung von Graphen NP-vollständig ist; Historisch gesehen haben wir dies jedoch erfahren, indem wir zuerst die NP-Vollständigkeit der Erfüllbarkeit von Booleschen Schaltkreisen gezeigt und diese dann auf 3-Färbbarkeit reduziert haben (anstatt umgekehrt).

Jonas Kölker
quelle