Найдите путь от источника к цели в остаточном графе графа сетевого потока за время O (E)

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

Можно ли это сделать за время O(E)?

Может ли кто-нибудь дать мне некоторую помощь, и, может быть, показать, что я должен это сделать?

  • Был отредактирован

person J.doe    schedule 19.02.2017    source источник


Ответы (2)


Мне даны потоки-сеть G и их (реберные) емкости и (реберные) потоки через каждое ребро. Я хочу проверить, существует ли путь от источника к цели.

Если вы только хотите проверить, существует ли путь от источника к цели, вам не нужен остаточный граф.

Если бы у меня был остаточный граф, я бы просто внес некоторые коррективы в алгоритм BFS, чтобы легко проверить, существует ли такой путь. Я обнаружил, что это можно сделать в O(|E|).

Временная сложность алгоритма BFS равна O(V+E), а не O(E).

Однако у меня нет остаточного графа, поэтому мой вопрос заключается в том, следует ли сначала вычислить его, а затем продолжить, и если да, то увеличит ли это мою общую временную сложность O (| E |)?

Вычисление остаточного графа должно занять больше времени, чем O(V+E).

Если вы пытаетесь решить проблему максимального потока, почему бы вам не использовать стандартные алгоритмы, такие как < href="https://en.wikipedia.org/wiki/Maximum_flow_problem" rel="nofollow noreferrer">алгоритм Форда-Фулкерсона, временная сложность которого равна O(E max|f|)?


Обновить

Я хочу проверить, существует ли путь от источника к цели в остаточном графе, чтобы узнать, является ли F максимальным потоком или нет. Можно ли это сделать за время O(E)?

Чтобы проверить, есть ли путь между двумя узлами в ориентированном графе, вам потребуется O(V+E) времени. Вы можете использовать либо BFS, либо DFS, как вы упоминали ранее в своем вопросе.

person Wasi Ahmad    schedule 19.02.2017
comment
очень жаль, что так плохо сформулирован вопрос @Wasi Ahmad, я его отредактировал - person J.doe; 20.02.2017
comment
Я считаю, что BFS - это O (| E |) в связном графе? @Васи Ахмад - person J.doe; 20.02.2017
comment
@ J.doe нет, для BFS это O(V+E). пожалуйста, посмотрите алгоритм из любого источника в Интернете. в любом случае, если граф не связан, вы не можете применить BFS в этом графе! - person Wasi Ahmad; 20.02.2017
comment
Любое предложение о том, какой подход я мог бы предпринять, чтобы выяснить, есть ли путь от источника к цели в остаточном графе, чтобы выяснить, является ли данный поток максимальным? Учитывая, что это можно сделать в O(|E) ?@Wasi Ahmad - person J.doe; 20.02.2017
comment
честно говоря, я не знаю, можно ли решить задачу о максимальном потоке за O(E)!!! Но я предлагаю использовать алгоритм ford-fulkerson. - person Wasi Ahmad; 20.02.2017
comment
Я имел в виду, что если бы у меня был заданный поток, и я хотел бы проверить, является ли он максимальным потоком, то мне нужно было бы только проверить, есть ли путь от источника к цели в остаточном графе, возможно ли это сделать в O (Е)? Я думаю, что просто так плохо сформулировал вопрос с самого начала, что немного запутал вас. @Васи Ахмад - person J.doe; 20.02.2017
comment
@ J.doe Нет, я не думаю, что это возможно, потому что, чтобы найти путь между источником и целью на графике, вам нужно O(V+E). Вы можете использовать либо BFS, либо DFS, но вам понадобится O(V+E). - person Wasi Ahmad; 20.02.2017

BFS можно использовать для поиска пути в остаточном графе. Запуск BFS требует O(|E|+|V|) времени выполнения. В потоковой сети все вершины связаны, поэтому количество вершин не больше, чем удвоенное количество ребер. С этой информацией запуск BFS для поиска пути в остаточном графе будет со сложностью O(|E|)

person Andy Lee    schedule 01.12.2020