Алгоритм поиска кратчайших путей с единственным источником
Ключевые слова и синонимы
Кратчайший путь; самый быстрый путь
Постановка задачи
Задача поиска кратчайших путей с единственным источником (single source shortest path problem, SSSP) выглядит следующим образом. Пусть имеется граф G = (V, E, I) и вершина-источник s 2 V. Требуется найти кратчайший путь из вершины s в каждую вершину v 2 V. Сложность задачи зависит от того, является ли граф ориентированным или нет, а также от предположений о функции длины I. В самом общем случае I: E ! R присваивает ребрам произвольные (положительные и отрицательные) вещественные длины. В этой ситуации можно применить алгоритмы Беллмана-Форда и Эдмондса [1, 4], время выполнения которых составит примерно O(mn)1, где m = |E| и n = |V| – количества ребер и вершин. Если функция I присваивает ребрам только неотрицательные вещественные длины, то можно применить алгоритмы Дейкстры и Петти-Рамачандрана [4, 14] к ориентированным и неориентированным графам, соответственно. Эти алгоритмы имеют узкое место в виде сортировки и в наихудшем случае требуют Q(m + nlog n) времени2.
1 Алгоритм Эдмондса работает на неориентированных графах и предполагает, что в них не имеется простых циклов отрицательной длины. 2 Алгоритм из [14] выполняется за время O(m + n log log n), если отношение длин любых двух ребер представляет собой полином от n.
В общем случае предполагается, что I присваивает ребрам целочисленные длины в диапазоне {0, ... , 2w - 1} или {-2W~1, ... : : 2W~1 – 1}, и что компьютер имеет оперативную память со словами длины w; это означает, что каждая длина ребра помещается в одном регистре. Для ребер общего вида с целочисленной длиной лучшие SSSP-алгоритмы превосходят алгоритмы Беллмана-Форда и Эдмондса примерно в pn раз [7]. Для ребер с неотрицательной целочисленной длиной скорость лучших SSSP-алгоритмов превосходит скорость работы алгоритмов Дейкстры и Петти-Рамачандрана на логарифмический коэффициент. Эти алгоритмы нередко основываются на целочисленных очередях с приоритетами [10].
Основные результаты
Главным результатом работы Торупа [ ] стал оптимальный SSSP-алгоритм с линейным временем выполнения для неориентированных графов с целочисленными длинами ребер. Это первый и единственный алгоритм поиска кратчайших путей, не делающий серьезных предположений о классе входного графа.
Теорема 1. Существует SSSP-алгоритм для неориентированных графов с целочисленными весами ребер, выполняющийся за время O(m).
Торупу удалось избежать «бутылочного горлышка» сортировки, присущего алгоритму Дейкстры, за счет предварительного вычисления иерархии компонентов за линейное время. Алгоритм из [ ] действует подобно алгоритму Дейкстры [ ], но использует иерархию компонентов для определения групп вершин, которые могут быть посещены в любом порядке. В более поздней работе [ ] Торуп расширил алгоритм таким образом, чтобы он мог работать с длинами ребер, представляющими собой числа с плавающей точкой.3
3 Определение кратчайшего пути обладает определенной гибкостью, поскольку сложение с плавающей точкой не является ни коммутативным, ни ассоциативным.
Основанный на иерархии подход Торупа был в дальнейшем распространен на ориентированные графы и/или графы с вещественными весами и в таком виде позволил решить задачу поиска кратчайших путей между всеми парами (all pairs shortest path, APSP) [12, 13, 14]. Обобщения до соответствующих SSSP-задач можно суммировать следующим образом. В работах [12, 13] можно найти более подробное изложение основанных на использовании иерархии APSP-алгоритмов.
Теорема 2 (Хагеруп [9], 2000). Иерархия компонентов для ориентированного графа G = (V, E, l), где 1: E ! {0, ... 2w – 1}, может быть построена за время O(mlogw). После этого поиск кратчайших путей из любого единственного источника может быть произведен за время O(m + n log log n).
Теорема 3 (Петти и Рамачандран [14], 2005). Иерархия компонентов для неориентированного графа G = (V, E, l), где 1: E ! R+, может быть построена за время O(ma(m, n)+minfnloglogr; nlog ng), где r – отношение максимальной длины ребра к минимальной. Следовательно, поиск кратчайших путей из любого единственного источника может быть произведен за время O(m log a(m, n)).
Алгоритмы Хагерупа [ ] и Петти-Рамачандрана [14] применяют тот же базовый подход, что и алгоритм Торупа: некоторая разновидность иерархии компонентов используется для определения групп вершин, которые можно безопасно посещать в любом порядке. Однако в случае ориентированных графов [9] и действительных длин ребер [14] иерархия Торупа становится неприменимой или неэффективной. Иерархия компонентов Хагерупа основывается на ориентированном аналоге минимального остовного дерева. Алгоритм Петти-Рамачандрана формирует определенный баланс на базе иерархии компонентов, а затем при вычислении кратчайших путей с единственным источником использует специализированную очередь приоритетов, реализующую преимущества этого баланса.
Применение
Алгоритмы поиска кратчайших путей часто используются в качестве подпрограмм в других задачах оптимизации, таких как задачи о потоке и паросочетании [ ] и определении местоположения [19]. Широко практикуется такое коммерческое применение алгоритмов нахождения кратчайших путей, как поиск эффективных маршрутов в дорожных сетях – к примеру, в Google Maps, MapQuest или Yahoo Maps.
Открытые вопросы
Алгоритм Торупа для решения SSSP-задачи [ ] выполняется за линейное время и потому является оптимальным. Основной задачей остается поиск SSSP-алгоритма с линейным временем выполнения, работающего на ориентированных графах с вещественными весами ребер. Наилучшее время выполнения для неориентированных графов с вещественными весами ребер приведено в теореме 3. Для ориентированных графов с целыми весами самые быстрые алгоритмы основаны на подходе Дейкстры (а не теореме 2) и выполняются за время O(mploglogn) (рандомизированные) и O(m + n log log n) (детерминированные).
Задача 1. Существует ли алгоритм поиска кратчайших путей с единственным источником для ориентированных графов с целыми весами с временем выполнения O(m)?
Задача 2. Существует ли алгоритм поиска кратчайших путей с единственным источником для ориентированных или неориентированных графов с вещественными весами с временем выполнения O(m) + o(nlogn)?
Также остается открытым вопрос о сложности SSSP-алгоритмов на графах с положительными и отрицательными длинами ребер.
Экспериментальные результаты
Асано и Имаи [ ], а также Петти и др. оценили эффективность основанных на иерархии SSSP-алгоритмов [14, 17]. Исследования SSSP-алгоритмов на ориентированных графах с целочисленными весами производились неоднократно; наиболее актуальные сведения см. в работе [ ] и ссылках в ней. В последнее время исследователи стремятся найти практичные схемы предварительной обработки, способные очень быстро давать ответы на запрос кратчайших двухточечных путей. Подробнее о недавних работах в этой области – в [3, 11, 16].
Наборы данных
См. в [5] данные о дорожных сетях США и Европы.
Ссылка на код
См. [6] и [5].
См. также
Литература
1. Ahuja, R.K., Magnati, T.L., Orlin, J.B.: Network Flows: Theory, Algorithms, and Applications. Prentice Hall, Englewood Cliffs (1993)
2. Asano, Y., Imai, H.: Practical efficiency of the linear-time algorithm for the single source shortest path problem. J. Oper. Res. Soc.Jpn.43(4),431-447 (2000)
3. Bast, H., Funke, S., Matijevic, D., Sanders, P., Schultes, D.: In transit to constant shortest-path queries in road networks. In: Proceedings 9th Workshop on Algorithm Engineering and Experiments (ALENEX), 2007
4. Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C.: Introduction to Algorithms. MIT Press, Cambridge (2001)
5. Demetrescu, C., Goldberg, A.V., Johnson, D.: 9th DIMACS Implementation Challege—Shortest Paths. http://www.dis.uniroma1.it/~challenge9/(2006)
6. Goldberg, A.V.: AVG Lab. http://www.avglab.com/andrew/7. Goldberg, A.V.: Scaling algorithms for the shortest paths problem. SIAM J. Comput. 24(3),494-504 (1995)
8. Goldberg, A.V.: Shortest path algorithms: Engineering aspects. In: Proc. 12th Int'l Symp. on Algorithms and Computation (ISAAC). LNCS, vol. 2223, pp. 502-513. Springer, Berlin (2001)
9. Hagerup, T.: Improved shortest paths on the word RAM. In: Proc. 27th Int'l Colloq. on Automata, Languages, and Programming (ICALP). LNCS vol. 1853, pp. 61-72. Springer, Berlin (2000)
10. Han, Y.,Thorup, M.: Integer sorting in O(nlog log n) expected time and linear space. In: Proc. 43rd Symp. on Foundations of Computer Science (FOCS), 2002, pp. 135-144
11. Knopp, S., Sanders, P., Schultes, D., Schulz, F., Wagner, D.: Computing many-to-many shortest paths using highway hierarchies. In: Proceedings 9th Workshop on Algorithm Engineering and Experiments (ALENEX), 2007
12. Pettie, S.: On the comparison-addition complexity of all-pairs shortest paths. In: Proc. 13th Int'l Symp. on Algorithms and Computation (ISAAC), 2002, pp. 32-43
13. Pettie, S.: A new approach to all-pairs shortest paths on real-weighted graphs. Theor. Comput. Sci. 312(1), 47-74 (2004)
14. Pettie, S., Ramachandran, V.: A shortest path algorithm for real-weighted undirected graphs. SIAM J. Comput. 34(6), 1398-1431 (2005)
15. Pettie, S., Ramachandran, V., Sridhar, S.: Experimental evaluation of a new shortest path algorithm. In: Proc. 4th Workshop on Algorithm Engineering and Experiments (ALENEX), 2002, pp. 126-142
16. Sanders, P., Schultes, D.: Engineering Highway Hierarchies. In: Proc. 14th European Symposium on Algorithms (ESA), 2006, pp. 804-816
17. Thorup, M.: Undirected single-source shortest paths with positive integer weights in linear time. J. ACM 46(3), 362-394 (1999)
18. Thorup, M.: Floats, integers, and single source shortest paths. J. Algorithms 35 (2000)
19. Thorup, M.: Quick and good facility location. In: Proceedings 14th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA), 2003, pp. 178-185