Gracias por el A2A.
Primero establezca el peso de los bordes del gráfico [math] G [/ math] en 1, use ford-fulkerson o algomondm de edmond-karps para calcular el flujo máximo. Ambos algoritmos funcionan para agregar flujo a lo largo de rutas de aumento. Entonces, cuando alcanza el flujo máximo, seguramente no hay más camino de aumento a lo largo del cual puede agregar más flujo. Ahora haga un dfs desde la fuente para obtener todos los vértices en el mismo corte que la fuente (digamos [math] X [/ math]) y [math] V (G) \ setminus X [/ math] le dará el otro parte del corte.
El único problema con estos algoritmos es que son lentos, incluso el algoritmo edmond-karp tiene un tiempo de ejecución de [math] O (VE ^ 2) [/ math].
Entonces, una forma más rápida de obtener un corte mínimo es usar el siguiente algoritmo aleatorio.
Deje [math] G [/ math] ser el gráfico en [math] n [/ math] vértices y un mincut de tamaño [math] k [/ math].
1. Elija una arista al azar (diga [math] (v_1, v_2) [/ math]) y combine los dos puntos finales en un supervertex (diga [math] v_ {12} [/ math]). La fusión implica la eliminación del borde [math] (v_1, v_2) [/ math], formando el supervertex [math] v_ {12} [/ math]), agregando el resto de los bordes inicialmente conectados a [math] v_1 [ / math] o [math] v_2 [/ math] a [math] v_ {12} [/ math].
Continúa este proceso hasta que te queden solo dos vértices. Deje que el corte entre ellos sea del tamaño [math] k_1 [/ math].
Repita el procedimiento anterior [matemática] \ frac {n ^ 2} {2} [/ matemática] veces para obtener cortes de diferentes tamaños. Devuelve el mínimo de ellos como mincut.
Con alta probabilidad, este procedimiento devuelve un corte mínimo.
Para el análisis completo, consulte el libro de texto Motwani-Raghwan.
Algoritmos aleatorizados.
- ¿Puede Quantum Computing acelerar las redes neuronales y los algoritmos genéticos?
- ¿La técnica de dos punteros se considera una búsqueda binaria en algunos problemas?
- ¿Son los gráficos la mejor estructura de datos para representar circuitos? ¿Hay algo mejor?
- ¿Cuál es el significado de 'orden de crecimiento' en el análisis de algoritmos y cómo podemos encontrar el orden de crecimiento de un algoritmo dado?
- ¿Alguien puede explicar la solución a SPOJ.com - Problema M3TILE?