Vous êtes sur la page 1sur 50

Le problme du plus

court chemin
nonc du problme et construction dun modle
Partitionnement des sommets par niveaux dun graphe
fortement connexe sans circuit
Thorme 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

nonc du problme :
Considrons n villes V1, V2, , Vn relies entre elles par un rseau
routier.
Bob sjournant en V1 dsire se rendre la ville Vn. En examinant le
rseau routier reliant ces 2 villes et, parmi toutes les possibilits qui
soffrent lui, il retient quelques villes intermdiaires V2, V3, , Vn-1
par lesquelles il pourrait passer.
Bob a un budget limit et dsire se rendre de V1 Vn par le plus court
chemin sans ncessairement passer par toutes les villes intermdiaires.
Par quelles villes, Bob doit-il passer pour minimiser la distance
totale parcourue ?

Le problme du plus court chemin

Construction dun modle :


Le rseau de transport de Bob peut se traduire facilement sous la
forme dun graphe :
Vn-2
V2
V4

V1
V3

Vn

Vn-1

o les sommets reprsentent les villes et o les arcs reprsentent les


routes possibles pour aller dune ville lautre.
Note : En labsence darcs entre 2 villes, cela signifie quil ny a pas
de route directe Le
entre
celles-ci.
problme du plus court chemin
3

Matrice associe au graphe :


Nous dfinissons 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
j = 1, 2, , n
est dfinie comme suit :

associe au graphe G

1 si (si, sj) U
aij =
0 autrement.
Le problme du plus court chemin

Exemple :

1
2
Matrice associe G : 3
4
5
6

1
0
0
0
1
1
0

2
1
0
0
0
1
0

3
1
1
0
0
0
0

4
0
1
1
0
0
0

Le problme du plus court chemin

5
0
0
1
1
0
0

6
0
0
0
0
1
0
5

Matrice des distances :


Soit D = (dij) la matrice des distances entre chacune des villes o
dij reprsente 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 reprsenter une mesure de


temps, de cot, de probabilit ou autre chose.
Le problme du plus court chemin

Exemple dun graphe arc-valu :


3

B
9

4
8

A
3

2
6

E
7

7
13

6
2
H

Le problme du plus court chemin

Exemple dun graphe arc-valu :


Soit le rseau routier suivant et le graphe correspondant,

Le problme du plus court chemin

Formulation du problme :
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
sujet zij
j = 1, 2, , n
tel que (si, sj) U

= 0 i.
zki
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 cot.


Cest donc un cas particulier du problme de flot cot minimal.
Le problme du plus court chemin

Remarque :
Nous sommes amens rsoudre 3 types de problmes impliquant
des 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 mthodes proposes pour rsoudre le premier problme sont
appropries pour les 2 autres problmes galement.
On peut utiliser la mthode du simplexe en programmation linaire
pour rsoudre ce problme mais il existe des mthodes beaucoup
plus efficaces.
Le problme du plus court chemin

10

Rappel de quelques dfinitions sur la structure de graphe :


Chemin :

Une suite darcs u1, u2, , uk telle que lextrmit terminale


de chaque arc concide avec lextrmit initiale de larc
suivant dans la suite.

Chemin de longueur k :
Exemple :

Un chemin comprenant k arcs.

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 extrmit du chemin.
Exemple :

Circuit de longueur 4 du graphe G


(2, 3) (3, 5) (5, 1) (1, 2).
Le problme du plus court chemin

11

Si un graphe orient contient un circuit dont la longueur est < 0


(un cycle ngatif), il se peut que le plus court chemin nexiste pas.
1

-5

-1

On exclut demble ce type de graphe de la discussion subsquente.

Le problme du plus court chemin

12

Graphe non orient :


U dsigne plutt un ensemble dartes i.e.
un ensemble de paires non ordonnes de sommets de S.
Exemple :

(3, 2) (3, 5) (1,5) (2, 1) sont des artes du graphe.

Chane dun graphe non orient :


Une suite dartes distinctes u1, u2, , uk avec la proprit quil
existe 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 chane.
Cycle : Une chane o x1 = xk+1.
Graphe connexe :
Graphe non orient dans lequel il est toujours possible de relier entre
eux 2 sommets quelconques par une chane.
Le problme du plus court chemin

13

Rsolution du plus court chemin sur un graphe non orient :


Cela se ramne au mme problme que celui pos sur un graphe
orient, condition que les dij 0 pour tout (i,j).
Il sagit de remplacer chaque arte (i, j) dans le graphe par 2 arcs
(i, j) et (j, i) portant tout deux la mme mesure dij = dji.
Si lun des dij tait < 0, ceci crerait des cycles ngatifs.
Graphe fortement connexe :
Graphe orient o il existe tjrs un chemin allant de x y x, y S.
Nous allons nous intresser dans ce qui suit aux graphes
fortement connexes sans circuit.
Le problme du plus court chemin

14

Relation dordre strict R


Soit un graphe orient G fortement connexe et sans circuit,
soit x, y S et x y,
considrons la relation suivante :
(R)
Note :

x y il existe un chemin de longueur non nulle de x vers y.


R est dite aussi relation dantriorit :
si x y , on dira que x est un anctre de y et
que y est un descendant de x.
R est transitive : x y et y z x z.
R est antisymtrique : x y non (y x).
Le problme du plus court chemin

15

Partitionnement des sommets par niveaux dun graphe fortement


connexe sans circuit
Tous les lments dun mme niveau nont pas danctres dans le
niveau qui suit, ni de descendants dans le niveau qui prcde.
Les lments du premier niveau nont pas danctres et ceux du
dernier niveau nont pas de descendants.
Lordre des sommets dun mme niveau est indiffrent i.e.
les sommets dun mme niveau ne sont pas relis entre eux par des
arcs.
Une dcomposition par niveaux existe toujours mais
elle nest pas ncessairement unique.

Le problme du plus court chemin

16

Illustration de la mthode de partitionnement des sommets par


niveaux dun graphe fortement connexe sans circuit
Exemple :
1
8

5
4

6
3

Ai la iime ligne de la matrice associe au graphe.


Le problme du plus court chemin

17

V0 A5 =
V1 A2 =
V2 A6 =
V3 A1 A3 =
V4 A7 =
V5 A4 =
Le problme du plus court chemin

18

Procd :
Dterminons dabord les sommets qui nont pas danctres :
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 dterminez le niveau II, il faut chercher tous les sommets
dont le seul anctre est 5 :
V1 = V0 A5.
Le sommet 2 na pas dautres anctres 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 prcdent les lignes associes aux
sommets du niveau prcdent.
Le problme du plus court chemin
19

Le graphe peut alors se mettre sous la forme :

Note :
Le sommet 1 peut tre indiffremment 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
20
5 2 6 3 1 7 4 8.

Note :
Le PCC de V1 V8 se rsume au graphe :
Solution triviale.

Le PCC de V2 V8 se rsume au graphe suivant


(il faut ngliger V5 et les arcs qui en sont issus) :
1
8
2

3
Le problme du plus court chemin

21

Thorme doptimalit de Bellman-Pontryagin :


Il snonce 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-mme
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-mme
optimal de Vk Vn et ce pour tous les indices k de ce chemin.

Le problme du plus court chemin

22

Reprenons lexemple prsent antrieurement :


3
B
C
9
4
2
8

A
3

E
7

4
D

7
13

6
2
H

En numrant tous les chemins possibles de A H, on en dduit que


la distance minimale est 17 et que le PCC est AEFH.
Note : On peut vrifier que le thorme est satisfait pour E et F.
Le problme du plus court chemin

23

Prsentation dun algorithme de type Futur-Pass :


Renumrotons les villes selon un ordonnancement obtenu laide de
lapproche prcdente.
A
B
G
E
C
D
F
H
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
1
2
3
4
5
6
7
8
3

4
2
9
1

3
8

4
7

13

6
6

7
2
Le problme du plus court chemin

24

Il sagit dnumrer les chemins de longueur au plus k = 1, puis au


plus k = 2, et ainsi de suite, dont lextrmit 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, 2, , n.
Remarque : vk(n) = 0,
Posons pk(i) indicateur servant retracer le PCC de i n
ayant au plus k arcs,
i = 1, 2, , n.
k=1

k>1

v1(i) = din,

i = 1, 2, , n - 1.

p1(i) = i,

i = 1, 2, , n.

vk(i) = MIN (dij + vk-1(j) )


1jn

i = 1, 2, , n - 1.

pk(i) = la valeur j pour laquelle MIN est atteint.


Le problme du plus court chemin

25

quel moment sarrte-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 arrte litration 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.
Le problme du plus court chemin

26

Considrons lexemple prcdent :


i
1
2
3
4
v1(i)

p1(i) 1
2
3
4

6
6
6

7
2
7

8
0
8

v2(i)
p2(i)

15
7

9
7

8
7

6
6

2
7

0
8

v3(i)
p3(i)

17
4

11
5

15
7

9
7

8
7

6
6

2
7

0
8

v4(i) 17
11
15
9
8
p4(i) 4
5
7
7
7
Lalgorithme sarrte car v4(i) = v3(i) i.

6
6

2
7

0
8

Exemple : Chemin optimal du sommet 1 au sommet 8 :


(1 4 7 8)
avec une longueur = 17.

nonc de lalgorithme de Bellman Kalaba (Type Futur Pass)


(0)

Renumroter les sommets suivant lordonnancement prcdent.


Rcrire la matrice des distances.

(1)

Poser v1(i) = din,


i = 1, 2, , n,
p1(i) = i,
i = 1, 2, , n.
Poser k = 2.
i = 1, 2, , n - 1.
Faire vk(i) = MIN (dij + vk-1(j) )
1jn

(2)

pk(i) = la valeur j pour laquelle MIN est atteint.


Poser vk(n) = 0,
(3)

(4)

pk(n) = n.

Si vk(i) = vk-1(i) i

alors aller (4)


sinon faire k = k + 1
aller (2).
vk-1(1) reprsente la valeur optimale du problme pos.
Le problme du plus court chemin

28

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 > 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 rptent
sauf un.
Il reste renumroter les indices comme ils
taient initialement.
FIN
Le problme du plus court chemin

29

Remarque :
Il nest pas ncessaire dordonnancer les sommets du graphe
avant dappliquer lalgorithme, mais cela est prfrable, car il nous
permet davoir des sous la diagonale de la matrice des distances.
Cela permet de simplifier lalgorithme prcdent !
1

1
0

2
9
0

3
3

4
8
4
7
0

2
0

Le problme du plus court chemin

4
0

13
7
6

6
2
0
30

nonc de lalgorithme de type Pass Futur


(0)

Renumroter les sommets suivant lordonnancement prcdent.


Rcrire la matrice des distances.

(1)

Poser u1(j) = d1j,


j = 1, 2, , n,
p1(j) = j,
j = 1, 2, , n.
Poser k = 2.
Soit uk(j) longueur du PCC de 1 j ayant au plus k arcs,
j = 1, 2, , n.
j = 2, 3, , n.
faire uk(j) = MIN (dij + uk-1(i) )
1in

(2)

pk(j) = la valeur i pour laquelle MIN est atteint.


Poser uk(1) = 0,
(3)

pk(1) = 1.

Si uk(j) = uk-1(j) j

alors aller (4)


sinon faire k = k + 1,
Le problme du plus court chemin

aller31 (2).

(4)

uk-1(n) reprsente la valeur optimale du problme 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 > 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 rptent
sauf un.
Il reste renumroter les indices comme ils
taient initialement.
FIN
Le problme du plus court chemin

32

Critre darrt 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 ngatifs, 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 arrte lorsque uk(j) = uk-1(j) j.

Le problme du plus court chemin

33

Considrons lexemple prcdent :


i
1
2
3
4
u1(j) 0
9
3
8
p1(j) 1
2
3
4

u2(j)
p2(j)

0
1

9
2

3
3

8
4

10
4

15
4

u3(j)
p3(j)

0
1

9
2

3
3

8
4

10
4

14
5

15
4

17
7

u4(j)
0
9
3
8
10
p4(j) 1
2
3
4
4
Lalgorithme sarrte car u4(j) = u3(j) j.

14
5

15
4

17
7

Exemple : Chemin optimal du sommet 1 au sommet 8 :


(1 4 7 8)
avec une longueur = 17.

Version graphique de lalgorithme de type Pass Futur


Il est possible dappliquer directement ces algorithmes sur le graphe
lui-mme 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 mme exemple.


Le problme du plus court chemin

35

Pour dterminer les valeurs minimales associes aux sommets, il est


prfrable de procder leurs valuations selon un ordonnancement
connu : 1 2 3 4 5 6 7 8.
k=1

3
9

4
2

9
0 1
1

3
3 3

5
5

4
4

4
7
13

6
6

7 7
2
Le problme du plus court chemin

8
8
36

k=2

3
9

4
2

9
0 1
1

3
3 3

4
4

10 4
5

4
7
13

14 5

6
6

15 4 7
2

8
17 7
k = 3 Idem.
Le problme du plus court chemin

37

Reprenons le mme exemple sans ordonnancement des sommets.


Lordre A - B - C - D - E - F - G H sera respect.
k=1
9

4
8

A
0 A

7
3

7
13

2
E

F
F

Le problme du plus court chemin

6
2
H
H

38

k=2
9

4
8

A
0 A

7
3

14 C

7
13

2
E

10 E

F
15 E

6
2
H

k=3

17 F

Idem.

Note : Lorsquil nexiste pas de cycles de longueur ngative, cette


mthode convient.
Le problme du plus court chemin

39

Arborescence des plus courts chemins avec comme origine A


partir des rsultats obtenus, on peut construire facilement une telle
arborescence.
9

4
8

A
0 A

7
3

14 C

7
13

2
E

10 E

F
15 E

6
2
H

Le problme du plus court chemin

17 F

40

Approche vorace Algorithme de DIJKSTRA (dij > 0)


Posons LC(s) longueur du pcc entre 1 et s dont les sommets
intermdiaires font partie de C,
s S.
pC(s) le sommet qui prcde 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)
jSC

est atteint.

Poser C = C {k}.
(3)

Si C <> S alors
poser LC(j) = MIN{LC(j) , LC(k) + dkj}
si MIN est atteint LC(k) + dkj, pC(j) = k
Retournez ltape 2.

j SC
j SC
41

Thorme :
chaque itration de lalgorithme, lorsque k est ajout C,
LC(k) est la longueur du pcc de 1 k, sans restriction.
Exemple :
2

2
3
1

4
5

4
1

3
4

7
7

Note : Lalgorithme fournit le pcc de 1 tout autre sommet. Si lon


cherche le pcc entre 1 et un sommet s, alors on peut arrter
42
lalgorithme au moment o s entre dans C.

1
0

2
2
1

3
5
1

5
4
1

C
{1}

LC
pC

2
1

4
2

9
2

4
1

{1, 2}

LC
pC

2
1

4
2

9
2

4
1

7
3

{1, 2, 3}

LC
pC

2
1

4
2

9
2

4
1

7
3

{1, 2, 3, 5}

LC
pC

2
1

4
2

8
6

4
1

7
3

14
6

{1, 2, 3, 5, 6}

LC
pC

Le problme du plus court chemin

43

LC
pC

2
1

4
2

8
6

4
1

7
3

13
4

{1, 2, 3, 5, 6, 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 procdant reculons.
Note : Sil ny a pas de chemin entre 1 et j dans le graphe, alors
LC(j) = la fin de lalgorithme.

Le problme du plus court chemin

44

Recherche du pcc entre chaque paire de sommets


Lalgorithme de FLOYD WARSHALL admet des arcs de
longueur ngative mais pas de cycles ngatifs.
On pourrait appliquer lun des algorithmes prcdents n fois pour
obtenir ce rsultat 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, m+1, , n
(i et j excepts),
nous avons lquation de rcurrence suivante :
Lij(m+1) = min {Lij(m), Lim(m) + Lmj(m)}.
Le pcc ne passe pas par m.

Le pcc passe par m.

Le problme du plus court chemin

45

nonc de lalgorithme FLOYD - WARSHALL


(1)

Poser Lij(1) = dij,


pij(1) = j,
Poser k = 1.

(2)

i,j = 1, 2, , n,

i,j = 1, 2, , n.
j = 1, 2, , n.

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)
(3)

Si k == n

alors aller (4)


sinon faire k = k + 1,
aller (2).

Le problme du plus court chemin

46

Il reste retracer le chemin optimal entre i et j.


(4)

Poser x(1) = j, x(2) = pij(n+1) et t = 3.

(5)

Faire x(t) = pix(t-1)(n+1).

(6)

Si t <> n - 1
alors

faire t = t + 1,
aller (5)
sinon le chemin optimal est le suivant :
(i = x(t+1), x(t), , x(1) = j).
FIN

Le problme du plus court chemin

47

Exemple :
4

p(1)
1 2
1 2
1 2
1 2

1
0

3
3
3
3

4
1
0
4
4
4
4

p(2)
1 2
1 2
1 1
1 2

1
0

3
3
3
3

4
1

-2
L(2)
0 4
0
-2 2
3

L(1)
0 4
0
-2
3

4
1
0

L(3)
0 4 5 8
0 1 4
-2 2 0 1
3 4 0

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

4
4
4
4

p(3)
1 2
1 2
1 1
1 2

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

2
3
3
2

2
4
4
4

2
3
3
2

3
3
2
4

L(5)
0 4 5 6
-1 0 1 2
-2 2 0 1
2 3 4 0
p(5)
1 2
3 2
1 1
3 2

2
3
3
2

3
3
2
4

Chemin optimal entre 1 et 4 :


x
1 3 2 4

Le problme du plus court chemin

49

Conclusion
Ce sujet a t trait dans la plupart des livres portant sur la
recherche oprationnelle.
Toutefois, je vous rfre au livre suivant :
Ronald L. Rardin, Optimization in Operations Research.
Prentice Hall, 1998, 919p.

Le problme du plus court chemin

50

Vous aimerez peut-être aussi