Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретка / ммв.ppt
Скачиваний:
23
Добавлен:
23.05.2015
Размер:
164.86 Кб
Скачать

Маршрут

s (s0 , s1, sm ),

s V m 1

 

i (si 1, si )

 

mдлина маршрута

Веса ребер w RE

Вес маршрута – сумма весов ребер

m

w({si 1, si })

i 1

Упорядоченность значений весов ребер

Требование в задачах поиска маршрута минимального веса

Для значений определена

коммутативная и ассоциативная операция суммирования

a+b,

Специальные

 

значения

причём a a+b.

0 a & a+0=a

 

Веса не уменьшаются при суммировании.

a ∞ & a+∞=∞

 

Матрица весов рёбер W

Множество вершин занумеровано: V={v1, v2, …, vn}.

Форма представления результата

Пара матриц (L, P):

Матрица минимальных весов маршрутов L организована аналогично матрице весов рёбер: её элементы Lij представляют

собой минимальный вес маршрута из вершины vi в вершину vj.

Матрица маршрутов P. Вместо того, чтобы представить результат списком маршрутов, используем для них представление, основанное на следующем принципе: если s0s1s3sk – маршрут минимального веса из k рёбер из вершины

s0=vi в вершину sk=vj, то s1s2sk – маршрут минимального веса из k 1 рёбер из вершины s1 в вершину sk.

Извлечение маршрута из матрицы P

s0=vi, k1=Pij, s1=vk1, k2=Pk1j, s2=vk2, k3=Pk2j, s3=vk3 sm=vkm=vj

Построение маршрута s0s1sm заканчивается, когда

на очередном шаге извлечения маршрута из матрицы P в столбце j встречается сам номер j конечной вершины.

Если вершины не связаны, уже на первом шаге будет обнаружено Pij=0.

Алгоритм Уоршалла

Начальные условия

Шаги алгоритма

Последовательность промежуточных результатов:

(L0, P0) → (L1, P1) → (L2, P2) →… → (Lk-1, Pk-1) → (Lk, Pk) → … (Ln, Pn)

Частичное решение: (Lk, Pk)

Условие:

(Lk, Pk) – множество маршрутов минимального веса при условии, что промежуточными вершинами могут быть только вершины с номерами от 1 до k.

(L0, P0) – без промежуточных вершин: только одношаговые маршруты.

(L1, P1) – одношаговые или только через вершину № 1.

(L2, P2) – одношаговые или только через вершины №№ 1 и/или 2.

(Ln, Pn) – искомое решение.

Шаг № k алгоритма: (Lk-1, Pk-1) → (Lk, Pk)

Как можно улучшить частичное решение, если в дополнение к вершинам 1,2,…k-1 допустить вершину k в качестве промежуточной?

 

 

 

 

L(ijk 1)

 

 

Wi,P( k 1)

v

 

 

vj

( k 1)

 

 

 

ij

 

Pij

 

 

 

 

vi

 

 

 

 

 

 

 

Wi,Pik( k 1)

vPik( k 1)

 

 

 

 

 

v

k

vP( k 1)

 

 

 

 

 

 

kj

 

 

L(ikk 1)

 

 

 

L(kjk 1)

 

 

 

L(ikk 1) L(kjk 1)

 

Соседние файлы в папке Дискретка