Я ищу быстрый алгоритм для вычисления максимального потока в динамических графах (добавление/удаление узла со связанными ребрами в граф). т.е. у нас есть максимальный поток в G теперь новый узел добавлен/удален со связанными ребрами, я не хочу пересчитывать максимальный поток для нового графа, фактически, я хочу использовать предыдущие доступные результаты для этого графа.
Любая предварительная обработка, не требующая больших затрат времени/памяти, вполне уместна.
Самая простая идея - пересчитать поток.
Другая простая идея заключается в следующем, сохраняем все дополняющие пути, которые использовались в предыдущем расчете maxflow, теперь для добавления вершины v
, мы можем найти простые пути (в обновленном графе мощности предыдущим шагом), которые начинаются от источника, идут к v
, затем идут к месту назначения, но проблема в том, что этот путь должен быть простым, я не смог найти лучше чем O(n*E) для этого случая. (если бы это был только один путь или пути были непересекающимися, это можно было бы сделать за O(n+E), но это не так).
Также для удаления узла идея выше не работает.
Также мой вопрос не связан с другим вопросом, который рассматривает динамическое добавление/удаление ребер.