Вятский государственный университет
Опубликован: 07.04.2008 | Доступ: свободный | Студентов: 3240 / 834 | Оценка: 4.31 / 3.94 | Длительность: 06:04:00
Специальности: Программист, Математик

Лекция 9: Алгоритм Дейкстра поиска кратчайших путей в графе

< Лекция 8 || Лекция 9: 123

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

Ш А Г 2. Находим Г(х4) = { х3, х5, х6, х7 }. Метки вершин х3, х5 и х6 временные, следовательно, пересчитываем их значения:

L(х3) = min [ 23, 7 + 25 ] = 23,

L(х5)= min [ 29, 7 + 5 ] = 12,

L(х6)= min [17, 7 + 16] = 17.

Ш А Г 3. На данном шаге итерации имеем следующие временные метки вершин:

L(х3) = 23, L(х5) = 12,

L(х6) = 17, L(х9) = 11.

Очевидно, что минимальную метку, равную 11 имеет вершина х9 .

Ш А Г 4. За следующую текущую метку принимаем вершину х9 , т. е. p = х9 , а ее метка становится постоянной, L(х9) = 11+ .

Ш А Г 5. Так как не все вершины графа имеют постоянные метки, переходим к шагу 2.

Шестая итерация

Ш А Г 2. Находим Г(х9) = {х1, х2, х6, х7, х8}. Метка вершины х6 временная, следовательно пересчитываем ее значение:

L(х6) = min [17, 11 + 9] = 17.

Ш А Г 3. На данном шаге итерации имеем следующие временные метки вершин:

L(х3) = 23, L(х5) = 12, L(х6) = 17.

Очевидно, что минимальную метку, равную 12 имеет вершина х5 .

Ш А Г 4. За следующую текущую метку принимаем вершину х5 , т. е. p = х5 , а ее метка становится постоянной, L(х5) = 12+ .

Ш А Г 5. Так как не все вершины графа имеют постоянные метки, переходим к шагу 2.

Седьмая итерация

Ш А Г 2. Находим Г(х5) = { х4, х6 }. Метка вершины х6 временная, следовательно, пересчитываем ее значение:

L(х6)= min [17, 12 + 10 ] = 17.

Ш А Г 3. На данном шаге итерации имеем следующие временные метки :

L(х3) = 23, L(х6) = 17.

Очевидно, что минимальную метку, равную 17 имеет вершина х6 .

Ш А Г 4. За следующую текущую метку принимаем вершину х6 , т. е. p = х6 , а ее метка становится постоянной, L(х6) = 17+ .

Ш А Г 5. Так как не все вершины графа имеют постоянные метки, переходим к шагу 2.

Восьмая итерация

Ш А Г 2. Находим Г(х6) = { х3, х5, х7, х8, х9 }. Метка вершины х3 временная, следовательно, пересчитываем ее значение:

L(х3) = min [ 23, 17 + 20 ] = 23.

Ш А Г 3. На данном шаге итерации имеем одну временную метку вершины: L(х3) = 23, которая становится постоянной.

Ш А Г 4. Все вершины имеют постоянные метки, поэтому алгоритм окончен.

Для нахождения кратчайшего пути между вершинами, например, х2 и начальной х1 последовательно используем соотношение ( ** ): L(x'2)+c(x'2,x2)=L(x2)=5, где вершина x'2 – это вершина, непосредственно предшествующая х2 в кратчайшем пути от х1 к х2 .

Единственной такой вершиной является вершина х7 . Далее соотношение ( ** ) применяем второй раз:

L(x7')+ с(x7’, x7) = L(x7) = 3

Единственной такой вершиной является вершина х1 . Поэтому кратчайший путь от х1 к х2 есть ( х1, х7, х2). Вершина х1 , называемая базой и дающая все кратчайшие пути от х1 представляет дерево.


Рис. 9.5.
< Лекция 8 || Лекция 9: 123
Dmitry Schelkov
Dmitry Schelkov

В лекции 3 часть номер 2 приведён пример нахождения транзитивного замыкания по матрице смежности. Из примера для обратного транзитивного замыкания видно, что путь для достижения вершины х6 в вершину х3 равен 3, а не 2, как показано в табличном примере. Мне кажется, что в лекции ошибка.

Вячеслав Коваленко
Вячеслав Коваленко

В курсе "Введение в теорию графов" в лекции 4 "Достижимость в графарх" дано выражение для нахождения множетсва вершин, входящих в путь из одной вершины графа в другую и по рис.4.2. показан пример нахождения такого множества для пути из вершины х2 в вершину х4 - это множетсво (х2, х3, х4, х5). По рисунку видно что путь не оптимален и для того, чтобы он проходил через все вершины этого множества, через х4 нужно пройти два раза. Правильно ли я понимаю, что данное определение пути дает не всегда оптимальный путь и что определение оптимально (кратчайшего) пути - отдельная задача? Или в примере ошибка?