Hinweis: Ich habe die Antwort noch nicht sorgfältig geprüft und es fehlen noch Teile. Betrachten Sie sie als ersten Entwurf.
Diese Antwort richtet sich hauptsächlich an Personen, die keine Forscher in der Komplexitätstheorie oder verwandten Bereichen sind. Wenn Sie ein Komplexitätstheoretiker sind und die Antwort gelesen haben, lassen Sie es mich bitte wissen, wenn Sie ein Problem bemerken oder eine Idee zur Verbesserung der Antwort haben.
Wo Sie behauptete Lösungen von P gegen NP finden
Andere Listen, wie man P gegen NP nicht löst
Lance Fortnow, Sie glauben also, Sie hätten P verus NP , 2009, erledigt
Scott Aaronson, Acht Zeichen Ein behaupteter PPP-Beweis ist falsch , 2010
Polymath-Seite für Deolalikars Artikel , wo der Abschnitt mit den weiteren Lesungen eine schöne Liste von Referenzen zum Problem enthält.
Wie man sich P vs. NP nicht nähert
Lassen Sie mich diskutieren, "wie man sich P vs. NP nicht nähert ", und zwar nicht im Sinne von Ideen, die nicht funktionieren, sondern im allgemeineren Sinne. P vs. NP ist ein leicht zu formulierendes Problem (siehe auch meine Antwort hier ):
NP = P: Für jedes Entscheidungsproblem mit einem Polynomzeitprüfalgorithmus gibt es einen Polynomzeitalgorithmus.
oder äquivalent
Es gibt einen polynomialen Zeitalgorithmus für SAT.
SAT kann durch jedes andere NP-vollständige Problem ersetzt werden .
.
Oft vereinfachen und überphilosophisieren Menschen das Problem und übertreiben die praktische Bedeutung des Problems (wie oben angegeben). Solche Aussagen sind oft als Anschauung gedacht, ersetzen aber keinesfalls die eigentliche mathematische Aussage über das Problem.
Theoretische Effizienz ist nicht dasselbe wie Machbarkeit in der Praxis.
Lassen Sie mich zunächst mit übertriebenen praktischen Konsequenzen.
I. Es ist möglich, dass P = NP, aber es hilft in der Praxis bei keinem Problem!
2264n65536+22128
≠
nlg∗lg∗n
lg∗n>62
Der Hauptpunkt hierbei ist, dass P ein abstraktes einfaches Modell für eine effiziente Berechnung ist, und dass die Komplexität im schlimmsten Fall ein abstraktes einfaches Modell für die Schätzung der Kosten einer Berechnung ist wie die in (I) oben als effizienter Algorithmus wirklich. P ist ein schönes abstraktes Modell, es hat schöne Eigenschaften, es macht technische Probleme leicht und es ist nützlich. Wie jede mathematische Abstraktion verbirgt sie jedoch Details, die uns in der Praxis interessieren könnten. Es gibt verschiedene weiterentwickelte Modelle, aber je komplizierter das Modell wird, desto weniger schön wäre es, darüber zu streiten.
In der Praxis geht es den Menschen darum, eine Antwort auf das Problem für Fälle zu berechnen , in denen sie Wert auf einen angemessenen Ressourcenverbrauch legen. Es sind aufgabenabhängig und sollten berücksichtigt werden.
Der Versuch, bessere Algorithmen für praktische Fälle von NP-schwierigen Problemen zu finden, ist ein interessantes und würdiges Unterfangen. Es gibt heuristische SAT-Solver-Algorithmen, die in der Industrie verwendet werden und praktische SAT-Instanzen mit Millionen von Variablen lösen können. Es gibt sogar einen internationalen SAT-Wettbewerb .
(Aber es gibt auch kleine konkrete Fälle, in denen alle diese Algorithmen versagen und ganz schlimm versagen. Wir können tatsächlich beweisen, dass alle modernen SAT-Löser exponentiell viel Zeit benötigen, um einfache Fälle wie das Propositional Pigeonhole Principle zu lösen .)
Beachten Sie, dass Korrektheit und Laufzeit von Programmen nicht nur durch Ausführen des Programms auf Instanzen erzielt werden können . Es spielt keine Rolle, wie viele Instanzen Sie versuchen, keine Menge ist ausreichend. Es gibt unendlich viele Eingabemöglichkeiten und Sie müssen für alle die Richtigkeit und Effizienz (dh die Laufzeit ist polynomiell) des Programms nachweisen. Kurz gesagt, Sie benötigen einen mathematischen Beweis für die Richtigkeit und Effizienz. Wenn Sie nicht wissen, was ein mathematischer Beweis ist, sollten Sie zunächst einige Grundkenntnisse in Mathematik erwerben (lesen Sie ein Lehrbuch Diskrete Mathematik / Kombinatorik / Graphentheorie; dies sind gute Themen, um zu erfahren, was als mathematischer Beweis gilt).
Seien Sie auch vorsichtig mit anderen Behauptungen über P vs. NP und der Konsequenz seiner Antworten. Solche Behauptungen beruhen oft auf ähnlichen Vereinfachungen.
Komplexitätstheoretiker interessieren sich nicht wirklich für eine Antwort auf P vs. NP!
Ich habe ein bisschen übertrieben. Natürlich interessiert uns eine Antwort auf P vs. NP. Aber wir kümmern uns darum in einem Kontext. P vs. NP ist unser Hauptproblem, aber es ist nicht das ultimative Ziel. Es ist ein leicht zu formulierendes Problem, es beinhaltet viele grundlegende Ideen, es ist nützlich, um die Art von Fragen, die uns interessieren, Leuten zu erklären, die mit dem Thema nicht vertraut sind. Aber wir suchen keine ein-Bit-Ja / Nein-Antwort auf die Frage.
Wir bemühen uns um ein besseres Verständnis der Art der effizienten Berechnung . Wir glauben, dass die Lösung der Frage mit einem solchen Verständnis einhergeht, und das ist der wahre Grund, warum uns das wichtig ist. Es ist Teil einer Vielzahl von Forschungsarbeiten. Wenn Sie einen Vorgeschmack auf das haben möchten, was wir tun, schauen Sie sich ein gutes Lehrbuch zur Komplexitätstheorie an, z. B. Aroras und Baraks " Komplexitätstheorie: Ein moderner Ansatz " ( Entwurfsversion ).
≠
Kurz gesagt, aus der Perspektive eines Komplexitätstheoretikers
P vs. NP ist kein Puzzle mit einer Ja / Nein-Antwort. Wir suchen nach einer Antwort auf P vs. NP, weil wir glauben, dass dies zu einem besseren Verständnis der Natur effizienter Berechnungen führen wird. Eine Antwort ohne wesentliche Verbesserung unseres Verständnisses ist nicht sehr interessant.
Es hat zu viele Fälle gegeben, in denen Nicht-Experten Lösungen für P vs. NP behaupteten, und diese Behauptungen leiden typischerweise unter Problemen, die sie nicht gemacht hätten, wenn sie nur ein Standardlehrbuch zur Komplexitätstheorie gelesen hätten.
Häufige Probleme P = NP
Die Behauptungen von P = NP scheinen häufiger zu sein. Ich denke, das Folgende ist der häufigste Typ. Jemand hat eine Idee und schreibt ein Programm und testet es an einigen Instanzen. Er glaubt, es sei Polynomzeit und löst ein NP-vollständiges Problem korrekt. Wie ich oben erklärt habe, zeigt keine Testmenge P = NP. P = NP braucht einen mathematischen Beweis , nicht nur ein Programm, das ein NP-vollständiges Problem in der Polynomzeit zu lösen scheint .
Diese Versuche leiden normalerweise unter einem der beiden Probleme:
I. Der Algorithmus ist nicht wirklich polynomial.
II. Der Algorithmus löst nicht alle Instanzen korrekt.
≠
[geschrieben werden]
So stellen Sie sicher, dass Ihr Algorithmus nicht wirklich funktioniert
Sie können durch Testen nicht nachweisen, dass Ihr Algorithmus ordnungsgemäß funktioniert. Aber Sie können zeigen, dass es nicht richtig funktioniert, indem Sie testen! So können Sie sicherstellen, dass Ihr Algorithmus nicht korrekt ist, wenn Sie bereit sind, etwas zu tun.
Schreiben Sie zunächst ein Programm zum Konvertieren von SAT-Instanzen (im Standard-CNF-Format) in das NP-harte Problem, das Sie lösen. SAT ist eines der am häufigsten untersuchten NP-schwierigen Probleme, und die Reduktion von anderen Problemen auf SAT ist normalerweise einfach. Nehmen Sie zweitens die Beispiele, mit denen die modernen SAT-Löser zu kämpfen haben (z. B. die Beispiele aus dem SAT-Wettbewerb), und geben Sie sie an Ihren Algorithmus weiter, um zu sehen, wie Ihr Algorithmus funktioniert. Probieren Sie bekannte harte Instanzen wie das Propositional Pigeonhole Principle (und betrügen Sie nicht, indem Sie sie als Sonderfälle fest codieren), kryptografische Instanzen (wie RSA Factoring Challenges ), zufällige k-SAT-Instanzen in der Nähe des Schwellenwerts usw. aus.
10n2
Wie Sie Ihre algorithmische P = NP- Idee überprüfen können, funktioniert nicht
Wenn Sie dies tun, werden Sie ziemlich sicher sein, dass Ihr Algorithmus nicht funktioniert (wenn er besser als die hochmodernen SAT-Löser funktioniert, nehmen Sie am nächsten Wettbewerb teil und viele Leute wären daran interessiert, Ihren Algorithmus und Ihre Ideen zu studieren).
Jetzt wissen Sie, dass es nicht wirklich funktioniert, aber das ist nicht genug. Sie wollen wissen warum,
Ist der Grund, warum mein Algorithmus nicht funktioniert, ein kleines Problem, das behoben werden kann, oder gibt es einen fundamentalen Grund, warum er nicht funktioniert?
Manchmal ist das Problem mit dem Algorithmus einfach und man kann identifizieren, was konzeptionell falsch war. Das beste Ergebnis ist, dass Sie den Grund verstehen, warum Ihre Idee nicht funktionieren kann. Oft ist es nicht der Fall, Ihre Idee funktioniert nicht, aber Sie können nicht herausfinden, warum. In diesem Fall ist Folgendes zu beachten:
zu verstehen, warum eine Idee nicht funktionieren kann, kann schwieriger sein als das Lösen von P vs. NP!
Wenn Sie Ihre Idee ausreichend formalisieren können, können Sie möglicherweise Einschränkungen bestimmter Ideen nachweisen (z. B. gibt es Ergebnisse, die besagen, dass bestimmte Formalisierungen des Greedy-Algorithmus NP-vollständige Probleme nicht lösen können). Es ist jedoch noch schwieriger, und Sie haben keine großen Chancen, wenn Sie kein Standardlehrbuch zur Komplexitätstheorie gelesen haben.
Manchmal gibt es nicht einmal eine klare konzeptionelle Idee, warum der Algorithmus funktionieren sollte, dh er basiert auf einigen nicht gut verstandenen Heuristiken . Wenn Sie keine klare Vorstellung davon haben, warum Ihr Algorithmus funktionieren sollte, haben Sie möglicherweise keine große Chance, zu verstehen, warum dies nicht der Fall ist!
≠
≠
Problem 1: Der Autor kennt die Definition von P und NP nicht oder versteht noch schlimmer nicht, was ein mathematischer Beweis ist. Da dem Autor die mathematische Grundausbildung fehlt, versteht er nicht, wenn ihm gesagt wird, was er vorlegt, dass dies kein Beweis ist (z. B. folgen die Schritte nicht aus den vorherigen).
Ausgabe 2: Der Autor verwechselt "Wir wissen nicht wie" mit "mathematischer Unmöglichkeit". Zum Beispiel gehen sie von verschiedenen ungerechtfertigten Annahmen aus und werden gefragt, warum diese Aussage wahr ist. sie antworten "wie kann es falsch sein?". Es ist häufig anzunehmen, dass ein Programm, das das Problem löst, bestimmte Schritte ausführen muss, z. B. bestimmte Zwischenwerte berechnen muss, weil es sich keine alternative Lösung für das Problem vorstellen kann.
[zu vervollständigen]
≠
[geschrieben werden]
≠
Wenn eine Forderung nicht unter diesen grundlegenden Problemen leidet, wird die Ablehnung schwieriger. Auf der ersten Ebene kann man einen falschen Schritt im Argument finden. Die typische Antwort des Autors ist, dass ich es reparieren kann und dies hin und her kann weitergehen. Ähnlich wie bei P = NP-Lösungen ist es häufig sehr schwierig, ein grundlegendes Problem mit einer Idee zu finden, das zeigen kann, dass es nicht funktioniert, insbesondere wenn die Idee selbst informell ist.
≠