La classe N P version du 21 novembre 2016 43
6.14 –Le problème suivant est un problème de décision très classique.
HAMILTON Entrées : nentier naturel, Ggraphe non orienté d’ordre n
Question : Existe-t-il, dans G, un cycle hamiltonien i.e. qui passe exactement
une fois par chaque sommet ?
Le problème de calcul qui lui est naturellement associé, HAMILTONcdemande qu’on fournisse un cycle hamiltonien,
s’il en existe un.
6.15 –Exemple typique de problème d’optimisation (cas particulier de calcul) :
ENS INDEPmax Entrées : nentier naturel, Ggraphe non orienté d’ordre n.
Question : Trouver un ensemble de sommets indépendants, i.e. sans arête,
de taille maximale.
Le problème de décison associé doit comporter un paramètre supplémentaire :
ENS INDEP Entrées : nentier naturel, Ggraphe non orienté d’ ordre net k6n
Question : Existe-t-il un ensemble de ksommets indépendants ?
On peut encore résoudre facilement le problème de calcul si on a des algorithmes rapides résolvant les problèmes de
décision associés (exercices ci-dessous).
§6.4 - Exercices.
Exercice 50 Expliquez en détail, comme cela a été fait en cours (page 42), comment un algorithme résolvant le
problème de décision SAT peut être utilisé pour fabriquer un algorithme résolvant le problème de calcul VSAT.
Exprimez la complexité de l’algorithme de calcul en fonction de celle de l’algorithme de décision.
Exercice 51 Inspirez-vous de l’exercice précédent pour imaginer comment on peut utiliser un algorithme résol-
vant le problème de décision m-MAR pour fabriquer un algorithme résolvant le problème de calcul m-MARc(voir
page 42).
Exercice 52 On veut obtenir un résultat analogue pour les problèmes HAMILTON (décision) et HAMILTONc
(calcul), relatifs aux circuits hamiltoniens dans un graphe non orienté (voir ci-dessus).
On imagine qu’on a un algorithme Apermettant de déterminer si un graphe est hamiltonien ou pas (i.e. s’il a un
circuit hamiltonien) et on voudrait l’utiliser pour construire un algorithme qui trouve un chemin hamiltonien, quand
il y en a un.
On considère un graphe fini, non orienté, et un de ses sommets v. Toute la difficulté est de déterminer où se situe v
dans le parcours hamiltonien i.e. quel sommet le précède et quel sommet lui succède, ou encore par quelle arête on
peut arriver à vet par quelle arête on peut repartir de v.
a) Considérons deux voisins w0,w1de v. Considérons le graphe obtenu en supprimant toutes les arêtes portés par
vsauf (v, w0)et (v, w1), qu’on appelle G[w0vw1].
Montrez que si G[w0vw1]est hamiltonien alors Gaussi et Ga un circuit hamiltonien passant par les arêtes (w0, v)
et (v, w1).
b) Réciproquement, montrez que si Gest hamiltonien alors il existe deux voisins w06=w1de vtels que G[w0vw1]
est aussi hamiltonien.
c) Si on choisit un sommet de départ v0, montrez comment on peut trouver un circuit hamiltonien (s’il en existe
un), en devinant la liste de parcours des sommets, de proche en proche, grâce à l’algorithme de décision A.
Décrivez un algorithme B, qui utilise des appels à A, pour fabriquer, quand il en existe, un circuit hamiltonien.
Quelle est la complexité de Ben fonction de celle de A.
Exercice 53 On se fixe le même objectif pour ENS INDEPmax (trouver un sous-graphe indépendant de taille
maximale) grâce à un algorithme Arésolvant le problème de décision ENS INDEP (existence d’un sous-graphe
indépendant de taille kfixée, voir ci-dessus).
a) Soit Gun graphe non orienté et fini. Montrez que, par itération de A, on peut déterminer la taille maximale K
d’un sous-graphe indépendant de G.
b) Soit vun sommet de Get k∈IN∗. Appelons G\vle graphe obtenu en supprimant dans Gle sommet vet tous
ses voisins, ainsi que les arêtes qu’ils portent.
Montrez que vappartient à un sous-graphe indépendant d’ordre kde Gssi G\va sous-graphe indépendant d’ordre
k−1.
c) Proposez un algorithme B, utilisant des appels à A, et permettant de construire, sommet par sommet, un sous-
graphe de Gindépendant et de taille maximale. Évaluez la complexité de Bpar rapport à celle de A.