Aprendizaje Interactivo de Teoría de Grafos
Aprendizaje Interactivo de Teoría de Grafos
Guest User
Using app without sign in
Calculadora de corte mínimo
Halla el conjunto de aristas más barato que separa el origen del sumidero
Selecciona un algoritmo y genera pasos para comenzar la visualización
Un corte mínimo es el conjunto de aristas más barato cuya eliminación desconecta el sumidero de la fuente en una red de flujo. El teorema flujo máximo-corte mínimo afirma que su capacidad iguala el flujo máximo, por lo que calcular uno resuelve el otro.
Tras ejecutar cualquier algoritmo de flujo máximo, el corte mínimo se recupera hallando todos los vértices aún alcanzables desde la fuente en el grafo residual; cada arista llena de ese conjunto alcanzable al resto es una arista de corte. Para cortes mínimos globales sin fuente y sumidero fijos, el algoritmo de Stoer-Wagner contrae vértices en O(V al cubo) y la contracción aleatoria de Karger ofrece una elegante alternativa probabilística.
Los cortes mínimos identifican cuellos de botella y vulnerabilidades de red, separan imágenes en primer plano y fondo en visión por computador, particionan circuitos en diseño VLSI y miden fronteras de comunidad en redes sociales. Entender la dualidad con el flujo máximo es un sello de los buenos candidatos en algoritmos.
El corte mínimo no se calcula directamente. Se calcula un flujo máximo y luego se lee el corte del grafo residual en un único recorrido.
CorteMinimo(grafo, s, t):
ejecutar cualquier algoritmo de flujo máximo hasta saturar
// S = todo lo alcanzable desde s
// en el grafo RESIDUAL
S = BFS/DFS desde s usando solo aristas con
capacidad residual > 0
T = el resto de los vértices
corte = { (u,v) en aristas originales :
u en S y v en T }
devolver corte y la suma de sus capacidades originalesDos hechos hacen que esto funcione. Toda arista que cruza de S a T tiene que estar saturada, porque de lo contrario su capacidad residual sería positiva y su extremo habría sido alcanzable, quedando dentro de S. Y toda arista que va de T de vuelta a S transporta flujo cero. Así que el flujo a través del corte iguala exactamente la capacidad del corte, y dado que ningún flujo puede superar ningún corte, ambos han de ser óptimos.
Halla el corte mínimo sobre la misma red usada para el flujo máximo, leyendo el grafo residual una vez saturado el flujo.
Grafo de ejemplo: Capacidades dirigidas S a A (10), S a B (10), A a B (2), A a T (4), B a T (9).
El corte mínimo es el par de aristas A-T y B-T con capacidad total 13, coincidiendo con el flujo máximo de 13. Fíjate en que S-A y S-B suman una capacidad de 20 y también forman un corte, pero uno más caro. El cuello de botella está del lado del sumidero, y el recorrido del residual lo encuentra sin necesidad de buscar entre cortes candidatos.
Tiempo: la misma que el algoritmo de flujo máximo usado · Espacio: O(V + E)
La extracción del corte en sí es un único recorrido del grafo en O(V + E), lo que resulta despreciable. Todo el coste está en el cálculo del flujo máximo que lo precede: O(V por E al cuadrado) con Edmonds-Karp, o O(V al cuadrado por E) con Dinic. Merece la pena decirlo con claridad porque explica por qué el corte mínimo no se trata como un problema aparte. No se conoce ninguna forma de hallar el corte mínimo entre s y t que sea asintóticamente más rápida que calcular el flujo máximo, ya que por el teorema de flujo máximo y corte mínimo ambos son el mismo cálculo visto desde lados opuestos.
La palabra corte abarca varios problemas genuinamente distintos. Elegir el equivocado es el error más común aquí.
| Alternativa | Prefiérela cuando | Coste |
|---|---|---|
| Flujo máximo (Edmonds-Karp / Dinic) | Quieres el corte mínimo entre un origen y un sumidero concretos. Es la vía estándar. | O(V·E^2) o O(V^2·E) |
| Stoer-Wagner | Quieres el corte mínimo global de un grafo no dirigido, sin origen ni sumidero designados. | O(V·E + V^2·log V) |
| Algoritmo aleatorizado de Karger | Corte mínimo global donde una respuesta con alta probabilidad es aceptable y prima la simplicidad. | O(V^2) por intento |
| Árbol de Gomory-Hu | Necesitas cortes mínimos entre muchos pares distintos. Los codifica todos en V - 1 ejecuciones de flujo máximo. | V - 1 cálculos de flujo máximo |
Leer el artículo completo: Network Flow: Max-Flow and Min-Cut
Algoritmos relacionados: Flujo Máximo, Búsqueda de Puentes