Comment implémenter l'algorithme de Dijkstra pour les plus courts chemins ?
En maintenant un tableau des distances, en sélectionnant à chaque étape le sommet non visité de distance minimale, puis en relâchant ses voisins
L'objectif
Calculer, dans un graphe pondéré à poids positifs, la distance minimale du sommet source à chacun des autres sommets.
Le principe
À chaque étape, on sélectionne parmi les sommets non visités celui dont la distance provisoire est minimale (ce choix est correct car les poids sont positifs), on le marque visité, puis on relâche ses voisins en posant pour chaque voisin non visité.
La méthode
- 1J'initialiseComment construire la matrice d'adjacence d'un graphe (orienté ou non) ?Voir
distà partout saufdist[s] = 0, et un ensemblevisitesvide ; je choisis une représentation du graphe (dictionnaire{u: [(v, poids), ...]}ou matrice d'adjacence pondérée). - 2Tant qu'il reste un sommet non visité de distance finie, je sélectionne le sommet non visité minimisant
dist[u], je l'ajoute àvisites, puis pour chaque voisin de non visité je relâche :dist[v] = min(dist[v], dist[u] + w(u,v)). - 3Quand tous les sommets accessibles sont visités, je renvoie le tableau
dist:dist[t]est la distance minimale de à (ou si n'est pas accessible).
Exemple corrigé
Difficulté croissante de 1 à 3
Exercices aujourd'hui0 / 3
Prêt à t'entraîner ?
Génère un exercice personnalisé sur cette méthode et entraîne-toi avec la correction IA.