Problem complexity & NP-completeness
Reading time10 minEn bref
Résumé de l’article
Jusqu’à présent, nous avons étudié la complexité des algorithmes, comme moyen d’estimer le temps nécessaire à leur exécution, en fonction de leurs entrées. Plus généralement, les problèmes ont une notion de complexité. Cela signifie que pour un problème donné, on ne peut pas trouver un algorithme avec une meilleure complexité pour le résoudre.
Points clés
-
Il existe des classes de complexité pour les problèmes.
-
La complexité d’un problème décrit la complexité minimale d’un algorithme le résolvant.
-
Il existe des intersections, des relations d’inclusion ou des équivalences entre certaines classes de complexité.
-
La complexité peut aussi décrire la mémoire requise pour résoudre un problème.
Contenu de l’article
1 — Vidéo
Veuillez regarder la vidéo ci-dessous. Vous pouvez aussi lire les transcriptions si vous préférez.
Pour aller plus loin
2 — Complexité en espace
Les classes de complexité ci-dessus décrivent les besoins en temps pour résoudre les problèmes. Pour mesurer d’autres besoins, comme la consommation de mémoire, il existe d’autres classes de complexité.
Similaire à la complexité temporelle, la complexité spatiale mesure la plus petite quantité de mémoire qu’un programme aurait besoin pour résoudre le problème considéré, pour l’entrée du pire cas. Là encore, cela peut être vu comme un “minimum d’un maximum”.
Nous utilisons aussi les notations big-O pour décrire l’utilisation de la mémoire, en fonction de la taille de l’entrée. Par exemple, $O(n)$ désigne une utilisation linéaire de la mémoire, et $O(n!)$ indique que résoudre le problème nécessite au moins une quantité de mémoire qui croît de façon factorielle avec la dimension de l’entrée.
Comme pour les classes de complexité temporelle, il existe une énorme taxonomie des classes de complexité spatiale.
Parmi les classiques, PSPACE indique qu’un problème ne peut pas être résolu avec moins qu’une quantité polynomiale de mémoire.
Les complexités spatiale et temporelle ne sont pas sans lien. Par exemple, il est montré que NP $\subseteq$ PSPACE. Cependant, de nombreuses égalités entre classes sont inconnues, beaucoup d’entre elles étant des problèmes ouverts en recherche depuis des décennies.
Pour aller au-delà
-
Une taxonomie des classes de complexité des fonctions.
-
Le problème de déterminer si P et NP sont identiques est un problème majeur en informatique.