самое тяжелое ребро с наименьшим весом между всеми путями

Дан граф с n вершинами, непрямой, взвешенный, без отрицательных циклов и двумя узлами s,t — найти путь из s в t, в котором самое тяжелое ребро на пути имеет наименьший вес между всеми путями из s в t.

одно решение, о котором я подумал, запустить BFS из s, найти какой-то путь между s и t, сохранить самое тяжелое ребро в пути, удалить его и сделать это не более чем |E| раз. сложность O(|V| + |E|)*E). Я ищу другое решение, которое может включать сетевой поток.

Спасибо.


person Gal Cohen    schedule 05.07.2019    source источник


Ответы (1)


Одна простая идея состоит в том, чтобы удалить все ребра, а затем добавить их обратно в порядке возрастания, пока s и t не будут соединены (что вы можете сделать быстро, отслеживая, к какому острову принадлежит каждый узел на каждой итерации). Наконец, сделайте BFS.

person BlueRaja - Danny Pflughoeft    schedule 05.07.2019
comment
в моем понимании сложность этого решения такая же, как и мое решение, O (VE + E ^ 2). Я думал, может быть, есть лучшее решение, но, возможно, я ошибаюсь .. все равно спасибо :) - person Gal Cohen; 06.07.2019
comment
@GalCohen: это должно быть просто O(V+E) с использованием union-find следить за островами - person BlueRaja - Danny Pflughoeft; 06.07.2019