N |
Dk= min Di |
k= argmin |
j |
Oj |
Dj |
R= Dk+dk,j |
коррекция Oj=k Dj=R |
|
2 |
1 |
2 |
{3, 7} |
3 |
≠0 |
3 |
5+1=6 |
нет |
7 |
=0 |
6+1=7 |
O7=2, D7=7 |
|||||
3 |
2 |
4 |
{3, 5} |
3 |
≠0 |
3 |
1+2=3 |
нет |
5 |
=0 |
2+2=4 |
O5=4, D5=4 |
|||||
4 |
3 |
3 |
{5, 6, 7} |
5 |
≠0 |
4 |
3+3=6 |
нет |
6 |
=0 |
3+4=7 |
O6=3, D6=7 |
|||||
7 |
≠0 |
7 |
3+2=5 |
O7=3, D7=5 |
||||
5 |
4 |
5 |
{6} |
6 |
≠0 |
7 |
4+1=5 |
O6=5, D6=5 |
6 |
5 |
6 |
{7, 8} |
7 |
≠0 |
5 |
5+1=6 |
нет |
8 |
=0 |
5+4=9 |
O8=6, D8=9 |
|||||
7 |
5 |
7 |
{8} |
8 |
≠0 |
9 |
5+2=7 |
O8=3, D8=7 |
8 |
7 |
8 |
{} |
нет |
Получили ДКП.
Корректность алгоритма Дейкстры
Dk(i) - текущее расстояние от i-й до 1-ой вершины, на k-ом шаге
Ok(i) – отец вершины i, на k-ом шаге
Свойства: (считаем, что вершины перенумеровав в порядке включения)
1. Dk(i) не возрастает по k "i.
2. Dk(k) не убывает по k при условии, что dij≥0.
3. i → O(i) → O 2(i) …→ 1 - текущий кратчайший путь из i в 1.
4. Dk(i)= длина пути (из пункта 3) из i в 1.
5. Для включенных вершин текущий путь по предкам является оптимальным.
6. Если i1 →i2 →…→1 - это кратчайший путь из i1 в 1, то D(i1)=D(i2)+
Справедливы утверждения:
1. Задача нахождения всего ДКП имеет смысл в случае ориентированного ациклического графа или графа с циклами положительной длины. В неориентированном графе все ребра должны иметь неотрицательную длину.
2. Задача нахождения кратчайшего пути в конкретную вершину некорректна, если граф неориентирован, связен и существует хотя бы одно ребро с отрицательной длиной, или граф ориентирован и в нем есть цикл отрицательной длины, достижимый из начальной вершины.
№21. Алгоритм Флойда (могут быть ребра отрицательной длины) :
D={dij≥0} – матрица расстояний, R={rij – кратчайшее расстояние между i и j}
Если на диагонали матрицы R на выходе алгоритма окажутся отрицательные элементы è есть цикл с отрицательной длиной, иначе циклов с отрицательной длиной нет и Rij – кратчайшее расстояние между i и j.
“—“ аналог ∞.
Пример: Матрица расстояний: На диагонали есть отрицательные
-- 10 10 -- |
6 --5 -- |
6 3 -- -- |
-- 3 3 -- |
числа Þ $ цикл отрицательной длины Þ это не матрица кратчайших расстояний.
Поменяем порядок обхода: k=1, k=4, k=3, k=2
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.