RECHERCHE OPERATIONNELLE
PLUS COURTS CHEMINS
DANS DES GRAPHES VALUES
I INTRODUCTION
(1) Notations, Problèmes
(2) Quelques résultats fondamentaux
(3) Structures de données
II PLUS COURTS CHEMINS D’UN SOMMET A TOUS LES AUTRES
(1) Algorithme de DIJKSTRA
(2) Algorithme de BELLMAN-FORD
III PLUS COURTS CHEMINS ENTRE TOUS LES COUPLES DE
SOMMETS
(1) Algorithme de DANTZIG
(2) Algorithme de FLOYD
1
I - INTRODUCTION
Tout le monde connaît la boutade : « Quel est le plus court chemin pour aller d’un
point A à un point B ? Ben, la ligne droite Mais non, c’est le raccourci ! » Ce que
confirment les êtres infiniment plats, en fait chacun réduit à un point, vivant sur S2, la surface
de la sphère usuelle, qui savent tous dès leur plus jeune age (mais est-ce aussi le cas des
chauffeurs de taxi ?) que pour aller de A à B il faut utiliser un arc de grand cercle, en bref
suivre la géodésique locale
Et oui, si Ulysse l’avait su Pénélope eût été ravie
Ou alors, comme dit le Chat : « Le plus court chemin d’un point à un autre c’est de ne
pas y aller » … Certes, mais allons y tout de même
De fait de nombreux problèmes de RO reviennent à déterminer l’existence de chemins,
ou les meilleurs chemins, en un sens à préciser, entre certains ou tous les sommets d’un
graphe. On les rencontre dès qu’il s’agit d’acheminer par exemple des marchandises entre
deux points d’un réseau ou d’un entrepôt à des centres de vente, de façon à minimiser un coût,
une durée, etc. Ils apparaissent aussi en sous problèmes de nombreux problèmes
combinatoires comme les flots et les ordonnancements
(1) Notations, Problèmes
Nous nous plaçons dans le cadre général suivant
Soit G = (X, U, v) un graphe simple orienté valué : tout arc xy est muni d’une
valuation v(x, y) (coût, temps, distance, capacité, …) réelle quelconque
On utilise aussi les mots pondéré et pondération à la place de valué et valuation
Si C = (x1, x2, … , xk) est un chemin de G de x1 à xk sa longueur est :
v(C) = v(x1, x2, … , xk) =
v(xi
i=1
k1
xi+1)
= d(x1, xk)
Si x1 est un sommet fixé à l’avance on pourra noter plus simplement d(xk) la
« distance » de x1 à tout sommet xk, bien sûr d(x1) = 0
Les problèmes étudiés ici sont :
(P1) Recherche des plus courts chemins reliant un sommet à tous les autres
(P2) Recherche de tous les plus courts chemins entre tous les couples de sommets
Notons qu’il n’y a pas de solution spécifique au problème consistant à chercher un plus
court chemin entre deux sommets x et y particuliers d’un graphe, il se résout en résolvant (P1) :
partant de x on s’arrête arrivé en y
2
Les algorithmes étudiés ici sont ceux de DIJKSTRA et de BELLMAN FORD qui
résolvent (P1) respectivement lorsque v 0 puis lorsque v est quelconque, et les algorithmes
de DANTZIG et de FLOYD qui résolvent (P2)
L’algorithme de DIJKSTRA est sans doute le plus utilisé car il est aisé à mettre en
œuvre, efficace en temps d’exécution et bien adapaux situations courantes, c’est pourquoi
nous en donnerons une écriture détaillée
Nous détaillerons aussi l’algorithme de DANTZIG car il est matriciel, donc facile à
mettre en œuvre, et plus efficace que l’algorithme de BELLMAN FORD appliqué à tous
les sommets lorsque v est quelconque. Puis nous présentons succinctement l’algorithme de
FLOYD dont les détails sont laissés en exercice
Pour simplifier nous écrirons « PC2 » pour « Plus Court(s) Chemin(s) »
Conventionnellement : | X | = n, X = {1, 2, …, n}, les sommets sont numérotés de 1 à
n, et | U | = m (et | E | = m, si le graphe est non orienté)
Considérons par exemple le graphe orienté valué suivant ayant 6 sommets (1, 2, …, 6)
et 11 arcs tous les couples de chemins existent et dont les valuations sont indiquées sur les
arcs :
1 5
2
6 3
3
3 2 1
1
4
2 2 1 6
Les deux arcs 34 et 43 existent et v(3, 4) = 1 et v(4, 3) = 3
Nous utiliserons cet exemple pour illustrer chacun des algorithmes étudiés
(2) Quelques résultats fondamentaux
Un circuit absorbant de G est un circuit de longueur négative
Les trois Théorèmes suivants donnent les conditions d’existence des PC2 ainsi que
leurs structures
Théorème 1
(P1) a une solution à partir de s
X si et seulement si s est racine (ie il y a un chemin
de s à tous les autres sommets) et G est sans circuit absorbant
Donc si G = (X, E, v) est un graphe simple non orienté connexe valué v 0 alors
(P1), donc (P2), a toujours une solution à partir de tout sommet de G, mais cette solution n’est
pas nécessairement unique
3
Théorème 2 (Principe d’optimalité)
Tout sous-chemin xi, … , xj d’un chemin optimal x1, …, xi, … , xj, … , xk de x1 à xk est un
chemin optimal de xi à xj
Nous retrouverons ce Principe dans un cadre plus général, celui de la Programmation
Dynamique
Le théorème suivant concrétise davantage les choses
Théorème 3
La suite d(1), d(2), , d(n) représente les plus courtes distances de 1 à 2, , n
respectivement si et seulement si d(1) = 0, d(y) d(x) + v(x, y)
xy
U et le graphe partiel des
PC2 de 1 aux autres sommets, G’ = (X, U’) où U’ =
{
xy
U | d(y) = d(x) + v(x, y)
}
, admet 1
comme racine (c’est une arborescence si chaque PC2 est unique)
(3) Structures des données et des résultats
Répétons-le, quel que soit le problème, pour le résoudre effectivement, il faut toujours
savoir définir, d’une façon ou d’une autre, tant que c’est possible, quelles sont précisément ses
données (en gros d’où part-on ?) et quelles structures doivent avoir, ou souhaiterions nous, pour
les résultats (où va t’on ? que cherche t’on exactement ?), ceux-ci peuvent en effet à leur tour
faire l’objet de traitements ultérieurs. Cela participe de la modélisation du problème
Nous supposerons ici que le graphe G = (X, U, v) où X = {1, 2, , n} est donné par sa
matrice d’adjacence M, de taille n.n, définie par M(i, j) = v(i, j) si et seulement si ij U,
sinon M(i, j) = , pour simplifier on note pour + , avec bien sûr M(i, i) = 0
(P1) consistera à chercher les PC2 du sommet 1 aux autres sommets
Pour le calcul des PC2 de 1 aux autres sommets il faut déterminer le tableau d(1),
d(2), … , d(n) des distances (d(i) = si un tel chemin n’existe pas) et le tableau p(1), p(2),
, p(n) des prédécesseursfini par : p(1) = 1 et p(i) = j j est le prédécesseur de i sur un PC2
de 1 à i, s’il existe, 0 sinon. Nous aurons ainsi au plus un PC2 par sommet
Le tableau p permet, à la demande et sil existe, de construire effectivement un PC2 de 1
à un sommet donné ainsi que l’arborescence des PC2
Pour le calcul des PC2 entre tous les couples de sommets il faut déterminer la matrice
D des distances, D(i, j) = longueur d’un PC2 de i à j sil existe, sinon, bien sûr D(i, i) = 0, et
la matrice P des prédécesseurs, P(i, j) = prédécesseur immédiat de j sur un PC2 de i à j sil
existe, 0 sinon. Là aussi il y aura au plus un PC2 pour chaque couple de sommets
Comme dans le cas précédent P permet de construire effectivement un PC2 entre tout
couple de sommets ainsi que le sous graphe des PC2, si nécessaire
Remarquons enfin que l’étude faite dans le cadre général des graphes orientés reste
bien sûr valable pour les graphes non orientés
1 / 16 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !