Chapitre 2 problème de plus court chemin
-
Upload
sana-aroussi -
Category
Education
-
view
888 -
download
5
Transcript of Chapitre 2 problème de plus court chemin
![Page 1: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/1.jpg)
CHAPITRE II: PROBLÈME DU PLUS COURT
CHEMIN
Université Blida 1Faculté des Sciences
Département d’InformatiqueMaster GSI (Génie des Systèmes Informatiques)
Semestre 1
Mme AROUSSI
2015-2016
Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/
![Page 2: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/2.jpg)
Introduction
Définition
Conditions (Optimalité/ Nécessaire)
Algorithmes de Résolution Algorithme de DIJKSTRA
Algorithme de BELLMAN
Algorithme de BELLMAN-FORD
Algorithme de FLOYD 2
PLAN DU CHAPITRE II
![Page 3: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/3.jpg)
3
Le problème du Plus Court Chemin (PCC)
compte parmi les problèmes le plus classiques
de la théorie des graphes et les plus importants
dans leurs applications (les problèmes
d'optimisation de réseaux routiers ou
télécommunications, les problèmes de tournées,
….)
INTRODUCTION
![Page 4: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/4.jpg)
4
Ce problème du Plus Court Chemin (PCC) peut être posé
de la façon suivante:
Etant donné un graphe orienté valué G (X,U,L), on
associe à chaque arc u(i,j) un nombre réel l(u) ou lij,
appelé la longueur ou le poids de l’arc, le PCC entre
deux sommets s (source ou origine) et d (destination)
du graphe consiste à déterminer, parmi tous les
chemins allant de s à d, un chemin, noté u*, dont la
longueur totale l(u*) = soit minimale
DÉFINITION
![Page 5: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/5.jpg)
5
Condition Nécessaire: Le problème du plus court
chemin a une solution si et seulement s’il n'existe pas
dans le graphe de circuit de longueur strictement
négative pouvant être atteint à partir de l’origine (s).
Un circuit négatif est appelé circuit absorbant
INTRODUCTION
a
f
b
e
-3
-3
-1
c
d5
-510
2
![Page 6: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/6.jpg)
6
Condition d’Optimalité: Les sous-chemins des plus
courts chemins sont des plus courts chemins.
INTRODUCTION
Exemples des arborescences des plus courts chemins dont l’origine
est aa
b
e
c
d
3
5
3
1 2
6
6
472
a
b
e
c
d
3
5
6
6
a
b
e
c
d
3
2 42
![Page 7: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/7.jpg)
7
Selon les propriétés du graphe traité (orienté/non
orienté, avec/sans circuit ou longueurs
positives/quelconques) et selon le problème considéré
(recherche du plus court chemin d'un sommet vers
tous les autres, ou entre tous les couples de
sommets), il existe de nombreux algorithmes
permettant l'obtention d'une solution.
ALGORITHMES DE RÉSOLUTION
![Page 8: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/8.jpg)
8
ALGORITHMES DE RÉSOLUTION
Algorithmes Type du PCC
Propriétés du graphe
Type de graphe Longueur
Dijkstra D’un sommet à tous les autressommets
Graphe orienté (et non orienté)
Longueur positives
Bellman Graphe orienté sans circuit (sommet d’origine doit être sans prédécesseur)
Longueur quelconque (nombre réel)
Bellman-Ford Graphe orienté
Floyd Entre tous les couples de sommets
Graphe orienté sans circuit absorbant
![Page 9: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/9.jpg)
9
Cet algorithme permet de calculer le PCC d’un sommet «
s » à un sommet « d » ou d’un sommet « s » à tous les
autres sommets dans un graphe de longueur positive.
Soit (i) la valeur de chemin du sommet « s » vers le
sommet « i », ainsi, initialement : (s) = 0 et (x) =
pour tout sommet x ≠s
Soit M l’ensemble des sommets marqués, initialement
il est vide (M = )
ALGORITHME DE DIJKSTRA
![Page 10: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/10.jpg)
10
Tant qu’il existe un sommet non marqué (M≠X) ou on
n’a pas arrivé au sommet destinataire (x ≠ d) faire:
1. Choisir un sommet non marqué, soit x (xX-M),
ayant le plus petit [(x) = min {(y) tq xX-M}]
2. Mettre à jours ses successeurs non encore marqués
comme suit: (y) = min ((y), (x)+lxy) tel que y+(x) (X-
M)
3. Marquer le sommet x [M = M {x}]
ALGORITHME DE DIJKSTRA
![Page 11: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/11.jpg)
11
Exemple: Trouver PCC de a vers tous les autres sommets
ALGORITHME DE DIJKSTRA
(a) (b) (c) (d) (e)0 (init) 0
1 0 (*) 3 52 3(*) 9 53 9 11 5 (*)4 9(*)5 11(*)6 (fin) 0 3 9 11 5
a
b
e
c
d
3
5
3
1 2
6
6
472
![Page 12: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/12.jpg)
12
Exemple: Trouver PCC de a vers tous les autres sommets
Comment trouver le PCC chemin de a vers (b, e, c ou d)?
Pour chaque couple de sommet (i, j), on garde l’arc vérifiant la
relation suivante: u(i,j) = (j) - (i).
ALGORITHME DE DIJKSTRA
a
b
e
c
d
3
5
3
1 2
6
6
472
9
0
5
3
11
![Page 13: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/13.jpg)
13
Exemple: Trouver PCC de a vers tous les autres sommets
On peut trouver plusieurs arborescences:
ALGORITHME DE DIJKSTRA
a
b
e
c
d
3
5
6
6
9
0
5
3
11
a
b
e
c
d
3
2 42
9
0
5
3
11
![Page 14: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/14.jpg)
14
Cet algorithme permet de calculer le PCC d’un sommet «
s » à un sommet « d » ou d’un sommet « s » à tous les
autres sommets dans un graphe orienté sans circuit de
longueur quelconque.
Soit (i) la valeur de chemin du sommet sans prédécesseur
« s » vers le sommet « i », ainsi, initialement : (s) = 0
Soit M l’ensemble des sommets marqués, initialement il
contient « s » (M = {s} )
ALGORITHME DE BELLMAN
![Page 15: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/15.jpg)
15
Tant qu’il existe un sommet non marqué (M≠X) ou on
n’a pas arrivé au sommet destinataire (x ≠ d) faire:
1. Choisir un sommet non marqué, soit x (xX-M), dont
tous les prédécesseurs sont marqués [-(x) M]
2. Mettre à jours son poids comme suit: (x) = min
((y)+lyx) tel que y-(x)
3. Marquer le sommet x [M = M {x}]
ALGORITHME DE BELLMAN
![Page 16: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/16.jpg)
16
Exemple: Trouver PCC de a vers tous les autres sommets
ALGORITHME DE BELLMAN
(a) (b) (c) (d)0 (init) 0 (*) - - -1 2 (*)2 9(*)3 4(*)fin 0 2 9 4
a
c
b
d
10
2
-6
73
a
c
b
d
2
-6
7
0 2
9 4
![Page 17: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/17.jpg)
17
Cet algorithme permet de calculer le PCC d’un sommet «s » à tous les autres sommets dans un graphe orienté delongueur quelconque et aussi de détecter la présence d’uncircuit absorbant.
Soit k(i) la valeur de chemin du sommet « s » vers lesommet « i » ne contenant pas plus de k arcs, ainsi,initialement : k = 0; k (s) = 0 et k(x) = pour x ≠s
Soit M l’ensemble des sommets dont le poids k (s) aété modifié à l’itération k, initialement il contient « s »(M = {s} )
ALGORITHME DE BELLMAN-FORD
![Page 18: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/18.jpg)
18
Tant qu’il existe un sommet marqué (M≠) et k est
strictement inférieur à n (n présente le nombre des
sommets |X|) faire:
1. Incrémenter k
2. Initialiser l’ensemble NM à vide (NM contiendra les
sommet dont la marque k sera modifiée)
ALGORITHME DE BELLMAN-FORD
![Page 19: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/19.jpg)
19
3. Pour tout sommet x de +(M) (i.e les successeurs des
sommets dont la marque a été modifié au cours de
l’itération k-1) faire:
a) Mettre à jours sa marque : k (x) = min (k-1 (x),
k -1(y) +lyx) tel que y-(x) M
b) Si sa marque a été modifiée (k (x) < k-1 (x) ) alors
ajouter x à l’ensemble NM (NM = NM {x})
4. Remplacer M par MN
ALGORITHME DE BELLMAN-FORD
![Page 20: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/20.jpg)
20
En absence de circuit absorbant dans le graphe,
l’algorithme se termine nécessairement à l’issue de
l’itération n (k = n) car, au pire des cas, le PCC de s
vers tous les autre sommets est un chemin élémentaire
possédant (n-1) arcs.
Si une ou plusieurs marques sont modifiées à l’itération
n (+(M) ≠), cela signifie qu’il existe un circuit
absorbant.
ALGORITHME DE BELLMAN-FORD
![Page 21: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/21.jpg)
21
Exemple 1: Trouver PCC de a vers tous les autres sommets
ALGORITHME DE BELLMAN-FORD
k k (a) k (b) k (c) k (d) k (e)0 (init) 0 (*)
1 0 3(*) 5(*)2 9(*) 11(*) 53 (fin) 0 3 9 11 5 4
a
b
e
c
d
3
5
3
1 2
6
6
472
![Page 22: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/22.jpg)
22
Exemple 2: Trouver PCC de a vers tous les autres sommets
ALGORITHME DE BELLMAN-FORD
k k (a) k (b) k (c) k (d) k (e) k (f)0 (init) 0 (*)
1 10(*) 2(*)2 5(*) 7(*) -1(*)3 -4(*) 6(*)4 1(*) -2(*)5 3(*)6 2(*)
a
f
b
e
-3
-3
-1
c
d5
-510
2
![Page 23: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/23.jpg)
23
Cet algorithme permet de calculer le PCC entre tous les
couples de sommets dans un graphe orienté sans circuit
absorbant de longueur quelconque.
Numéroter les sommets de 1 à n (|X| = n)
Soit la matrice A = {aij} de taille n x n définie initialement comme
suit:
ALGORITHME DE FLOYD
![Page 24: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/24.jpg)
24
Cet algorithme permet de calculer le PCC de la façon
suivante:
A la première itération, on cherche le PCC entre
chaque couple (i, j) passant éventuellement par le
sommet 1 ;
A l'itération k (avec l > 1), on cherche le PCC entre
chaque couple (i, j) passant par des sommets d'indice
inférieur ou égal à k.
ALGORITHME DE FLOYD
![Page 25: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/25.jpg)
25
Voici une description formelle de l'algorithme :
Pour tout sommet k (k allant de 1 à n)
Pour tout couple de sommet (i, j) calculer
ALGORITHME DE BELLMAN
j
i
k
k
![Page 26: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/26.jpg)
26
Exemple: Trouver PCC entre tous les couples des sommets
ALGORITHME DE BELLMAN
a
c
b
d
6
2
5
-1-2-4 5
![Page 27: Chapitre 2 problème de plus court chemin](https://reader034.fdocument.pub/reader034/viewer/2022042509/58815e611a28ab80508b5217/html5/thumbnails/27.jpg)
SOURCES DE CE COURS
Lucas Letocart, Cours d’Algorithmique de graphes, Institut Galilée,
Université Paris 13, Disponible sur www-galilee.univ-
paris13.fr/fichiers/Cours_Algo_Graphes.pdf
Laurent Canet, Algorithmique, graphes et programmation
dynamique, Notes de Cours & Rapport de Travaux Pratiques, 2003
Aroussi Sana, Notes des Travaux Dirigés de Recherche
Opérationnelle, Ecole nationale Supérieure d’Informatique (ESI),
2013. 27