Уровень алгоритма

Алгоритм Джонсона

Материал из Алговики
Перейти к навигации Перейти к поиску


1 Свойства и структура алгоритма

1.1 Общее описание алгоритма

Алгоритм Джонсона[1] предназначен для решения задачи поиска всех кратчайших путей на графе. Для заданного ориентированного взвешенного графа алгоритм находит кратчайшие расстояния между всеми парами вершин за время [math]O(mn + n^2 \ln n)[/math].

В случае разреженных графов алгоритм Джонсона эффективнее алгоритма Флойда-Уоршела, имеющего сложность [math]O(n^3)[/math]. Он применим к в случае произвольных (в том числе отрицательных) вещественных весов, в отличие от алгоритм Дейкстры, имеющего ту же сложность.

1.2 Математическое описание алгоритма

Алгоритм Джонсона использует алгоритм Беллмана-Форда для предварительной обработки графа, заменяя веса рёбер на неотрицательные. Далее к получившемуся графу многократно применяется алгоритм Дейкстры.

1.3 Вычислительное ядро алгоритма

Основными вычислительными блоками алгоритма Джонсона являются алгоритм Беллмана-Форда и алгоритм Дейкстры.

1.4 Макроструктура алгоритма

1.5 Схема реализации последовательного алгоритма

1.6 Последовательная сложность алгоритма

На этапе предварительной обработки выполняется алгоритм Беллмана-Форда сложностью [math]O(mn)[/math]. Далее для каждой вершины графа выполняется алгоритм Дейкстры сложностью [math]O(m + n \ln n)[/math]. Итоговая сложность алгоритма Джонсона [math]O(mn + n^2 \ln n)[/math].

1.7 Информационный граф

1.8 Ресурс параллелизма алгоритма

Алгоритм Джонсона может быть эффективно распараллелен, так как применение алгоритма Дейкстры для каждой вершины производится независимо. Кроме того, вместо алгоритма Дейкстры можно использовать параллельный алгоритм Δ-шагания.

1.9 Входные и выходные данные алгоритма

1.10 Свойства алгоритма

2 Программная реализация алгоритма

2.1 Особенности реализации последовательного алгоритма

2.2 Возможные способы и особенности параллельной реализации алгоритма

2.3 Результаты прогонов

2.4 Выводы для классов архитектур

3 Литература

  1. Johnson, Donald B. “Efficient Algorithms for Shortest Paths in Sparse Networks.” Journal of the ACM 24, no. 1 (January 1977): 1–13. doi:10.1145/321992.321993.