NSI · terminale spe
Chapitre 5 — Algorithmique : arbres et graphes
L'essentiel en 30 secondes
Les arbres se parcourent en profondeur (préfixe, infixe, suffixe) ou en largeur (niveau par niveau avec une file). Les graphes se représentent par matrice ou liste d'adjacence et se parcourent en profondeur (DFS, pile/récursion) ou en largeur (BFS, file). L'algorithme de Dijkstra trouve le plus court chemin dans un graphe pondéré à poids positifs.
Notions clés
- Parcours préfixe (préordre)
- Racine gauche droit. Ordre de visite : on traite le nœud AVANT ses fils.
- Parcours infixe (inordre)
- gauche racine droit. Sur un ABR, donne les valeurs dans l'ordre croissant.
- Parcours en largeur (BFS)
- Parcours niveau par niveau avec une file. Permet de trouver le plus court chemin en nombre d'arêtes.
- Graphe orienté / non orienté
- Orienté : les arêtes ont un sens (arcs). Non orienté : les arêtes sont symétriques.
- Algorithme de Dijkstra
- Trouve le plus court chemin depuis un sommet source dans un graphe pondéré poids . Complexité version simple.
Formules
Parcours préfixe (récursif)
Condition : Infixe : déplacer print entre les deux appels. Suffixe : après les deux appels.
Parcours en largeur (arbre ou graphe)
Condition : Utilise une file (deque). Complexité O(V + E) avec V sommets et E arêtes.
Dijkstra (simplifié)
Condition : graphe = dict de listes de (voisin, poids). Ne fonctionne PAS avec des poids négatifs.
A retenir
- BFS utilise une FILE, DFS utilise une PILE (ou la récursion). Moyen mnémo : BFS = Breadth = File (F/F).
- Le parcours infixe d'un ABR donne les valeurs triées dans l'ordre croissant.
- Dijkstra ne fonctionne PAS avec des poids négatifs — condition à vérifier systématiquement.
Erreurs classiques
Erreur : Utiliser une pile au lieu d'une file pour BFS (ou inversement pour DFS)
Correction : BFS = file (deque + popleft). DFS = pile (list + pop). Confondre les deux change complètement le parcours.
Erreur : Oublier de marquer les sommets visités dans un parcours de graphe
Correction : Sans ensemble visités, on boucle indéfiniment sur les cycles. Toujours ajouter au set AVANT d'enfiler.
Erreur : Appliquer Dijkstra sur un graphe à poids négatifs
Correction : Dijkstra suppose tous les poids . Avec des poids négatifs, utiliser (hors programme).
Astuce méthode
Au bac, pour exécuter un parcours à la main, trace un tableau avec les colonnes : sommet courant, file/pile, sommets visités. Remplis ligne par ligne — tu ne feras aucune erreur.