Graphes pondérés et algorithme de Dijkstra

publicité
Graphes pondérés et algorithme de Dijkstra
1
Graphes pondérés
Activité 1 :
Avec un ordinateur (p68)
1.1
Définitions
Définition 1.
Un graphe pondéré (orienté ou non) est un graphe étiqueté dont toutes les étiquettes sont des
nombres réels positifs ou nul. Chaque nombre est appelé poids.
• Le poids d’une arête est le nombre positif qui lui est affectée.
• Le poids d’une chaîne est la somme des poids des arêtes qui la composent.
• Une plus petite courte chaîne entre deux sommets données est une chaîne de poids minimal
parmi toutes les chaînes reliant les deux sommets.
1.2
(l’algorithme de DIJKSTRA)
Exemple : Soit le graphe étiqueté G ci-dessous
A
La chaîne B-A-C est bien une chaîne du graphe,
partant du sommet du coté gauche vers le sommet du
coté droit: ce mot est reconnu par le graphe.
C
T
La chaîne T-A-C n’est pas une chaîne orientée du
graphe, et ne peut donc pas être un mot reconnu par
ce graphe.
B
2
Algorithme de Dijkstra : Poids d’une chaîne et plus court chemin
Exemple : Soit le graphe pondéré G ci-dessous
B
2
3
A
D
1
2
2
5
C
3
Le poids de l’arête A-C est de 5.
∀M K
T ES Spemaths
2016−2017
E
Le poids de la chaîne A-B-C est de 3+1=4
Le chemin de A à E a plusieurs poids :
La chaîne A-B-C-E a un poids de 7.
A-B-C-D-E a un poids de 8.
A-B-D-E a un poids de 7.
A-B-D-C-E a un poids de 10.
A-C-E a un poids de 8.
A-C-D-E a un poids de 9.
A-C-B-D-E a un poids de 10.
On remarque qu’il y a deux courts chemins exæquo de A à E (A-B-C-E) et (A-B-D-E ),
cette méthode Par tâtonnement est à éviter.
La méthode la plus utilisée pour trouver le plus
court chemin est l’algorithme de Dijkstra.
1/2
Ch4 - Dijkstra
Algorithme de Dijkstra
L’algorithme de Dijkstra est un outil de détermination d’une plus courte chaîne d’un
graphe pondéré entre deux sommets (A et E dans l’exemple étudié).
B
2
3
Exemple
Méthode simplifiée pour appliquer l’algorithme
de Dijkstra.
A
D
1
2
2
5
C
E
3
1. Étape d’initialisation,
Dans un tableau, quand c’est possible, on place le sommet du départ A à la première colonne (début) et le
sommet d’arrivée E dans la dernière colonne (à la fin).
- Ligne 1 : On fixe le poids du sommet A à 0 (Sommet du départ)
- On marque provisoirement les autres sommets du poids par ∞.
A
B
C
D
E
Sommet fixé de son poids
0
∞
∞
∞
∞
A(0)
2. Étapes d’itérations.
- On marque provisoirement chaque sommet adjacent à A du poids de l’arête reliant A à ce sommet. Ces
sommets sont des successeurs de A.
- Ligne 2 : Pour aller du sommet A au sommet B, il faut un poids de 3. On le le note 3A .
De même, pour aller du sommet A au sommet C, il faut un poids de 5. On le le note 5A .
On repère le chemin le plus court, ici 3A et on marque définitivement ce sommet B du poids 3 à la fin de
cette ligne (B(3)).
- Ligne 3 : Le sommet B est relié ensuite aux sommets C et D. On additionne les poids pour aller à chaque
sommet. Ainsi, On obtient 4B et 5B.
On repère le chemin le plus court, ici 4B , on barre 5A et on marque définitivement ce sommet C du poids 4
à la fin de cette ligne (C(4)).
- On réitère le procédé tant que l’arrivée au sommet E n’est pas fixée. On arrête l’itération lorsque tous
les sommets ont été traités.
A
B
C
D
E
Sommet fixé
0
∞
∞
∞
∞
A(0)
|
3A
5A
∞
∞
B(3)
|
|
6 5A et 4B
5B
∞
C(4)
|
|
|
5B et 6 6C
7C
D(5)
|
|
|
|
7C et 7D
E(7)
Conclusion :
A la fin de chaque algorithme de Dijkstra, on définit le ou les chemins les plus courts.
Il y a deux chaînes courtes pour aller de A à E de même poids 7.
On lit à l’envers A(0) ⇐= B(3) ⇐= D(5) ⇐= E(7) , d’où la chaîne
A(0) ⇐= B(3) ⇐= C(4) ⇐= E(7) , d’où la chaîne
∀M K
T ES Spemaths
2016−2017
2/2
A-B-D-E
A-B-C-E
Ch4 - Dijkstra
Téléchargement