View
109
Download
0
Category
Preview:
Citation preview
Le problème du plus court chemin
Énoncé du problème et construction d’un modèle
Partitionnement des sommets par niveaux d’un graphe fortement connexe sans circuit
Théorème d’optimalité de Bellman-Pontryagin
Algorithme de type Futur-Passé
Algorithme de type Passé-Futur (version graphique)
Approche vorace – Algorithme de DIJKSTRA
Recherche du pcc entre chaque paire de sommets – Algorithmede FLOYD & WARSHALL
Le problème du plus court chemin 2
Énoncé du problème :
Considérons n villes V1, V2, …, Vn reliées entre elles par un réseauroutier.
Bob séjournant en V1 désire se rendre à la ville Vn. En examinant leréseau routier reliant ces 2 villes et, parmi toutes les possibilités quis’offrent à lui, il retient quelques villes intermédiaires V2, V3, …, Vn-1
par lesquelles il pourrait passer.
Bob a un budget limité et désire se rendre de V1 à Vn par le plus courtchemin sans nécessairement passer par toutes les villes intermédiaires.
Par quelles villes, Bob doit-il passer pour minimiser la distancetotale parcourue ?
Le problème du plus court chemin 3
Construction d’un modèle :
Le réseau de transport de Bob peut se traduire facilement sous laforme d’un graphe :
V1
V2
V3
V4
Vn-2
Vn-1
Vn
où les sommets représentent les villes et où les arcs représentent lesroutes possibles pour aller d’une ville à l’autre.
Note : En l’absence d’arcs entre 2 villes, cela signifie qu’il n’y a pasde route directe entre celles-ci.
Le problème du plus court chemin 4
Matrice associée au graphe :
Nous définissons un graphe orienté G = (S, U)où
U = {(x, y) S x S | il existe une route directe allant de x à y},l’ensemble des arcs du graphe.
S = {s1, s2, …, sn}, l’ensemble des sommets du graphe,
Une matrice A = (aij), i = 1, 2, …, n associée au graphe Gj = 1, 2, …, n
est définie comme suit :
1 si (si, sj) U aij =
0 autrement.
Le problème du plus court chemin 5
Exemple :
1
2
6
3
5
4
1 0 1 1 0 0 02 0 0 1 1 0 03 0 0 0 1 1 04 1 0 0 0 1 05 1 1 0 0 0 16 0 0 0 0 0 0
1 2 3 4 5 6
Matrice associée à G :
Le problème du plus court chemin 6
Matrice des distances :
Soit D = (dij) la matrice des distances entre chacune des villes où
dij représente la distance de la route reliant directement laville Vi à la ville Vj.
On suppose par convention que :
dij = + si i j et (si, sj) U 0 si i = j.
Note : Cette matrice des distances peut représenter une mesure detemps, de coût, de probabilité ou autre chose.
Le problème du plus court chemin 7
Exemple d’un graphe arc-valué :
A
B
G
E
C
F
D
H
9
8
3 7
137
4
3
4
6
2
6
2
Le problème du plus court chemin 8
Exemple d’un graphe arc-valué :
Soit le réseau routier suivant et le graphe correspondant,
Le problème du plus court chemin 9
Formulation du problème :
Min dij zij
i = 1, 2, …, nj = 1, 2, …, ntel que (si, sj) U
sujet à zij
j = 1, 2, …, ntel que (si, sj) U
zki
k = 1, 2, …, ntel que (sk, si) U
- = 0 i.
zn1 = 1
zij 0 i = 1, 2, …, n; j = 1, 2, …, n tel que (si, sj) U.
En ajoutant un arc fictif (sn, s1), on obtient :
Cela équivaut à envoyer une unité de flot de 1 à n au moindre coût.C’est donc un cas particulier du problème de flot à coût minimal.
Le problème du plus court chemin 10
Remarque :
Nous sommes amenés à résoudre 3 types de problèmes impliquantdes plus courts chemins :
(i) un pcc entre un sommet i et un sommet j;(ii) un pcc entre un sommet i et tous les autres sommets du graphe;(iii) un pcc entre chaque paire de sommets dans un graphe.
Les méthodes proposées pour résoudre le premier problème sontappropriées pour les 2 autres problèmes également.
On peut utiliser la méthode du simplexe en programmation linéairepour résoudre ce problème mais il existe des méthodes beaucoupplus efficaces.
Le problème du plus court chemin 11
Rappel de quelques définitions sur la structure de graphe :
Chemin : Une suite d’arcs u1, u2, …, uk telle que l’extrémité terminalede chaque arc coïncide avec l’extrémité initiale de l’arcsuivant dans la suite.
Chemin de longueur k : Un chemin comprenant k arcs.
Exemple : Chemin de longueur 5 du graphe G(1,2) – (2, 3) – (3, 5) – (5, 2) – (2, 4).
Circuit : Un chemin de longueur finie dont le sommet origine estidentique au sommet extrémité du chemin.
Exemple : Circuit de longueur 4 du graphe G (2, 3) – (3, 5) – (5, 1) – (1, 2).
Le problème du plus court chemin 12
Si un graphe orienté contient un circuit dont la longueur est < 0(un cycle négatif), il se peut que le plus court chemin n’existe pas.
1 5
2
4
3
61
3
-5 1
2-1
On exclut d’emblée ce type de graphe de la discussion subséquente.
Le problème du plus court chemin 13
Graphe non orienté :
U désigne plutôt un ensemble d’arêtes i.e.un ensemble de paires non ordonnées de sommets de S.
Exemple : (3, 2) – (3, 5) – (1,5) – (2, 1) sont des arêtes du graphe.
Chaîne d’un graphe non orienté :
Une suite d’arêtes distinctes u1, u2, …, uk avec la propriété qu’ilexiste k + 1 sommets x1, x2, …, xk+1 tels que ui (xi, xi+1), 1 i k.
Exemple : (3, 2) – (3, 5) – (1,5) – (2, 1) est une chaîne.
Graphe connexe :
Graphe non orienté dans lequel il est toujours possible de relier entreeux 2 sommets quelconques par une chaîne.
Cycle : Une chaîne où x1 = xk+1.
Le problème du plus court chemin 14
Graphe fortement connexe :
Graphe orienté où il existe tjrs un chemin allant de x à y x, y S.
Nous allons nous intéresser dans ce qui suit aux graphesfortement connexes sans circuit.
Résolution du plus court chemin sur un graphe non orienté :
Cela se ramène au même problème que celui posé sur un grapheorienté, à condition que les dij 0 pour tout (i,j).
Il s’agit de remplacer chaque arête (i, j) dans le graphe par 2 arcs(i, j) et (j, i) portant tout deux la même mesure dij = dji.
Si l’un des dij était < 0, ceci créerait des cycles négatifs.
Le problème du plus court chemin 15
Relation d’ordre strict R
Soit un graphe orienté G fortement connexe et sans circuit,soit x, y S et x y,considérons la relation suivante :
(R) x y il existe un chemin de longueur non nulle de x vers y.
Note : R est dite aussi relation d’antériorité :si x y , on dira que x est un ancêtre de y et
que y est un descendant de x.
R est transitive : x y et y z x z.
R est antisymétrique : x y non (y x).
Le problème du plus court chemin 16
Partitionnement des sommets par niveaux d’un graphe fortementconnexe sans circuit
Tous les éléments d’un même niveau n’ont pas d’ancêtres dans leniveau qui suit, ni de descendants dans le niveau qui précède.
Les éléments du premier niveau n’ont pas d’ancêtres et ceux dudernier niveau n’ont pas de descendants.
L’ordre des sommets d’un même niveau est indifférent i.e.les sommets d’un même niveau ne sont pas reliés entre eux par desarcs.
Une décomposition par niveaux existe toujours maiselle n’est pas nécessairement unique.
Le problème du plus court chemin 17
Illustration de la méthode de partitionnement des sommets parniveaux d’un graphe fortement connexe sans circuit
Exemple :
1
8
7
4
3
2
6
5
Ai la iième ligne de la matrice associée au graphe.
Le problème du plus court chemin 18
V0 – A5 =V1 – A2 =V2 – A6 =
V3 – A1 – A3 =V4 – A7 =V5 – A4 =
Le problème du plus court chemin 19
Procédé :
Déterminons d’abord les sommets qui n’ont pas d’ancêtres :
V0 = A1 + A2 + … + A8.
On constate que le sommet 5 n’admet aucun arc du type (- , 5).Le sommet 5 forme donc le niveau I.
Pour déterminez le niveau II, il faut chercher tous les sommetsdont le seul ancêtre est 5 :
V1 = V0 – A5.
Le sommet 2 n’a pas d’autres ancêtres que le sommet 5.Le sommet 2 forme donc le niveau II.
Comme on peut le constater, pour obtenir les sommets d’un niveau,il suffit d’enlever au vecteur précédent les lignes associées auxsommets du niveau précédent.
20
Le graphe peut alors se mettre sous la forme :
Note :
Le sommet 1 peut être indifféremment placé dans l’un quelconquedes niveaux IV, V ou VI.
En supposant les sommets 1 et 3 au niveau IV, on peut choisir commeordonnancement : 5 – 2 – 6 – 1 – 3 – 7 – 4 – 8 ou encore
5 – 2 – 6 – 3 – 1 – 7 – 4 – 8.
Le problème du plus court chemin 21
Note :
Le PCC de V1 à V8 se résume au graphe :
81 Solution triviale.
Le PCC de V2 à V8 se résume au graphe suivant(il faut négliger V5 et les arcs qui en sont issus) :
18
7 4
3
2 6
Le problème du plus court chemin 22
Théorème d’optimalité de Bellman-Pontryagin :
Il s’énonce sous l’une des 2 formes suivantes :
Passé - Futur
Tout chemin reliant la ville V1 à la ville Vn est optimal sitout chemin partiel de V1 à Vk issu de ce chemin est lui-mêmeoptimal de V1 à Vk et ce pour tous les indices k de ce chemin.
Futur - Passé
Tout chemin reliant la ville V1 à la ville Vn est optimal sitout chemin partiel de Vk à Vn issu de ce chemin est lui-mêmeoptimal de Vk à Vn et ce pour tous les indices k de ce chemin.
Le problème du plus court chemin 23
A
B
G
E
C
F
D
H
9
8
3 7
137
4
3
4
6
2
6
2
Reprenons l’exemple présenté antérieurement :
En énumérant tous les chemins possibles de A à H, on en déduit quela distance minimale est 17 et que le PCC est AEFH.
Note : On peut vérifier que le théorème est satisfait pour E et F.
Le problème du plus court chemin 24
Présentation d’un algorithme de type Futur-Passé :
Renumérotons les villes selon un ordonnancement obtenu à l’aide del’approche précédente.
A B G E C D F H. . . . . . . .. . . . . . . .. . . . . . . .1 2 3 4 5 6 7 8
1
2
6
5
3
7
4
8
9
8
3
613
7
4
3
4
2
2
6
7
Le problème du plus court chemin 25
Il s’agit d’énumérer les chemins de longueur au plus k = 1, puis auplus k = 2, et ainsi de suite, dont l’extrémité terminale est la ville n.
Posons vk(i) longueur du PCC de i à n ayant au plus k arcs, i = 1, 2, …, n.
k = 1 v1(i) = din, i = 1, 2, …, n - 1.
Remarque : vk(n) = 0, k = 1, 2, …, n.
Posons pk(i) indicateur servant à retracer le PCC de i à nayant au plus k arcs, i = 1, 2, …, n.
p1(i) = i, i = 1, 2, …, n.
k > 1 vk(i) = MIN (dij + vk-1(j) ) i = 1, 2, …, n - 1.1jn
pk(i) = la valeur j pour laquelle MIN est atteint.
Le problème du plus court chemin 26
À quel moment s’arrête-t-on ?
Étant donné qu’il est toujours possible d’ordonnancer un grapheconnexe et sans circuit et de classer ses sommets par niveaux,s’il y a N niveaux,
le sommet 1 appartient au premier niveau,le sommet n au dernier niveau,les chemins reliant le sommet 1 au sommet n sont au plusde longueur N – 1.
En pratique, on arrête à l’itération k où vk(i) = vk-1(i) i.
Comment retracer le chemin optimal de i à n ?
(i, pk-1(i), pk-2(pk-1(i)), …, p1(p2(p3(… pk-1(i))), n)
en éliminant les valeurs identiques.
Considérons l’exemple précédent :
i 1 2 3 4 5 6 7 8v1(i) 6 2 0p1(i) 1 2 3 4 5 6 7 8
v2(i) 15 9 8 6 2 0p2(i) 1 2 7 7 7 6 7 8
v3(i) 17 11 15 9 8 6 2 0p3(i) 4 5 7 7 7 6 7 8
v4(i) 17 11 15 9 8 6 2 0p4(i) 4 5 7 7 7 6 7 8
L’algorithme s’arrête car v4(i) = v3(i) i.
Exemple : Chemin optimal du sommet 1 au sommet 8 :(1 – 4 – 7 – 8) avec une longueur = 17.
Le problème du plus court chemin 28
Énoncé de l’algorithme de Bellman – Kalaba (Type Futur – Passé)
(0) Renuméroter les sommets suivant l’ordonnancement précédent.Réécrire la matrice des distances.
(1) Poser v1(i) = din, i = 1, 2, …, n,p1(i) = i, i = 1, 2, …, n.
Poser k = 2.vk(i) = MIN (dij + vk-1(j) ) i = 1, 2, …, n - 1.
1jn
pk(i) = la valeur j pour laquelle MIN est atteint.
(2) Faire
Poser vk(n) = 0, pk(n) = n.
(3) Si vk(i) = vk-1(i) i alors aller à (4)sinon faire k = k + 1
aller à (2).(4) vk-1(1) représente la valeur optimale du problème posé.
Le problème du plus court chemin 29
(5) Poser t = k – 1 et x(t) = 1.
Il reste à retracer le chemin optimal.
(6) Faire x(t – 1) = pt(x(t)).
(7) Si t > 1alors faire t = t – 1,aller à (6)
sinon le chemin optimal est le suivant :(1, x(k-2), x(k-3), …, x(2), x(1), n)
où on élimine tous les sommets qui se répètentsauf un.Il reste à renuméroter les indices comme ilsétaient initialement.
FIN
Le problème du plus court chemin 30
Remarque :
Il n’est pas nécessaire d’ordonnancer les sommets du grapheavant d’appliquer l’algorithme, mais cela est préférable, car il nouspermet d’avoir des sous la diagonale de la matrice des distances.
Cela permet de simplifier l’algorithme précédent !
1 2 3 4 5 6 7 81 0 9 3 8 2 0 4 3 3 0 7 13 4 0 2 7 5 0 4 6 6 0 67 0 28 0
Le problème du plus court chemin 31
Énoncé de l’algorithme de type Passé – Futur
(0) Renuméroter les sommets suivant l’ordonnancement précédent.Réécrire la matrice des distances.
(1) Poser u1(j) = d1j, j = 1, 2, …, n,p1(j) = j, j = 1, 2, …, n.
Poser k = 2.
uk(j) = MIN (dij + uk-1(i) ) j = 2, 3, …, n.1in
pk(j) = la valeur i pour laquelle MIN est atteint.
(2)
faire
Poser uk(1) = 0, pk(1) = 1.
(3) Si uk(j) = uk-1(j) j alors aller à (4)sinon faire k = k + 1, aller à (2).
Soit uk(j) longueur du PCC de 1 à j ayant au plus k arcs, j = 1, 2, …, n.
Le problème du plus court chemin 32
(5) Poser t = k – 1 et x(t) = n.
Il reste à retracer le chemin optimal.
(6) Faire x(t – 1) = pt(x(t)).
(7) Si t > 1alors faire t = t – 1,aller à (6)
sinon le chemin optimal est le suivant :(1, x(1), x(2), …, x(k - 2), n)
où on élimine tous les sommets qui se répètentsauf un.Il reste à renuméroter les indices comme ilsétaient initialement.
FIN
(4) uk-1(n) représente la valeur optimale du problème posé.
Le problème du plus court chemin 33
Critère d’arrêt de cet algorithme :
u1(j) u2(j) u3(j) u4(j) … uk(j) longueur du pcc entre 1 et j j.
Si le graphe contient au moins un chemin entre 1 et j et il n’y a pasde cycles négatifs, alors un pcc contiendrait au plus n-1 arcs ce quiimplique que un-1(j) longueur du pcc entre 1 et j j.
En fait, l’algorithme arrête lorsque uk(j) = uk-1(j) j.
Considérons l’exemple précédent :
i 1 2 3 4 5 6 7 8u1(j) 0 9 3 8 p1(j) 1 2 3 4 5 6 7 8
u2(j) 0 9 3 8 10 15 p2(j) 1 2 3 4 4 6 4 8
u3(j) 0 9 3 8 10 14 15 17p3(j) 1 2 3 4 4 5 4 7
u4(j) 0 9 3 8 10 14 15 17p4(j) 1 2 3 4 4 5 4 7
L’algorithme s’arrête car u4(j) = u3(j) j.
Exemple : Chemin optimal du sommet 1 au sommet 8 :(1 – 4 – 7 – 8) avec une longueur = 17.
Le problème du plus court chemin 35
Version « graphique » de l’algorithme de type Passé – Futur
Il est possible d’appliquer directement ces algorithmes sur le graphelui-même au moyen d’un marquage des sommets.
À chaque sommet j est associé une double case :
Valeur minimale des chemins allant du sommet 1 à ce sommet j.
Indicateur servant à retracer le PCC de 1 à j.
Reprenons le même exemple.
Le problème du plus court chemin 36
1
2
6
5
3
7
4
8
9
8
3
613
7
4
3
4
2
2
6
7
k = 1
0
98
3
1
2
3
4 5
6
8
7
Pour déterminer les valeurs minimales associées aux sommets, il estpréférable de procéder à leurs évaluations selon un ordonnancementconnu : 1 – 2 – 3 – 4 – 5 – 6 – 7 – 8.
Le problème du plus court chemin 37
1
2
6
5
3
7
4
8
9
8
3
613
7
4
3
4
2
2
6
7
k = 2
0
98
3
10
14
17
15
1
2
3
4 4
5
7
4
k = 3 Idem.
Le problème du plus court chemin 38
Reprenons le même exemple sans ordonnancement des sommets.
A
B
G
E
C
F
D
H
9
8
3 7
137
4
3
4
6
2
6
2
L’ordre A - B - C - D - E - F - G – H sera respecté.
0 A
9 B
3 G
8 E
C
D
H
F
k = 1
Le problème du plus court chemin 39
A
B
G
E
C
F
D
H
9
8
3 7
137
4
3
4
6
2
6
2
0 A
9 B
3 G
8 E
10 E
14 C
17 F
15 E
k = 2
k = 3 Idem.
Note : Lorsqu’il n’existe pas de cycles de longueur négative, cetteméthode convient.
Le problème du plus court chemin 40
Arborescence des plus courts chemins avec comme origine A
A
B
G
E
C
F
D
H
9
8
3 7
137
4
3
4
6
2
6
2
0 A
9 B
3 G
8 E
10 E
14 C
17 F
15 E
À partir des résultats obtenus, on peut construire facilement une tellearborescence.
41
Approche vorace – Algorithme de DIJKSTRA (dij > 0)
Posons LC(s) longueur du pcc entre 1 et s dont les sommets intermédiaires font partie de C, s S.
pC(s) le sommet qui précède s dans ce pcc.
(1) Poser C = {1}. LC(i) = d1i, i = 2, …, n 0, i = 1.
Poser pC(s) = 1 s 1 S.
(2) Trouver k S – C tel que MIN LC(j) est atteint.j S – C
Poser C = C {k}.
(3) Si C <> S alorsposer LC(j) = MIN{LC(j) , LC(k) + dkj} j S–Csi MIN est atteint à LC(k) + dkj, pC(j) = k j S–C
Retournez à l’étape 2.
42
Théorème :
À chaque itération de l’algorithme, lorsque k est ajouté à C,LC(k) est la longueur du pcc de 1 à k, sans restriction.
Exemple :
1
2
3 4 7
5 6
2 25
4 1
43
5
7
17
5
Note : L’algorithme fournit le pcc de 1 à tout autre sommet. Si l’oncherche le pcc entre 1 et un sommet s, alors on peut arrêterl’algorithme au moment où s entre dans C.
Le problème du plus court chemin 43
1 2 3 4 5 6 7 C
{1}0 2 5 4 1 1 1 1 1 1
LC
pC
{1, 2}0 2 4 9 4 1 2 2 1 1 1
LC
pC
{1, 2, 3}0 2 4 9 4 7 1 2 2 1 3 1
LC
pC
{1, 2, 3, 5}0 2 4 9 4 7 1 2 2 1 3 1
LC
pC
{1, 2, 3, 5, 6}0 2 4 8 4 7 14
1 2 6 1 3 6LC
pC
Le problème du plus court chemin 44
{1, 2, 3, 5, 6, 4}0 2 4 8 4 7 13
1 2 6 1 3 4LC
pC
pcc entre 1 et 7 :
7, pC(7), pC(4), pC(6), …, 1 ou encore
7, 4, 6, 3, 2, 1.
Le tracé du pcc est obtenu en procédant à reculons.
Note : S’il n’y a pas de chemin entre 1 et j dans le graphe, alorsLC(j) = à la fin de l’algorithme.
Le problème du plus court chemin 45
Recherche du pcc entre chaque paire de sommets
L’algorithme de FLOYD – WARSHALL admet des arcs delongueur négative mais pas de cycles négatifs.
On pourrait appliquer l’un des algorithmes précédents n fois pourobtenir ce résultat mais l’algorithme suivant est plus efficace.
PosonsLij
(m) = longueur d’un pcc entre i et j, sujet à la condition quele chemin ne passe pas par les sommets m, m+1, …, n(i et j exceptés),
nous avons l’équation de récurrence suivante :
Lij(m+1) = min {Lij
(m), Lim(m) + Lmj
(m)}.
Le pcc ne passe pas par m. Le pcc passe par m.
Le problème du plus court chemin 46
Énoncé de l’algorithme FLOYD - WARSHALL
Poser Lij(1) = dij, i,j = 1, 2, …, n.
pij(1) = j, j = 1, 2, …, n.Poser k = 1.
(2)
(3) Si k == n alors aller à (4)sinon faire k = k + 1,
aller à (2).
(1)
Faire Lij(k+1) = min {Lij
(k), Lik(k) + Lkj
(k)},Si le pcc passe par k alors pij(k + 1) = k
sinon pij(k + 1) = pij(k)
i,j = 1, 2, …, n,
Le problème du plus court chemin 47
(4) Poser x(1) = j, x(2) = pij(n+1) et t = 3.
Il reste à retracer le chemin optimal entre i et j.
(5) Faire x(t) = pix(t-1)(n+1).
(6) Si t <> n - 1alors faire t = t + 1,
aller à (5)sinon le chemin optimal est le suivant :
(i = x(t+1), x(t), …, x(1) = j).
FIN
Exemple :
1
2
3
4
4
31
-2
4
L(1)
0 4 0 1 4-2 0 1 3 0
p(1)1 2 3 41 2 3 41 2 3 41 2 3 4
L(2)
0 4 0 1 4-2 2 0 1 3 0
p(2)1 2 3 41 2 3 41 1 3 41 2 3 4
L(3)
0 4 5 8 0 1 4-2 2 0 1 3 4 0
p(3)1 2 2 21 2 3 41 1 3 41 2 2 4
L(4)
0 4 5 6-1 0 1 2-2 2 0 12 3 4 0
p(4)1 2 2 33 2 3 31 1 3 23 2 2 4
1
Le problème du plus court chemin 49
L(5)
0 4 5 6-1 0 1 2-2 2 0 12 3 4 0
p(5)1 2 2 33 2 3 31 1 3 23 2 2 4
xChemin optimal entre 1 et 4 :
1 3 2 4
Le problème du plus court chemin 50
Conclusion
Ce sujet a été traité dans la plupart des livres portant sur larecherche opérationnelle.
Toutefois, je vous réfère au livre suivant :
« Ronald L. Rardin, Optimization in Operations Research.Prentice Hall, 1998, 919p. »
Recommended