| 
   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).
Ссылка на скачивание - внизу страницы.