4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
== Постановка задачи == | == Постановка задачи == | ||
Задача поиска кратчайших путей с единственным источником (single source shortest path problem, SSSP) выглядит следующим образом. Пусть имеется граф <math>G = (V, E, \ell) \;</math> и вершина-источник <math>s \in V \;</math>. Требуется найти кратчайший путь из вершины s в каждую вершину <math>v \in V \;</math>. Сложность задачи зависит от того, является ли граф ориентированным или нет, а также от предположений о функции длины <math>\ell \;</math>. В самом общем случае <math>\ell: E \to \mathbb{R} \;</math> присваивает ребрам произвольные (положительные и отрицательные) вещественные длины. В этой ситуации можно применить алгоритмы [[Алгоритм Форда|Беллмана-Форда]] и Эдмондса [1, 4], время выполнения которых составит примерно O(mn) | Задача поиска кратчайших путей с единственным источником (single source shortest path problem, SSSP) выглядит следующим образом. Пусть имеется граф <math>G = (V, E, \ell) \;</math> и вершина-источник <math>s \in V \;</math>. Требуется найти кратчайший путь из вершины s в каждую вершину <math>v \in V \;</math>. Сложность задачи зависит от того, является ли граф ориентированным или нет, а также от предположений о функции длины <math>\ell \;</math>. В самом общем случае <math>\ell: E \to \mathbb{R} \;</math> присваивает ребрам произвольные (положительные и отрицательные) вещественные длины. В этой ситуации можно применить алгоритмы [[Алгоритм Форда|Беллмана-Форда]] и Эдмондса [1, 4], время выполнения которых составит примерно O(mn), где m = |E| и n = |V| – количества ребер и вершин. (''Алгоритм Эдмондса работает на неориентированных графах и предполагает, что в них не имеется простых циклов отрицательной длины''). | ||
Если функция <math>\ell \;</math> присваивает ребрам только ''неотрицательные'' вещественные длины, то можно применить алгоритмы [[Алгоритм Дейкстры|Дейкстры]] и Петти-Рамачандрана [4, 14] к ориентированным и неориентированным графам, соответственно. Эти алгоритмы имеют узкое место в виде сортировки и в наихудшем случае требуют <math>\Omega(m + n \; log \; n)</math> времени. (''Алгоритм из [14] выполняется за время O(m + n log log n), если отношение длин любых двух ребер представляет собой полином от n''). | |||
В общем случае предполагается, что | В общем случае предполагается, что функция <math>\ell \;</math> присваивает ребрам целочисленные длины в диапазоне <math>\{ 0, ..., 2^w - 1 \} \;</math> или <math>\{ -2^{w - 1}, ..., 2^{w - 1} - 1 \} \; </math> и что компьютер имеет оперативную память со словами длины w; это означает, что каждая длина ребра помещается в одном регистре. Для ребер общего вида с целочисленной длиной лучшие SSSP-алгоритмы превосходят алгоритмы Беллмана-Форда и Эдмондса примерно в <math>\sqrt{n} \;</math> раз [7]. Для ребер с неотрицательной целочисленной длиной скорость лучших SSSP-алгоритмов превосходит скорость работы алгоритмов Дейкстры и Петти-Рамачандрана на логарифмический коэффициент. Эти алгоритмы нередко основываются на целочисленных очередях с приоритетами [10]. | ||
== Основные результаты == | == Основные результаты == |
правка