Complexité des problèmes & NP-complétude
Temps de lecture10 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é, il n’existe pas d’algorithme avec une meilleure complexité pour le résoudre.
À retenir
-
Il existe des classes de complexité pour les problèmes.
-
La complexité d’un problème décrit la complexité minimale d’un algorithme qui le résout.
-
Il existe des intersections, des relations d’inclusion ou des équivalences entre certaines classes de complexité.
-
La complexité peut également décrire la mémoire nécessaire pour résoudre un problème.
Contenu de l’article
1 — Vidéo
Veuillez consulter la vidéo ci-dessous (en anglais, affichez les sous-titres si besoin). Nous fournissons également une traduction du contenu de la vidéo juste après, 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. Afin de mesurer d’autres besoins, tels que la consommation de mémoire, il existe d’autres classes de complexité.
Similaire à la complexité en temps, la complexité en espace mesure la plus petite quantité de mémoire qu’un programme aurait besoin pour résoudre le problème en question, pour le pire cas d’entrée. Encore une fois, cela peut être vu comme un “minimum de maximum”.
Nous utilisons également les notations grand-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 manière factorielle avec la dimension de l’entrée.
Comme pour les classes de complexité en temps, il existe une énorme taxonomie des classes de complexité en espace.

Parmi les classes 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 en espace et en temps ne sont pas indépendantes. Par exemple, il est montré que NP $\subseteq$ PSPACE. Cependant, il existe de nombreuses égalités entre classes qui sont inconnues, dont beaucoup sont des problèmes ouverts en recherche depuis des décennies.
Pour aller encore plus loin
-
A taxonomy of complexity classes of functions.
Plein d’informations sur les différentes classes de complexité.
-
Le problème de déterminer si P et NP sont identiques est un problème majeur en informatique.









