Le problme du plus court chemin - PowerPoint PPT Presentation

1 / 50
About This Presentation
Title:

Le problme du plus court chemin

Description:

Graphe orient o il existe tjrs un chemin allant de x y x, y S. ... Valeur minimale des chemins allant du sommet 1 ce sommet j. Indicateur servant ... – PowerPoint PPT presentation

Number of Views:614
Avg rating:3.0/5.0
Slides: 51
Provided by: www2Ift
Category:
Tags: allant | chemin | court | plus | problme

less

Transcript and Presenter's Notes

Title: Le problme du plus court chemin


1
Le problème du plus court chemin
Énoncé du problème et construction dun modèle
Partitionnement des sommets par niveaux dun
graphe fortement connexe sans circuit
Théorème doptimalité 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
Algorithme de FLOYD WARSHALL
2
Énoncé du problème
Considérons n villes V1, V2, , Vn reliées entre
elles par un réseau routier.
Bob séjournant en V1 désire se rendre à la ville
Vn. En examinant le réseau routier reliant ces 2
villes et, parmi toutes les possibilités
qui soffrent à 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 court chemin sans nécessairement
passer par toutes les villes intermédiaires.
Par quelles villes, Bob doit-il passer pour
minimiser la distance totale parcourue ?
3
Construction dun modèle
Le réseau de transport de Bob peut se traduire
facilement sous la forme dun graphe
Vn-2
V2
V4
Vn
V1
V3
Vn-1
où les sommets représentent les villes et où les
arcs représentent les routes possibles pour aller
dune ville à lautre.
Note
En labsence darcs entre 2 villes, cela signifie
quil ny a pas de route directe entre celles-ci.
4
Matrice associée au graphe
Nous définissons un graphe orienté G (S, U) où
S s1, s2, , sn, lensemble des sommets du
graphe,
U (x, y) ? S x S il existe une route directe
allant de x à y, lensemble des arcs du graphe.
Une matrice A (aij), i 1, 2, , n associée
au graphe G j 1, 2, , n est définie comme
suit 1 si (si, sj) ? U aij 0
autrement.
5
Exemple
2
3
1
4
6
5
1 2 3 4 5 6
  • 0 1 1 0 0 0
  • 0 0 1 1 0 0
  • 0 0 0 1 1 0
  • 1 0 0 0 1 0
  • 1 1 0 0 0 1
  • 0 0 0 0 0 0

Matrice associée à G
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 la ville 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 de temps, de coût, de probabilité ou autre
chose.
7
Exemple dun graphe arc-valué
3
B
C
4
9
4
2
8
6
A
E
D
3
7
7
6
13
G
F
2
H
8
Exemple dun graphe arc-valué
Soit le réseau routier suivant et le graphe
correspondant,
9
Formulation du problème
En ajoutant un arc fictif (sn, s1), on obtient
? dij zij
Min
i 1, 2, , n j 1, 2, , n tel que (si, sj) ? U
0 ?i.
? zij
? zki
-
sujet à
j 1, 2, , n tel que (si, sj) ? U
k 1, 2, , n tel que (sk, si) ? U
zn1 1
zij ? 0
i 1, 2, , n j 1, 2, , n tel que (si, sj) ?
U.
Cela équivaut à envoyer une unité de flot de 1 à
n au moindre coût. Cest donc un cas particulier
du problème de flot à coût minimal.
10
Remarque
Nous sommes amenés à résoudre 3 types de
problèmes impliquant des plus courts chemins
  • un pcc entre un sommet i et un sommet j
  • un pcc entre un sommet i et tous les autres
    sommets du graphe
  • un pcc entre chaque paire de sommets dans un
    graphe.

Les méthodes proposées pour résoudre le premier
problème sont appropriées pour les 2 autres
problèmes également.
On peut utiliser la méthode du simplexe en
programmation linéaire pour résoudre ce problème
mais il existe des méthodes beaucoup plus
efficaces.
11
Rappel de quelques définitions sur la structure
de graphe
Chemin
Une suite darcs u1, u2, , uk telle que
lextrémité terminale de chaque arc coïncide avec
lextrémité initiale de larc suivant 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 est identique au sommet extrémité du
chemin.
Exemple Circuit de longueur 4 du graphe G
(2, 3) (3, 5) (5, 1) (1, 2).
12
Si un graphe orienté contient un circuit dont la
longueur est lt 0 (un cycle négatif), il se peut
que le plus court chemin nexiste pas.
-5
1
1
6
1
5
4
2
-1
3
2
3
On exclut demblée ce type de graphe de la
discussion subséquente.
13
Graphe non orienté
U désigne plutôt un ensemble darê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 dun graphe non orienté
Une suite darêtes distinctes u1, u2, , uk avec
la propriété quil existe k 1 sommets x1, x2,
, xk1 tels que ui ? (xi, xi1), ? 1 ? i ? k.
Exemple (3, 2) (3, 5) (1,5) (2, 1) est
une chaîne.
Cycle
Une chaîne où x1 xk1.
Graphe connexe
Graphe non orienté dans lequel il est toujours
possible de relier entre eux 2 sommets
quelconques par une chaîne.
14
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 graphe orienté, à condition que les dij ?
0 pour tout (i,j).
Il sagit 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 lun des dij était lt 0, ceci créerait des
cycles négatifs.
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
graphes fortement connexes sans circuit.
15
Relation dordre 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 danté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).
16
Partitionnement des sommets par niveaux dun
graphe fortement connexe sans circuit
Tous les éléments dun même niveau nont pas
dancêtres dans le niveau qui suit, ni de
descendants dans le niveau qui précède.
Les éléments du premier niveau nont pas
dancêtres et ceux du dernier niveau nont pas de
descendants.
Lordre des sommets dun même niveau est
indifférent i.e. les sommets dun même niveau ne
sont pas reliés entre eux par des arcs.
Une décomposition par niveaux existe toujours
mais elle nest pas nécessairement unique.
17
Illustration de la méthode de partitionnement des
sommets par niveaux dun graphe fortement connexe
sans circuit
Exemple
1
8
5
4
2
7
6
3
Ai ? la iième ligne de la matrice associée au
graphe.
18
V0 A5
V1 A2
V2 A6
V3 A1 A3
V4 A7
V5 A4
19
Procédé
Déterminons dabord les sommets qui nont pas
dancêtres
V0 A1 A2 A8.
On constate que le sommet 5 nadmet aucun arc du
type (- , 5). Le sommet 5 forme donc le niveau I.
Pour déterminez le niveau II, il faut chercher
tous les sommets dont le seul ancêtre est 5
V1 V0 A5.
Le sommet 2 na pas dautres ancêtres que le
sommet 5. Le sommet 2 forme donc le niveau II.
Comme on peut le constater, pour obtenir les
sommets dun niveau, il suffit denlever au
vecteur précédent les lignes associées
aux sommets 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
lun quelconque des niveaux IV, V ou VI.
En supposant les sommets 1 et 3 au niveau IV, on
peut choisir comme ordonnancement 5 2 6 1
3 7 4 8 ou encore 5 2 6 3 1
7 4 8.
21
Note
Le PCC de V1 à V8 se résume au graphe
Solution triviale.
8
1
Le PCC de V2 à V8 se résume au graphe suivant (il
faut négliger V5 et les arcs qui en sont issus)
1
8
7
4
2
6
3
22
Théorème doptimalité de Bellman-Pontryagin
Il sénonce sous lune des 2 formes suivantes
Passé - Futur
Tout chemin reliant la ville V1 à la ville Vn est
optimal si tout chemin partiel de V1 à Vk issu de
ce chemin est lui-même optimal 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 si tout chemin partiel de Vk à Vn issu de
ce chemin est lui-même optimal de Vk à Vn et ce
pour tous les indices k de ce chemin.
23
Reprenons lexemple présenté antérieurement
3
B
C
4
9
4
2
8
6
A
E
D
3
7
7
6
13
G
F
2
H
En énumérant tous les chemins possibles de A à H,
on en déduit que la 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.
24
Présentation dun algorithme de type Futur-Passé
Renumérotons les villes selon un ordonnancement
obtenu à laide de lapproche précédente.
A B G E C D F H . . . . . . . . . . . . . . . . .
. . . . . . . 1 2 3 4 5 6 7 8
3
4
5
4
2
2
7
4
3
9
7
6
3
6
13
8
1
6
7
2
8
25
Il sagit dénumérer les chemins de longueur au
plus k 1, puis au plus k 2, et ainsi de
suite, dont lextrémité terminale est la ville n.
Posons vk(i) ? longueur du PCC de i à n ayant au
plus k arcs, ? i 1, 2, , n.
Remarque
vk(n) 0, ? k 1, 2, , n.
Posons pk(i) ? indicateur servant à retracer le
PCC de i à n ayant au plus k arcs, ? i 1, 2,
, n.
v1(i) din, ? i 1, 2, , n - 1.
k 1
p1(i) i, ? i 1, 2, , n.
k gt 1
vk(i) MIN (dij vk-1(j) ) ? i 1, 2, , n -
1. 1?j?n
pk(i) la valeur j pour laquelle MIN est atteint.
26
À quel moment sarrête-t-on ?
Étant donné quil est toujours possible
dordonnancer un graphe connexe et sans circuit
et de classer ses sommets par niveaux, sil 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
plus de longueur N 1.
En pratique, on arrête à lité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.
27
Considérons lexemple précédent
i 1 2 3 4 5 6 7 8 v1(i) ? ? ? ?
? 6 2 0 p1(i) 1 2 3 4 5 6 7 8 v2(i) ? ? 15 9
8 6 2 0 p2(i) 1 2 7 7 7 6 7 8 v3(i) 17 11 15
9 8 6 2 0 p3(i) 4 5 7 7 7 6 7 8 v4(i) 17 11
15 9 8 6 2 0 p4(i) 4 5 7 7 7 6 7 8
Lalgorithme sarrête car v4(i) v3(i) ? i.
Exemple
Chemin optimal du sommet 1 au sommet 8 (1 4
7 8) avec une longueur 17.
28
Énoncé de lalgorithme de Bellman Kalaba (Type
Futur Passé)
(0) Renuméroter les sommets suivant
lordonnancement 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. 1?j?n
(2)
Faire
pk(i) la valeur j pour laquelle MIN est atteint.
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é.
29
Il reste à retracer le chemin optimal.
(5) Poser t k 1 et x(t) 1.
(6) Faire x(t 1) pt(x(t)).
(7) Si t gt 1 alors 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ètent sauf un. Il reste à renuméroter
les indices comme ils étaient initialement.
FIN
30
Remarque
Il nest pas nécessaire dordonnancer les sommets
du graphe avant dappliquer lalgorithme, mais
cela est préférable, car il nous permet davoir
des ? sous la diagonale de la matrice des
distances.
Cela permet de simplifier lalgorithme précédent !
  • 1 2 3 4 5 6 7 8
  • 0 9 3 8 ? ? ? ?
  • ? 0 ? 4 3 ? ? ?
  • ? ? 0 7 ? ? 13 ?
  • ? ? ? 0 2 ? 7 ?
  • ? ? ? ? 0 4 6 ?
  • ? ? ? ? ? 0 ? 6
  • ? ? ? ? ? ? 0 2
  • ? ? ? ? ? ? ? 0

31
Énoncé de lalgorithme de type Passé Futur
(0) Renuméroter les sommets suivant
lordonnancement 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.
(2)
Soit uk(j) ? longueur du PCC de 1 à j ayant au
plus k arcs, ? j 1, 2, , n.
uk(j) MIN (dij uk-1(i) ) ? j 2, 3, ,
n. 1?i?n
faire
pk(j) la valeur i pour laquelle MIN est atteint.
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).
32
(4) uk-1(n) représente la valeur optimale du
problème posé.
Il reste à retracer le chemin optimal.
(5) Poser t k 1 et x(t) n.
(6) Faire x(t 1) pt(x(t)).
(7) Si t gt 1 alors 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ètent sauf
un. Il reste à renuméroter les indices comme
ils étaient initialement.
FIN
33
Critère darrê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 ny a pas de cycles négatifs, alors un
pcc contiendrait au plus n-1 arcs ce qui implique
que un-1(j) ? longueur du pcc entre 1 et j ?j.
En fait, lalgorithme arrête lorsque uk(j)
uk-1(j) ? j.
34
Considérons lexemple précédent
i 1 2 3 4 5 6 7 8 u1(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 17 p3(j) 1 2 3 4 4 5 4 7 u4(j) 0
9 3 8 10 14 15 17 p4(j) 1 2 3 4 4 5 4 7
Lalgorithme sarrête car u4(j) u3(j) ? j.
Exemple
Chemin optimal du sommet 1 au sommet 8 (1 4
7 8) avec une longueur 17.
35
Version  graphique  de lalgorithme de type
Passé Futur
Il est possible dappliquer directement ces
algorithmes sur le graphe lui-même au moyen dun
marquage des sommets.
À chaque sommet j est associé une double case
Indicateur servant à retracer le PCC de 1 à j.
Valeur minimale des chemins allant du sommet 1 à
ce sommet j.
Reprenons le même exemple.
36
Pour déterminer les valeurs minimales associées
aux sommets, il est préférable de procéder à
leurs évaluations selon un ordonnancement connu
1 2 3 4 5 6 7 8.
k 1
3
8
4
5
?
9
2
4
5
4
2
2
7
4
3
9
7
6
3
3
3
0
1
?
6
6
13
8
1
6
7
?
7
2
8
?
8
37
k 2
3
8
4
4
10
9
2
4
5
4
2
2
7
4
3
9
7
6
3
3
3
0
1
14
5
6
13
8
1
6
7
15
4
2
8
17
7
Idem.
k 3
38
Reprenons le même exemple sans ordonnancement des
sommets.
Lordre A - B - C - D - E - F - G H sera
respecté.
k 1
3
9
B
C
?
B
C
4
9
4
2
D
?
8
6
8
A
E
D
E
0
A
3
7
7
6
13
G
F
2
3
G
F
?
H
H
?
39
k 2
3
9
B
E
10
B
C
4
9
4
2
C
14
8
6
8
E
A
E
D
0
A
3
7
7
6
13
G
F
2
3
G
E
15
H
F
17
Idem.
k 3
Note
Lorsquil nexiste pas de cycles de longueur
négative, cette méthode convient.
40
Arborescence des plus courts chemins avec comme
origine A
À partir des résultats obtenus, on peut
construire facilement une telle arborescence.
3
9
B
E
10
B
C
4
9
4
2
C
14
8
6
8
E
A
E
D
0
A
3
7
7
6
13
G
F
2
3
G
E
15
H
F
17
41
Approche vorace Algorithme de DIJKSTRA (dij gt 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.
Trouver k ? S C tel que MIN LC(j) est
atteint. j ? S C
(2)
Poser C C ?k.
Si C ltgt S alors poser LC(j) MINLC(j) , LC(k)
dkj ?j ? SC si MIN est atteint à LC(k)
dkj, pC(j) k ?j ? SC
(3)
Retournez à létape 2.
42
Théorème
À chaque itération de lalgorithme, lorsque k est
ajouté à C, LC(k) est la longueur du pcc de 1 à
k, sans restriction.
Exemple
2
7
2
2
5
5
5
3
1
4
7
1
4
1
3
7
4
5
6
Note
Lalgorithme fournit le pcc de 1 à tout autre
sommet. Si lon cherche le pcc entre 1 et un
sommet s, alors on peut arrêter lalgorithme au
moment où s entre dans C.
43
C
5
6
7
4
1
2
3
?
?
?
0
2
5
4
1
LC
1
1
1
1
1
1
pC
0
2
4
9
4
?
?
1, 2
LC
1
2
2
1
1
1
pC
0
2
4
9
4
7
?
1, 2, 3
LC
1
2
2
1
3
1
pC
0
2
4
9
4
7
?
1, 2, 3, 5
LC
1
2
2
1
3
1
pC
0
2
4
8
4
7
14
1, 2, 3, 5, 6
LC
pC
1
2
6
1
3
6
44
0
2
4
8
4
7
13
1, 2, 3, 5, 6, 4
LC
pC
1
2
6
1
3
4
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
Sil ny a pas de chemin entre 1 et j dans le
graphe, alors LC(j) ? à la fin de lalgorithme.
45
Recherche du pcc entre chaque paire de sommets
Lalgorithme de FLOYD WARSHALL admet des arcs
de longueur négative mais pas de cycles négatifs.
On pourrait appliquer lun des algorithmes
précédents n fois pour obtenir ce résultat mais
lalgorithme suivant est plus efficace.
Posons Lij(m) longueur dun pcc entre i et j,
sujet à la condition que le chemin ne passe pas
par les sommets m, m1, , n (i et j exceptés),
nous avons léquation de récurrence suivante
Lij(m1) min Lij(m), Lim(m) Lmj(m).
Le pcc ne passe pas par m.
Le pcc passe par m.
46
Énoncé de lalgorithme FLOYD - WARSHALL
Poser Lij(1) dij, ? i,j 1, 2, , n. pij(1)
j, ? j 1, 2, , n. Poser k 1.
(1)
? i,j 1, 2, , n,
(2)
Faire Lij(k1) min Lij(k), Lik(k)
Lkj(k), Si le pcc passe par k alors pij(k 1)
k sinon pij(k 1) pij(k)
(3) Si k n alors aller à (4) sinon faire
k k 1, aller à (2).
47
Il reste à retracer le chemin optimal entre i et
j.
(4) Poser x(1) j, x(2) pij(n1) et t 3.
(5) Faire x(t) pix(t-1)(n1).
(6) Si t ltgt n - 1 alors faire t t
1, aller à (5) sinon le chemin optimal est
le suivant (i x(t1), x(t), , x(1) j).
FIN
48
2
Exemple
4
3
4
4
1
1
1
-2
3
L(1)
L(2)
L(3)
L(4)
  • 0 4 ? ?
  • 0 1 4
  • -2 ? 0 1
  • ? 3 ? 0
  • 0 4 ? ?
  • 0 1 4
  • -2 2 0 1
  • ? 3 ? 0
  • 0 4 5 8
  • 0 1 4
  • -2 2 0 1
  • ? 3 4 0
  • 0 4 5 6
  • -1 0 1 2
  • -2 2 0 1
  • 2 3 4 0

p(1)
p(2)
p(3)
p(4)
  • 1 2 3 4
  • 1 2 3 4
  • 1 2 3 4
  • 1 2 3 4
  • 1 2 3 4
  • 1 2 3 4
  • 1 1 3 4
  • 1 2 3 4
  • 1 2 2 2
  • 1 2 3 4
  • 1 1 3 4
  • 1 2 2 4
  • 1 2 2 3
  • 3 2 3 3
  • 1 1 3 2
  • 3 2 2 4

49
L(5)
  • 0 4 5 6
  • -1 0 1 2
  • -2 2 0 1
  • 2 3 4 0

p(5)
  • 1 2 2 3
  • 3 2 3 3
  • 1 1 3 2
  • 3 2 2 4

Chemin optimal entre 1 et 4
x
1
3
2
4
50
Conclusion
Ce sujet a été traité dans la plupart des livres
portant sur la recherche opérationnelle.
Toutefois, je vous réfère au livre suivant
 Ronald L. Rardin, Optimization in
Operations Research. Prentice Hall, 1998,
919p. 
Write a Comment
User Comments (0)
About PowerShow.com