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

Материал из Олимпиадное программирование в УлГТУ
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 6: Строка 6:
== Ссылки ==
== Ссылки ==
* [http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B6%D0%BE%D0%BD%D1%81%D0%BE%D0%BD%D0%B0 neerc.ifmo.ru/wiki — Алгоритм Джонсона]
* [http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B6%D0%BE%D0%BD%D1%81%D0%BE%D0%BD%D0%B0 neerc.ifmo.ru/wiki — Алгоритм Джонсона]
* [http://brilliant.org/wiki/johnsons-algorithm Brilliant.org — Johnson's Algorithm]


[[Category:Кратчайшие пути между всеми парами вершин]]
[[Category:Кратчайшие пути между всеми парами вершин]]

Версия от 18:42, 2 января 2020

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

Ссылки