Remarque: je n'ai pas encore vérifié la réponse avec soin et il manque des parties à écrire. Considérez-le comme un premier brouillon.
Cette réponse s'adresse principalement aux personnes qui ne sont pas des chercheurs en théorie de la complexité ou dans des domaines connexes. Si vous êtes un théoricien de la complexité et que vous avez lu la réponse, veuillez me prévenir si vous remarquez un problème ou si vous avez une idée en vue d'améliorer la réponse.
Où vous pouvez trouver des solutions revendiquées de P vs. NP
- Il y a La page P-contre-NP qui a une liste de ces demandes.
- Les articles prétendant résoudre la question sont régulièrement publiés sur arXiv .
Autres listes sur la façon de ne pas résoudre P vs NP
Lance Fortnow, tu crois donc t'être établi P NP , 2009
Scott Aaronson, Huit signes Une réclamation P - NP prouve que c'est faux , 2010
Polymath page pour le papier de Deolalikar , où la section des lectures supplémentaires contient une belle liste de références sur le problème.
Comment ne pas approcher P vs NP
Permettez-moi de discuter de "comment ne pas aborder P vs NP" non pas dans le sens d'idées qui ne fonctionneront pas, mais dans un sens plus général. P vs. NP est un problème facile à énoncer (voir aussi ma réponse ici ):
NP = P: Pour chaque problème de décision avec un algorithme de vérificateur de temps polynomial, il existe un algorithme de temps polynomial.
ou équivalent
Il existe un algorithme temporel polynomial pour SAT.
SAT peut être remplacé par tout autre problème NP-complet .
.
Souvent, les gens simplifient à l'excès et à la philosophie, et exagèrent l'importance pratique du problème (comme indiqué ci-dessus). Ces déclarations ont souvent pour but de donner une intuition, mais elles ne sauraient en aucun cas se substituer à l'énoncé mathématique du problème.
L'efficacité théorique n'est pas la même chose que la faisabilité dans la pratique.
Permettez-moi d’abord avec des conséquences pratiques exagérées.
I. Il est possible que P = NP mais cela n’aide en pratique à aucun problème!
Disons par exemple que SAT est dans P mais que l'algorithme le plus rapide pour son temps d'exécution est
. Cet algorithme n'est d'aucune utilité pratique.2264n65536+ 22128
II. Il est possible que P NP et nous puissions résoudre efficacement les problèmes liés à NP .≠
Disons par exemple que SAT n'est pas dans P mais a un algorithme avec le temps d'exécution .nlg*lg*n
Pour donner une entrée qui donnerait vous devez utiliser plus d'électrons que l'on pense être dans l'univers. Donc, l'exposant est essentiellement .2lg*n > 62
Le point principal ici est que P est un modèle simple abstrait de calcul efficace, la complexité dans le pire des cas est un modèle simple abstrait d'estimation du coût d'un calcul, etc. Tous ces éléments sont des abstractions, mais personne dans la pratique n'envisagerait un algorithme. comme celui de (I) ci-dessus comme un algorithme efficace vraiment. P est un beau modèle abstrait, il a de belles propriétés, il facilite les problèmes techniques et il est utile. Cependant, comme toute abstraction mathématique, elle cache des détails qui, dans la pratique, peuvent nous intéresser. Il existe différents modèles plus raffinés, mais plus le modèle devient compliqué, moins il est agréable de discuter.
En pratique, l’important pour les gens est de calculer une réponse au problème dans les cas où ils tiennent à utiliser une quantité raisonnable de ressources. Il existe des tâches dépendantes et doivent être prises en compte
Essayer de trouver de meilleurs algorithmes pour des instances pratiques de problèmes difficiles à résoudre est une tentative intéressante et utile. Il existe des algorithmes heuristiques de résolution SAT utilisés dans l'industrie et capables de résoudre des instances pratiques de SAT avec des millions de variables. Il y a même un concours international SAT .
(Mais il existe également de petites instances concrètes dans lesquelles tous ces algorithmes échouent et échouent assez mal, nous pouvons en fait prouver que tous les solveurs SAT modernes et ultramodernes prennent un temps exponentiel pour résoudre des instances simples comme le principe de Pigeonhole propositionnel .)
Gardez à l'esprit que l' exactitude et la durée d'exécution des programmes ne peuvent pas être obtenues simplement en exécutant le programme sur des instances . Peu importe combien de fois vous essayez, aucun montant n'est suffisant. Il y a une infinité d'intrants possibles et vous devez montrer l'exactitude et l'efficacité (le temps d'exécution est polynomial) du programme pour chacun d'entre eux. En bref, vous avez besoin d’une preuve mathématique d’exactitude et d’efficacité. Si vous ne savez pas ce qu'est une preuve mathématique, vous devez d'abord apprendre quelques notions de base en mathématiques (lire un manuel de mathématiques / combinatoire / théorie des graphes discrète, il s'agit d'un bon sujet pour en savoir plus sur ce qui est considéré comme une preuve mathématique).
Faites également attention aux autres affirmations sur P vs NP et aux conséquences de ses réponses. De telles revendications sont souvent basées sur des simplifications similaires.
Les théoriciens de la complexité ne se soucient pas vraiment d'une réponse à P vs NP!
J'ai exagéré un peu. Bien sûr, nous nous soucions d’une réponse à P vs. NP. Mais nous nous en soucions dans un contexte. P vs. NP est notre problème phare mais ce n'est pas le but ultime. C'est un problème facile à énoncer, qui fait appel à de nombreuses idées fondamentales. Il est utile pour expliquer le type de questions qui nous intéresse aux personnes qui ne sont pas familières avec le sujet. Mais nous ne cherchons pas une réponse un peu oui / non à la question.
Nous cherchons à mieux comprendre la nature du calcul efficace . Nous pensons que la résolution de la question s’accompagnera d’une telle compréhension et c’est la véritable raison pour laquelle nous nous en soucions. Cela fait partie d'un énorme corpus de recherche. Si vous voulez avoir un aperçu de ce que nous avons déjà, regardez un bon manuel de théorie de la complexité, par exemple Arora et Barak, « Théorie de la complexité: une approche moderne » ( version préliminaire ).
Supposons que quelqu'un dispose d'une preuve complètement formelle chiffrée de P NP et que nous pouvons en vérifier l'exactitude avec un degré de confiance très élevé en sélectionnant et en déchiffrant quelques éléments de la preuve (voir Théorème Zero-Knowledge Proof et PCP ). . Donc, nous pouvons vérifier la réclamation avec une probabilité d'erreur inférieure à celle d'un météore qui frappe notre maison, nous sommes tout à fait sûrs que la preuve est correcte et P = NP, mais nous ne connaissons pas la preuve. Cela ne créera pas beaucoup de satisfaction ou d’excitation pour nous. La preuve formelle elle-même ne sera pas aussi satisfaisante. Ce que nous recherchons n'est pas une preuve formelle, nous cherchons à comprendre.≠
En bref, du point de vue d'un théoricien de la complexité
P vs. NP n'est pas un casse-tête avec une réponse oui / non. Nous cherchons une réponse à P vs. NP car nous pensons que cela nous permettra de mieux comprendre la nature du calcul efficace. Une réponse sans avancée majeure dans notre compréhension n’est pas très intéressante.
Trop souvent, des non-experts ont réclamé des solutions pour P contre NP, et ces réclamations souffrent généralement de problèmes qu’ils n’auraient pas résolus s’ils lisaient simplement un manuel standard sur la théorie de la complexité.
Problèmes courants P = NP
Les affirmations de P = NP semblent être plus courantes. Je pense que ce qui suit est le type le plus commun. Quelqu'un a une idée, écrit un programme et le teste sur quelques instances. Il pense que le temps est polynomial et qu'il résout correctement un problème NP-complet. Comme je l'ai expliqué ci-dessus, aucun test ne montrera P = NP. P = NP nécessite une preuve mathématique , pas seulement un programme qui semble résoudre un problème NP-complet en temps polynomial.
Ces tentatives souffrent généralement de l'un des deux problèmes suivants:
I. l'algorithme n'est pas vraiment polynomial.
II. l'algorithme ne résout pas toutes les instances correctement.
Signes qu'un argument P NP n'est pas correct≠
[à écrire]
Comment vérifier que votre algorithme ne fonctionne pas vraiment
Vous ne pouvez pas montrer que votre algorithme fonctionne correctement en testant. Mais vous pouvez montrer que cela ne fonctionne pas correctement en testant! Voici comment vous pouvez vous assurer que votre algorithme n’est pas correct si vous êtes prêt à travailler.
Commencez par écrire un programme permettant de convertir les instances de SAT (au format CNF standard) en un problème NP-difficile que vous résolvez. La SAT est l’un des problèmes NP-difficiles les plus étudiés et il est généralement facile de passer d’un autre problème à la SAT. Deuxièmement, prenons les exemples avec lesquels les solveurs SAT à la pointe de la technologie ont des difficultés (par exemple, prenons les exemples de la concurrence SAT) et transmettez-les à votre algorithme pour voir comment il fonctionne. Essayez des instances dures connues comme le principe de pigeonhole propositionnel (et ne trichez pas en les codant en tant que cas spéciaux), des instances cryptographiques (comme les défis d'affacturage RSA ), des instances aléatoires k-SAT près du seuil , etc.
De même, vous pouvez vérifier que votre algorithme n'est pas efficace. Par exemple, si vous pensez que le temps d'exécution de votre algorithme n'est pas mais qu'il faut des jours pour résoudre une instance de disons de taille 1000. Corrigez la limite supérieure polynomiale de temps d'exécution que vous pensez que votre algorithme a. Prenez les instances et estimez le temps que votre algorithme prendra pour les résoudre et vérifiez si elles correspondent à vos estimations.10 n2
Comment vérifier votre idée algorithmique P = NP ne peut pas fonctionner
Si vous faites cela, vous serez à peu près sûr que votre algorithme ne fonctionnera pas (s'il fonctionne mieux que les solveurs SAT à la pointe de la technologie, participez au prochain concours et de nombreuses personnes seraient intéressées par l'étude de votre algorithme et de vos idées).
Maintenant, vous savez que cela ne fonctionne pas vraiment, mais cela ne suffit pas. Tu veux savoir pourquoi,
la raison pour laquelle mon algorithme ne fonctionne pas est un petit problème qui peut être corrigé ou existe-t-il une raison fondamentale pour laquelle il ne peut pas fonctionner?
Parfois, le problème de l'algorithme est simple et on peut identifier conceptuellement ce qui ne va pas. Le meilleur résultat est que vous comprenez la raison pour laquelle votre idée ne peut pas fonctionner. Souvent, ce n'est pas le cas, votre idée ne fonctionne pas mais vous ne pouvez pas comprendre pourquoi. Dans ce cas, gardez à l'esprit:
Comprendre pourquoi une idée ne peut pas fonctionner peut être plus difficile que de résoudre P vs NP!
Si vous parvenez à formaliser suffisamment votre idée, vous pourrez peut-être prouver que certaines idées sont limitées (par exemple, certains résultats indiquent qu'une formalisation particulière de l'algorithme glouton ne peut pas résoudre les problèmes NP-complets). Cependant, c'est encore plus difficile, et vous n'avez pas beaucoup de chance si vous n'avez pas lu un manuel de théorie de la complexité standard.
Parfois, il n’ya même pas une idée conceptuelle claire de la raison pour laquelle l’algorithme devrait fonctionner, c’est-à-dire qu’il est basé sur des heuristiques mal comprises . Si vous n'avez pas une idée conceptuelle claire de la raison pour laquelle votre algorithme devrait fonctionner, vous n'aurez peut-être pas beaucoup de chance de comprendre pourquoi il ne fonctionne pas!
Problèmes courants liés aux revendications de P NP≠
Bien que la plupart des experts pensent que P NP est plus probable que P = NP, de telles affirmations semblent moins fréquentes. La raison en est que la démonstration des limites inférieures semble être une tâche plus ardue que la conception d’algorithmes (mais souvent, prouver que les limites inférieures et les limites supérieures sont intrinsèquement liées ).≠
Problème 1: l'auteur ne connaît pas la définition de P et NP ou, pire encore, ne comprend pas ce qu'est une preuve mathématique. Parce que l'auteur manque de formation mathématique de base, il ne comprend pas quand on lui dit que ce qu'il présente n'est pas une preuve (par exemple, les étapes ne suivent pas les précédentes).
Numéro 2: l'auteur confond "on ne sait pas comment" avec "l'impossibilité mathématique". Par exemple, ils font diverses hypothèses injustifiées et lorsqu'on leur demande "pourquoi cette affirmation est vraie?" ils répondent "comment cela peut-il être faux?". L’un des plus courants est de supposer que tout programme qui résout le problème doit passer par des étapes particulières, par exemple, il doit calculer des valeurs intermédiaires particulières, car il ne peut penser à une autre façon de résoudre le problème.
[à compléter]
Signes qu'un argument P NP n'est pas correct≠
[à écrire]
Comment vérifier votre idée de NP P ne peut pas fonctionner≠
Si une revendication ne souffre pas de ces problèmes fondamentaux, son rejet devient plus difficile. Au premier niveau, on peut trouver une étape incorrecte dans l'argument. La réponse typique de l'auteur est que je peux résoudre ce problème et que cela peut continuer. Comme pour les solutions P = NP, il est souvent très difficile de trouver un problème fondamental avec une idée qui peut montrer qu’elle ne peut pas fonctionner, en particulier lorsque l’idée elle-même est informelle.
Dans le meilleur des cas, si nous pouvons formaliser l’idée et identifier l’obstacle qui montre que l’idée ne peut pas fonctionner, nous avons prouvé un nouveau résultat de barrière (c’est ainsi que les tentatives pour prouver que P NP utilise des limites inférieures du circuit mènent à la barrière Natural Proofs ).≠