Алгоритм Дейкстры
В ориентированном взвешанном графе
, вес рёбер которого неотрицателен и определяется весовой функцией , Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины до всех остальных.Алгоритм
В алгоритме поддерживается множество вершин
, для которых уже вычислены кратчайшие пути к ним из вершины . На каждой итерации основного цикла выбирается вершина , которой на текущий момент соответствует минимальная оценка кратчайшего пути. Вершина добавляется в множество и производится релаксация всех исходящих из неё рёбер.Псевдокод
Для всех
Пока
-
Пусть
— вершина с минимальным
-
Для всех
таких, что
-
если
то
-
Обоснование корректности
Пусть
— длина кратчайшего пути из вершины в вершину . Докажем по индукции, что в момент посещения любой вершины , , где - стартовая вершина.Оценка сложности
Основной цикл выполняется
раз. Релаксация выполниться всего раз. В реализации алгоритма присутствует функция выбора вершины с минимальным значением , асимптотика её работы зависит от реализации.Таким образом:
Структура данных | Время работы |
---|---|
Наивная реализация | |
Двоичная куча | |
Куча Фибоначчи |
Источники
- Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд Алгоритмы: построение и анализ, 2-е издание. Пер. с англ. — М.:Издательский дом "Вильямс", 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)
- Википедия — свободная энциклопедия