Graphes
#Graphes
Définitions, représentations, parcours (BFS/DFS) et applications classiques.
#Parcours BFS (liste d’adjacence)
#Exercice : Algorithme de Dijkstra pour les plus courts chemins
Implémentez l'algorithme de Dijkstra pour trouver les plus courts chemins depuis un sommet source dans un graphe pondéré.
#Instructions
- Utilisez une file de priorité (min-heap) pour stocker les sommets à visiter.
- Initialisez les distances à l'infini, sauf pour le sommet source (distance 0).
- Pour chaque sommet, mettez à jour les distances de ses voisins si un chemin plus court est trouvé.
- Marquez les sommets comme visités pour éviter les traitements multiples.
#Exemple de code
pythonpython
1import heapq2from collections import defaultdict3 4def dijkstra(graph, start):5 # Initialisation des distances6 distances = defaultdict(lambda: float('inf'))7 distances[start] = 08 9 # File de priorité: (distance, sommet)10 pq = [(0, start)]11 visited = set()12 13 while pq:14 current_distance, current_vertex = heapq.heappop(pq)
Complexité
BFS/DFS parcourent chaque sommet/arête au plus une fois: O(|V|+|E|). Dijkstra avec tas binaire: O((|V| + |E|) log |V|).