Académique Documents
Professionnel Documents
Culture Documents
Recherche de chemins
5 Recherche de chemins
5.1 Le problème de recherche d’un plus court chemin
Chemin Longueur
De A Chemin Km
2 B 2
A E AB 2
7
3 1 ABC 5
6 D AC 6
C 2 ABE 4
AE 1
ABCD 7
Ce graphe représente les routes à sens unique
ABED 11
reliant deux points A et D, les valeurs ACD 8
représentent les distances en Km entre les villes AED 8
Il existe plusieurs chemins reliant le sommet A au sommet D,
On veut trouver celui de distance minimale
5 Recherche de chemins
5.1 Le problème de recherche d’un plus court chemin
Chemin Longueur
De A Chemin Km
2 B 2 AB 2
A E
7 ABC 5
3 1
6 AC 6
D
C 2 ABE 4
AE 1
ABCD 7
ABED 11
On remarque que le plus court chemin reliant ACD 8
A et D est ( ABCD) , a pour longueur 7 AED 8
2 B 2
A E
7
3 1
6 D
C 2
2 B 2
A E
7
3 1
6 D
C 2
b) Longueur d’un chemin dans un réseau:
1 B 4 -1 E
A D
-3
3
2 2
C F
1 B 4 -1 E
A D
-3
3
2 2
C F
c) Remarque:
1- Il existe un chemin de longueur minimale entre A et B, mais pas
entre B et A
2- il existe deux chemins entre A et D, le chemin ABD et le chemin
ACBD, le chemin ABD de longueur minimale
3- Il existe un chemin entre B et F, mais pas de chemin de longueur
minimale. Chaque fois quand contourne le circuit DEFD, la longueur du
chemin devient petite ,Donc on ne peut pas déterminer un plus court
chemin issu de B à X
5 Recherche de chemins
5.2 Définitions
1 B 4 -1 E
A D
-3
3
2 2
C F
-1 E
D
-3
2
F
e) Circuit absorbant:
Un circuit est dit absorbant si sa longueur est négative
L(DEFD)= -1 -3 + 2 = -2 < 0 , plus on contourne le circuit, plus sa
longueur devient minimale ( tend vers l’infini)
5 Recherche de chemins
5.3 Problèmes et Objectifs
Il calcule des plus courts chemins à partir d'une source vers tous les
autres sommets dans un graphe orienté pondéré par des réels
positifs. L'algorithme porte le nom de son inventeur, l'informaticien
Hollandé Edsger Dijkstra, et a été publié en 1959
5 Recherche de chemins
A) Algorithme Dijkstra
Principe:
L'algorithme prend en entrée un graphe orienté pondéré par des
réels positifs et un sommet source.
Il s'agit de construire progressivement un sous-graphe dans lequel
sont classés les différents sommets par ordre croissant de leur
distance minimale au sommet de départ.
La distance correspond à la somme des poids des arcs empruntés.
Algorithme:
Données : Un réseau R=(V,E,C) , avec C(e) ≥ 0 et un sommet s de V
Résultat: Arborescence de plus courtes distances A
5 Recherche de chemins
A) Algorithme Dijkstra
Initialisation:
Pour chaque sommet x de V faire
π(x) ∞
Finpour
π(s) 0 S
Tant que S ≠ V faire
t un sommet de V – S tel que π(t) soit minimum
S S U {t}
tant que il existe v S avec (t,v) A faire
π(v) = min ( π(v), π(t)+C(t,v) )
fin tant que
Fin tant que retourner π
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
Cherchons les plus courts chemins d’origine A dans ce graphe:
2 5
0 1 2 3 4
1 2 0 ∞ ∞ ∞ ∞
2
0 2 5 ∞ ∞
7 8
0 2 4 9 ∞
3 4 0 2 4 9 12
1 0 2 4 9 10
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 2)
2 5
0 1 2 3 4
B C 0 ∞ ∞ ∞ ∞
2
0 2 5 ∞ ∞
7 8
0 2 4 9 ∞
D E 0 2 4 9 12
1 0 2 4 9 10
Algorithme:
Données : Un réseau R=(V,E,C) , sans circuit avec C(e) de
valeurs quelconques
Résultat: Arborescence de plus courtes distances A
5 Recherche de chemins
C) Algorithme de Bellman
(0) : Initialisation Soit s un sommet de V , on pose S= {s},
π(s) =0 et A=
(1) : Chercher un sommet hors de S dont tous ses prédécesseurs
sont dans S
Si un tel sommet n’existe pas : terminer ( arrêt ) , dans ce cas soit
S= V, où le sommet s n’est pas une racine dans R
- Si un tel sommet existe alors aller à (2)
(2) : On pose π(X)= min( π( I(e) )+ C(e) }
Soit e’ l’arc pour le quel π(X) = π( I(e’) + C(e’) )
A A U {e’}, S = S U {X} et aller à (1)
5 Recherche de chemins
D) Algorithme de Bellman (application )
1
E
A
2 2
B
7
6 3 D
C 2
6 3 D
C 2
Itération 1:
Le sommet B est hors S et tous ses prédécesseur sont dans
S( E et C non )
π(B) = π ( A) + C(A,B) = 0 + 2 = 2 e’ = (A,B)
S= S U {B} = { A, B} Ar = Ar U {(A,B) } = { (A,B) }
5 Recherche de chemins
D) Algorithme de Bellman (application )
1 Itération 2:
Les sommets C et E sont
E
A hors S et tous ses
2 2 prédécesseur sont dans S
B
7
6 3 D
C 2
π(E) = min ( π ( A) + C(A,E) , π (B) + C(B,E) ) = min ( 0+ 1 , 2 + 2 ) = min ( 1, 4 ) = 1
e1’ = (A,E)
π(C) = min ( π ( A) + C(A,C) , π (B) + C(B,C) ) = min ( 0+ 6 , 2 + 3) = min ( 6, 5 ) = 5
e2’ = (B,C)
S= S U {E,C} = { A, B, E,C} Ar = {A,B} U {(A,E),(B,C) } = { (A,B),(A,E),(B,C) }
5 Recherche de chemins
D) Algorithme de Bellman (application )
1
E
A
2 2
B
7
6 3 D
C 2
Itération 3:
Le sommet D est hors S et tous ses prédécesseur sont dans S
π(D) = min ( π ( E) + C(E,D) , π (C) + C(C,D) ) = min ( 1+ 7 , 5 + 2 ) = min ( 8, 7 ) = 7
e3’ = (C,D)
S= S U {D} = { A, B, E,C,D} Ar = Ar U {(C,D) } = { (A,B),(A,E),B,C),(C,D) }
On a S= V on arrête
5 Recherche de chemins
D) Algorithme de Bellman (application )
1
E
A
2 2
B
7
6 3 D
C 2
Ar = { (A,B),(A,E),B,C),(C,D) }
1
E
A
2
B
3 D
C 2