1-2 Программирование / Лабораторная работа 4
.docЛабораторная работа № 4
Тема: «Нахождение кратчайшего пути в графе. Алгоритм Дейкстры»
1.Цель работы
Решение задач, использующих графовые модели представления, изучение различных методов решения и анализа.
2.Краткие теоретические сведения
2.1. Алгоритмы нахождения кратчайшего пути
В лабораторной работе представлен алгоритм Дейкстры для решения задачи нахождения кратчайшего пути как в сетях, имеющих циклы, так и в сетях, не имеющих циклов.
Алгоритм Дейкстры разработан для нахождения кратчайшего пути между заданным исходным узлом и любым другим узлом сети.
АЛГОРИТМ ДЕЙКСТРЫ. В процессе выполнения этого алгоритма при переходе от узла i к следующему узлу j используется специальная процедура пометки ребер. Обозначим через u1i кратчайшее расстояние от исходного узла 1 до узла i, через dij — длину ребра (i,j). Тогда для узла j определим метку [uj, j] следующим образом.
[uj,i] = [ui+ dij, i], u>0
Метки узлов в алгоритме Дейкстры могут быть двух типов: временные и постоянные. Временная метка впоследствии может быть заменена на другую временную, если будет найден более короткий путь к данному узлу. Когда же станет очевидным, что не существует более короткого пути от исходного узла к данному, статус временной метки изменяется на постоянный.
Вычислительная схема алгоритма состоит из следующих шагов.
Шаг 0. Исходному узлу (узел 1) присваивается метка [0,—]. Полагаем i=1.
Шаг i.
a) Вычисляются временные метки [ui + dij, i] для всех узлов j, которые можно достичь непосредственно из узла i и которые не имеют постоянных меток. Если узел j уже имеет метку [uj,k], полученную от другого узла k, и если ui +dij< uj, тогда метка [uj,k] заменяется на [ui + dij, i].
b) Если все узлы имеют постоянные метки, процесс вычислений заканчивается. В противном случае выбирается метка [иr, s] с наименьшим значением расстояния м, среди всех временных меток (если таких меток несколько, то выбор произволен). Полагаем i = r и повторяем шаг i.
Пример 1. На рис. 1 показана транспортная сеть, состоящая из пяти городов (расстояния между городами (в милях) приведены возле соответствующих дуг сети). Необходимо найти кратчайшие расстояния от города 1 (узел 1) до всех остальных четырех городов.
Задание на лабораторную работу
1. Ознакомиться с методами решения задач с графовым представлением.
2. Составить программу, реализующие метод решения.
3. Оформить отчет о выполнении задания с приведением условия задачи,
алгоритмов и программ указанных методов, результаты решения.