You are on page 1of 6

Chapitre 6 Recherche Oprationnelle

Chapitre 6

Problme du plus court chemin

1. Introduction

Le problme de recherche de plus court chemin constitue lun des problmes les plus anciens
de la thorie des graphes tant donn le champ large de ses applications.

Soit G=(X,U) ; on associe chaque arc u=(i,j)U un nombre rel quon note l(u) ou lij appel
longueur de larc u. On dit alors que le graphe G est valu par les longueurs l(u). La longueur
dun chemin joignant le sommet i au sommet j est donne par : l()= l(u) .
u

Le problme de plus court chemin entre deux sommets i et j consiste dterminer un chemin
de i j, (i,j), de longueur minimale.

Les longueurs des arcs peuvent correspondre :


des distances physiques,
des cots de transport,
des dpenses de construction,
temps ncessaire une ralisation,

Les longueurs des arcs peuvent tre de signes quelconques. De ce fait, le problme de
recherche de plus long chemin peut se ramener un problme de recherche de plus court
chemin en remplaant les longueurs par leurs opposs.

La longueur dun chemin comprenant un circuit de longueur strictement ngative est non
borne ; car il suffit demprunter ce circuit une infinit de fois. Ce type de circuit est appel
circuit absorbant. Labsence dun circuit absorbant constitue alors une condition ncessaire
lexistence dun chemin de longueur minimale.

Exemple :

On considre une carte routire et on veut chercher la route la plus courte reliant une ville
une autre. Ce problme revient un problme de recherche du plus court chemin. Les
sommets du graphes sont les villes ; les arcs sont les routes reliant les diffrentes villes ; les
longueurs des arcs correspondent aux distances physiques entres les villes. Trouver la route la
plus courte entre deux villes revient trouver le plus court chemin entre deux sommets du
graphe ainsi dfini.

ENIT 2005/2006 8
Chapitre 6 Recherche Oprationnelle

2. Principe doptimalit de Bellman

Ce principe caractrise les parties dun chemin de longueur optimale (minimale ou


maximale).

Thorme

Soit un chemin entre i et j de longueur optimale. Toute partie 1 de reliant un sommet h


un sommet l est alors de longueur optimale.

Dmonstration

tant un chemin entre i et j de longueur minimale. On suppose quil existe une partie 1 de
joignant h l qui nest pas de longueur minimale. Il existe alors un chemin 2 de h l tel
que l(1 )l(2 ). Le graphe identique sauf pour la partie 1 qui est remplace par 2, est
alors de longueur infrieure celle de ; ce qui contredit lhypothse de dpart.

3. Quelques algorithmes de recherche du plus court chemin

Les algorithmes de rsolution du problme de recherche du plus court chemin seront


diffrents suivant les proprits du graphe :
- graphe valu par des longueurs positives,
- graphe valu par des longueurs de signes quelconques,
- graphe sans circuit,
et suivant le problme considr :
- recherche du plus court chemin dun sommet un autre,
- recherche du plus court chemin dun sommet tous les autres,
- recherche du plus court chemin entre tous les couples de sommets.

3.1. Cas dun graphe valu par des longueurs positives

Dans beaucoup de situations, les longueurs des arcs sont non ngatives (par exemple carte
routire). Dans ce cas, pour la recherche du plus court chemin partant dun sommet (not 1)
tous les autres, on utilise lalgorithme de Dijkstra-Moore. Cet algorithme permet de rsoudre
le problme en question en n-1 itrations (n tant lordre du graphe G=(X,U)). Au dbut de
chacune des itrations lensemble des sommets est partitionn en deux sous-ensembles : P et
T = X-P, avec 1P. Lalgorithme de Dijkstra-Moore est bas sur le calcul des plus courtes
distances de proche en proche par ajustements successifs.

Algorithme de Dijkstra-Moore (1959)

- Etape 1 : Initialisation

(1)=0
i T, (i)=l1i si (1,i) U
= sinon
P={1}
T={2, , N}

ENIT 2005/2006 9
Chapitre 6 Recherche Oprationnelle

- Etape 2 :

Slectionner j T tel que (j)= min (i)


iT
Faire : T=T\{j}
P=P{j}
Si T = alors fin sinon aller ltape 3.

- Etape 3 :

i T tel que (j,i)U faire : (i)=min ((i), (j)+ lji)


Aller ltape 2.

Application de lalgorithme de Dijkstra -Moore sur un exemple

Une entreprise doit livrer la commande dun client. Lentreprise est situe au nud 1 ;
lentrept du client livrer est situ au nud 6. Pour aller chez ce client, il y a diffrents
itinraires possibles en passant par les villes reprsents par les nuds 2, 3, 4 et 5. Les sens de
circulation et les distances physiques sont donns dans le graphe suivant :

4
40 50
20
2 5
70 10
1 50 30
20
10
3 6
40

Figure 1. Application de Dijkstra-Moore

Etape 1 :
(1)=0, (2)=70, (3)=10, (4)= (5)= (6)=
P={1}, T={2, 3, 4, 5, 6}

Etape 2 :
j=3
P={1, 3}, T={2, 4, 5, 6}

Etape 3 :
(2)=min{70, 10+50}
(5)=min{, 10+20}
(6)=min{, 10+40}

Etape 2 :
j=5
P={1, 3,5}, T={2, 4, 6}

ENIT 2005/2006 10
Chapitre 6 Recherche Oprationnelle

Etape 3 :
(2)=min{70, 30+20}
(4)=min{, 30+50}
(6)=min{50, 30+30}

Etape 2 :
j=6
P={1, 3,5,6}, T={2, 4}

Etape 2 :
j=2
P={1, 3,5,6,2}, T={4}

Etape 3 :

(4)=min{30+50,70+40}

Etape 2 :
j=4
P={1, 3,5,6,2,4}, T=
Fin de lalgorithme

Le plus court chemin de 1 6 est 1, 3, 6 de longueur 50.

3.2. Cas dun graphe valu par des longueurs de signes quelconques

Lalgorithme de Dijkstra-Moore ne permet pas de considrer des arcs de longueurs ngatifs.


Dans ce cas, pour la recherche du plus court chemin du sommet 1 tous les autres, on utilise
lalgorithme de Bellman. Il sagit de calculer, pour tout sommet i, litration k, la longueur
du plus court chemin de 1 i contenant au plus k arcs. En labsence dun circuit absorbant, un
chemin de 1 un sommet quelconque i contiendrait au plus n arcs, n tant lordre du graphe
en question G=(X,U).

Algorithme de Bellman-Ford (1958-1962)

- Etape 1 : Initialisation

0 (1)=0
0 (i)= pour tous les autres sommets i
k=1

- Etape 2 :

Pour tous les sommets i faire : k (i)= min ( k-1 (j)+lji)


(j , i)U

- Etape 3 :

Si pour tous les sommets i k (i)= k-1 (i), Fin


Si kn-1, aller ltape 2 avec k=k+1
Si k=n, il existe un circuit de longueur ngative

ENIT 2005/2006 11
Chapitre 6 Recherche Oprationnelle

Remarque : Une amlioration de cet algorithme peut se faire en utilisant les rsultats de
litration en cours, la formule de ltape 2 devient alors :
(k ( j) +l ji), min (k 1( j) +l ji)
( i) =min j pmin
k

i, (j ,i )U j i, (j ,i )U

Application de lalgorithme de Bellman-Ford sur un exemple

Un agent commercial se trouvant la ville S dcide de participer une foire la ville T. Pour
cela, il doit emprunter le rseau routier donn par la figure 2. Lagent commercial a estim le
cot de son transport ainsi que les bnfices rapportes par la vente de produits aux
diffrentes villes intermdiaires. Sur le graphe de la figure 2, les dpenses ont t reprsentes
par des longueurs positives ; les bnfices effectues ont t reprsentes par des longueurs
ngatives. Lobjectif de lagent commercial consiste donc trouver le chemin de plus court
chemin de S T, ce qui revient trouver le chemin qui minimise les cots.

7
A D
2 -8 4 5
-5
S B -1 T
4 1 3
7
C E
4

Figure 2. Application de Bellman

Le chemin le plus court entre S et T est : S, A, B, E, D, T de cot 1.

3.3. Cas dun graphe valu sans circuit

Soit G=(X, U) un graphe dordre n, sans circuit et valu par les longueurs l.

Dans un graphe sans circuit, il existe au moins un sommet ne possdant aucun prcdent,
sinon G possderait un circuit. Soit 1 ce sommet.

Tout chemin allant de 1 un sommet quelconque i dun graphe sans circuit, possde un
nombre fini darcs.

Dfinition

On dfinit le rang dun sommet i dun graphe G sans circuit par :


rg(1) = 0,
rg(i) = le nombre darcs dans un chemin allant de 1 i, de cardinalit maximum.

Dtermination des rangs dans un graphe sans circuit

1. Initialisation : S=X, k=0


2. Sk ={ensemble des sommets sans prcdent dans S}
Pour tout i Sk , rg(i) = k
3. S=X-Sk
Si S= fin

ENIT 2005/2006 12
Chapitre 6 Recherche Oprationnelle

Sinon k=k+1, retour en 2

Dans la suite, on donne un algorithme de recherche du plus court chemin du sommet 1 tous
les autres sommets dans un graphe sans circuit.

Algorithme

- Etape 1 : Initialisation
On pose (1)=0, k=1 et S=X-{iX / rg(i)=0}

- Etape 2 :
Sk ={ iX / rg(i)=k}
Pour tout i Sk faire
( i) =min ( (j )+lji)
(j, i)U

- Etape 3 :
Faire S=S- Sk
Si S= fin
Sinon faire k=k+1, retour ltape 2

Exemple

On considre le graphe sans circuit suivant :

1
2 4
3 10
1 2 5 6
4 2
3 5
7

Chercher le plus court chemin entre le sommet 1 et le sommet 6.

On dtermine le rang de chaque sommet :

rg(1) =0, rg(3)=1, rg(2)=rg(5)=2, rg(4)=3, rg(6)=4.

(1)=0, (3)=4, (2)=min (4+2, 3) =3, (5)=min (4+7)=11, (4)=min (3+1, 11+5)=4,
(6)=min (4+10, 11+2)=13.

Le plus court chemin de 1 6 est : 1, 3, 5 et 6.

ENIT 2005/2006 13

You might also like