Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1-2 Программирование / Лабораторная работа 4

.doc
Скачиваний:
49
Добавлен:
31.01.2021
Размер:
191.49 Кб
Скачать

Лабораторная работа № 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. Оформить отчет о выполнении задания с приведением условия задачи,

алгоритмов и программ указанных методов, результаты решения.

Соседние файлы в папке 1-2 Программирование