Я не уверен, что Джикстра это путь. Отрицательные веса плохо влияют на Джикстру.
Я думаю, что вы могли бы отсортировать по весу ребра и начать удаление ребра с наименьшим весом (наихудшее узкое место), и посмотреть, подключен ли график (или, по крайней мере, ваши начальная и конечная точки). Точка, в которой график нарушается, - это когда вы знаете, что устранили узкое место, и вы можете посмотреть на значение этого края, чтобы получить пропускную способность. (Если я не ошибаюсь, каждая итерация занимает O (E) времени, и вам понадобится O (E) итераций, чтобы найти край узкого места, так что это алгоритм O (E 2 ).
Редактировать: вы должны понимать, что наибольший путь не обязательно является самой высокой пропускной способностью: вы стремитесь максимизировать значение min({edges in path})
, а не sum({edges in path})
.