0% ont trouvé ce document utile (0 vote)
505 vues17 pages

Chapitre 3. Cheminement

Ce document traite des problèmes de cheminement dans les graphes, notamment le problème du plus court chemin. Il présente les algorithmes de Dijkstra et Bellman-Ford pour résoudre ce problème, en détaillant le fonctionnement de l'algorithme de Dijkstra. Un exemple d'application sur un graphe est également fourni.

Transféré par

Eya Chaouachi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
505 vues17 pages

Chapitre 3. Cheminement

Ce document traite des problèmes de cheminement dans les graphes, notamment le problème du plus court chemin. Il présente les algorithmes de Dijkstra et Bellman-Ford pour résoudre ce problème, en détaillant le fonctionnement de l'algorithme de Dijkstra. Un exemple d'application sur un graphe est également fourni.

Transféré par

Eya Chaouachi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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