Dans ma formation en informatique, je remarque de plus en plus que la plupart des problèmes discrets sont NP-complets (au moins), alors que l'optimisation de problèmes continus est presque toujours facilement réalisable, généralement grâce à des techniques de gradient. Y a-t-il des exceptions à cela?
27
Réponses:
Un exemple que j'aime est le problème où, étant donné distincts , décidez si: ∫ π - π cos ( a 1 z ) cos ( a 2 z ) … cos ( a n z )a1,a2,…,an∈N
Cela semble au premier abord comme un problème continu pour évaluer cette intégrale, mais il est facile de montrer que cette intégrale n'est pas nulle s'il existe une partition équilibrée de l'ensemble , donc ce problème intégral est en fait NP-complet.{ a1, … , Unn}
Bien sûr, j'encourage à jouer avec certains outils numériques pour vous convaincre que la plupart (sinon la totalité) des astuces numériques pour évaluer cette intégrale sont vouées à l'échec une fois que devient assez grand.n
la source
Il existe de nombreux problèmes continus de la forme "tester si cette entrée combinatoire peut être réalisée comme une structure géométrique" qui sont complets pour la théorie existentielle des réels , un analogue continu de NP. En particulier, cela implique que ces problèmes sont durs NP plutôt que résolus polynomialement. Les exemples incluent tester si un graphique donné est un graphique de distance unitaire, si un graphique donné peut être dessiné dans le plan avec des bords de segment de ligne droite et au plus un nombre donné de croisements, ou si un arrangement pseudoline donné peut être étiré pour former une ligne arrangement.
Il y a d'autres problèmes continus qui sont encore plus difficiles: par exemple, trouver un chemin le plus court parmi les obstacles polyédriques en 3D est PSPACE-complet (Canny & Reif, FOCS'87).
la source
Bien que cela ne réponde pas exactement à votre question initiale, c'est un exemple (conjectural) d'une sorte de contrepoint philosophique: un problème où la présentation est discrète mais toute la dureté vient de l'aspect `` continu '' du problème.
la source
Les problèmes discrets ont généralement tendance à être plus difficiles (par exemple LP vs ILP), mais ce n'est pas la discrétion en soi qui est le problème ... c'est la façon dont les contraintes affectent la façon dont vous pouvez rechercher votre domaine. Par exemple, vous pouvez penser que l'optimisation d'un polynôme est quelque chose que vous pouvez faire efficacement, mais décider de la convexité des quartiques (polynômes de degré 4) est NP-difficile .
Ce qui signifie que même si vous avez déjà l'optimum, prouver simplement que vous êtes à l'optimum est déjà NP-difficile.
la source
2^n
" voisins intéressants " que vous devez rechercher.Bien que pour certains problèmes courants, il soit vrai, je pense que les deux hypothèses - en fonction de ce que vous définissez comme un problème d'optimisation - ne sont pas vraies.
D'abord quelques définitions: la plupart des problèmes d'optimisation ne font pas partie de NP . Par exemple pour le problème Knapsack : on ne peut pas exploiter le non-déterminisme pour construire le sac le plus précieux, simple car les différentes branches non déterministes n'ont pas de mémoire partagée. NP est également défini comme «polynomialement vérifiable» (vérification d'un certificat)
[1, p. 34]
. Dans ce cas, le certificat est par exemple un sac : une chaîne de bits où si le i- ème bit est défini, cela implique que le i- ème élément fait partie du sac. Vous pouvez en effet vérifier en temps polynomial si un tel sac est plus précieux qu'un seuil donné (c'est la variante de décision), mais vous ne pouvez pas - à notre connaissance - sur la base d'un seul sac, (un nombre polynomial de sacs), décider si ce sac est le plus précieux de tous les sacs possibles. C'est une différence essentielle entre, par exemple, NP et EXP : dans EXP , vous pouvez énumérer tous les sacs possibles et faire la comptabilité pour savoir quel sac est le meilleur.le variante de décision des problèmes d'optimisation fait dans certains cas partie de NP , il faut faire une distinction claire entre l' arôme de maximisation et l' arôme de décision . Dans l'arôme décisionnel, la question est: " Étant donné un problème d'optimisation, et une utilité liée, existe-t-il une solution avec une utilité supérieure ou égale à cette limite " (ou légèrement modifiée pour un problème de minimisation).
Je suppose aussi que par NP - vous dire la partie (hypothétique) de NP qui ne fait pas partie de P . Si P = NP , bien sûr NP-complet existe toujours, mais il sera égal à P (ne coïncide avec P que pour certaines notions de réduction, comme les réductions de plusieurs à un temps polynomial par @ AndrásSalamon), ce qui n'est pas si impressionnant ( et réduirait l '" écart " que vous indiquez dans votre question).
Maintenant que nous avons réglé ça: il y a beaucoup de problèmes d'optimisation qui sont en P : problème de chemin le plus court , problème de débit maximal (pour les capacités intégrales), minimum spanning tree et correspondant au maximum . Bien que ces problèmes puissent vous sembler «triviaux à résoudre», ce sont toujours des problèmes d'optimisation, et dans de nombreux cas, la construction (et la preuve de leur exactitude) n'est pas si simple. La réclamation ne tient donc pas tous les problèmes discrets sont NP-complète. Étant donné que P n'est pas égal à NP , ces problèmes ne peuvent donc pas être NP-complets .
Un problème continu populaire qui est NP-difficile est la programmation quadratique .
En programmation quadratique, on cherche un vecteurX⃗ tel que:
En fait, la programmation linéaire a longtemps été considérée comme NP-difficile , mais avec des heuristiques très performantes (la méthode Simplex ). L'algorithme de Karmarkar est cependant en P .
A partir du moment où le problème d'optimisation concerne des objets non convexes, il sera en général difficile - sinon impossible - de trouver un algorithme efficace.
Bibliographie
[1]
Complexité informatique, une approche moderne , Sanjeev Arora et Boaz Barakla source
P=NP
chaque problème dans NP-complete fait par définition partie de NP et donc en étendant P , maintenant P signifie qu'il existe un algorithme polynomial. Le fait est que je pense que la transformation n'a pas d'importance, car pour chaque langue en P, il doit exister un algorithme polynomial. Que vous preniez la transformation (tout au plus polynomiale) ou non, cela n'a pas d'importance. Il reste polynomiale, donc dans P . En d'autres termes, étant donné que l'élément d'origine est en P , vous pouvez prendre gratuitement chaque transformation poly-temps (sans entraîner une classe de complexité plus élevée).