Estoy buscando un algoritmo rápido para calcular el flujo máximo en gráficos dinámicos. es decir, considerando un gráfico y s , t ∈ V tenemos máximo flujo F en G de s a la t . Entonces nuevo / viejo nodo u añadido / borrado con sus correspondientes bordes para formar un gráfico G 1 . ¿Qué es un flujo máximo en un gráfico recién creado? ¿Hay alguna manera de evitar recalcular el flujo máximo?
Se aprecia cualquier preprocesamiento que no consuma mucho tiempo / memoria.
La idea más simple es volver a calcular el flujo.
Otra idea simple es la siguiente: guardar todas las rutas de aumento que se usaron en el cálculo de flujo máximo anterior, para agregar un vértice , podemos encontrar rutas simples (en el gráfico de capacidad actualizado por paso anterior) que comienzan desde la fuente, van a la v y luego van al destino, pero el problema es que este camino debería ser simple, no pude encontrar mejor que O ( n ⋅ m ) para este caso, para m = | E | . (También tenga en cuenta que si solo se tratara de una ruta, esto podría hacerse en O ( n + m ) pero no es así).
También para eliminar el nodo anterior la idea no funciona.
También ya vi documentos como el enfoque incremental para bordes , pero parece que no son lo suficientemente buenos en este caso, es más que para cada borde y parece que no es una extensión adecuada en este caso (simplemente recalculamos un flujo). También actualmente estoy usando el algoritmo de flujo máximo de Ford-Fulkerson. Si hay una mejor opción para los algoritmos en línea, es bueno saberlo.