vignette|Le problème de voyageur de commerce : calculer un plus court circuit qui passe une et une seule fois par toutes les villes (ici 15 villes). En informatique théorique, le problème du voyageur de commerce, ou problème du commis voyageur., est un problème d'optimisation qui consiste à déterminer, étant donné un ensemble de villes, le plus court circuit passant par chaque ville une seule fois.

C'est un problème algorithmique célèbre, qui a donné lieu à de nombreuses recherches et qui est souvent utilisé comme introduction à l'algorithmique ou à la théorie de la complexité. Il présente de nombreuses applications, que ce soit en planification, en logistique ou dans des domaines éloignés, comme la génétique, les gènes étant les villes et la similarité la distance.

Description

Étant donné n villes et leurs distances par paire, il s'agit de déterminer le chemin le plus petit qui passe exactement une fois par chaque ville et revienne à la ville de départ. On modélise le problème du voyageur de commerce comme un problème sur un graphe non orienté pondéré. Les villes sont les sommets du graphe. Le voyageur emprunte les arêtes du graphe. Le coût d'une arête entre deux sommets est la distance entre les deux villes correspondantes. Souvent, on considère un graphe complet, i.e. il y a une arête entre toutes paires de sommets : avec un ensemble de sommets, un ensemble d'arêtes, et une fonction de coût sur les arêtes. Le problème est de trouver le plus court cycle hamiltonien dans le graphe G.

Exemple On considère la liste des villes A, B, C, D et les distances données par le dessin ci-dessous à gauche.

Un premier chemin qui part de A, revient en A et qui visite toutes les villes est ABDCA.

Un chemin plus court est ACBDA. Ce dernier est optimal.

Attention, les distances dans l'exemple ne respectent pas l'inégalité triangulaire : d(A,B) < d(A,D) + d(D,B).

thumb|Instance du problème du voyageur de commerce.|181x181pxthumb|Le chemin ABDCA de longueur 4+2+5+3 = .|185x185pxthumb|Le chemin ACBDA est le chemin le plus court qui part de A, revient à A et passe par toutes les villes. Il est de longueur 3+1+2+1 = .

Le chemin ADBCA propose également une longueur de 7km.|186x186px

Explosion combinatoire + Nombre de chemins candidats en fonction du nombre de villes Nombre de villes Nombre de chemins candidats 314351266073608910152071 Ce problème est plus compliqué qu'il n'y paraît ; on ne connaît pas de méthode de résolution permettant d'obtenir des solutions exactes en un temps raisonnable pour de grandes instances (grand nombre de villes) du problème. Pour ces grandes instances, on devra donc souvent se contenter de solutions approchées, car on se retrouve face à une explosion combinatoire.

Pour un ensemble de points, il existe au total chemins possibles (factorielle de ). Le point de départ ne changeant pas la longueur du chemin, on peut choisir celui-ci de façon arbitraire, on a ainsi chemins différents. Enfin, chaque chemin pouvant être parcouru dans deux sens et les deux possibilités ayant la même longueur, on peut diviser ce nombre par deux.

Premier exemple : si on nomme les points, , les chemins abcd et dcba, cdab et badc, adcb et bcda, cbad et dabc ont tous la même longueur ; seul le point de départ et le sens de parcours changent. On a donc chemins candidats à considérer..

Deuxième exemple : pour 71 villes, le nombre de chemins candidats est d'environ , ce qui est bien supérieur au nombre d'atomes dans l'univers connuOn peut estimer l'ordre de grandeur du nombre d'atomes dans l'univers à 1080..

Variantes Orientation

Rien n'interdit au graphe donné en entrée d'être orienté.

Dans ce cas, on considère qu'un chemin existe dans un sens mais pas dans l'autre.

Exemples : route à sens unique, lien "following" (suivre) dans un réseau social ...

Asymétrie

On parle parfois de problème symétrique ou asymétrique.

Problème du voyageur de commerce symétrique : Étant donné un ensemble de nœuds et de distances pour chaque paire de nœuds, trouver un cycle de longueur minimale qui visite chaque nœud exactement une fois. Pour et deux nœuds d'une arête, la distance de à est la même que celle de à .

Problème du voyageur de commerce asymétrique : Étant donné un ensemble de nœuds et de distances pour chaque paire de nœuds, trouver un cycle de longueur minimale qui visite chaque nœud exactement une fois. Cette fois-ci la distance entre deux nœuds et d'une arête n'est pas forcément la même qu'on aille de à ou bien de à . Aussi, divers problèmes de recherche opérationnelle se ramènent au voyageur de commerce. Un voyageur de commerce peu scrupuleux serait intéressé par le double problème du chemin le plus court (pour son trajet réel) et du chemin le plus long (pour sa note de frais).

Résolution exacte Complexité du problème

Le problème de décision associé au problème d'optimisation du voyageur de commerce est NP-complet. Il peut notamment être réduit à partir du problème du cycle Hamiltonien, qui fait partie des 21 problèmes NP-complets de Karp.. Christos Papadimitriou a démontré en 1977 que le problème reste NP-dur même si les distances sont données par des distances euclidiennes.

Ainsi, le problème reste NP-dur même si on supprime la condition "ne passer au plus qu'une seule fois par une ville".

Algorithmes Une approche de résolution naïve, mais qui donne un résultat exact, est l'énumération de tous les chemins possibles par recherche exhaustive. La complexité en temps de cet algorithme est en (plus exactement , ce qui devient vite impraticable même pour de petites instances).

Par exemple, si le calcul d'un chemin prend une microseconde, alors le calcul de tous les chemins pour est de soit , mais pour , cela représente déjà soit un peu plus de et pour de soit presque deux millénaires (). Pour 25 villes, le temps de calcul dépasse l'âge de l'Univers.

L' utilisant la programmation dynamique permet de résoudre le problème en M. Held et R.M. Karp, « », , 1962, 10 (1), 196–210...

Les méthodes d'optimisation linéaire sont à ce jour parmi les plus efficaces pour la résolution du problème de voyageur de commerce et permettentEn général par le biais de la méthode du branch and cut. désormais de résoudre des problèmes de grande taille (à l'échelle d'un pays Voir par exemple le site de l'université Georgia Tech.), moyennant éventuellement un temps de calcul important.

Cas particuliers Tournée bitonique dans un graphe euclidien Dans le cas d'un graphe euclidien, c'est-à-dire lorsque les arêtes ont pour poids les distances entre les sommets comme c'est par exemple le cas entre des villes sur une carte routière, certaines variantes du problème du voyageur de commerce ont une solution exacte qui peut être déterminée en temps polynomial. C'est le cas lorsque l'on cherche le circuit bitonique le plus rapide, où l'on part du point le plus à l'ouest pour aller toujours vers l'est jusqu'au point le plus à l'est avant de revenir au point de départ en allant toujours vers l'ouest. Dans ce cas particulier introduit pour la première fois par Jon Louis Bentley, une solution optimale peut être déterminée en par programmation dynamique, chap. 15 ("Programmation dynamique"), p. 375..

Approximation Dans cette section, nous discutons l'existence ou non d'algorithmes d'approximation. Ce sont des algorithmes d'approximation, qui ne calculent pas forcément un tour optimal, mais un tour qui est suffisamment de bonne qualité. Généralement, on mesure la qualité de l'algorithme avec un facteur d'approximation : le poids du tour calculé par l'algorithme est au pire plus petit que fois le poids d'un tour optimal.

Cas général Dans le cas général, et en supposant , il n'existe pas d'algorithme d'approximation de facteur d'approximation constant pour résoudre le problème du voyageur de commerce, chap. 35 : Algorithmes d'approximation.. Pour le montrer on procède par l'absurde en supposant que pour un certain il existe un algorithme d'approximation de facteur . On montre alors que cet algorithme d'approximation permet de résoudre le problème de la recherche de cycle hamiltonien en temps polynomial alors même que celui-ci est NP-complet.

On considère un graphe , on peut supposer sans perte de généralité que toutes ses arêtes sont de poids 1. On le transforme en le graphe complet en ajoutant à entre chaque paire de sommets non connectés une arête de poids où est le nombre de sommets de . Si le graphe possède un circuit hamiltonien, alors possède une tournée minimale de poids , sinon la tournée minimale contient au moins une arête de poids et son poids vaut donc au moins . Dans le premier cas, notre algorithme d'approximation trouvera en temps polynomial une tournée de poids au plus , dans l'autre il trouvera une tournée de poids au moins . Comme on peut discriminer entre les deux situations en temps polynomial, il s'ensuit que l'existence d'un circuit hamiltonien peut s'effectuer en temps polynomial ce qui aboutit à une contradiction ; il n'existe donc pas d'algorithme générique d'approximation pour résoudre le problème du voyageur de commerce.

Cas métrique Le cas métrique signifie que les poids des arêtes respectent l'inégalité triangulaire : aller de A à C est toujours plus court qu'aller de A à la ville intermédiaire B, puis de B à C. Dans ce cas, l'algorithme de Christofides est un algorithme d'approximation de facteur 3/2.. Dans ce cas, le problème est APX-difficile même avec des poids 1 ou 2 .. La meilleure borne inférieure pour le facteur d'approximation est 123/122..

Un preprint de 2020 améliore le facteur de 3/2 - 10-36...

Cas euclidien Le cas euclidien signifie que les sommets du graphe sont des points dans un espace euclidien, par exemple un plan euclidien. Le poids d'une arêtes entre deux points A et B est la distance euclidienne entre A et B. Dans le cas euclidien, il existe un schéma d'approximation en temps polynomial. Il a été découvert indépendamment par Sanjeev Arora. et Joseph S. B. Mitchell., et leur a valu le prix Gödel en 2010..

Techniques

Formulation par optimisation linéaire La formalisation du problème qui suit, sous forme d'optimisation linéaire en nombres entiers du problème, est utilisée pour la conception d'algorithmes d'approximation. On note l'ensemble des arêtes sortant de l'ensemble de sommets S.

La relaxation de ce programme pour un problème d'optimisation linéaire (c'est-à-dire sans les contraintes d'intégralité) est appelée relaxation de Held et Karp. ou subtour LP. Cette relaxation a un nombre exponentiel de contraintes, mais peut être résolue en temps polynomial en résolvant le problème de séparation, qui se révèle être le calcul d'une coupe minimum..

Il est conjecturé que la relaxation de Held et Karp a un trou d'intégralité () de 4/3.

Approximation de facteur 2 utilisant des arbres couvrants L'algorithme de Christofides est basé sur un algorithme simple d'approximation de facteur 2 qui utilise la notion d'arbre couvrant de poids minimal. Comme toute tournée a un poids cumulé supérieur à celui de l'arbre couvrant minimal et comme un parcours préfixe de l'arbre passe deux fois par chacun des nœuds internes une tournée qui suit un parcours préfixe a un poids cumulé inférieur au double de la solution minimale au problème du voyageur de commerce. Il reste à convertir ce parcours en un parcours qui passe une fois et une seule par chacun des sommets du graphe. On exploite alors l'inégalité triangulaire : si entre deux sommets le parcours considéré fait passer par un sommet intermédiaire déjà visité, on le saute pour passer directement au premier sommet non encore visité. L'inégalité triangulaire assure alors que le poids total du trajet n'augmente pas ; par conséquent on obtient un circuit hamiltonien dont le poids est inférieur au double de celui du circuit minimal.

Heuristiques De fait de la complexité initiale du problème (), de son importance, et de sa NP-complétude, de nombreuses heuristiques ont été proposées.