Algorithmes de Graphes

Guide complet de 23+ algorithmes essentiels de graphes avec analyse de complexité, cas d'usage et visualisations interactives.

Essayer la Plateforme Interactive

Parcours de Graphes

Parcours en Largeur (BFS)

Explore le graphe niveau par niveau, visitant tous les voisins avant d'aller plus profond. Utilise une file pour maintenir l'ordre d'exploration.

Complexité Temporelle: O(V + E)
Complexité Spatiale: O(V)
Cas d'Usage: Plus court chemin dans les graphes non pondérés, parcours par niveaux, trouver les composantes connexes

Parcours en Profondeur (DFS)

Explore aussi profondément que possible dans chaque branche avant de revenir en arrière. Utilise une pile (ou récursion) pour suivre le chemin d'exploration.

Complexité Temporelle: O(V + E)
Complexité Spatiale: O(V)
Cas d'Usage: Tri topologique, détection de cycles, recherche de chemins, résolution de labyrinthes

Tri Topologique

Ordonnancement linéaire des sommets dans un graphe acyclique orienté (DAG) où chaque sommet apparaît avant tous les sommets vers lesquels il pointe.

Complexité Temporelle: O(V + E)
Complexité Spatiale: O(V)
Cas d'Usage: Planification de tâches, résolution de dépendances, systèmes de construction, prérequis de cours

Chemin Eulérien

Trouve un chemin qui visite chaque arête exactement une fois dans un graphe non orienté. Existe quand le graphe a exactement 0 ou 2 sommets de degré impair.

Complexité Temporelle: O(V + E)
Complexité Spatiale: O(V)
Cas d'Usage: Planification d'itinéraires, résolution de puzzles, conception de circuits, séquençage ADN

Algorithmes de Plus Court Chemin

Algorithme de Dijkstra

Trouve les plus courts chemins d'un sommet source vers tous les autres sommets dans un graphe pondéré avec des poids d'arêtes non négatifs.

Complexité Temporelle: O((V + E) log V)
Complexité Spatiale: O(V)
Cas d'Usage: Navigation GPS, routage réseau, réseaux sociaux

Algorithme de Bellman-Ford

Trouve les plus courts chemins depuis un sommet source et détecte les cycles de poids négatif. Fonctionne avec des poids d'arêtes négatifs.

Complexité Temporelle: O(VE)
Complexité Spatiale: O(V)
Cas d'Usage: Détection d'arbitrage de devises, protocoles réseau

Algorithme de Floyd-Warshall

Trouve les plus courts chemins entre toutes les paires de sommets en utilisant la programmation dynamique avec des sommets intermédiaires.

Complexité Temporelle: O(V³)
Complexité Spatiale: O(V²)
Cas d'Usage: Plus courts chemins entre toutes les paires, fermeture transitive

Arbre Couvrant Minimal

Algorithme de Prim

Construit l'arbre couvrant minimal en croissant depuis un seul sommet, ajoutant toujours l'arête de poids minimal qui se connecte à un nouveau sommet.

Complexité Temporelle: O((V + E) log V)
Complexité Spatiale: O(V)
Cas d'Usage: Conception de réseaux, algorithmes de clustering

Algorithme de Kruskal

Construit l'arbre couvrant minimal en triant toutes les arêtes et en utilisant Union-Find pour éviter les cycles tout en ajoutant les arêtes de poids minimal.

Complexité Temporelle: O(E log E)
Complexité Spatiale: O(V)
Cas d'Usage: Conception de réseaux, conception de circuits, clustering

Algorithme de Borůvka

Construit l'arbre couvrant minimal en utilisant une approche parallèle basée sur les composants, adaptée aux environnements de calcul distribué.

Complexité Temporelle: O(E log V)
Complexité Spatiale: O(V)
Cas d'Usage: Calcul parallèle d'ACM, algorithmes distribués

Connectivité de Graphes

Algorithme CFC de Tarjan

Trouve les composantes fortement connexes dans les graphes orientés en utilisant DFS avec des valeurs low-link et une pile.

Complexité Temporelle: O(V + E)
Complexité Spatiale: O(V)
Cas d'Usage: Analyse de dépendances, analyse de réseaux sociaux

Kosaraju's SCC Algorithm

Finds strongly connected components using two DFS passes: one on the original graph and one on the transpose graph.

Time Complexity: O(V + E)
Space Complexity: O(V)
Use Cases: Web crawling, dependency resolution

Articulation Points

Finds vertices whose removal would increase the number of connected components in an undirected graph.

Time Complexity: O(V + E)
Space Complexity: O(V)
Use Cases: Network reliability, critical infrastructure analysis

Bridge Finding

Finds edges whose removal would increase the number of connected components in an undirected graph.

Time Complexity: O(V + E)
Space Complexity: O(V)
Use Cases: Network reliability, critical path analysis

Bipartite Check

Determines if a graph can be colored with exactly two colors such that no adjacent vertices share the same color.

Time Complexity: O(V + E)
Space Complexity: O(V)
Use Cases: Matching problems, scheduling, resource allocation

Special Algorithms

Cycle Detection

Detects the presence of cycles in both directed and undirected graphs using various techniques like DFS and Union-Find.

Time Complexity: O(V + E)
Space Complexity: O(V)
Use Cases: Deadlock detection, dependency analysis

Hamiltonian Path

Finds a path that visits every vertex exactly once using backtracking and dynamic programming techniques.

Time Complexity: O(2ⁿ × n²)
Space Complexity: O(2ⁿ × n)
Use Cases: Tour planning, optimization problems

Traveling Salesman Problem

Finds the shortest possible route that visits every city exactly once and returns to the starting point.

Time Complexity: O(n² × 2ⁿ)
Space Complexity: O(n × 2ⁿ)
Use Cases: Route optimization, logistics, circuit board drilling

Graph Coloring

Assigns colors to vertices such that no two adjacent vertices share the same color, using the minimum number of colors.

Time Complexity: O(V × 2ⱽ)
Space Complexity: O(2ⱽ)
Use Cases: Scheduling, register allocation, frequency assignment

Maximal Clique

Finds the largest complete subgraph where every pair of vertices is connected by an edge.

Time Complexity: O(3ⁿ/³)
Space Complexity: O(V)
Use Cases: Social network analysis, bioinformatics, data mining

Chordality Check

Determines if a graph is chordal (every cycle of length 4 or more has a chord - an edge connecting two non-adjacent vertices in the cycle).

Time Complexity: O(V + E)
Space Complexity: O(V)
Use Cases: Perfect graph recognition, optimization problems

Network Flow

Maximum Flow

Finds the maximum flow from a source to a sink in a flow network using algorithms like Ford-Fulkerson with augmenting paths.

Time Complexity: O(V²E)
Space Complexity: O(V²)
Use Cases: Network capacity planning, resource allocation, bipartite matching

Minimum Cut

Finds the minimum capacity cut that separates the source from the sink, closely related to maximum flow by the max-flow min-cut theorem.

Time Complexity: O(V²E)
Space Complexity: O(V²)
Use Cases: Network reliability, image segmentation, clustering

Ready to Explore These Algorithms?

Experience interactive visualizations and step-by-step execution of all these algorithms.

Lancer la Plateforme Interactive