Я ищу быстрый алгоритм для вычисления максимального потока в динамических графах (добавление/удаление узла со связанными ребрами с графом). i.e у нас есть максимальный поток в G, теперь новый узел добавлен/удален с связанными ребрами, мне не нравится пересчитывать максимальный поток для нового графика, на самом деле я хочу использовать предыдущие доступные результаты для этого графика.Максимальный поток в динамических графах
Любая предварительная обработка, которая не является потребителем времени/памяти, присваивается.
Простейшая идея - пересчет потока.
Еще одна простой идеи заключается в том, как это, сохранить все увеличивающиеся пути, которые используются при расчете предыдущего MaxFlow, теперь для добавления вершины v
, можно найти простые пути (в обновленной мощности графе от предыдущего шага), которые начинаются от источника, идет к v
затем идет в пункт назначения, но проблема в том, что этот путь должен быть простым, я не мог найти лучше, чем O (n * E) для этого случая. (если бы это был только один путь или пути были непересекающимися, это можно сделать в O (n + E), но это не так).
Также для удаления узла над идеей не работает.
Также мой вопрос не связан с another question which looks on dynamic edges adding/removing.
Как ваш вопрос не связан со ссылкой, которую вы дали? Кажется, это место для меня. –
@KeithRandall, мой вопрос заключается в добавлении удаления вершины, но вопрос был о ребрах, на самом деле с одной вершиной вы, вероятно, добавите ребра 'n', поэтому вершинный случай более сложный, чем случай края, например, я могу иметь некоторую интуицию с ребра, но мое лучшее решение для вершин не является хорошим решением. –
@Charles, вы бы описали, почему вы удалили тег max-flow? Я добавил этот тег к SO, потому что он полезен. особенно в поисках. –