Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
39
Добавлен:
27.02.2016
Размер:
501.06 Кб
Скачать

Общее правило для нахождения кратчайшего пути в графе состоит в том, чтобы каждой вершине xi приписать индекс λi, равный длине кратчайшего пути из данной вершины в конечную. Приписы-

вание индексов вершинам в случае графа с ребрами единичной длины производится в следующем порядке:

1)конечной вершине x0 приписывается индекс 0;

2)всем вершинам, из которых идет ребро в конечную вершину, приписывается индекс 1;

3)всем вершинам, еще не имеющим индексов, из которых идет ребро в вершину с индексом λi, приписывается индекс λi + 1. Этот процесс продолжается до тех пор, пока не будет помечена началь-

ная вершина. По окончании разметки индекс у начальной вершины будет равен длине кратчайшего пути. Сам кратчайший путь найдем, если будем двигаться из начальной вершины в направлении убывания индексов.

Пример разметки индексов и определения кратчайшего пути показан на рис. 3.7,в для m = 3. Отметим, что описанный способ определения кратчайшего пути является частным случаем нахо-

ждения оптимального решения по методу динамического программирования. Поэтому после изучения динамического программирования полезно вернуться к рассмотренному примеру.

Нахождение кратчайшего пути в графе c ребрами произвольной длины

Задача приписывания вершинам графа числовых индексов усложняется, если ребра графа имеют произвольную длину. Усложнение вызвано тем, что в сложном графе путь, проходящий через наименьшее число вершин, нередко имеет большую длину, чем некоторые обходные пути. Так, в графе (рис. 3.9), изображающем карту дорог, прямой путь из вершины, отмеченной звездочкой, в конечную вершину имеет длину l = 12, тогда как обходной путь через вершину, отмеченную треугольником, имеет длину l = 10.

Назад Первая Предыдущая Следующая Последняя Перейти Предметный указатель

 

 

3

 

24

 

 

 

 

 

 

 

 

27

 

 

17

 

 

 

 

 

 

 

 

 

4

10

 

 

 

 

 

31

 

 

 

 

 

7

 

 

4

 

8

3

 

 

 

 

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

3

 

 

 

8

 

 

 

 

 

 

32

 

12

 

6

 

 

 

 

 

 

 

 

 

 

20

 

 

 

 

 

5

 

5

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0

 

 

 

2

10

 

7

 

 

 

 

31

 

 

 

 

 

 

 

 

 

 

3

 

15

 

18

 

1

 

 

 

2

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

13

3

 

10

 

 

xz

 

 

 

 

 

 

12

 

 

28

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

5

 

 

10

 

 

4

 

 

 

 

 

 

 

 

7

 

7

 

7

 

 

 

 

 

 

 

 

 

 

 

23

7

 

 

1

 

8

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

12

 

7

 

10

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.9. Карта дорог

 

 

 

 

 

 

Назад Первая Предыдущая Следующая Последняя Перейти Предметный указатель

Процесс приписывания индексов для такого вида графов заключается в следующем

1. Каждая вершина xi помечается индексом λi. Первоначально конечной вершине x0 приписыва-

ется индекс λ0 = 0. Для остальных вершин предварительно полагаем λi = ∞

(i 6= 0).

2.Ищем такую дугу (xi, xj), для которой λj − λj > l(xi, xj), и заменяем индекс λi индексом λ0j = λi + l(xi, xj) < λj. Продолжаем этот процесс замены индексов до тех пор, пока остается хотя бы одна дуга, для которой можно уменьшить λj.

Отметим два свойства, которыми будут обладать при писанные вершинам индексы.

1.Пусть (xk, xs) — произвольное ребро. Для него обязательно выполняется условие λk − λs 6 l(xk, xs), так как если бы оно не выполнялось, индекс λs нужно было бы уменьшить.

2.Пусть xp — произвольная вершина. При рассмотренном процессе приписывания индексов индекс λp монотонно уменьшается. Пусть xq — последняя вершина, послужившая для его уменьшения. Тогда λp = λq + l(xq, xp).

Следовательно, для произвольной вершины xp с индексом λp найдется вершина xq, соединенная ребром с xp, такая, что λp − λq 6 l(xq, xp).

Эти свойства позволяют сформулировать следующее правило для нахождения кратчайшего пути. Пусть x0 — начальная вершина с индексом λn. Ищем вершину xp1 такую, что λn − λp1 = l(xp1 , xn).

Далее ищем вершину xp2 такую, что λp1 — λp2 = l(xp2 , xp1 ) и т. д., до тех пор, пока не дойдем до конечной вершины xPk+1 = xz. Путь µ0 = (x0, xp1 , . . . , xpk , xz), длина которого равна λn, является кратчайшим.

Назад Первая Предыдущая Следующая Последняя Перейти Предметный указатель

Соседние файлы в папке Конспект лекций