📘 Fiche de cours
L'essentiel du cours
Un graphe $G = (V, E)$ est défini par un ensemble de sommets $V$ et un ensemble d'arêtes $E$.
- Représentations :
- Matrice d'adjacence : Matrice $M$ de taille $n \times n$ où $M[i][j] = 1$ s'il existe une arête entre $i$ et $j$, 0 sinon. Complexité spatiale $O(n^2)$.
- Liste d'adjacence : Tableau de listes chaînées. Chaque case $i$ contient la liste des voisins de $i$. Complexité spatiale $O(n + m)$.
- Parcours :
- BFS (Breadth-First Search) : Utilise une File (Queue). Explore les voisins de niveau 1, puis 2, etc.
- DFS (Depth-First Search) : Utilise une Pile (Stack) ou la récursivité. Explore le plus profondément possible avant de revenir en arrière.
Méthodes à maîtriser
- Passer d'une matrice à une liste d'adjacence.
- Tracer manuellement l'ordre de visite des sommets pour BFS et DFS.
- Choisir la structure adaptée selon la densité du graphe (matrice pour graphe dense, liste pour graphe creux).
Exemples corrigés
- BFS : Pour un graphe $A-B, A-C, B-D$, en partant de A : on visite A, puis la file devient [B, C], on visite B, on ajoute D, file [C, D], on visite C, on visite D. Ordre : A, B, C, D.
- DFS : En partant de A : on visite A, on va vers B, de B on va vers D, on revient à A, on va vers C. Ordre : A, B, D, C.
Erreurs fréquentes
- Oublier de marquer les sommets comme "visités" (risque de boucle infinie).
- Confondre l'ordre de visite avec l'ordre d'insertion dans la file/pile.
- Ne pas gérer les graphes non connexes (oublier de lancer le parcours sur les sommets isolés).