Mecánica y dinámicas fluidas
Analizar la Eficiencia del Algoritmo de Cuerdas de Edmonds en Problemas de Flujo Max
Table of Contents
El Algoritmo de Edmonds-Karp: Un análisis detallado de eficiencia
El algoritmo de Edmonds-Karp es una aplicación específica del método Ford-Fulkerson para calcular el flujo máximo en una red de flujo. Mientras que el método original de Ford-Fulkerson utiliza una búsqueda arbitraria para aumentar las rutas (que puede llevar a tiempo exponencial en casos patológicos), Edmonds-Karp impone una búsqueda basada en BFS, asegurando que el camino de garantía de aumento más corto (en términos de la teoría de rendimiento de la distancia
Descripción Algorítmica y Propiedades Clave
Dado un gráfico dirigido G = (V, E)] con una fuente s, lavabo t, y función de capacidad c: E → R+], el algoritmo de Edmonds-Karp procede como
- Inicializar el flujo f(e) = 0] para todos los bordes.
- Construir el gráfico residual Gf [incluyendo los bordes atrasados con capacidad igual al flujo actual].
- Correr BFS en G]f de s[ para encontrar el camino más corto dirigido a t (medido en número de bordes).
- Si no existe un camino, rescinda; el flujo actual es máximo.
- De lo contrario, determinar la capacidad de cuello de botella a lo largo del camino (capacidad mínima residual).
- Flujo de aumento por esa cantidad a lo largo del camino y actualización de las capacidades residuales.
- Repita el paso 2.
El uso de BFS asegura que cada camino de aumento encontrado es un camino más corto en el gráfico residual. Una propiedad crítica emerge: la distancia (en los bordes) de s] a t] en el gráfico residual nunca disminuye y aumenta estrictamente cada ]OLT [F bounder directly it.
Análisis de la complejidad
[LTF] [LTF] [4]]O(V + E)[FLT] [4]], que simplifica la O(E] [FLT] [4]] [4]] [El reto principal es el número de aumentaciones.
Más precisamente, el análisis estándar muestra que el número de aumentos es en la mayoría O(VE), por lo que el tiempo total es O(V E2) [o ]O(V E * (V+E)] ] para la peor parte de las redes.
Comparación con otros algoritmos de flujo Max
Algoritmo de Dinic
El algoritmo de Dinic también utiliza BFS para construir un gráfico de nivel, pero luego permite múltiples caminos de aumento en una sola fase a través de DFS en el gráfico de nivel. Esto reduce el número de BFS se ejecuta a la mayoría V (ya que el nivel del lavabo aumenta cada fase). La complejidad general es O(LT2 E)[LT
Algoritmos de la etiqueta de empuje
Los métodos de etiquetado de empuje, como el algoritmo genérico o la variante más alta, logran O(V2 √E)] o O(V3)]. Trabajan empujando el flujo localmente a lo largo de los bordes elegibles y relabeliendo vertices para mantener un etiquetado válido.
Otra variante importante es el ] escalado de capacidad algoritmo, que añade un parámetro escalador al método Ford-Fulkerson, dando O(E2 log U) donde U es la máxima capacidad. Esto es también un empujón polinomio pero simple.
¿Por qué Edmonds-Karp sigue importando
A pesar de ser más lento que Dinic y la etiqueta de empuje, Edmonds-Karp es pedagogamente valioso. Su simplicidad y la prueba intuitiva de tiempo de ejecución polinomio (basado en monotónica de trayectoria más corta) lo convierten en una excelente herramienta de enseñanza. Muchos planes de estudios de informática introducen Edmonds-Karp antes de pasar a métodos más avanzados.
Implicaciones prácticas y casos de uso
En aplicaciones reales, la selección de algoritmos depende en gran medida de las limitaciones de problemas.
- [LT] [FLT]: La unidad de forjado [FLT] se reduce a la capacidad de Hopcroft-Karp cuando las capacidades son unidas y la red es bipartita. En realidad no – Hopcroft–Karp es un algoritmo dedicado con O(E ≤p) [FLT]
- Ingeniería de tráfico: En las telecomunicaciones y las redes de carreteras, los flujos son a menudo grandes y los gráficos son escasas. Se prefieren las etiquetas de din o de empuje debido a un mejor escalado.
- Segmento de imágenes: Los algoritmos de corte de Gráficos para la visión de la computadora suelen depender de computaciones de flujo máximo/min. El algoritmo Boykov-Kolmogorov, un método de aumento especializado, a menudo supera los algoritmos genéricos para estos gráficos de tipo cuadrícula, pero Edmonds-Karp se puede utilizar para problemas más pequeños.
- Educación y prototipado: Cuando la sencillez y la corrección son primordiales sobre la velocidad cruda, Edmonds-Karp es una opción segura. Su comportamiento es predecible, y el depuro es sencillo porque BFS es fácil de implementar.
Rendimiento empírico
Los parámetros de gráficos aleatorios muestran que Edmonds-Karp suele funcionar en tiempo casi lineal en la práctica cuando las capacidades de borde son pequeñas (O(1)) porque el número de aumentos está vinculado por el valor máximo de flujo, que puede ser pequeño. Sin embargo, para redes de alta capacidad, el algoritmo puede degradar. Por ejemplo, considera una red de grandes dimensiones;
Consideraciones de la aplicación
Al implementar Edmonds-Karp, es esencial una gestión de gráficos residual cuidadosa. Representar los bordes hacia adelante y hacia atrás permite una mejora fácil y un retroceso. Usar una lista de adyacencia con punteros para revertir los bordes (o almacenar índices de bordes inversos) simplifica las actualizaciones. El BFS también debe registrar los predecesores para reconstruir el camino de aumento.
Las optimizaciones incluyen:
- Terminación temprana si el BFS no puede alcanzar t].
- Utilizar capacidades y flujos enteros para evitar problemas de punto flotante.
- Agregar múltiples aumentos si el gráfico tiene muchos bordes paralelos (aunque menos comunes).
Para redes muy grandes, considere utilizar un BFS dinámico que actualiza las distancias de forma incremental, pero esto a menudo añade complejidad sin ganancias significativas para Edmonds-Karp específicamente.
Relación con el método original de Ford-Fulkerson
Jack Edmonds y Richard Karp publicaron su algoritmo en 1972, demostrando que el uso de BFS produce un algoritmo de flujo máximo de tiempo polinomio. Antes de eso, el método Ford-Fulkerson (1956) no especificaba la regla de selección de caminos, y se sabía que las malas opciones podrían llevar a tiempo exponencial. El trabajo de Edmonds y Karp fue un paso fundamental en el desarrollo de algoritmos fuertemente polinomio para flujos de redLT
Prórrogas y variaciones
Las variedades de Edmonds-Karp incluyen:
- ] Versión de escalado de la capital: En lugar de aumentar siempre a lo largo del camino más corto, el algoritmo funciona con un parámetro de escalado Δ y sólo considera bordes con capacidad residual ≥ Δ. Esto produce un O(E2 log U)
- Optimización de la capacidad de unído: Cuando todas las capacidades son 1, el algoritmo de la trayectoria de aumento basado en BFS se especializa en el algoritmo Hopcroft–Karp, aunque este último utiliza cuidadosamente alternando BFS/DFS para lograr O(E √V).
- Integrality: El algoritmo mantiene naturalmente flujos integrales cuando las capacidades son integrales, lo que lo hace adecuado para problemas combinatorios.
Conclusión
El algoritmo de Edmonds-Karp es un método fiable y bien entendido para resolver problemas de flujo máximo. Su O(V E2) la complejidad del tiempo más difícil lo hace imprcticable para redes de base muy grandes o densas, pero su sencillez y la clara prueba de tiempo de ejecución polinomio han cementado su lugar en libros de texto de algoritmos.
Más lectura sobre algoritmos de flujo avanzados se puede encontrar en el artículo de Wikipedia] y en el libro de texto clásico Introducción a los algoritmos (CLRS). Para un análisis más profundo del rendimiento del algoritmo de flujo, vea NetworkX Flujo de las notas de implementación.