📘 Fiche de cours
L'essentiel du cours
- Plus court chemin (Single Source Shortest Path) :
- Dijkstra : Utilise une file de priorité. Complexité $O((V+E) \log V)$. Ne gère pas les poids négatifs.
- Bellman-Ford : Relaxation de toutes les arêtes $V-1$ fois. Complexité $O(V \cdot E)$. Détecte les cycles absorbants.
- Arbre couvrant minimal (MST) :
- Prim : Croissance d'un arbre à partir d'un sommet.
- Kruskal : Tri des arêtes par poids croissant, ajout sans créer de cycle (Union-Find).
Méthodes à maîtriser
- Relaxation : Si $dist[u] + w(u, v) < dist[v]$, alors $dist[v] = dist[u] + w(u, v)$.
- Dijkstra : Maintenir un tableau
distinitialisé à $\infty$ et une file de priorité. - Kruskal : Trier les arêtes, utiliser une structure
Union-Findpour vérifier l'absence de cycle.
Exemples corrigés
- Dijkstra : Sur un graphe à 4 sommets, mettre à jour les distances à chaque extraction du sommet de poids minimal.
- Kruskal : Trier les arêtes $(A,B,2), (B,C,3), (A,C,5)$. Choisir $(A,B)$ puis $(B,C)$.
Erreurs fréquentes
- Appliquer Dijkstra sur un graphe avec des poids négatifs.
- Oublier de vérifier la création d'un cycle dans Kruskal.
- Confondre la complexité de Dijkstra avec/sans file de priorité (Fibonacci heap).