Vous êtes sur la page 1sur 17

Chapitre 23

Problèmes de cheminement

1
Plan

 Problème du plus court chemin


 Algorithme Dijkstra
 Algorithme Bellman-Ford

2
Introduction (1)

oLes problèmes de cheminement sont des problèmes


classiques de la théorie des graphes.

o L'objectif est de calculer une route entre des sommets d'un


graphe qui minimise ou maximise une certaine fonction
économique.

3
Introduction (2)

o Le problème le plus classique consiste à chercher le chemin le plus


court entre deux sommets (qui minimise la somme des valuations des
arêtes traversées).

o Le problème de planification consiste à chercher le chemin le plus


court dans un graphe (chemin critique pour la réalisation d’un projet).
4
Problème du plus court
chemin

5
Problème du plus court chemin
(1)

Problèmes de
cheminement

Plus Problème Voyageur Postier


court d’ordon- de chinois
chemin nancement commerce

Algorithmes
Bellman-Ford Graphes
PERT déterministes
Dijkstra Eulériens
GANTT Algorithmes
Floyd minimaux
d’approximation

6
Problème du plus court chemin
(2)
 Le poids c(p) d’un chemin p est la somme des arrêtes le long du
chemin. Le poids d’un chemin est aussi appelé longueur du
chemin.

 Étant donné un graphe valué et deux sommets u et v, nous


voulons trouver le chemin de poids total minimum entre u et v.

 Le plus court chemin entre 2 sommets u et v est alors défini


comme le chemin de plus faible poids reliant u et v.

➢ Dijkstra
➢ Bellman-Ford
➢ Floyd 7
Algorithme Dijkstra

8
Algorithme Dijkstra

Cet algorithme est une adaptation de l'algorithme de recherche


pour calculer les plus court chemin d'un sommet u à tous les
autres sommets du graphe.

Il est plus efficace que Bellman-Ford, mais ne fonctionne que


dans le cas où toutes les valuations des arcs sont positives.

9
Principe

o On construit petit à petit, à partir de {x0}, un ensemble M de


sommets marqués. Pour tout sommet marqué, l’estimation d(s)
est égale à la distance d(x0, s).

o A chaque étape, on sélectionne le sommet non marqué x dont la


distance estimée d(x) est la plus petite parmi tous les sommets non
marqués.
o On marque alors x (on rajoute x à M), puis on met à jour à partir
de x les distances estimées des successeurs non marqués de x.
o On recommence, jusqu’à épuisement des sommets non marqués.

10
Algorithme Dijkstra
Initialisation
d(x0) = 0, P(x0) = nul
aucun sommet n’est marqué
min_dist_M = 0 (minimum des distances estimées des sommets non marqués)
Pour tout s ∈ S, s  x0 répéter
d(s) = +∞
Fin pour
Répéter
chercher x non marqué tel que d(x) = min_dist_M
marquer x
Pour tout y non marqué répéter
si d(x) + v(x, y) < d(y) alors
d(y) ← d(x) + v(x, y) (MAJ distance)
P(y) ← x (MAJ père)
min_dist_M = min{d(s), s  M}
Fin pour
Jusqu’à ce que M = S

11
8 B

Exemple A
2
5

D
Origine: A 3
Destination: B
6 1
M d(A) d(B) d(C) d(D)
 0 + + +
{A} - 8 6 2
C
{A,D} - DB+2=7 DC+2=3 -
(<8) (<6)

{A,D,C} - CB+3=6 - -
(<8)

{A,D,C,B} - - - -

Le chemin le plus court: A-D-C-B = 6

12
Travail à faire
1
B C
Origine: A
Destination: C 10
9
2 3 6
A
4
5
E
2

D
7

13
Solution B
1
C

10 9
2 3 6
A
4
5
E
M d(A) d(B) d(C) d(D) d(E) 2
 0 + + + + D
{A}
7
10 + + 5
{A,E} 8 14 7
{A,E,D} 8 13
{A,E D, B} 9

14
Solution
1
B C

10 9
2 3 6
A
4
5
E
M d(A) d(B) d(C) d(D) d(E) 2
 0 + + + + D
{A}
7
- 10 + + 5
{A,E} - 8 14 7 -
{A,E,D} - 8 13 - -
{A,E D, B} - - 9 - -
{A,E D, B,C} - - - - -

15
Exercice

Dans le contexte de la pandémie de COVID-19, un laboratoire d’analyses cherche à


optimiser la distance parcourue par l’ambulancier pour aller aux patients qui
demandent de faire des tests PCR à domicile. Les différents patients sont
géographiquement dispersés aux alentours du laboratoire. Le graphe ci-dessous
modélise cette situation tels que le nœuds « a » représente le laboratoire, le nœud
« f » est le dernier patient à visiter et les autres nœuds représentent le reste des
patients. Les routes entre les différents patients ainsi que les distances en kilomètre
sont représentées dans le graphe suivant :

16
Trouver le chemin qui minimise la distance de déplacement entre le
laboratoire et le dernier patient à visiter en appliquant l’algorithme de Dijkstra.

17

Vous aimerez peut-être aussi