Contrairement aux ponts de Königsberg, le Problème du Voyageur de Commerce (Traveling Salesperson Problem ou TSP) n'est pas né d'un casse-tête de cour, mais d'une nécessité pratique. Il est mentionné pour la première fois en 1832 dans un manuel allemand destiné aux commis voyageurs itinérants, qui donnait des conseils pour organiser leurs tournées postales sans repasser deux fois par le même relais.
Sa formulation mathématique rigoureuse a été posée dans les années 1930 à Vienne par Karl Menger, puis popularisée aux États-Unis par Hassler Whitney (qui lui a donné son nom actuel). Très vite, les mathématiciens se rendent compte que ce problème d'apparence inoffensive résiste à toutes leurs méthodes de résolution :
Pendant la Guerre Froide, la célèbre RAND Corporation (le laboratoire d'idées de l'armée américaine) offre des prix à quiconque proposera un algorithme efficace, le problème étant crucial pour la logistique militaire. C'est là qu'en 1954, George Dantzig, Ray Fulkerson et Selmer Johnson réalisent une percée spectaculaire en résolvant le problème pour une carte de 49 villes américaines. Ils venaient d'inventer la méthode de séparation et évaluation (Branch and Bound), posant les bases de l'optimisation combinatoire moderne.
Pour n villes, le nombre de tournées distinctes est (n-1)!/2.
| n villes | Tournées | Temps (1ns/tournée) |
|---|---|---|
| 10 | 181 440 | < 1 ms |
| 15 | 43,5 milliards | 43 secondes |
| 20 | 6×1016 | 2 ans |
| 50 | 3×1062 | ↑ âge de l'Univers |
La force brute est O(n!) — totalement infaisable pour n grand.
P = problèmes résolubles en temps polynomial (« faciles »).
NP = problèmes dont une solution peut être vérifiée en temps polynomial.
NP-difficile = tout problème de NP peut se réduire polynomialement vers lui. Résoudre efficacement un problème NP-difficile permettrait de résoudre efficacement tous les problèmes de NP. On ne connaît pas d'algorithme polynomial. Si P≠NP (très probable), il n'en existe pas.
NP-complet = NP-difficile et dans NP (solution vérifiable en temps polynomial). C'est l'intersection des deux classes.
Le TSP-décision (existe-t-il une tournée ≤ k ?) est NP-complet. Le TSP-optimisation (trouver la tournée minimale) est NP-difficile mais pas dans NP (on ne peut pas vérifier qu'une tournée est optimale sans tout explorer).
Dans ce graphe complet $K_6$, essayez de trouver le cycle hamiltonien de poids minimum en cliquant successivement sur les sommets (survolez les arêtes pour mieux lire leur poids, vous pouvez déplacer les sommets si besoin pour mieux lire le graphe).
Évalue les $(n-1)!/2 = 60$ cycles possibles.