En revanche, si on vous donne un parcours prouvant que la réponse est oui pour un des deux
problèmes, vérifier que ce parcours est correct, et donc que la réponse est oui, est un jeu
d’enfant (jeu d’enfant signifiant précisément que ça peut être fait par un algorithme travaillant
en temps polynomial, c’est à dire rapidement et sans difficulté)… On dit que ces deux
problèmes sont du type NP (ces initiales N et P sont expliquées au paragraphe suivant).
La définition ne stipule pas que quand la réponse est oui on sait effectivement déterminer un
parcours; on sait seulement prouver qu’il en existe un.
Une preuve permettant d’affirmer que la réponse est oui pour une donnée (c’est à dire une
configuration villes-routes) fixée est appelé un certificat de la réponse oui pour cette donnée.
Un parcours-solution peut évidemment faire office de certificat.
Il faut noter que la définition de NP ne dit rien des données pour lesquelles la réponse est non. Par ailleurs cette
définition ne dit pas que quand la réponse est oui on sait trouver un certificat de cette réponse oui : elle dit
seulement que si on vous donne un certificat, la vérification est facile et rapide.
Exemple 5 : le problème COMPOSE.
Ce problème est dit complémentaire du problème PREMIER car pour une donnée fixée (un entier), ils ont des
réponses oui / non opposées.
COMPOSE est évidemment dans NP : pour un entier
qui est composé, un certificat de la
réponse oui pour
est un diviseur d non trivial (c’est à dire autre que 1 et
) de
et si on
vous donne d, la vérification est une simple division de
par d, elle se fait en temps
polynomial.
Exemple 6 : PREMIER aussi est dans NP mais on ne peut pas dire de façon convaincante en quelques lignes ce
qu’est un certificat pour une réponse oui.
Remarque : les problèmes COMPOSE et PREMIER sont dits inverses l’un de l’autre (ils échangent les réponses
oui et non). Lorsqu’on sait qu’un problème est dans P, il va de soi que son problème inverse y est aussi. Il n’y a
rien de tel avec NP car, contrairement à P, les réponses oui et non ne jouent pas un rôle symétrique dans la
définition de NP.
Conjecture de contre-exemple 7 : le problème K-VOYAGEUR DE COMMERCE.
Pour la donnée d’une configuration villes-routes, on suppose connues les distances entre les villes (sans
nécessairement que la distance considérée soit euclidienne : ces « poids » attribués aux routes peuvent représenter
des durées, penser à des routes de montagne, des coûts, etc…). On peut alors pour tout k positif poser le
problème :y a-t-il un unique plus court trajet fermé passant une fois et une seule par chaque ville et de longueur
égale à k ? Ce problème ne semble pas être dans NP; sa complexité semble être intrinsèquement exponentielle :
dans les pires cas, il peut être nécessaire d’étudier à peu près tous les parcours (qui ne sont pas en nombre
polynomial comme on l’a vu à l’exemple 4) pour pouvoir répondre oui.
La classe NP est très vaste : pour trouver des problèmes de décision dont on est sur qu’ils ne
sont pas dans NP, il faut considérer des problèmes compliqués du type jeu d’échecs généralisé
avec
cases sur chaque côté (au lieu de 8) et la question, pour une configuration de jeu
donnée, « les noirs ont ils une stratégie gagnante ? »
Signification des initiales N et P de NP
La suite est tout à fait lisible même si ce paragraphe n’est pas bien compris !
Pour comprendre la signification des initiales N et P il faut faire un effort d’imagination : un
« algorithme non déterministe
» est un algorithme B dans lequel à chaque instruction on peut
lancer plusieurs nouvelles séries de calculs (d’instructions) en parallèle (penser à un
programme informatique qui à chaque instruction lancerait plusieurs sous-programmes; un tel
programme ne pourrait fonctionner pour une donnée de grande taille car les possibilités de
n’importe quel ordinateur finiraient par être dépassées !). Pour un problème de décision, la
(grosse !) différence avec un algorithme déterministe est qu’il y a plusieurs sorties possibles
On dit que B résout un problème en temps polynomial
§ avec la réponse oui si au moins une sortie (en temps polynomial) est oui.
§ avec la réponse non si toutes les sorties (en temps polynomial) sont non.
Le principe d’un algorithme non déterministe est d’essayer toutes les possibilités…en même
temps ! Pour les problèmes EULERIEN et HAMILTONIEN on part d’une ville et à chaque
C’est là qu’a lieu l’effort d’imagination car les termes « algorithme » et « non déterministe » semblent se
contredire !