Apprentissage interactif de la théorie des graphes
Apprentissage interactif de la théorie des graphes
Guest User
Using app without sign in
Détecteur d'arêtes de coupe (ponts)
Trouve les arêtes dont la suppression augmente les composantes
Sélectionnez un algorithme et générez les étapes pour commencer la visualisation
Un pont (ou arête de coupe) est une arête dont le retrait déconnecte le graphe. La recherche de ponts localise les liens critiques d'un réseau, les connexions sans route de rechange.
Un seul parcours en profondeur attribue des temps de découverte et des valeurs low-link. Une arête (u, v), où v est un enfant DFS de u, est un pont exactement quand low[v] > disc[u], ce qui signifie que rien dans le sous-arbre de v ne relie à u ou au-dessus. Tous les ponts sont trouvés en O(V + E). Le même squelette DFS donne aussi les points d'articulation, et contracter les composantes 2-arête-connexes produit l'arbre des ponts du graphe.
Les ponts révèlent les liaisons fibre critiques des dorsales télécoms, les routes et tronçons ferroviaires indispensables et les connexions fragiles des réseaux électriques. En logiciel, l'analyse des ponts aide à évaluer le risque de dépendances d'API. LeetCode le présente comme le célèbre problème des connexions critiques.
Exactement la même machinerie que pour les points d'articulation, avec une seule comparaison changée de supérieur ou égal en strictement supérieur.
dfs(u, parent):
dec[u] = low[u] = ++temps
pour chaque voisin v de u:
si v == parent: continuer // sauter l arete d arrivee
si v deja visite:
low[u] = min(low[u], dec[v]) // arete arriere
sinon:
dfs(v, u)
low[u] = min(low[u], low[v])
si low[v] > dec[u]:
signaler l arete (u, v) comme pontL'inégalité stricte fait toute la différence avec les points d'articulation. low[v] > dec[u] signifie que rien dans le sous-arbre situé sous v ne peut atteindre u ni quoi que ce soit au-dessus, l'arête (u, v) est donc l'unique route et son retrait déconnecte le graphe. Les points d'articulation utilisent low[v] >= dec[u], où l'égalité signifie que le sous-arbre atteint u lui-même mais pas au-delà; cela isole le sous-arbre si tu supprimes le sommet u, mais pas si tu supprimes seulement l'arête.
Exécute le DFS depuis A sur un triangle prolongé par une queue de deux arêtes, le graphe déjà utilisé pour les points d'articulation, afin de comparer les deux tests sur des données identiques.
Graphe d'exemple: Arêtes non orientées A-B, B-C et C-A formant un triangle, plus C-D et D-E.
Les ponts sont C-D et D-E. Note le contraste avec les points d'articulation sur ce même graphe, où la réponse était les sommets C et D. Chaque arête du triangle appartient à un cycle et dispose donc d'un détour, tandis que chaque arête de la queue est l'unique connexion vers tout ce qui se trouve au-delà. La règle générale en découle directement: une arête est un pont exactement lorsqu'elle n'appartient à aucun cycle.
Temps: O(V + E) · Espace: O(V)
Un unique parcours en profondeur avec un travail supplémentaire constant par arête, le coût est donc celui du parcours. Chaque sommet est visité une fois et chaque arête examinée deux fois, une depuis chaque extrémité. L'état tient en deux entiers par sommet plus la pile de récursion, le tout en O(V). L'approche naïve consistant à retirer chaque arête puis à tester la connexité coûte O(E fois (V + E)); sur un graphe de 10 000 arêtes, la méthode du low-link est donc environ quatre ordres de grandeur plus rapide.
Le même DFS répond à plusieurs questions voisines. Choisis selon que l'élément fragile est une arête, un sommet ou toute une région.
| Alternative | À préférer quand | Coût |
|---|---|---|
| Points d'articulation | L'élément critique est un sommet plutôt qu'un lien. Même DFS avec low[v] >= dec[u]. | O(V + E) |
| Arbre des ponts / composantes 2-arête-connexes | Tu veux les régions qui survivent à la défaillance de n'importe quelle arête, pas seulement les arêtes fragiles. | O(V + E) |
| Union-Find sur les arêtes non-ponts | Tu veux contracter chaque composante 2-arête-connexe en un unique sommet. | O(E·α(V)) |
| Coupe minimale | Les arêtes portent des capacités et tu veux l'ensemble déconnectant le moins cher, pas les défaillances d'arêtes isolées. | coût du flot maximal |
Lire l'article complet: Applications of Graph Theory in the Real World
Algorithmes associés: Points d'Articulation, Recherche en Profondeur (DFS)