it-swarm.com.de

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

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 Gutschriften bitte einen Beweis für die Richtigkeit oder Falschheit der Aussage posten. :)

222
raldi

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

Definitionen:

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

  • Komplexität ist die Zeit, die in der Anzahl der Operationen gemessen wird, die in Abhängigkeit von der Anzahl der Datenelemente benötigt werden.

  • Operation ist alles, was als Grundoperation für eine bestimmte Aufgabe Sinn macht. Zur Sortierung dient die Grundoperation als Vergleich. Bei der Matrixmultiplikation ist die Grundoperation die Multiplikation zweier Zahlen.

Nun stellt sich die Frage, was deterministisch vs. nicht deterministisch bedeutet. 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 mit diskreten Zellen, in die eine endliche Menge von Symbolen geschrieben und gelesen werden kann. Das TM befindet sich zu einem bestimmten Zeitpunkt in einem seiner Zustände und untersucht eine bestimmte Zelle auf dem Band. Abhängig davon, was aus dieser Zelle gelesen wird, kann ein neues Symbol in diese Zelle geschrieben, das Band um eine Zelle vorwärts oder rückwärts bewegt und in einen anderen Zustand versetzt werden. Dies wird als Zustandsübergang bezeichnet. Erstaunlicherweise können Sie durch sorgfältiges Konstruieren von Zuständen und Übergängen ein TM entwerfen, das jedem Computerprogramm entspricht, das geschrieben werden kann. Aus diesem Grund wird es als theoretisches Modell verwendet, um zu beweisen, was Computer können und was nicht.

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 haben, d.h. e. es können mehrere möglichkeiten gleichzeitig geprüft werden. Dies ähnelt dem Laichen mehrerer Threads. Der Unterschied besteht darin, dass ein nicht deterministisches TM so viele "Threads" erzeugen kann, wie es will, während auf einem realen Computer nur eine bestimmte Anzahl von Threads gleichzeitig ausgeführt werden kann (gleich der Anzahl der CPUs). In Wirklichkeit sind Computer im Grunde deterministische TMs mit endlichen Bändern. Andererseits kann ein nicht deterministisches TM physikalisch nicht realisiert werden, außer vielleicht mit einem Quantencomputer.

Es wurde bewiesen, 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 eine Polynomzeit benötigt, man ein deterministisches TM aufbauen kann, das dasselbe Problem auch in der Polynomzeit lösen würde. Bisher konnte niemand zeigen, dass dies möglich ist, aber es konnte auch niemand 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 kommt mit einer Polynom-Zeit-Lösung für ein NP-vollständiges Problem, die auch eine Polynom-Zeit-Lösung für jedes NP Problem geben wird. Somit würde das beweisen, dass P = NP. Umgekehrt, wenn Würde jemand beweisen, dass P! = NP, dann wären wir sicher, dass es keine Möglichkeit gibt, ein NP in polynomialer Zeit 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 als wahr erscheinen lässt.
Momentan kann in der Praxis jedes Problem, das beim nicht deterministischen TM eine Polynomzeit benötigt, auf einem deterministischen TM oder auf einem herkömmlichen Computer nur in exponentieller Zeit gelöst werden.
Die einzige Möglichkeit, das Problem der Wahrheitszuweisung zu lösen, besteht darin, zwei Möglichkeiten auszuprobieren.

347
Dima
  1. Ein Ja-oder-Nein-Problem liegt in [~ # ~] p [~ # ~] ( [~ # ~] p [~ # ~ ] olynomial time), wenn die Antwort in Polynomialzeit berechnet werden kann.
  2. Ein Ja-oder-Nein-Problem liegt in [~ # ~] np [~ # ~] ( [~ # ~] n [~ # ~ ] on-deterministic [~ # ~] p [~ # ~] olynomial time) wenn eine Ja-Antwort verifiziert werden kann = in Polynomzeit.

Intuitiv können wir sehen, dass, wenn ein Problem in [~ # ~] p [~ # ~] ist, es in [~ # ~ ist ] np [~ # ~] . Bei einer möglichen Antwort für ein Problem in [~ # ~] p [~ # ~] können wir die Antwort überprüfen, indem wir sie einfach neu berechnen.

Weniger offensichtlich und viel schwieriger zu beantworten ist, ob alle Probleme in [~ # ~] np [~ # ~] in [~ # ~] p [~ # ~] . Bedeutet die Tatsache, dass wir eine Antwort in Polynomialzeit verifizieren können, dass wir diese Antwort in Polynomialzeit berechnen können?

Es gibt eine große Anzahl wichtiger Probleme, von denen bekannt ist, dass sie [~ # ~] np [~ # ~] - vollständig sind (im Grunde genommen, wenn sich herausstellt, dass diese Probleme vorliegen) [~ # ~] p [~ # ~] , dann all [~ # ~] np [~ # ~] Probleme treten nachweislich in [~ # ~] p [~ # ~] auf. Wenn [~ # ~] p [~ # ~] = [~ # ~] np [~ # ~] , dann Alle diese Probleme haben nachweislich eine effiziente (polynomielle) Lösung.

Die meisten Wissenschaftler glauben, dass [~ # ~] p [~ # ~] ! = [~ # ~] np [~ # ~] . Es wurde jedoch noch kein Beweis für entweder [~ # ~] p [~ # ~] = [~ # ~] np [~ # ~] oder [~ # ~] p [~ # ~] ! = [~ # ~] np [~ # ~ ] . Wenn jemand einen Beweis für eine der beiden Vermutungen vorlegt, er wird 1 Million US-Dollar gewinnen .

79
Derek Park

Um die einfachste Antwort zu geben, die mir einfällt:

Angenommen, wir haben ein Problem, das eine bestimmte Anzahl von Eingaben akzeptiert, und es gibt verschiedene mögliche Lösungen, die das Problem für bestimmte Eingaben möglicherweise lösen 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 Handlungsreisenden: Wenn man eine Liste der Städte und die Zeit, die benötigt wird, um von einer Stadt zu einer anderen zu gelangen, sowie ein Zeitlimit hat, wäre eine Liste der Städte in der Reihenfolge, in der der Verkäufer sie besucht, eine mögliche Lösung es würde funktionieren, wenn die Summe der Reisezeiten kleiner als das Zeitlimit wäre.

Ein solches Problem liegt darin, NP) ob wir eine mögliche Lösung effizient prüfen können, um festzustellen, ob sie funktioniert. Wenn wir beispielsweise eine Liste von Städten für den Verkäufer in der angegebenen Reihenfolge angeben, können wir die aufaddieren Zeiten für jede Reise zwischen Städten und leicht zu sehen, ob es unter dem Zeitlimit ist.

(Effizient hat hier eine präzise 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 Lösungen aufzulisten, oder etwas in der Nähe davon , während ein effizienter Weg das Durchsuchen einer viel engeren Menge 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 das ist heute der Stand der Dinge. Niemand hat es auf die eine oder andere Weise beweisen können, und das stört viele Mathematiker und Informatiker. Deshalb hat jeder, der die Lösung beweisen kann, Anspruch auf eine Million Dollar von der Claypool Foundation.

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, würden sich viele Dinge ändern. Beispielsweise würde eine Kryptographie unmöglich 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 eine ganze Reihe von Planungs- und Ressourcenzuweisungsproblemen, die wir effektiv lösen könnten.

Möglicherweise haben Sie die Beschreibung NP-complete gehört. Ein NP-vollständiges Problem ist eines, das NP (natürlich)) ist und diese interessante Eigenschaft hat: Wenn es in P ist, ist jedes NP Problem, und so P = NP. Wenn Sie einen Weg finden könnten, das Travelling Salesman-Problem oder logische Rätsel aus Rätselzeitschriften 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 NP Problem.

Wenn Sie also eine effiziente allgemeine Lösung für ein NP-vollständiges Problem finden oder nachweisen können, dass es keine solche gibt, sind Ruhm und Reichtum Ihre Sache.

23
David Thornley

Eine kurze Zusammenfassung meiner bescheidenen Kenntnisse:

Es gibt einige einfache Berechnungsprobleme (wie das Finden des kürzesten Pfades zwischen zwei Punkten in einem Graphen), die recht schnell berechnet werden können (O (n ^ k), wobei n die Größe der Eingabe und k eine Konstante ist (im Bei Diagrammen ist es 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 "umwandeln" können. Wir können jedoch nicht deterministische endliche Automaten (wie den Regex-Parser) in deterministische Automaten (na ja, Sie) umwandeln kann, aber die Laufzeit der Maschine wird lange dauern). Das heißt, wir müssen jeden möglichen Weg ausprobieren (normalerweise können kluge CS-Professoren einige ausschließen).

Es ist interessant, weil niemand überhaupt eine Idee von der Lösung hat. Einige sagen, es ist wahr, andere sagen, es ist falsch, aber es gibt keinen Konsens. Eine andere 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 knacken, wie es jetzt der Fall ist, einen RSA-Schlüssel zu generieren.

Und es ist ein ziemlich inspirierendes Problem.

9
terminus

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. Eine interessante Umfrage wurde kürzlich durchgeführt und die veröffentlichten Ergebnisse (PDF) sind in Bezug auf das Thema eines Beweises definitiv lesenswert.

6
rjzii

Erstens einige Definitionen:

  • Ein besonderes Problem tritt in P auf, wenn Sie für einige k eine Lösung berechnen können, die kürzer als n^k Ist, wobei n die Größe der Eingabe ist. Beispielsweise kann das Sortieren in n log n Durchgeführt werden, was weniger als n^2 Ist, so dass das Sortieren eine polynomielle Zeit ist.

  • Ein Problem liegt in NP wenn es eine k gibt, so dass es eine Lösung mit einer Größe von höchstens n^k Gibt, die Sie höchstens rechtzeitig überprüfen können n^k. Nehmen Sie 3-Farben von Graphen: Bei einem Graphen ist eine 3-Farben-Liste von (Scheitelpunkt-, Farb-) Paaren mit der Größe O(n) und Sie können dies in der Zeit O(m) (oder O(n^2)) Gibt an, 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 lösbar durch eine N ondeterministische Turingmaschine in P olynomial time ". Dies sagt Ihnen zwar, woher der Name kommt, vermittelt Ihnen aber nicht das gleiche intuitive Gefühl, wie die NP Probleme sind.

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 verifiziert werden kann. Überprüfen Sie einfach, ob die angegebene Lösung der gefundenen Lösung entspricht.

Warum ist die Frage P =? NP Interessant? 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, kann verwendet werden, um jedes Problem L 'in NP zu lösen; Wenn eine Instanz von L 'gegeben ist, können Sie eine Instanz von L mit einer Lösung erstellen, wenn und nur wenn die Instanz von L' eine Lösung hat. Formal gesehen ist jedes Problem L 'in NP reduzierbar zu L.

Man beachte, dass die Instanz von L zur Polynomzeit berechenbar 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 Lösung in Polynomzeit für alle NP Probleme.

Hier ist ein Beispiel: Angenommen, wir wissen, dass das Dreifarben von Diagrammen ein NP-schwieriges 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.

Stellen Sie für jede Kante (u, v) die Anforderung (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 der Bedingung, dass keine von beiden der Fall ist.

AND 'Wenn Sie alle diese Bedingungen zusammenfassen, erhalten Sie eine Boolesche Formel mit einer Polynomgröße (O(n+m)). Sie können überprüfen, ob das Berechnen auch polynomielle Zeit benötigt: Sie erledigen O(1) -Dinge 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: Für jedes Variablenpaar v_h und v_l sei die Farbe von v diejenige, die mit den Werten dieser Variablen übereinstimmt. Durch die Konstruktion der Formel werden Nachbarn nicht die gleichen Farben haben.

Wenn also die 3-Färbung von Graphen NP-vollständig ist, ist auch die Boolesche Formel erfüllbar.

Wir wissen, dass die dreifarbige Darstellung von Diagrammen NP-vollständig ist. Historisch gesehen haben wir dies jedoch erkannt, indem wir zuerst die NP-Vollständigkeit der Booleschen Schaltungserfüllbarkeit zeigten und diese dann auf die 3-Färbbarkeit reduzierten (anstatt umgekehrt).

5
Jonas Kölker