Дано: ориентированный взвешенный граф G (V, E) и s,t
являются вершинами V
, все ребра положительны, за исключением ребра (u,v)
, которое отрицательно.
Проблема: найдите кратчайший путь (Значение: с наименьшим весом) от s до t.
Мое решение: Так как у нас есть отрицательное преимущество, мы должны использовать алгоритм Беллмана-Форда. Выполнение n-1
"расслабления" краев, и если есть проблема на n
итерации, есть цикл - таким образом, верните false. в противном случае верните кратчайший путь от s
до t
.
Другое решение: используя Дейкстру и немного изменив его, сохранив d (u) и передав отрицательный край (u, v) и сделав «расслабление», мы снова проходим по всем краям без отрицательный край, если расстояния были изменены, мы имеем цикл, в противном случае все хорошо и возвращаем кратчайший путь.
Примечание. Я, очевидно, не уверен в своем решении, тот факт, что есть одно отрицательное преимущество, сложно, есть идеи?
Примечание 2: Чтобы было интересно, вы не можете использовать Bellman-Ford.