Programme

NSI (Spé) — Algorithmique

Algorithmes sur les graphes

Parcours en largeur (BFS), parcours en profondeur (DFS), algorithme de Dijkstra pour les plus courts chemins

Résumé synthétiqueFiche en 4 sectionsQuiz de 10 questionsGratuit, sans pub

Résumé

Réseaux sociaux, GPS, plans de métro, pages web : tout cela, ce sont des graphes — des sommets reliés par des arêtes. Pour les explorer, deux parcours fondamentaux. Le parcours en largeur (BFS) avance par cercles concentriques depuis le départ à l'aide d'une file : il donne le plus court chemin en nombre d'arêtes (la plus courte chaîne d'amis, le moins de coups). Le parcours en profondeur (DFS) plonge le plus loin possible avant de revenir en arrière, via une pile ou la récursivité : idéal pour détecter les cycles et les composantes connexes. Quand les arêtes portent un poids (une distance, un temps), on passe à l'algorithme de Dijkstra, qui trouve le plus court chemin pondéré — à condition que tous les poids soient positifs. Tous ces parcours coûtent $O(n+m)$ avec des listes d'adjacence.

S'entraîner

Ce thème dans une autre classe

Questions fréquentes

Les points clés à retenir sur Algorithmes sur les graphes, extraits du quiz de révision.

Quelle structure de données utilise le parcours en largeur (BFS) ?
Réponse :
Une file
BFS utilise une file (FIFO) pour explorer les sommets par distance croissante au sommet de départ.
Le parcours en profondeur (DFS) utilise :
Réponse :
Une pile (ou la récursivité)
DFS utilise une pile (LIFO) en version itérative, ou la pile d'appels de fonctions en version récursive, pour explorer le plus loin possible avant de revenir en arrière.
L'algorithme de Dijkstra ne fonctionne pas correctement avec :
Réponse :
Des poids négatifs
Dijkstra suppose que tous les poids sont positifs ou nuls. Avec des poids négatifs, un sommet déjà visité pourrait avoir un chemin plus court découvert plus tard, faussant le résultat.
BFS trouve le plus court chemin en :
Réponse :
Nombre d'arêtes (graphe non pondéré)
BFS explore les sommets par couches concentriques (distance 1, puis 2, etc.), trouvant ainsi le chemin avec le moins d'arêtes dans un graphe non pondéré.