Для нахождения кратчайшего пути между двумя точками на графе можно использовать алгоритм Дейкстры. blog.skillfactory.ru education.yandex.ru Он работает для графов, у которых нет рёбер с отрицательным весом. blog.skillfactory.ru
Принцип работы алгоритма Дейкстры: education.yandex.ru
- Всем вершинам, за исключением первой, присваивается вес равный бесконечности, а первой вершине — 0. education.yandex.ru
- Все вершины не посещены. education.yandex.ru
- Первая вершина объявляется текущей. education.yandex.ru
- Вес всех невыделенных вершин пересчитывается по формуле: вес невыделенной вершины есть минимальное число из старого веса данной вершины, суммы веса текущей вершины и веса ребра, соединяющего текущую вершину с невыделенной. education.yandex.ru
- Среди невыделенных вершин ищется вершина с минимальным весом. education.yandex.ru Если такая не найдена, то есть вес всех вершин равен бесконечности, то маршрута не существует. education.yandex.ru Иначе, текущей становится найденная вершина, она же выделяется. education.yandex.ru
- Если текущей вершиной оказывается конечная, то путь найден, и его вес есть вес конечной вершины. education.yandex.ru
- Переход на шаг 4. education.yandex.ru
Результат алгоритма — список кратчайших маршрутов до каждой точки из исходной, для каждого маршрута указана его длина. blog.skillfactory.ru