Deux classes de complexité, présentées de manière plus détaillée dans Théorie de la complexité, interviennent dans la définition de la NP-complétude : est l’ensemble des langages décidables en temps polynomial par une machine de Turing non déterministe.
La classe NP est une classe très importante de la théorie de la complexité. L'abréviation NP signifie « non déterministe polynomial » (« nondeterministic polynomial time »). Un problème de décision est dans NP s'il est décidé par une machine de Turing non déterministe en temps polynomial par rapport à la taille de l'entrée.
Enfin, l'approche de la complexité paramétrée consiste à identifier un paramètre qui, dans le cas où il reste petit, permet de résoudre rapidement le problème.
On a l'inclusion P NP mais l'une des grandes questions ouvertes de l' informatique théorique est le problème de savoir si oui ou non P = NP . Dans les classes usuelles, on peut aussi citer une surclasse : NP PSPACE . NP permet en outre de définir co-NP, la classe complémentaire.