Problèmes de cheminement

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Les problèmes de cheminement sont des problèmes algorithmiques classiques de la théorie des graphes. De façon générale l'objectif est de calculer une route entre des sommets d'un graphe qui minimise ou maximise une certaine fonction.

Le problème le plus classique consiste à chercher le chemin entre deux nœuds donnés qui minimise la somme des valuations des arêtes traversées, on parle du calcul d'un plus court chemin. Il existe des algorithmes de complexité en temps polynomiale pour le résoudre, 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.

Algorithmes de résolution du problème classique de plus court chemin[modifier | modifier le code]

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.[réf. nécessaire]

Présentation théorique des algorithmes de cheminement[modifier | modifier le code]

Q-semi anneau[modifier | modifier le code]

Un Q-semi anneau est un triplet , Q étant un ensemble non vide, et deux lois binaires internes. À 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[modifier | modifier le code]

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[modifier | modifier le code]

É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[modifier | modifier le code]

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 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 et permet donc de définir le chemin minimal pour cette relation.

Algorithme de Warshall généralisé[modifier | modifier le code]

P. Robert et J. Ferland ont montré que, étant donné un graphe de matrice associée d'ordre , on peut définir :

  • une suite de matrices par :
et
avec .
Cette suite de matrices est telle que les éléments de la matrice sont égaux au poids du chemin de à .
  • une autre suite de matrices par :
Cette suite de matrices est telle que les éléments ont pour valeur l'indice du premier point intermédiaire du chemin de à à l'étape .


Il s'ensuit que :

  • est l'indice du premier sommet intermédiaire entre et .
  • Le second sommet est donné par , etc.
  • On détermine ainsi de proche en proche les divers sommets jusqu'au sommet terminal choisi.

Applications[modifier | modifier le code]

Détermination des chemins joignant un sommet[modifier | modifier le code]

On prend l'algèbre de Boole Q={0,1}, et . À chaque arc reliant à on affecte le poids 1 et 0 s'il n'existe pas. Après calcul de , il existe un chemin entre et si le coefficient est non nul. Le chemin n'existe pas si le coefficient est nul.

Détermination des chemins à densité de trafic maximum entre deux sommets[modifier | modifier le code]

On prend , =maximum de deux réels, =minimum de deux réels. On affecte à chaque arc la densité de trafic maximum si elle existe et 0 autrement. Après le calcul de , à 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[modifier | modifier le code]

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[modifier | modifier le code]

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[modifier | modifier le code]

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 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 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'une loi min pondérée entre temps et prix ...). Dans tous les cas, l'algorithme de Dijkstra permet une résolution efficace.

Liens internes[modifier | modifier le code]

Plus courts chemins à origine unique :

Plus courts chemins pour tout couple de sommets :