TechnoLAB - ISTA Année 2023-2024
L2 AP
Théorie de graphe
Chapitre 4. Problème du plus court chemin (Algorithme de Dijkstra)
Figure 1 – Edsger Wybe Dijkstra né à Rotterdam le 11 mai 1930 et mort à Nuenen le 6 août
2002, est un mathématicien et informaticien néerlandais du xxe siècle
Ce problème intervient principalement dans le fonctionnement des routeurs d’un réseau
informatique (protocoles de routage).
1
Figure 2
La recherche du plus court chemin est analogue à la recherche du plus long chemin.
Définition 1.
Soit G = (X, U ) un graphe valué (ponderé), l’interprétation de la valeur de chaque arc peut
être : coût de transport, distance, dépense de construction, temps nécessaire de parcours, etc.
— La longueur d’un chemin entre deux sommet x et y dans un graphe valué est :
X
longChemin(x, y) = f (u)
u∈ch
f (u) est la fonction qui fournit la valeur de l’arc u
— La distance, notée dG(x, y), entre deux sommets d’un graphe G est la longueur du plus
court chemin entre les extrémités x et y. S’il n’y a pas de chemin entre x et y on considère
que dG(x, y) = ∞.
Algorithme de Dijkstra
Cet algorithme permet de trouver le plus court chemin entre deux sommets Sdeb et Sfin
Figure 3
Tel que M est la matrice des longueurs (matrice d’adjacence) dont chaque élément mi,j est
définit comme suit :
mij si lárc u = (xi , xj ) ∈ U
∞ si lárc u = (xi , xj ) ∈
/U
0 si i = j
2
Remarques :
1. il ne s’applique qu’aux graphes à valuations positives
2. il ne marche que pour trouver les plus courts chemins
3. pour chaque sommet dans le chemin, sauvegarder toujours le sommet précèdent
Exemple :
On se propose dedéterminer le plus court chemin dans le graphe G suivant :
Figure 4 – L’algorithme de Dijkstra permet de répondrementefficacement à ce problème.
1. La matrice des longueurs (matrice d’adjacence)
Figure 5
2. Commençons par la prmière itération
3
Figure 6 – Itération 1
3. Itération 2.
Figure 7 – Itération 2
4. Itération trois et quatre
Figure 8 – Itération 3 et 4
5. A la fin, on obtien donc le résultat suivant :
4
Figure 9 – Source : sur internet URL
Par suite, le plus court chemin est : Sdeb − b − a − c − d − df in , avec comme distance 13 !
1 Exercices
1.1 Exercice 1.
Le graphe ci-dessous indique les frais de déplacement occasionnés (péage, essence,...) pour
un trajet entre deux villes, exprimés en euro. Appliquer l’algorithme de Dijkstra à l’aide d’un
tableau pour déterminer le trajet le moins onéreux pour se rendre de Calais à Mulhouse, et
indiquer ce coût.
Corrigé : Faites minitieusement les camculs pour trouver :
Figure 10 – C : Calais L : Lille N : Nancy S : Strasbourg A : Amiens T : Troyes D : Dijon
M : Mulhouse
5
Figure 11 – Ainsi, le trajet minimal de C à M coûte 118 euros.
En utilisant python, on obtient le code suivant :
Figure 12 – Voir Franck CHEVRIER sur [Link]
6
Figure 13 – suite...
Figure 14 – Fin
7
Références
[1] Dr. N. Elamathi, R. Nithya, Une exploration des algorithmes de Dijkstra et de
Floyd dans la méthode de trafic urbain, 2022