Алгоритм Джонсона: различия между версиями

Материал из Олимпиадное программирование в УлГТУ
Перейти к навигации Перейти к поиску
(Новая страница: «* Добавим в граф фиктивную вершину s, из которой во все остальные вершины идут рёбра нулев…»)
 
Нет описания правки
Строка 1: Строка 1:
* Добавим в граф фиктивную вершину s, из которой во все остальные вершины идут рёбра нулевого веса.
* Добавим в граф фиктивную вершину s, из которой во все остальные вершины идут рёбра нулевого веса.
* Запустим алгоритм Форда-Беллмана из вершины s.
* Запустим алгоритм Форда-Беллмана из вершины s.
* Зададим новые веса для всех рёбер: w'(u; v) = w(u; v) + dist(s, u) - dist(s, v).
* Зададим новые веса для всех рёбер: w'(v, to) = w(v, to) + dist[v] - dist[to].
* Утверждается, что новые веса неотрицательны, а кратчайшие пути остались теми же; это позволяет запустить из каждой вершины алгоритм Дейкстры.
* Утверждается, что новые веса неотрицательны, а кратчайшие пути остались теми же; это позволяет запустить из каждой вершины алгоритм Дейкстры.



Версия от 18:10, 28 сентября 2019

  • Добавим в граф фиктивную вершину s, из которой во все остальные вершины идут рёбра нулевого веса.
  • Запустим алгоритм Форда-Беллмана из вершины s.
  • Зададим новые веса для всех рёбер: w'(v, to) = w(v, to) + dist[v] - dist[to].
  • Утверждается, что новые веса неотрицательны, а кратчайшие пути остались теми же; это позволяет запустить из каждой вершины алгоритм Дейкстры.

Ссылки