Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачи и теория к экзамену / теория к экзамену.docx
Скачиваний:
194
Добавлен:
08.01.2021
Размер:
8.24 Mб
Скачать
  1. Вопрос №40. Задача о кратчайших путях, восстановление кратчайшего пути. Алгоритм Дейкстры. Алгоритм Флойда

  2. Задача о кратчайшем пути — задача поиска самого короткого пути (цепи) между двумя точками (вершинами) на графе, в которой минимизируется сумма весов рёбер, составляющих путь.

( x {t})

Алгоритм Дейкстры

Алгоритм Дейкстры – алгоритм, основанный на двух идеях:

  1. Присвоение вершинам графа меток и правиле пересчета меток, при этом окончательные метки – длины кратчайших путей

  2. Экстремальное свойство кратчайшего пути, состоящее в следущем: если кратчайший путь из вершины х в вершину у проходил через z, то его отрезок от вершины х до вершины z – кратчайший путь от х до z, и его отрезок от z до у – кратчайший путь от z до у.

Опишем шаги алгоритма Дейкстры нахождения длин кратчайших путей из вершин S до всех вершин графа. Пусть Х – множество вершин графa:

– начальная установка меток и массивов (метку вершин будем обозначать m(x)):

m(s) := 0, m(x) = ∞ для всех х ≠ S

S:{s}, T:X\S

– Правило пересчета меток и изменения массивов. Пересчитываются только метки вершин t∈T, для которых существуют дуги, ведущие из множества S.

m(t) = min(m(t), m(y) + p( )), где – дуга из вершины y в вершину t

– Из вершин, метки которых пересчитались, выбрать вершину t, имеющую наименьшую метку

S’:= S ∪ {t}, T’:=X\S’

– Правило выхода из алгоритма: Если S’=S, то переход на , иначе S:=S’, T:=T’ и переход на

– m(x) – длина кратчайшего пути из вершины S в вершину x, если m(x) = ∞, то пути из вершины S в вершину х на графе не существует.

Восстановление кратчайшего пути

Кратчайший путь от вершины S к вершине t восстанавливается по известным меткам вершин, полученных с помощью алгоритма Дейкстры пошагово от вершины t до возврата в вершину S. Восстановление основано на экстремальном свойстве кратчайшего пути. Опишем один шаг возвращения:

Для вершины y ∈ (x\{t}) найти такую, для которой выполнено условие m(t)=m(y)+p( ), которое восстанавливает последнюю дугу кратчайшего пути y после чего выполняется шаг возвращения от вершины у и т.д.

Пример: Для графа, приведенного на рисунке, найти длины кратчайших путей от вершины ко всем остальным и восстановить кратчайший путь из к

№ шага пересчета меток

Метки вершин

0

0

1

0

1

3

2

4

2

0

1

3

2

4

2

3

0

1

3

4

2

3

2

4

0

1

3

3

2

3

3

2

5

0

1

3

3

2

3

3

2

6

0

1

3

3

2

3

6

3

2

7

0

1

3

3

2

3

6

3

2

8

0

1

3

3

2

3

4

3

2

Решение задачи свели в таблицу (окончательные метки обозначены голубым)

Проведем восстановление пути из в :

Ясно, что m( ) = min , m( ) = 4

Выберем путь, например , через

m( ) = min , m( ) = 2

Таким образом, кратчайший путь из в имеет длину 4 и путь

Соседние файлы в папке задачи и теория к экзамену