Максимальный поток в динамических графах

Я ищу быстрый алгоритм для вычисления максимального потока в динамических графах (добавление/удаление узла со связанными ребрами в граф). т.е. у нас есть максимальный поток в G теперь новый узел добавлен/удален со связанными ребрами, я не хочу пересчитывать максимальный поток для нового графа, фактически, я хочу использовать предыдущие доступные результаты для этого графа.

Любая предварительная обработка, не требующая больших затрат времени/памяти, вполне уместна.

Самая простая идея - пересчитать поток.

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

Также для удаления узла идея выше не работает.

Также мой вопрос не связан с другим вопросом, который рассматривает динамическое добавление/удаление ребер.

10
задан Community 23 May 2017 в 11:46
поделиться