Adloun

Probleme – Le voyageur de commerce métrique

Exercice · niveau 3 (difficile) · informatique (MP2I/MPI), chapitre 25 — Algorithmes probabilistes, approximation, séparation et évaluation

Énoncé

On cherche le plus court circuit passant une fois par chacune des villes. Les distances vérifient l'inégalité triangulaire : .

Corrigé

1. La minoration. Soit un circuit optimal, de longueur . En lui retirant une arête, on obtient un chemin passant par tous les sommets : c'est en particulier un arbre couvrant. Son poids vaut moins la longueur de l'arête retirée, donc . Comme l'arbre couvrant minimal est le plus léger de tous :

Vérification : sur nuages de points euclidiens de à villes, l'optimum étant calculé par énumération de toutes les permutations, l'inégalité n'a été violée aucune fois.

C'est le patron annoncé par le chapitre : on n'a pas calculé l'optimum, on l'a minoré par une quantité qu'on sait calculer — ici l'arbre couvrant minimal du chapitre chap:unir.

2. L'algorithme. On construit l'arbre couvrant minimal, on le parcourt en profondeur, et l'on visite les villes dans l'ordre de première rencontre.


(* Tournee approchee du voyageur de commerce metrique.
   Entrees : n villes, d.(i).(j) une distance verifiant l'inegalite triangulaire.
   Sortie  : une tournee de longueur au plus 2 fois l'optimum.
   Complexite : O(n^2 log n) -- Kruskal sur le graphe complet. *)
let tournee n d =
  let arbre = acm n d in                       (* Kruskal, chapitre 23 *)
  let vu = Array.make n false and ordre = ref [] in
  let rec descendre u =
    vu.(u) <- true;
    ordre := u :: !ordre;                      (* ordre PREFIXE : premiere visite *)
    List.iter (fun v -> if not vu.(v) then descendre v) arbre.(u)
  in
  descendre 0;
  Array.of_list (List.rev !ordre)

La preuve du facteur , en trois pas.

C'est l'inégalité triangulaire qui fait le pas 2, et elle seule.

3. Les mesures, sur nuages de points tirés uniformément dans un carré, l'optimum étant calculé exactement :

Rapport moyen
Rapport le pire observé
Garantie prouvée

L'algorithme est bien meilleur que sa garantie : d'écart en moyenne, jamais plus de . C'est le sort habituel des approximations, et cela ne diminue en rien l'intérêt de la garantie — celle-ci vaut sur toute instance, y compris celles qu'on n'a pas tirées.

4. Sans l'inégalité triangulaire, tout s'effondre, et pas seulement cette approximation-là. Le pas 2 de la preuve tombe : sauter une ville peut coûter arbitrairement cher. Mais il y a bien pire — on démontre que si , aucun algorithme polynomial n'est une -approximation du voyageur de commerce général, pour aucune constante .

L'idée de cette impossibilité mérite d'être esquissée, car elle éclaire ce qu'est une approximation. Étant donné un graphe à sommets, posons si est une arête de , et sinon. Si a un cycle hamiltonien, l'optimum vaut ; sinon, il vaut au moins . Une -approximation distinguerait donc les deux cas, et résoudrait le problème du cycle hamiltonien, qui est np-complet.

La morale. L'inégalité triangulaire n'est pas une hypothèse technique : c'est ce qui sépare un problème approchable d'un problème qui ne l'est pas du tout. Une garantie d'approximation dépend autant du problème que de l'algorithme.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.