Para el problema del flujo máximo , parece haber una serie de algoritmos muy sofisticados, con al menos uno desarrollado tan recientemente como el año pasado. El flujo máximo de Orlin en tiempo O (mn) o mejor da un algoritmo que se ejecuta en O (VE).
Por otro lado, los algoritmos que veo más comúnmente implementados son (no pretendo haber hecho una búsqueda exhaustiva; esto es solo por observación casual):
- Edmonds-Karp: ,
- Push-relabel: u usando la selección de vértice FIFO,
- Algoritmo de Dinic: .
¿Los algoritmos con mejor tiempo de ejecución asintótico simplemente no son prácticos para los tamaños de problemas en el mundo real? Además, veo que los "árboles dinámicos" están involucrados en bastantes algoritmos; ¿Se utilizan alguna vez en la práctica?
Nota: esta pregunta se hizo originalmente en el desbordamiento de pila, aquí , pero me dijeron que encajaría mejor aquí.
EDITAR : Hice una pregunta relacionada sobre cs.stackexchange , específicamente sobre los algoritmos que usan árboles dinámicos (también conocidos como árboles de enlace cortado), que pueden ser de interés para las personas que siguen esta pregunta.