Теория игр и исследование операций. Модели, алгоритмы, сложность: Конспект лекций, страница 28

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