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. :) :)
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. :) :)
Antworten:
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.
quelle
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 .
quelle
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.
quelle
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.
quelle
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.
quelle
Zunächst einige Definitionen:
Ein besonderes Problem liegt in P vor, wenn Sie eine Lösung in kürzerer Zeit als
n^k
bei einigen anderen berechnen könnenk
, wobein
die Größe der Eingabe ist. Zum Beispiel kann eine Sortierung durchgeführt werden,n log n
die kleiner als istn^2
, sodass die Sortierung eine Polynomzeit ist.Ein Problem liegt in NP vor, wenn es eine
k
solche gibt, dass es höchstens eine Größenlösung gibt,n^k
die Sie höchstens rechtzeitig überprüfen könnenn^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 rechtzeitigO(m)
(oderO(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 =? NP
interessant? Um das zu beantworten, muss man zuerst sehen, was NP-vollständige Probleme sind. Einfach ausgedrückt,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,
AND
Wenn 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 einfacheO(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).
quelle