web-dev-qa-db-fra.com

Qu'est-ce que "P = NP?", Et pourquoi est-ce une question si célèbre?

La question de savoir si P = NP est peut-être la plus célèbre de toutes les sciences informatiques. Qu'est-ce que ça veut dire? Et pourquoi est-ce si intéressant?

Oh, et pour plus de crédit, postez une preuve de la vérité ou du mensonge de la déclaration. :)

222
raldi

P représente le temps polynomial. NP représente le temps polynomial non déterministe.

Définitions:

  • temps polynomial signifie que la complexité de l'algorithme est de O (n ^ k), où n est la taille de vos données (par exemple, le nombre d'éléments dans une liste à trier), et k est une constante .

  • Complexité est le temps mesuré en nombre d'opérations qu'il faudrait, en fonction du nombre d'éléments de données.

  • Operation est ce qui a du sens comme opération de base pour une tâche particulière. Pour trier l’opération de base est une comparaison. Pour la multiplication matricielle, l'opération de base est la multiplication de deux nombres.

La question est maintenant de savoir ce que signifie déterministe et non déterministe. Il existe un modèle de calcul abstrait, un ordinateur imaginaire appelé machine de Turing (TM). Cette machine a un nombre fini d'états et une bande infinie, qui comporte des cellules discrètes dans lesquelles un ensemble fini de symboles peut être écrit et lu. A tout moment, le TM se trouve dans l'un de ses états et examine une cellule particulière de la bande. Selon ce qu'il lit dans cette cellule, il peut écrire un nouveau symbole dans cette cellule, déplacer la bande d'une cellule vers l'avant ou vers l'arrière et passer à un état différent. Ceci s'appelle une transition d'état. Étonnamment, en construisant avec soin les états et les transitions, vous pouvez concevoir une MT, qui équivaut à tout programme informatique pouvant être écrit. C'est pourquoi il est utilisé comme modèle théorique pour prouver ce que les ordinateurs peuvent et ne peuvent pas faire.

Il y a deux types de MT qui nous concernent ici: déterministe et non déterministe. Un TM déterministe n'a qu'une transition de chaque état pour chaque symbole lu sur la bande. Une MT non déterministe peut avoir plusieurs transitions de ce type: i. e. il est capable de vérifier plusieurs possibilités simultanément. C'est un peu comme créer plusieurs threads. La différence est qu’une MT non déterministe peut générer autant de "threads" qu’elle le souhaite, alors que sur un ordinateur réel, seul un nombre spécifique de threads peut être exécuté à la fois (égal au nombre de CPU). En réalité, les ordinateurs sont fondamentalement des MT déterministes avec des bandes finies. D'autre part, une MT non déterministe ne peut pas être réalisée physiquement, sauf peut-être avec un ordinateur quantique.

Il a été prouvé que tout problème pouvant être résolu par une MT non déterministe peut être résolu par une MT déterministe. Cependant, on ne sait pas combien de temps cela va prendre. La déclaration P = NP signifie que si un problème prend du temps polynomial sur une MT non déterministe, alors on peut construire une MT déterministe qui résoudrait le même problème également en temps polynomial. Jusqu'à présent, personne n'a été capable de démontrer que cela pouvait être fait, mais personne n'a été capable de prouver que cela ne pouvait pas être fait non plus.

NP-problème complet signifie un NP problème X, tel que tout NP problème Y peut être réduit à X par une réduction polynomiale. Cela implique que si propose une solution polynomiale à un problème NP-complet, qui donnera également une solution polynomiale à tout problème NP. Cela prouverait donc que P = NP. Inversement, si tout le monde devait prouver que P! = NP, alors nous serions certains qu'il n'y a aucun moyen de résoudre un problème NP en temps polynomial sur un ordinateur conventionnel.

Un exemple de problème NP-complet est le problème de trouver une affectation de vérité qui rendrait une expression booléenne contenant n variables.
Pour le moment, dans la pratique, tout problème prenant du temps polynomial sur une MT non déterministe ne peut être résolu que de manière exponentielle sur une MT déterministe ou sur un ordinateur conventionnel.
Par exemple, le seul moyen de résoudre le problème de l’affectation de la vérité est d’essayer deux possibilités.

347
Dima
  1. Un problème de type oui ou non se trouve dans [~ # ~] p [~ # ~] ( [~ # ~] p [~ # ~] heure olynomiale) si la réponse peut être calculée en temps polynomial.
  2. Un problème de type oui ou non se trouve dans [~ # ~] np [~ # ~] ( [~ # ~] n [~ # ~] sur déterministe [~ # ~] p [~ # ~] temps olynomial) si la réponse est oui peut être vérifié en temps polynomial.

Intuitivement, nous pouvons voir que si un problème est dans [~ # ~] p [~ # ~] , alors il est dans [~ # ~] np [~ # ~] . Étant donné la réponse potentielle à un problème dans [~ # ~] p [~ # ~] , nous pouvons vérifier la réponse en recalculant simplement la réponse.

Il est moins évident et beaucoup plus difficile de répondre si tous les problèmes de [~ # ~] np [~ # ~] sont présents [~ # ~] p [~ # ~] . Le fait de pouvoir vérifier une réponse en temps polynomial signifie-t-il que nous pouvons calculer cette réponse en temps polynomial?

Il existe un grand nombre de problèmes importants connus [~ # ~] np [~ # ~] - complets (le cas échéant, les problèmes sont prouvés être [~ # ~] p [~ # ~] , puis tous [~ # ~] np [~ # ~] il est prouvé que les problèmes se trouvent dans [~ # ~] p [~ # ~] ). Si [~ # ~] p [~ # ~] = [~ # ~] np [~ # ~ ] , il sera prouvé que tous ces problèmes ont une solution efficace (temps polynomial).

La plupart des scientifiques pensent que [~ # ~] p [~ # ~] ! = [~ # ~] np [~ # ~] . Cependant, aucune preuve n'a encore été établie pour [~ # ~] p [~ # ~] = [ ~ # ~] np [~ # ~] ou [~ # ~] p [~ # ~] ! = [~ # ~] np [~ # ~] . Si quelqu'un fournit une preuve pour l'une ou l'autre hypothèse, ils gagneront 1 million de dollars américains .

79
Derek Park

Pour donner la réponse la plus simple à laquelle je puisse penser:

Supposons que nous ayons un problème qui prend un certain nombre d'entrées et que nous ayons diverses solutions potentielles, qui peuvent ou non résoudre le problème pour des entrées données. Un casse-tête logique dans un magazine de casse-tête serait un bon exemple: les entrées sont les conditions ("George ne vit pas dans la maison bleue ou verte"), et la solution potentielle est une liste d'énoncés ("George vit dans la jaune" maison, cultive des pois et possède le chien "). Un exemple célèbre est le problème du vendeur itinérant: à partir d’une liste de villes, indiquant le temps nécessaire pour se rendre d’une ville à l’autre, et une limite dans le temps, une solution potentielle serait une liste des villes dans l’ordre dans lequel le vendeur les visite, et cela fonctionnerait si la somme des temps de trajet était inférieure à la limite de temps.

Un tel problème est NP si nous pouvons vérifier efficacement une solution potentielle pour voir si elle fonctionne. Par exemple, étant donné la liste des villes que le vendeur doit visiter dans l’ordre, nous pouvons additionner la temps pour chaque trajet entre les villes, et voyez facilement si le temps est compté.Un problème est en P si nous pouvons efficacement trouver une solution, le cas échéant.

(Efficacement, ici, a une signification mathématique précise. Concrètement, cela signifie que les grands problèmes ne sont pas excessivement difficiles à résoudre. Lorsque vous recherchez une solution possible, il serait inefficace de répertorier toutes les solutions possibles, ou quelque chose de proche. , alors qu’un moyen efficace nécessiterait de chercher un ensemble beaucoup plus limité).

Par conséquent, le problème P = NP peut être exprimé de la manière suivante: Si vous pouvez vérifier efficacement une solution à un problème du type décrit ci-dessus, pouvez-vous trouver une solution (ou prouver qu'il n'y en a pas) efficacement? La réponse évidente est "Pourquoi devriez-vous pouvoir le faire?", Et c'est à peu près ce qui se passe aujourd'hui. Personne n'a été capable de le prouver d'une manière ou d'une autre et cela dérange beaucoup de mathématiciens et d'informaticiens. C'est pourquoi tous ceux qui peuvent prouver que la solution est à la hauteur d'un million de dollars de la Fondation Claypool.

Nous supposons généralement que P n'est pas égal à NP, qu'il n'y a pas de moyen général de trouver des solutions. S'il s'avérait que P = NP, beaucoup de choses changeraient. Par exemple, la cryptographie deviendrait impossible et entraînerait toute sorte de vie privée ou de vérifiabilité sur Internet. Après tout, nous pouvons efficacement prendre le texte crypté et la clé et produire le texte original. Ainsi, si P = NP, nous pourrions trouver efficacement la clé sans le savoir à l’avance. La fissuration du mot de passe deviendrait triviale. D'autre part, il existe des classes entières de problèmes de planification et d'affectation de ressources que nous pourrions résoudre efficacement.

Vous avez peut-être entendu la description NP-complete. Un problème NP-complet est celui qui est NP (bien sûr) et qui a cette propriété intéressante: s'il est dans P, chaque problème NP est, et ainsi P = NP. Si vous pouviez trouver un moyen de résoudre efficacement le problème du voyageur de commerce, ou des énigmes logiques tirées de magazines de puzzles, vous pourriez résoudre efficacement tout ce qui est en NP. Un problème NP-complet est, en quelque sorte, le plus difficile NP problème.

Donc, si vous pouvez trouver une technique de solution générale efficace pour tout problème NP-complet, ou prouver que cela n’existe pas, la gloire et la fortune vous reviennent.

23
David Thornley

Un bref résumé de mon humble connaissance:

Il existe quelques problèmes de calcul simples (trouver le chemin le plus court entre deux points d’un graphe), qui peuvent être calculés assez rapidement (O (n ^ k), où n est la taille de l’entrée et k est une constante cas des graphes, c’est le nombre de sommets ou d’arêtes)).

D'autres problèmes, tels que trouver un chemin qui traverse tous les sommets d'un graphique ou obtenir la clé privée RSA à partir de la clé publique sont plus difficiles (O (e ^ n)).

Mais CS parle que le problème est que nous ne pouvons pas "convertir" une machine de Turing non déterministe en une machine déterministe. Nous pouvons toutefois transformer des automates finis non déterministes (comme le parseur de regex) en des déterministes (enfin, peut, mais le temps d’exécution de la machine prendra longtemps). Autrement dit, nous devons essayer tous les chemins possibles (généralement, les professeurs CS intelligents peuvent en exclure quelques-uns).

C'est intéressant car personne n'a même idée de la solution. Certains disent que c'est vrai, d'autres disent que c'est faux, mais il n'y a pas de consensus. Une autre chose intéressante est qu’une solution serait néfaste pour les cryptages à clé publique/privée (comme RSA). Vous pourriez les casser aussi facilement que générer une clé RSA est maintenant.

Et c'est un problème assez inspirant.

9
terminus

Je ne peux pas ajouter grand chose au quoi et pourquoi de la partie P =? NP de la question, mais en ce qui concerne la preuve. Non seulement une preuve mériterait un crédit supplémentaire, mais elle résoudrait l'un des problèmes du millénaire . Un sondage intéressant a récemment été mené et les résultats publiés (PDF) valent vraiment la peine d’être lus au sujet d’une épreuve.

6
rjzii

Tout d'abord, quelques définitions:

  • Un problème particulier se trouve dans P si vous pouvez calculer une solution dans le temps inférieure à n^k Pour un certain k, où n représente la taille de l’entrée. Par exemple, le tri peut être effectué dans n log n, Qui est inférieur à n^2. Le tri correspond donc au temps polynomial.

  • Un problème se trouve dans NP s’il existe un k tel qu’il existe une solution de taille au plus n^k Que vous pouvez vérifier au plus tard n^k. Prenez 3 couleurs de graphes: un graphique est une liste de paires (sommets, couleurs) de taille O(n) et vous pouvez vérifier dans le temps O(m) (ou O(n^2)) si tous les voisins ont des couleurs différentes. Ainsi, un graphe ne peut être coloré que s'il existe une solution courte et facilement vérifiable.

Une définition équivalente de NP est "problèmes pouvant être résolus par un N une machine de Turing déterministe dans P olynomial ". Bien que cela vous dise d’où vient le nom, cela ne vous donne pas la même impression intuitive de ce que sont les problèmes NP.

Notez que P est un sous-ensemble de NP: si vous pouvez trouver une solution en temps polynomial, il existe une solution qui peut être vérifiée en temps polynomial - il suffit de vérifier que la solution donnée est égale à celle que vous pouvez trouver.

Pourquoi la question P =? NP Est-elle intéressante? Pour répondre à cette question, il faut d’abord voir quels sont les problèmes NP-complets. Mettre tout simplement,

  • Un problème L est NP-complet si (1) L est dans P, et (2) un algorithme qui résout L peut être utilisé pour résoudre tout problème L 'dans NP; c'est-à-dire, étant donné une instance de L ', vous pouvez créer une instance de L qui a une solution si et seulement si l'instance de L' a une solution. Formellement, chaque problème se situe à NP est réductible à L.

Notez que l'instance de L doit être calculable en temps polynomial et avoir une taille polynomiale, de la taille de L '; Ainsi, résoudre un problème NP-complet en temps polynomial nous donne une solution en temps polynomial à tous NP problèmes.

Voici un exemple: supposons que nous sachions que la coloration en trois couleurs est un problème difficile à résoudre. Nous voulons prouver que décider de la satisfiabilité des formules booléennes est également un problème difficile à résoudre.

Pour chaque sommet v, ayez deux variables booléennes v_h et v_l et l'exigence (v_h ou v_l): chaque paire ne peut avoir que les valeurs {01, 10, 11}, que nous pouvons considérer comme les couleurs 1, 2 et 3.

Pour chaque bord (u, v), exigez que (u_h, u_l)! = (V_h, v_l). C'est,

not ((u_h and not u_l) and (v_h and not v_l) or ...) énumérant toutes les configurations égales et stipulant qu'aucune d'entre elles n'est le cas.

AND 'ensemble, toutes ces contraintes donnent une formule booléenne de taille polynomiale (O(n+m)). Vous pouvez vérifier que le temps de calcul est également polynomial: vous faites directement O(1) choses par sommet et par bord.

Si vous pouvez résoudre la formule booléenne que j'ai créée, vous pouvez également résoudre la coloration des graphes: pour chaque paire de variables v_h et v_l, laissez la couleur de v être celle correspondant aux valeurs de ces variables. En construisant la formule, les voisins n'auront pas les mêmes couleurs.

Par conséquent, si les graphiques en 3 couleurs sont NP-complets, il en va de même pour la formule de formule booléenne.

Nous savons que les graphiques en 3 couleurs sont NP-complets; Cependant, historiquement, nous en sommes venus à le savoir en montrant d'abord le caractère NP-complet de la satisfiabilité du circuit booléen, puis en le réduisant à la 3 colorabilité (au lieu de l'inverse).

5
Jonas Kölker