Введение
Алгоритм Дейкстры называют кротчайшим путем единственного источника. Он также известен как
единственная исходная проблема кратчайшего пути. Алгоритм вычисляет длину кратчайшего
пути от источника к каждому из оставшихся вершин графа.
Проблема единственного источника кратчайшего пути может быть описана следующим образом:
Пусть G = {V, E} ориентированный взвешенный граф, имеющий множество вершин.
Особая вершина s в V, где s является источником для любого ребра е из Е,
EdgeCost (е) длину ребра е. Все веса в графе должно быть
неотрицательным.
Прежде чем подробно рассказывать об алгоритме Дейкстры поговорим подробно о
направленно-взвешенном графе.
Направленный граф может быть определена как упорядоченная пара G = (V, E) с V представляет собой набор,
элементы которого называются вершинами или узлами, и Е, которое представляет собой множество упорядоченных пар
вершин, называемых ориентированными ребрами, дуги, или стрелки. Ориентированные графы также известны
как диграфы.
Направленно-взвешенный граф представляет собой ориентированный граф с весом каждого ребра, который прикреплен к каждому краю графика.
Описание алгоритма
Прежде чем углубляться в детали псевдокода алгоритма важно знаеть, как работает алгоритм. Алгоритм Дейкстры работает путем решения подзадачи К, который вычисляет кратчайший путь от источника к вершинам среди К-ближайших вершины к источнику. Для работы алгоритма Дейкстры это должен быть направленно-взвешенный граф и края не должны быть отрицательными. если края отрицательны, то фактически кратчайший путь не может быть получен.
В К-том контуре будет набор под названием Граница k вершин, которые будут состоять из вершин, самых близких к источнику и вершин, которые лежат вне границы. Они вычислены и помещены в новую границу. Полученное самое короткое расстояние сохраняется в sDist[w]. Это содержит оценку расстояния от s до w. Алгоритм Дэйкстры находит следующую самую близкую вершину, сохраняя новые граничные вершины в приоритетной очереди .
Алгоритм работает, сохраняя кратчайшее расстояние от вершины V к источнику в массиве sDist. Самое короткое расстояние от источника до него самого равна нулю. sDist для всех других вершин устанавливается в бесконечность, чтобы указать, что эти вершины еще не обработанные. После того, как алгоритм заканчивает обработку вершин, в sDist будет кратчайшее расстояние от вершины W до S. Два комплекта поддерживают пограничный и новые рубежи, которые помогают в обработке алгоритма. Границы относятся к вершинам, которые стоят ближе к источнику. Они будут иметь уже кратчайшие расстояния до этих вершин, ограниченных до K вершин. Вершины, которые находятся за пределами границ помещается в наборе под названием новая граница
Псевдокод алгоритма
Следующий псевдокод описывает работу алгоритма.
Алгоритм иллюстрирует Best-First-Breadth-First поиск. Это Best-First, потому что лучшая вершина выбирается для того, чтобы быть затем обработанной. Используемый Breadth-First поиск, начиная с новой границы, состоит из вершин, которые могут быть испробованы и исследованы от края до края.