Aller au contenu

DSA · Fiche pratique

Cheatsheet : Graphes, BFS, DFS et Dijkstra

Choisir un parcours selon les arêtes et le résultat attendu.

Par · Cours gratuit

Définitions, contrats et coûts

Choisir un parcours selon les arêtes et le résultat attendu.

Graphes, BFS, DFS et Dijkstra
NotionÀ retenir
ReprésentationListes d’adjacence : Θ(n + m) stockage ; matrice : Θ(n²).
BFS / DFSΘ(n + m) avec listes d’adjacence ; BFS minimise le nombre d’arêtes non pondérées.
DijkstraPoids non négatifs ; avec tas binaire, O((n + m) log n) dans le modèle usuel.

Vérifier sur un exemple

Distances en nombre d’arêtes

Le dictionnaire distance sert aussi d’ensemble des sommets déjà découverts.

Python
# breadth_first_distances.py
from collections import deque
graph = {"A": ["B", "C"], "B": ["D"], "C": ["D"], "D": []}
distance = {"A": 0}
queue = deque(["A"])
while queue:
    vertex = queue.popleft()
    for neighbor in graph[vertex]:
        if neighbor not in distance:
            distance[neighbor] = distance[vertex] + 1
            queue.append(neighbor)
print(sorted(distance.items()))
# Expected output:
# [('A', 0), ('B', 1), ('C', 1), ('D', 2)]

Résultat expliqué. Un sommet est marqué lors de sa découverte, avant son ajout dans la file : les chemins concurrents ne le réinsèrent pas.

Erreur à éviter. BFS ne minimise pas la somme de poids arbitraires. Dijkstra n’accepte pas de poids négatifs.

Un sommet inaccessible reçoit-il une distance finie dans ce programme ?

Non : il est absent de distance. L’interface doit distinguer absence de chemin et distance nulle.

Télécharger cette fiche en PDF · Toutes les fiches DSA