Le problème du voyageur de commerce

Le problème du voyageur de commerce est un des problèmes les plus connus en informatique. Il est souvent utilisé comme premier exemple de problème NP-Complet.

Le problème

Le problème du voyageur de commerce est le suivant : un voyageur de commerce souhaite faire la tournée des villages de sa région puis rentrer chez lui (certaines fois le retour chez lui est ignoré). Son objectif est de minimiser la distance totale parcourue. Un tel problème est appelé problème “d’optimisation” car le but est de trouver les paramètres qui minimisent (ou maximisent) une certaine quantité.

Formellement, le problème consiste, étant donné un graphe pondéré et un sommet initial, à trouver un cycle (ou un chemin) élémentaire passant par tous les sommets du graphe et de longueur minimale. Remarque : Pour de nombreux cas d’utilisation, on considère souvent un graphe complet pondéré.

Ce problème est connu comme étant un exemple de problème NP-Complet.

Exemple d’algorithme solution

Afin de trouver la solution à ce problème, une solution simple consiste à énumérer l’ensemble des chemins possibles, à calculer pour chacun sa longueur et à sélectionner celui ou un de ceux qui sont minimaux. Pour cela, on adapte un parcours en profondeur :

Dans cet exemple, le graphe utilisé est le suivant, où le sommet source est 0 (représenté sous forme d’un tableau de paires (voisin, poids)) :

01234517311252

Si ici on ne trouve que deux chemins hamiltoniens (0 – 2 – 1 – 5 – 3 – 4 et 0 – 2 – 1 – 5 – 4 – 3), il a quand même fallu tester tous les chemins possibles pour arriver à cette conclusion.

La complexité de cet algorithme est donc au moins celle qui consiste à énumérer tous les chemins possibles, soit O((|V|-1)!). C’est un nombre beaucoup trop important pour être calculable en pratique. Par exemple, avec un graphe complet à 30 sommets, cela représente 29!, soit 8.841.761.993.739.701.954.543.616.000.000 chemins à considérer.

Le voyageur de commerce au quotidien

Le problème du voyageur de commerce est un problème récurrent qui intervient dans de nombreux domaines de l’informatique. Voici quelques exemples :

Trajet d’un satellite artificiel

Le problème du voyageur de commerce intervient souvent lorsqu’il est question de minimiser un trajet potentiellement coûteux, en temps ou en argent. C’est par exemple le cas du trajet de certains satellites, qui pour effectuer leurs missions doivent passer par un certain nombre d’endroits différents.

Longueur d’un réseau de fibre optique

Le déploiement de la fibre optique pose le problème de desservir un ensemble d’endroits tout en limitant les travaux requis. Un tel problème peut généralement se formaliser sous la forme du voyageur de commerce.

Publié le

Laisser un commentaire