Vous êtes sur la page 1sur 37

Chapitre 5

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

 le principe de recherche d’un plus court chemin reliant deux


sommets x et y dans un graphe : Trouver tous les chemins
élémentaires et de choisir le plus court.
5 Recherche de chemins
5.2 Définitions

2 B 2
A E
7
3 1
6 D
C 2

a) Réseau: est un graphe valué (pondéré): R=(V,E,C)


où chaque arc C(ei)) peut caractériser un cout, durée, distance
b) Longueur d’un chemin dans un réseau:
Est égale à la somme des longueurs des arcs comptés dans leur ordre de
multiplicité dans le chemin( le nombre de fois qu’on parcourt ces arcs )
5 Recherche de chemins
5.2 Définitions

2 B 2
A E
7
3 1
6 D
C 2
b) Longueur d’un chemin dans un réseau:

L(C)= Somme ( C(ei)*R(ei))


Chemin ( A,B,C,D)
L(C)= 2*1 + 3*1 + 2*1= 7
R(ei) = 1 chaque arc est compté une seule fois
5 Recherche de chemins
5.2 Définitions

1 B 4 -1 E
A D
-3
3
2 2
C F

c) Remarque: Dans un réseau 3 cas peuvent se présenter:


1- Il n’existe pas de chemins entre deux sommets x et y
2- il existe un chemin entre x et y mais pas un chemin de
longueur minimale
3- Parmi tous les chemins entre x et y, il existe un qui est de
longueur minimale
5 Recherche de chemins
5.2 Définitions

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

d) Plus courte distance:


La longueur du plus court chemin est appelé plus courte distance

Il existe deux chemins entre A et B, le plus court chemin et le chemin AB de


longueur 1, donc la plus courte distance de A à B est π(B) = 1
5 Recherche de chemins
5.2 Définitions

-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 existe plusieurs algorithmes pour résoudre les problèmes de


recherche des plus courts chemins dans un réseau:

Nous présentons deux algorithmes qui sont les plus performants

- Algorithme de Dijkstra ( poids positifs ou nuls)


- Algorithme de Bellman ( sans circuit, poids quelconques )
- Algorithme de Ford ( voir tout seul ) ( avec circuit et poids
quelconques )
5 Recherche de chemins
A)Algorithme Dijkstra ( Dextra )
L'algorithme de Dijkstra sert à résoudre le problème du plus court
chemin.

Il permet, par exemple, de déterminer un plus court chemin pour se


rendre d'une ville à une autre connaissant le réseau routier d'une
région.

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:

Théorie des Graphes 174


5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
On se place au sommet de plus petit poids, ici le sommet A.
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
On étudie chacune des arêtes partant du sommet choisi.

Dans les colonnes, on mets la distance à A, et le sommet d’où


l’on vient.
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
On se place de nouveau au sommet de plus petit poids, ici E.
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
Et ainsi de suite. On a remplacé le 10 par 8
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 1)
On a obtenu un arbre des plus courtes distances, un graphe sans
cycle
5 Recherche de chemins
B) Algorithme Dijkstra ( exemple 2)

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

L’arbre des plus courtes distances en rouge


5 Recherche de chemins
C) Algorithme de Bellman

L'algorithme de Bellman-Ford, aussi appelé algorithme de


Bellman–Ford–Moore, est un algorithme qui calcule des plus
courts chemins depuis un sommet source donné dans un
graphe orienté pondéré.

Il porte le nom de ses inventeurs Richard Bellman et Lester


Randolph Ford junior et de Edward Forrest Moore qui le
redécouvrit en 1959.

Mais il est connu par le nom de Bellman


5 Recherche de chemins
C) Algorithme de Bellman
Principe:
- Calculer l’arborescence des plus courtes distances partant
du sommet s à un sommet donné p
- On ne calcule la plus courte distance du sommet s à y, que
si on a déjà calculé les plus courtes distances du sommet s à
tous les prédécesseurs du sommet y

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

Initialisation Soit A un sommet de V , on pose S= {A},


π(s) =0 et Ar=
5 Recherche de chemins
D) Algorithme de Bellman (application )
1
E
A
2 2
B
7

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) }

On obtient donc l’arborescence de plus courtes distances ( on rouge )


5 Recherche de chemins
D) Algorithme de Bellman (application )

1
E
A
2
B

3 D

C 2

On obtient donc l’arborescence de plus courtes distances ( on rouge )


avec les distances en vert
5 Recherche de chemins
e) Exemple à faire : choisir l’algorithme à appliquer
5 Recherche de chemins
e) Exemple à faire : choisir l’algorithme à appliquer
Poids négatif et sans circuit: on applique Bellman
5 Recherche de chemins
e) Exemple à faire : choisir l’algorithme à appliquer
Poids négatif avec un circuit absorbant: on applique un autre
algorithme de Bellman qui détecte les circuits, on appliquant la
programmation dynamique

Vous aimerez peut-être aussi