Vous êtes sur la page 1sur 28

Théorie des graphes: Problème du

plus court chemin (PPC)


Introduction
• Lorsque plusieurs chemins existe entre deux
sommets dans un graphe, l'être humain se
pose rapidement la question du plus court
chemin possible entre ces deux sommets.
• Dès que le graphe comporte plusieurs dizaines
de sommets et d'arêtes, trouver le plus court
chemin entre deux points devient difficile sans
recourir à un algorithme efficace
Introduction
Exemple
4
40 50
Une entreprise doit distribuer la
marchandise à ses clients situés aux 20
2 5
nœuds 2 à 6. La distance à parcourir d’un 70 10
point à un autre et le sens de circulation
sont indiqués dans la figure ci-contre. 1 50 30
20
10
 Déterminer les plus courts chemins 3 6
entre 1 et 2 et entre 1 et 6 ? 40
 Solution:Le plus court chemin de 1 à
2 est 1, 3, 5, 2 de longueur 50.

 Le plus court chemin de 1 à 6 est 1,


3, 6 de longueur 50.
Introduction
• Le nombre de chemins élémentaires entre deux sommets s et t
étant finis, nous pouvons tous les énumérer en calculant leur
longueur et retenir le plus court. Cet algorithme est correct
mais révèle un grave défaut : son temps d'exécution.

• Si le nombre de chemins élémentaires est bien fini, mais il est


très grand, de l'ordre de n! sur un graphe d'ordre n.

• Donc sur un graphe de seulement 20 sommets, en supposant


que trouver un chemin et calculer sa longueur puissent se faire
en une seule opération, sur un ordinateur pouvant effectuer 1
milliard d'opérations par seconde, il nous faudra patienter 77
ans pour obtenir le meilleur trajet !!!
Introduction
Définition :
• Le problème de Plus Court Chemin (PCC) entre
deux sommets i et j consiste à déterminer un
chemin de i à j, µ(i,j), de longueur minimale.
• Soit G=(X,U) ;
u=(i,j)U  l(u) ou lij   appelé longueur de l’arc
u.
– On dit alors que le graphe G est valué par les
longueurs l(u).
• La longueur d’un chemin µ joignant le sommet i
au sommet j est donnée par : l(µ)=  l (u)
u
Introduction
• La longueur d’un chemin comprenant un circuit de
longueur strictement négative est non bornée (il
suffit d’emprunter ce circuit une infinité de fois)
– Ce type de circuit est appelé circuit absorbant.

• L’absence d’un circuit absorbant constitue une


condition nécessaire à l’existence d’un chemin de
longueur minimale.
Modélisation par PCC
Exemple 1 : Stratégie de remplacement d’équipements
• Une mine a une durée totale d’exploitation de T
années. Elle utilise un équipement qu’elle a acquis
à la date i=0 (équipement neuf).
• Au début de chaque année i
– Soit on garde l’équipement en service pendant [i,i+1]
– Soit on revend cet équipement à un prix de récupération de v(x) (x est l’âge
de l’équipement) et on achète un équipement neuf au prix p(i)
• Le coût d’une année de fonctionnement r(x)
dépend de son âge.
• L’équipement doit être vendu à la date T
Déterminer la politique de remplacement de l’équipement à coût minimal
Modélisation par PCC
Exemple 1 : Stratégie de remplacement d’équipements

0 1 2 … T

• Un sommet est associé à chaque date (T+1 sommets)


• Un arc relie deux sommets i et j  Décision d’acheter un équipement à la date i
et de le vendre à la date j (j>i)
• La longueur d’un arc = (coût d’achat + coût de fonctionnement – prix de vente)
ji
l ij  p( i )   r ( s )  v ( j  i )
s 1

 Politique optimale de remplacement  Plus court chemin de 0 à T


Modélisation par PCC
Exemple 2 : Optimisation des achats
• Le service d’achat doit assurer l’approvisionnement
pendant T périodes pour réaliser un programme de
production. Les quantités à approvisionner sont
connues.
• Le prix d’achat unitaire p(t) dépend de la période
d’approvisionnement t.
• Afin de tirer profit de la variation des prix, l’entreprise
peut :
– acheter la matière en t et constituer des stocks. Le coût unitaire de stockage est de
h(t) pour la période t.
– reporter sa demande moyennant une pénalité de retard. p est la pénalité de
reporter une unité de la demande pendant une période

 Déterminer le plan d’approvisionnement à coût minimal


Modélisation par PCC
Exemple 2 : Optimisation des achats
S
p(1) p(4)
p(2) p(3)

1 2 3 … T
h(1) h(2)
p p p
• X = S  {t, t =1,.., T} (T+1 sommets)
• Un arc (S,t) correspond à la décision d’acheter en la période t. lst = p(t)
• Tout sommet t (t, t =1,.., T-1) est relié à t+1. l’arc (t,t+1) correspond à la décision
de stocker pendant la période t et a une longueur de h(t)
• Tout sommet t (t, t =2,.., T) est relié à t-1. l’arc (t,t-1) correspond à la décision de
reporter la demande de la période t à la période t-1 et a une longueur de p.

 Pour une période t donnée, la politique optimale d’approvisionnement  Plus


court chemin entre le sommet S et le sommet t du graphe
Modélisation par PCC
Exemple 3 : problème de remplissage d’un bassin
Une commune doit réussir à faire monter chaque jour 10 m3 d’eau jusqu’à un bassin
nommé H. Pour cela elle puise dans une source A. Entre les deux, elle a à sa disposition une
série de réservoirs intermédiaires reliés par des pompes (qui consomment de l’énergie), ou
des turbines (qui restituent de l’énergie). Toutes les conduites ont la capacité nécessaire
pour faire transiter les 10 m3 d’eau, mais les rendements n’étant pas tous égaux, les coûts
en énergie varient beaucoup.
Voici les diverses conduites possibles avec leur coût en kWh (lorsque la conduite passe par
une turbine et redonne de l’énergie, le coût est mis en négatif).

Par quelles conduites cette commune doit


faire transiter l’eau pour consommer le
moins d’énergie possible ?
Modélisation par PCC
Exemple 3 : problème de remplissage d’un bassin

Calculer le chemin le plus court allant de A à H sur


ce graphe.
Méthodes de Résolution
• Principe d’optimalité de Bellman

Théorème
• 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.

Le chemin optimal est composé de sous-chemins optimaux


Méthodes de Résolution
• Illustration
2 3

4 5

• Soit (i), la longueur du plus court chemin


entre 1 et i
• Le principe d’optimalité de Bellman implique
que, par exemple, (5) = min {(2) + l25 ; (3)
+ l35 ; (4) + l45}
Méthodes de Résolution
• Algorithmes de rechercher de PCC
Plusieurs algorithmes existent. Ils diffèrent suivant:
Les propriétés du graphe :
– graphe valué par des longueurs positives (Algorithme de Dijkstra-Moore),
– graphe valué par des longueurs de signes quelconques,
– graphe sans circuit,
Cas d’un graphe valué par des
longueurs de signes quelconques
• Algorithme de Bellman-Ford
• Graphe ayant des coûts quelconques

• Recherche du plus court chemin entre un sommet et tous les


autres
Rq.: Il y a convergence en absence de circuit absorbant

 Principe:

 Processus itératif : Déterminer le plus court chemin de proche en proche en


calculant à chaque itération le plus court chemin à un sommet donné i en utilisant
les plus courts chemins à tous les prédécesseurs de i
Algorithme de Bellman-Ford
Soit G = (X,U) un graphe d’ordre N
• Etape 1 : Initialisation
– m=1
– 1(1)=0
–  j # 1 1 (j) = l1j si (1,j)  U
= + sinon
• Etape 2 :
Tant que {m  N-1} ou { il existe j / m+1 (j) < m (j) } Faire
Début
m+1 (j) = min (m (j) , min k#j { m (k) + lkj } )
m=m+1
Fin
Remarque : L’algorithme converge en N-1 itérations.
– Si m=N et il existe j / m (j) < m-1 (j)  il existe un circuit de longueur négative (circuit absorbant)
Exemple Application de l’Algorithme
de Bellman-Ford

A
4 E Appliquer l’Algorithme de
10 5 Bellman pour trouver le
15 D 7 plus court chemin entre le
3 2
sommet A et tout les autres
B C
3 sommet.
Exemple
• Un agent commercial se trouvant à la
ville O décide de participer à une foire à
la ville T. Pour cela, il doit emprunter le
réseau routier donné par la figure ci-
contre. L’agent commercial a estimé le 7
coût de son transport ainsi que les A D
2 -8
bénéfices rapportées par la vente de 4 5
produits aux différentes villes -5
O
S B -1 T
intermédiaires. Sur le graphe, les
3
dépenses ont été représentées par des 4 1 7
C E
longueurs positives ; les bénéfices 4
réalisés ont été représentés par des
longueurs négatives.

– Trouver le chemin emprunté par l’agent


permettant de minimiser ses coûts nets
Solution

Itération O A B C D E T
1 0/O 2/O -5/O 4/O + + +
2 0/O 2/O -6/A 4/O -1/B -2/B +
3 0/O 2/O -6/A 4/O -3/E -3/B 4/D
4 0/O 2/O -6/A 4/O -4/E -3/B 2/D
5 0/O 2/O -6/A 4/O -4/E -3/B 1/D

Le chemin le plus court est O  A  B  E  D  T de coût = 1


Cas d’un graphe sans circuit

• Un graphe G est sans circuit si est seulement si on peut


attribuer un nombre r(v) appelé le rang de v, à chaque
sommet v de manière que pour tout arc (u,v) de G on ait
r(u)<r(v)

• Dans un graphe sans circuit, il existe au moins un sommet ne


possédant aucun précédent. Ce sommet est appelé racine du
graphe. Soit 1 ce sommet.

• Pour ces graphes sans circuit, il existe un algorithme plus


simple de recherche du plus court chemin du sommet 1 à
tous les autres.
Rang d’un sommet dans un graphe
sans circuit
• Définition :
On définit le rang d’un sommet i d’un graphe G sans circuit
par :

r(1) = 0,

r(i) = le nombre d’arcs dans un chemin allant de 1 à i, de


cardinalité maximum.
Algorithme de détermination des
rangs dans un graphe sans circuit
Donnée: Graphe G=(V,E) sans circuit
Résultat: rang r(v) de chaque sommet v ∈ V du graphe G
Exemple : Déterminer les Rangs des
sommets
1
2 4
3
10

1 2 5
6

4
2
3 5
7
Exemple : Déterminer les Rangs des
sommets
1
2 4
3
10

1 2 5
6

4
2
3 5
7

Détermination des rangs des sommets:

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


Algorithme de détermination du plus
court chemin dans un graphe sans circuit
• Etape 1 : Initialisation
On pose (1)=0, k=1 et S=X-{iX / r(i)=0}

• Etape 2 :
Sk={ iX / r(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 à l’étape 2
Exemple
1
2 4
3
10

1 2 5
6

4
2
3 5
7

Déterminer le plus court chemin de 1à 6.


Exemple
1
2 4
3
10

1 2 5
6

4
2
3 5
7

Déterminer le plus court chemin de 1à 6.


Détermination des rangs des sommets:

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


Détermination des plus courts chemins:

 (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.

Vous aimerez peut-être aussi