Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 14 Графы .doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
129.54 Кб
Скачать

Матрица весов

x1

x2

x3

x4

x5

x6

x7

x8

x9

x1

10

3

6

12

x2

10

18

2

13

x3

18

25

20

7

x4

25

5

16

4

x5

5

10

x6

20

10

14

15

9

x7

2

4

14

24

x8

6

23

15

5

x9

12

13

9

24

5

Найти все при помощи алгоритма Дейкстры кратчайшие пути от вершины x1 ко всем остальным вершинам.

Постоянные пометки снабжать +, остальные пометки рассматриваются как временные.

Решение.

Нулевая итерация

Шаг 1.

Обозначим через l(xi) пометку вершины xi (длина пути от x1 до xi).

Положить s = x1 и l(x1) = 0+ и считать эту величину постоянной пметкой.

Положить l(xi) = ∞ для всех xix1 и считать эти пометки временными.

Положить p = x1

Таким образом, все вершины графа помечены: (x1 – постоянной пометкой; xi – переменной пометкой, где i = 2,3,…,9) и выполнена нулевая итерация.

Обновление пометок

Первая итерация

Шаг 2.

Найдем соответствие вершины графа, имеющей постоянную метку, т.е. Г(x1), а это – множество вершин, являющихся конечными вершинами дуг, у которых начальной вершиной является x1:

Г(x1) = {x2, x7, x8, x9}. У этого множества вершин все пометки временные, равные . Найдем постоянную пометку, для чего сначала находим пометки для каждой из этих вершин x2, x7, x8, x9 по зависимости: , тогда:

l(x2) = min[l(x2), l(x1)+c(x1,x2)] = min[∞, 0 + 10] = 10;

l(x7) = min[l(x7), l(x1)+c(x1,x7)] = min[∞, 0 + 3] = 3;

l(x8) = min[l(x8), l(x1)+c(x1,x8)] = min[∞, 0 + 6] = 6;

l(x9) = min[l(x9), l(x1)+c(x1,x9)] = min[∞, 0 + 12] = 12.

Перевод пометок из временных в постоянные.

Шаг 3.

Среди всех вершин с временными пометками найти такую, для которой выполняется условие: , т.е.

min[l(x2), l(x7), l(x8), l(x9), l(x3), l(x4), l(x5), l(x6)] = min[10, 3, 6, 12, ∞, ∞, ∞, ∞] =

= 3 = l(x7)

Шаг 4. Вершина графа x7 получает постоянную метку

3+ = l(x7), а

p = x7

Шаг 5. Постоянной пометкой помечены только две вершины: x1 и x7, но если не все вершины отмечены как постоянные, то требуется все повторить начиная со второго шага. Пометки в начале второй итерации показаны на рис. а)

а) 10

3+

0+

12

6