Алгоритм Дейкстры — различия между версиями
Vasin (обсуждение | вклад) (→Обоснование корректности работы) |
Vasin (обсуждение | вклад) (→Обоснование корректности) |
||
| Строка 17: | Строка 17: | ||
== Обоснование корректности == | == Обоснование корректности == | ||
| + | Пусть <tex>p(u, v)</tex> — длина кратчайшего пути из вершины <tex>u</tex> в вершину <tex>v</tex>. Докажем по индукции, что в момент посещения любой вершины <tex>u</tex>, <tex>d(u)=p(s,u)</tex>, где <tex>s</tex> - стартовая вершина. | ||
== Оценка сложности == | == Оценка сложности == | ||
Версия 01:25, 15 октября 2011
В ориентированном взвешанном графе , вес рёбер которого неотрицателен и определяется весовой функцией , Алгоритм Дейкстры находит длину кратчайшего пути из одной вершины до всех остальных.
Алгоритм
В алгоритме поддерживается множество вершин , для которых уже вычислены кратчайшие пути к ним из вершины . На каждой итерации основного цикла выбирается вершина , которой на текущий момент соответствует минимальная оценка кратчайшего пути. Вершина добавляется в множество и производится релаксация всех исходящих из неё рёбер.
Псевдокод
Для всех
Пока
-
Пусть— вершина с минимальным -
Для всехтаких, что-
еслито
-
Обоснование корректности
Пусть — длина кратчайшего пути из вершины в вершину . Докажем по индукции, что в момент посещения любой вершины , , где - стартовая вершина.
Оценка сложности
Основной цикл выполняется раз. Релаксация выполниться всего раз. В реализации алгоритма присутствует функция выбора вершины с минимальным значением , асимптотика её работы зависит от реализации.
Таким образом:
| Структура данных | Время работы |
|---|---|
| Наивная реализация | |
| Двоичная куча | |
| Куча Фибоначчи |
Источники
- Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд Алгоритмы: построение и анализ, 2-е издание. Пер. с англ. — М.:Издательский дом "Вильямс", 2010. — 1296 с.: ил. — Парал. тит. англ. — ISBN 978-5-8459-0857-5 (рус.)
- Википедия — свободная энциклопедия