В лекции 3 часть номер 2 приведён пример нахождения транзитивного замыкания по матрице смежности. Из примера для обратного транзитивного замыкания видно, что путь для достижения вершины х6 в вершину х3 равен 3, а не 2, как показано в табличном примере. Мне кажется, что в лекции ошибка. |
Лекция 9: Алгоритм Дейкстра поиска кратчайших путей в графе
Пятая итерация
Ш А Г 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 представляет дерево.