Apprentissage interactif de la théorie des graphes
Apprentissage interactif de la théorie des graphes
Guest User
Using app without sign in
Calculateur de coupe minimale
Trouve la coupe de capacité minimum séparant la source et le puits
Sélectionnez un algorithme et générez les étapes pour commencer la visualisation
Une coupe minimale est l'ensemble d'arêtes le moins cher dont le retrait déconnecte le puits de la source dans un réseau de flot. Le théorème flot-max coupe-min affirme que sa capacité égale le flot maximum, si bien que calculer l'un résout l'autre.
Après exécution de tout algorithme de flot maximum, la coupe minimale est retrouvée en trouvant tous les sommets encore atteignables depuis la source dans le graphe résiduel ; chaque arête pleine de cet ensemble atteignable vers le reste est une arête de coupe. Pour les coupes minimales globales sans source ni puits fixés, l'algorithme de Stoer-Wagner contracte les sommets en O(V au cube) et la contraction aléatoire de Karger offre une élégante alternative probabiliste.
Les coupes minimales identifient les goulots et vulnérabilités des réseaux, séparent les images en avant-plan et arrière-plan en vision par ordinateur, partitionnent les circuits en conception VLSI et mesurent les frontières de communautés dans les réseaux sociaux. Comprendre la dualité avec le flot maximum est une marque des bons candidats en algorithmique.
La coupe minimale ne se calcule pas directement. On calcule un flot maximal, puis on lit la coupe dans le graphe résiduel en un seul parcours.
CoupeMinimale(graphe, s, t):
executer un algorithme de flot maximal jusqu a saturation
// S = tout ce qui reste atteignable depuis s
// dans le graphe RESIDUEL
S = BFS/DFS depuis s en n empruntant que les aretes
de capacite residuelle > 0
T = tous les sommets restants
coupe = { (u,v) parmi les aretes originales :
u dans S et v dans T }
renvoyer coupe et la somme de ses capacites originalesDeux faits font fonctionner cela. Toute arête traversant de S vers T doit être saturée, sinon sa capacité résiduelle serait positive et son extrémité aurait été atteignable, la plaçant dans S. Et toute arête de T revenant vers S ne transporte aucun flot. Le flot traversant la coupe égale donc exactement la capacité de la coupe, et puisqu'aucun flot ne peut dépasser une coupe quelconque, les deux doivent être optimaux.
Trouve la coupe minimale sur le réseau déjà utilisé pour le flot maximal, en lisant le graphe résiduel une fois le flot saturé.
Graphe d'exemple: Capacités orientées S vers A (10), S vers B (10), A vers B (2), A vers T (4), B vers T (9).
La coupe minimale est la paire d'arêtes A-T et B-T de capacité totale 13, égale au flot maximal de 13. Note que S-A et S-B totalisent une capacité de 20 et forment également une coupe, mais plus coûteuse. Le goulot d'étranglement se situe du côté du puits, et le parcours du résiduel le trouve sans avoir à explorer des coupes candidates.
Temps: identique à l'algorithme de flot maximal utilisé · Espace: O(V + E)
L'extraction de la coupe elle-même est un unique parcours de graphe en O(V + E), donc négligeable. Tout le coût réside dans le calcul de flot maximal qui la précède: O(V fois E au carré) avec Edmonds-Karp, ou O(V au carré fois E) avec Dinic. Cela mérite d'être dit clairement, car cela explique pourquoi la coupe minimale n'est pas traitée comme un problème distinct. On ne connaît aucun moyen de trouver la coupe minimale s-t asymptotiquement plus vite que de calculer le flot maximal, puisque d'après le théorème flot-max coupe-min les deux sont le même calcul vu de deux côtés opposés.
Le mot coupe recouvre plusieurs problèmes réellement distincts. Choisir le mauvais est ici l'erreur la plus fréquente.
| Alternative | À préférer quand | Coût |
|---|---|---|
| Flot maximal (Edmonds-Karp / Dinic) | Tu veux la coupe minimale s-t pour une source et un puits précis. La voie standard. | O(V·E^2) ou O(V^2·E) |
| Stoer-Wagner | Tu veux la coupe minimale globale d'un graphe non orienté, sans source ni puits désignés. | O(V·E + V^2·log V) |
| Algorithme randomisé de Karger | Coupe minimale globale où une réponse à forte probabilité suffit et où la simplicité prime. | O(V^2) par essai |
| Arbre de Gomory-Hu | Tu as besoin de coupes minimales entre de nombreuses paires différentes. Il les encode toutes en V - 1 calculs de flot maximal. | V - 1 calculs de flot maximal |
Lire l'article complet: Network Flow: Max-Flow and Min-Cut
Algorithmes associés: Flot Maximum, Recherche de Ponts