в GPS-навигаторах осуществляется поиск кратчайшего пути между двумя перекрестками. В качестве вершин выступают перекрестки, а дороги являются ребрами, которые лежат между ними. Если сумма длин дорог между перекрестками минимальна, тогда найденный путь самый короткий.
Задача о кратчайшем пути между заданной парой вершин.
Требуется найти кратчайший путь из заданной вершины u в заданную вершину v.
Задача о кратчайшем пути между всеми парами вершин.
Требуется найти кратчайший путь из каждой вершины u в каждую вершину v.
Алгоритм поиска A* находит маршрут с наименьшей стоимостью от одной вершины (начальной) к другой (целевой, конечной), используя алгоритм поиска по первому наилучшему совпадению на графе
Алгоритм Флойда — Уоршелла находит кратчайшие пути между всеми вершинами взвешенного ориентированного графа
Задача о кратчайшем пути широко применяется в программировании и технологиях, например, его использует протокол OSPF для устранения кольцевых маршрутов.
OSPF разбивает процесс построения таблицы маршрутизации на 2 этапа.
Второй этап состоит в нахождении оптимальных маршрутов с помощью полученного графа.
Задача нахождения оптимального пути на графе является достаточно сложной и ёмкой. Каждый маршрутизатор считает себя центром сети и ищет оптимальный маршрут до каждой известной ему сети.
Известна схема дорог. Требуется перевезти груз из одного пункта в другой по маршруту минимальной длины.
Если в графе нет циклов с отрицательной длиной, то кратчайшие пути существуют и любой кратчайший путь – это простая цепь.
Алгоритм основан на приписывании вершинам vi временных меток d(vi). Метка вершины дает верхнюю границу длины пути от s к этой вершине
Повторяется n раз, пока не будут упорядочены все вершины.
Шаг 2 (общий шаг).
В дальнейшем на каждом шаге к дереву присоединяется одно новое ребро (и одна вершина). Это ребро выбирается из подходящих ребер, причем подходящим считается ребро, соединяющее вершину дерева с вершиной, ему не принадлежащей. Среди подходящих ребер выбирается ребро наименьшего веса.
Строится по таблице, в него включаются вершины в том порядке, в котором они получали постоянные метки
Вершина 5 имеет минимальную метку. Рассмотрим все вершины в которые есть прямые пути из 5, но которые ещё не помечены как посещенные
В начале алгоритма все элементы вектора Р равны вершине источнику (в нашем случае Р = {1, 1, 1, 1, 1})
В результате получим вектор Р = {1, 1, 5, 5, 1}
Далее на этапе пересчета значения метки для рассматриваемой вершины: если метка рассматриваемой вершины меняется на меньшую, в массив Р мы записываем значение текущей вершины W. Например: у вершины 3 была метка со значением «30», при W=1. Далее при W=5, метка 3-ей вершины изменилась на «20», следовательно мы запишем значение в вектор Р — Р[3]=5
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть