ProblĂšme du postier chinois
En thĂ©orie des graphes et en algorithmique, le problĂšme du postier chinois, ou problĂšme du postier (en anglais route inspection problem) consiste Ă trouver un plus court chemin dans un graphe connexe non orientĂ© qui passe au moins une fois par chaque arĂȘte et revient Ă son point de dĂ©part.
Le nom du problÚme vient du fait qu'il a été étudié par le mathématicien chinois Meigu Guan en 1962[1], et qu'il modélise la tournée d'un facteur devant effectuer le plus efficacement possible sa tournée en passant au moins une fois par chaque rue de son secteur.
Le problĂšme peut ĂȘtre rĂ©duit Ă la recherche d'un couplage maximal de poids minimum, et ainsi ĂȘtre rĂ©solu en temps polynomial dans le cas gĂ©nĂ©ral.
Méthode de résolution
Relation avec les cycles eulériens
Le meilleur rĂ©sultat qu'on puisse espĂ©rer est de trouver un chemin passant exactement une fois par chaque arĂȘte, c'est-Ă -dire un cycle eulĂ©rien. Un tel chemin existe si et seulement si chaque sommet du graphe est de degrĂ© pair.
Dans le cas contraire, un chemin optimal passe au moins deux fois par une arĂȘte. Il est plus simple de considĂ©rer l'approche alternative du problĂšme : plutĂŽt que de permettre d'emprunter plusieurs fois la mĂȘme arĂȘte, on duplique les arĂȘtes du graphe par lesquelles on souhaite passer plusieurs fois. Le but est alors de complĂ©ter le graphe pour le rendre eulĂ©rien, en minimisant la longueur totale des arĂȘtes ajoutĂ©es. On obtient une solution du problĂšme initial en cherchant un circuit eulĂ©rien dans le graphe complĂ©tĂ©. On rappelle pour la suite que dans toute composante connexe d'un graphe, la somme des degrĂ©s des sommets est le double du nombre d'arĂȘtes, donc est paire.
Cas particulier
Pour comprendre la solution gĂ©nĂ©rale, il est utile de commencer par le cas oĂč exactement deux sommets u et v sont de degrĂ© impair. La solution optimale consiste alors Ă calculer un plus court chemin de u Ă v (par exemple en utilisant l'algorithme de Dijkstra), et Ă complĂ©ter le graphe avec les arĂȘtes de ce chemin.
DĂ©monstration : aprĂšs avoir ajoutĂ© les arĂȘtes du plus court chemin, chaque sommet est bien de degrĂ© pair, donc le graphe est eulĂ©rien et la solution est valide. De plus, dans le graphe des arĂȘtes ajoutĂ©es pour n'importe quelle solution valide, seuls u et v sont de degrĂ© impair. Ils ne peuvent pas ĂȘtre dans des composantes connexes diffĂ©rentes, sinon les sommes des degrĂ©s de ces composantes seraient impaires, donc u et v sont reliĂ©s par un chemin. Par consĂ©quent, la solution proposĂ©e est bien optimale.
Cas général
Dans le cas gĂ©nĂ©ral, il y a toujours un nombre pair de sommets de degrĂ© impair. La solution optimale peut ĂȘtre obtenue par l'algorithme suivant[2] :
- Former un nouveau graphe Gâ, constituĂ© uniquement des sommets de degrĂ© impair dans le graphe initial G.
- Entre deux sommets de Gâ, ajouter une arĂȘte dont la longueur est celle du plus court chemin entre les deux sommets dans G.
- Trouver un couplage parfait de poids minimum dans Gâ, ce qu'on peut calculer avec un algorithme de complexitĂ©
- Pour chaque paire de sommets u et v couplĂ©s dans Gâ, ajouter au graphe initial G les arĂȘtes du plus court chemin de u Ă v.
Voir aussi
Notes et références
- Douglas B. West, Introduction to Graph Theory, 2001, Prentice-Hall.
- J. Edmonds and E.L. Johnson, Matching Euler tours and the Chinese postman problem, Mathematical programming, 1973.