E. Par ailleurs, par définition d’une couverture de sommets, C∗doit contenir au moins une des deux extrémités de
chacune des arêtes de E. Donc |E|≤|C∗|. D’où, |C| ≤ 2× |C∗|.
1.2 Le problème du voyageur de commerce
Nous considérons ici aussi un graphe non orienté G= (S,A). Mais ici le graphe est complet : chaque paire de
sommets est reliée par une arête. On a un poids positif ou nul w(u,v)associé à chaque arête (u,v)du graphe. Le
problème est ici de trouver un cycle hamiltonien (une tournée) de poids minimal.
Nous restreignons ici le problème en supposant que la fonction de poids wvérifie l’inégalité triangulaire :
soient u,vet wtrois sommets quelconques, alors :
w(u,w)≤w(u,v) + w(v,w).
TOURNÉE-APPROCHÉE(G,w)
Choisir arbitrairement un sommet rde Gqui servira de « racine »
Construire un arbre couvrant minimal Tpour Gà partir de la racine r
Soit Lla liste des sommets visités lors d’un parcours préfixe de T
renvoyer le cycle hamiltonien Hqui visite les sommets dans l’ordre de L.
Un arbre couvrant minimal est un arbre qui contient tous les sommets du graphe (= couvrant) et dont la
somme des poids des arêtes est minimale.
Un parcours préfixe visite tous les sommets d’un arbre. L’arbre Tétant ici couvrant, la liste Lcontient bien
tous les sommets du graphe et Gest bien défini. Le parcours est préfixe : un nœud est donc visité avant que ses fils
ne le soient.
La complexité de cet algorithme est en Θ(S2)car le graphe est complet (c’est la complexité de la construction
d’un arbre couvrant minimal dans ce cas).
1.2.1 Exemple d’utilisation
Voir la figure 1.2.
1.2.2 Garantie de performances
Théorème 2. TOURNÉE-APPROCHÉE est un algorithme d’approximation ayant une borne égale à deux pour le
problème du voyageur de commerce avec inégalité triangulaire.
Démonstration
Nous devons donc montrer que, si H∗est une tournée optimale, on a w(H)≤2w(H∗).
En supprimant certaines arêtes de H∗(n’importe laquelle dans notre exemple), on peut toujours obtenir un
arbre couvrant T0. D’où w(T0)≤w(H∗). Comme Test, par définition, un arbre couvrant de poids minimal, on a
w(T)≤w(T0)≤w(H∗).
Un parcours complet de Tliste les sommets dès qu’ils sont visités pour la première fois et également quand
ils sont à nouveau traversés après la visite d’un sous-arbre. Soit Wce parcours. Le parcours complet dans notre
exemple a pour résultat la liste : a,b,c,b,h,b,a,d,e,f,e,g,e,d,a.
Un parcours complet traverse toutes les arêtes de Texactement deux fois. Par conséquent :
w(W) = 2w(T)≤2w(H∗).
Wn’est pas une tournée, et notre démonstration n’est pas terminée! Grâce à l’inégalité triangulaire, on peut
supprimer de Wla visite d’un sommet quelconque sans augmenter le poids : si un sommet vest supprimé de W
entre les visites à uet w, la nouvelle liste va directement de uàw(avec un poids w(u,w)≤w(u,v) + w(v,w)). En
appliquant plusieurs fois ce résultat, on peut supprimer de Wtoutes les visites à chaque sommet sauf la première,
et sauf la dernière visite du premier sommet (la racine). Dans notre exemple, on se retrouve avec la liste réduite :
a,b,c,h,d,e,f,g,a.
3