- Problèmes de cheminement
-
Les problèmes de cheminement sont des problèmes classiques de la théorie des graphes. L'objectif est de calculer une route entre des sommets d'un graphe qui minimise ou maximise une certaine fonction économique.
Le problème le plus classique consiste à chercher le chemin qui minimise la somme des valuations des arêtes traversées. Il existe des algorithmes polynomiaux pour résoudre ce problème, comme l'algorithme de Dijkstra. En revanche, lorsqu'on ajoute des contraintes supplémentaires comme des fenêtres de temps, le problème devient NP-difficile.
Sommaire
Algorithmes de résolution du problème classique de plus court chemin
Lorsque le graphe ne comporte pas de cycle, on utilisera l'algorithme de Bellman. Lorsque les valuations sont positives, l'algorithme le plus couramment utilisé est l'algorithme de Dijkstra. Pourtant, il semble que la méthode dite en anglais threshold method, proposée par Glover, Glover et Klingman en 1984, est plus efficace en pratique, même si sa complexité est supérieure.
Présentation théorique des algorithmes de cheminement
Q-semi anneau
Un Q-semi anneau est un triplet , Q étant un ensemble non vide, et deux lois binaires internes. A tout couple (a,b) d'éléments de Q, ces deux lois binaires associent un élément de Q noté respectivement et . La loi est associative, commutative et admet un élément neutre z. La loi est associative et distributive par rapport à . Elle admet un élément neutre e (à gauche et à droite).
Exemple
L'algèbre de Boole est un Q-semi anneau en prenant Q={0,1}, (ou) et (et). Les éléments neutres sont respectivement z=0 et e=1.
Matrice associée à un graphe
Étant donné un graphe, on associe à chaque arc un poids qui pourra être une longueur au sens de la théorie des graphes, une distance (au sens métrique), une densité de trafic maximum, ou plus généralement des éléments pris dans un Q-semi-anneau plus ou moins simple selon la nature du problème à traiter. Dans chacun de ces cas, l'ensemble Q sera choisi différemment, pouvant être l'ensemble {0,1}, , ... On construit alors une matrice A associée au graphe en associant à chaque arc (i,j) l'élément (i,j) de la matrice égal à son poids si l'arc existe et à z s'il n'existe pas.
Chemin optimal
Un chemin de longueur d dans le graphe s'écrit comme une suite de sommets du graphe. On peut définir le poids d'un chemin comme le produit des poids des arêtes parcourues :
Si l'on note Γi,j l'ensemble des chemins reliant i à j, le problème du plus court chemin consiste à minimiser .
Dans le cas où et , c'est le poids minimal d'un chemin reliant i à j. En pratique, ce calcul n'a d'intérêt que dans les semi-anneaux sélectifs et idempotents, c'est-à-dire tels que et , ce qui permet d'effectivement comparer les chemins : on peut dire que si et seulement si, , ce qui définit une relation d'ordre total sur Γi,j et permet donc de définir le chemin minimal pour cette relation.
Algorithme de Warshall généralisé
P. Robert et J. Ferland ont montré que, étant donné un graphe de matrice associée A d'ordre n, on peut définir :
- une suite de matrices A(k) par :
- A(0) = A et
- avec .
- Cette suite de matrices est telle que les éléments de la matrice A(n) sont égaux au poids du chemin de Xi à Xj.
- une autre suite de matrices D(k) par :
- Cette suite de matrices est telle que les éléments ont pour valeur l'indice du premier point intermédiaire du chemin de Xi à Xj à l'étape k.
Il s'ensuit que :- est l'indice p du premier sommet intermédiaire entre Xi et Xj.
- Le second sommet est donné par où , etc.
- On détermine ainsi de proche en proche les divers sommets jusqu'au sommet terminal choisi.
Applications
Détermination des chemins joignant un sommet
On prend l'algèbre de Boole Q={0,1}, et . A chaque arc reliant Xi à Xj on affecte le poids 1 et 0 s'il n'existe pas. Après calcul de A(n), il existe un chemin entre Xi et Xj si le coefficient ai,j est non nul. Le chemin n'existe pas si le coefficient est nul.
Détermination des chemins à densité de trafic maximum entre deux sommets
On prend , =maximum de deux réels, =minimum de deux réels. On affecte à chaque arc (Xi,Xj) la densité de trafic maximum si elle existe et 0 autrement. Après le calcul de A(n), à l'intersection de la ligne i et de la colonne j, représente la densité de trafic maximum entre i et j.
Détermination de la distance minimum entre deux sommets
On prend , =minimum de deux réels, =addition des réels. représente la distance minimum entre i et j.
Plus court chemin pour des valuations dynamiques
Dans certains problèmes de transport, les valuation ne sont pas des scalaires, mais des fonctions, par exemple du temps si l'on veut considérer des fluctuations du trafic. Dans ce cas, il suffit de choisir comme Q-semi-anneau l'ensemble des endomorphismes croissants sur un dioïde avec pour somme telle que , et la composition pour produit. Par croissant, on entend que .
Ainsi, si l'on cherche à trouver le chemin le plus rapide dans un réseau où le trafic est variable en fonction de l'heure de départ, on peut appliquer les algorithmes usuels en valuant chaque route par une fonction donnant l'heure d'arrivée en fonction de l'heure de départ, et en considérant pour le minimum d'une fonction prise à l'heure de départ.
Plus court chemin avec contraintes temporelles
Il arrive, en particulier dans les réseaux de transports en commun, que certains arcs ne puissent être parcourus que dans certaines contraintes horaires. On suppose que les temps de parcours de chaque arête (i,j) est fixé, ainsi qu'un ensemble de plages horaires Hi,j où il est possible d'emprunter cette arête. Pour résoudre le problème, on pourra considérer le dioïde des endomorphismes pris sur les intervalles de temps définis ainsi : si Di est l'intervalle de temps où l'on souhaite partir du sommet i, est l'intervalle de temps où il est possible d'arriver au sommet j relié à i. Il est en outre possible d'ajouter facilement d'autres contraintes à τ (par intersection avec des plages horaires pour éviter certaines périodes, en ajoutant des contraintes de prix par produit cartésien avec la matrice des coûts de transport muni d'un loi min pondérée entre temps et prix ...). Dans tous les cas, l'algorithme de Dijkstra permet une résolution efficace.
Liens internes
Plus courts chemins à origine unique :
- Algorithme de Dijkstra
- Algorithme de Ford-Bellman
- Algorithme de Gabow
Plus courts chemins pour tout couple de sommets :
- Algorithme de Dantzig-Ford
- Algorithme de Floyd-Warshall
- Algorithme de Johnson
- Algorithme du flot maximum
Wikimedia Foundation. 2010.