Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Построение и анализ алгоритмов. Минимальное остовное дерево. (Лекция 6.1)

Содержание

01.03.2016Алгоритмы на графах: построение МОДДерево – связный граф, не содержащий циклов.Граф связный, если каждая пара различных вершин графа связана маршрутом.Для связного графа G = (V, E) остовным деревом (остовом, каркасом, стягивающим деревом, скелетом) является граф (дерево)
01.03.2016Алгоритмы на графах: построение МОДЛекция 6.1Раздел: Алгоритмы на графахТема лекции: Часть 1.Минимальное 01.03.2016Алгоритмы на графах: построение МОДДерево – связный граф, не содержащий циклов.Граф связный, 01.03.2016Алгоритмы на графах: построение МОДВ дереве из n вершин имеется m = 01.03.2016Алгоритмы на графах: построение МОДГраф G = (V, E). Матрица весов W[v, 01.03.2016Алгоритмы на графах: построение МОДФормулировка 1: Пусть веса всех рёбер различны. Тогда 01.03.2016Алгоритмы на графах: построение МОДФормулировка 2: Существует (найдётся) оптимальное остовное дерево графа, 01.03.2016Алгоритмы на графах: построение МОДПусть G (W) = (V, E, W), а 01.03.2016Алгоритмы на графах: построение МОД1. Теорема о минимальном ребре. Версия 2Пусть {(V1, 01.03.2016Алгоритмы на графах: построение МОДИллюстрация к теоремеТеорема о минимальном ребре(V1 ,Т1)vuОстальные деревья 01.03.2016Алгоритмы на графах: построение МОДДоказательство (от противного): «Противное»: ∃ ОД (V, F), 01.03.2016Алгоритмы на графах: построение МОДАлгоритмы построения МОДБoрувка (O. Bоruvka, 1926)Ярник (V. Jarnik, 01.03.2016Алгоритмы на графах: построение МОД«Краскал – Крускал»Материал из Википедии«Алгоритм Краскала — алгоритм 01.03.2016Алгоритмы на графах: построение МОД1. Упорядочить рёбра в порядке неубывания весов.2. Поочерёдно 01.03.2016Алгоритмы на графах: построение МОДЖадный алгоритм построения МОД (Kruskal, 1956)Vs - множество Жадный алгоритм построения МОД (Kruskal, 1956)// алгоритм МОД// Vs - множество деревьев 01.03.2016Алгоритмы на графах: построение МОДЖадный алгоритм построения МОД (Kruskal, 1956)abcdefg1, 3, 4, 01.03.2016Алгоритмы на графах: построение МОДКорректность алгоритма (Теорема+индукция).Сложность алгоритма O(m log m) при 01.03.2016Алгоритмы на графах: построение МОД3. Алгоритм Ярника-Прима-Дейкстры построения МОД  (Jarnik, Prim, 01.03.2016Алгоритмы на графах: построение МОДКорректность алгоритма: 01.03.2016Алгоритмы на графах: построение МОДАлгоритм Ярника-Прима-ДейкстрыИспользуем специальную СД, которая облегчает выбор ближайшей 01.03.2016Алгоритмы на графах: построение МОДВход : V - множество вершин графа G=(V,E), 01.03.2016Алгоритмы на графах: построение МОД//Детализация фрагмента ф1: min = +∞ ; for 01.03.2016Алгоритмы на графах: построение МОДАлгоритм Ярника-Прима-ДейкстрыНачальная вершина – gW(T) = 23+1+4+9+3+17 = 57 01.03.2016Алгоритмы на графах: построение МОДХудший случай: полный граф m = n(n − 4. Нижняя граница задачи нахождения МОД (2)Можно рассуждать иначе (чуть менее формально).Во 01.03.2016Алгоритмы на графах: построение МОДПусть наряду с near[*] используется рабочий массив расстояний 01.03.2016Алгоритмы на графах: построение МОДАлгоритм Ярника-Прима-Дейкстры  построения МОДПримеры выполнения.Варианты:Стандартный - для 01.03.2016Алгоритмы на графах: построение МОДПример 1. МОД. Алгоритм ЯПД (n = 9; m = 20)Упрощённое представление 01.03.2016Алгоритмы на графах: построение МОДПример 1. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 1. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 1. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДСм. слайд 26Пример выполнения алгоритма Ярника-Прима-Дейкстры (вариант для разрежённых графов) 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n = 9; 01.03.2016Алгоритмы на графах: построение МОДКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ
Слайды презентации

Слайд 2 01.03.2016
Алгоритмы на графах: построение МОД
Дерево – связный граф,

01.03.2016Алгоритмы на графах: построение МОДДерево – связный граф, не содержащий циклов.Граф

не содержащий циклов.
Граф связный, если каждая пара различных вершин

графа связана маршрутом.
Для связного графа G = (V, E) остовным деревом
(остовом, каркасом, стягивающим деревом, скелетом)
является граф (дерево) T = (V, F), где F⊆ E.
Рёбра дерева – ветви, остальные рёбра графа – хорды.
В графе много остовов, а именно, число остовов nn-2.

Остовное дерево






















Повторение с предыдущей лекции


Слайд 3 01.03.2016
Алгоритмы на графах: построение МОД

В дереве из n

01.03.2016Алгоритмы на графах: построение МОДВ дереве из n вершин имеется m

вершин имеется m = n – 1 рёбер

Доказательство (по индукции):

Остовное дерево







Ti, ni

Удаляем некоторый узел и k инцидентных рёбер (k∈1..n − 1 ).
Образуется лес из деревьев Ti с числом узлов ni (i ∈1..k).


Слайд 4 01.03.2016
Алгоритмы на графах: построение МОД
Граф G = (V,

01.03.2016Алгоритмы на графах: построение МОДГраф G = (V, E). Матрица весов

E). Матрица весов W[v, u].
Пусть T = (V,

F) – остов графа.
Вес остова определяется как

Минимальное остовное дерево (МОД)

МОД : TM = Arg min ( W(T) )


Слайд 5 01.03.2016
Алгоритмы на графах: построение МОД
Формулировка 1: Пусть веса

01.03.2016Алгоритмы на графах: построение МОДФормулировка 1: Пусть веса всех рёбер различны.

всех рёбер различны. Тогда оптимальное остовное дерево графа содержит

ребро с наименьшим весом.

Доказательство (от противного): Пусть {v, u} – кратчайшее из всех рёбер – не входит в МОД T.
Добавим {v, u} к T.
Образуется цикл.
Удалим из этого цикла ребро, отличное от {v, u}. Получим T* дерево с весом, меньшим чем вес T, чего не может быть, поскольку T есть МОД (противоречие!).

1. Теорема о минимальном ребре. Версия 0.


Слайд 6 01.03.2016
Алгоритмы на графах: построение МОД
Формулировка 2: Существует (найдётся)

01.03.2016Алгоритмы на графах: построение МОДФормулировка 2: Существует (найдётся) оптимальное остовное дерево

оптимальное остовное дерево графа, содержащее ребро с наименьшим весом.
Доказательство

(от противного): Пусть {v, u} – кратчайшее из всех рёбер – не входит в МОД T.
Добавим {v, u} к T. Образуется цикл.
Удалим из этого цикла ребро {v’, u’ }, отличное от {v, u}. Получим T* дерево с весом, меньшим или равным, чем вес T.
Если W [v, u] = W [v’, u’ ], т.е. W(T*)=W(T), то теорема справедлива.
Если W [v, u] < W [v’, u’ ], то W(T*) < W(T), чего не может быть, поскольку T есть МОД (противоречие!).

1. Теорема о минимальном ребре. Версия 0*.


Слайд 7 01.03.2016
Алгоритмы на графах: построение МОД


Пусть G (W) =

01.03.2016Алгоритмы на графах: построение МОДПусть G (W) = (V, E, W),

(V, E, W), а {V1, V2} есть разбиение V.

В G имеется МОД, содержащее кратчайшее из рёбер, одна вершина которого принадлежит V1 , а другая – V2.
Доказательство (от противного): Как и ранее, пусть кратчайшее ребро {u, v} (u∈V1 , v ∈V2 ) не входит в МОД …









u

v

u′

v′

На этом цикле есть ребро {u′, v′ }.
W [u, v] ≤ W [u′, v′ ] .
W [u, v] < W [u′, v′ ] . Тогда, удалив {u′, v′ }, получим другое ОД, содержащее T и ребро {u, v} и имеющее меньший вес, чем F. Это противоречит «противному».
W [u, v] = W [u′, v′ ]. Случай равных весов. …

V1

V2

1. Теорема о минимальном ребре. Версия 1.


Слайд 8 01.03.2016
Алгоритмы на графах: построение МОД
1. Теорема о минимальном

01.03.2016Алгоритмы на графах: построение МОД1. Теорема о минимальном ребре. Версия 2Пусть

ребре. Версия 2
Пусть
{(V1, T1), (V2, T2),…, (Vk, Tk)

} – остовный лес на множестве V (т. е. {V1, V2, …, Vk} есть разбиение V и (∀i ∈1..k: Ti ⊂ E)),
{v, u } – кратчайшее из всех рёбер, у которых ровно один конец содержится в V1..
Тогда среди всех остовных деревьев, содержащих все рёбра из множества T = Ukj=1 Tj , существует оптимальное (для заданного леса) остовное дерево, содержащее {v, u }.
Т.е. найдётся остов, содержащий T U{{v,u }} и имеющий минимальный вес среди всех остовов, содержащих T.

Замечание о рёбрах с равными весами и формулировке теоремы.


Слайд 9 01.03.2016
Алгоритмы на графах: построение МОД



Иллюстрация к теореме
Теорема о

01.03.2016Алгоритмы на графах: построение МОДИллюстрация к теоремеТеорема о минимальном ребре(V1 ,Т1)vuОстальные

минимальном ребре















(V1 ,Т1)
v
u
Остальные деревья остовного леса. Узлы V

\V1 .











Слайд 10 01.03.2016
Алгоритмы на графах: построение МОД


Доказательство (от противного):
«Противное»:

01.03.2016Алгоритмы на графах: построение МОДДоказательство (от противного): «Противное»: ∃ ОД (V,

∃ ОД (V, F), где F ⊃ T и

{u, v} ∉ F, которое короче всех остальных ОД, содержащих T и ребро {u, v}.
Добавим к F ребро {u, v}. Образуется единственный цикл, не все вершины которого содержаться в V1, например, v ∉ V1.

Теорема о минимальном ребре











u

v

u′

v′

На этом цикле есть ребро {u′, v′ }.
W [u, v] ≤ W [u′, v′ ] .
W [u, v] < W [u′, v′ ] . Тогда, удалив {u′, v′ }, получим другое ОД, содержащее T и ребро {u, v} и имеющее меньший вес, чем F. Это противоречит «противному».
W [u, v] = W [u′, v′ ]. Случай равных весов. …

V1

V \V1


Слайд 11 01.03.2016
Алгоритмы на графах: построение МОД
Алгоритмы построения МОД
Бoрувка (O.

01.03.2016Алгоритмы на графах: построение МОДАлгоритмы построения МОДБoрувка (O. Bоruvka, 1926)Ярник (V.

Bоruvka, 1926)
Ярник (V. Jarnik, 1930)
Крускал (J.B. Kruskal, Jr., 1956)
Прим

(R.C. Prim, 1957)
Дейкстра (E.W. Dijkstra, 1959)
Мы рассмотрим:
Алгоритм Крускала (Жадный алгоритм)
Алгоритм ЯПД (Ярника-Прима-Дейкстры)
Алгоритм Бoрувки (позже, в лекции 7)

Слайд 12 01.03.2016
Алгоритмы на графах: построение МОД
«Краскал – Крускал»
Материал из

01.03.2016Алгоритмы на графах: построение МОД«Краскал – Крускал»Материал из Википедии«Алгоритм Краскала —

Википедии
«Алгоритм Краскала — алгоритм построения минимального остовного дерева взвешенного

связного неориентированного графа. Открыт Джозефом Крускалом в 1956 году.»

Joseph B. Kruskal. On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem. // Proc. AMS. 1956. Vol 7, No. 1. C. 48–50


Слайд 13 01.03.2016
Алгоритмы на графах: построение МОД














1. Упорядочить рёбра в

01.03.2016Алгоритмы на графах: построение МОД1. Упорядочить рёбра в порядке неубывания весов.2.

порядке неубывания весов.
2. Поочерёдно выбирать рёбра минимального веса, не

образующие циклов с ранее выбранными.

2. Жадный алгоритм построения МОД (Kruskal, 1956)

W[1..12]: 1, 3, 4, 9, 15, 16, 17, 20, 23, 25, 26, 36

W(T)= 1+3+4+9+17+23 = 57


Слайд 14 01.03.2016
Алгоритмы на графах: построение МОД
Жадный алгоритм построения МОД

01.03.2016Алгоритмы на графах: построение МОДЖадный алгоритм построения МОД (Kruskal, 1956)Vs -

(Kruskal, 1956)
Vs - множество множеств узлов (множество деревьев остовного

леса)
begin {алгоритм МОД }
Vs := { }; T:= { };
for ∀ v ∈ V do добавить {v} к Vs;
Построить очередь Q из всех рёбер e ∈ E, упорядочив их по возрастанию весов;
while Card(Vs) > 1 do
begin
Выбрать из Q ребро e = {u,v} с минимальным весом;
Удалить e из Q;
If u и v принадлежат разным подмножествам W1 и W2 из Vs
then
begin Заменить W1 и W2 на W1 ∪ W2 в Vs;
T := T ∪ {e}
end
end {while}
end {алгоритма МОД };

Замечание. Ср. с примером о связности.
Найти W1∈Vs, такое, что u∈W1. То же для v и W2. Это операция НАЙТИ.
Заменить в Vs подмножества W1 и W2 на их объединение W1∪W2 - это операция ОБЪЕДИНИТЬ.


Слайд 15 Жадный алгоритм построения МОД (Kruskal, 1956)
// алгоритм МОД
//

Жадный алгоритм построения МОД (Kruskal, 1956)// алгоритм МОД// Vs - множество

Vs - множество деревьев остовного леса = мн-во подмножеств

узлов, T –множество рёбер МОД
Vs = { }; T= { };
for (∀ v ∈ V) добавить {v} к Vs;
Построить очередь Q из всех рёбер e ∈ E, упорядочив их по возрастанию весов;
while (Card(Vs) > 1) {
Выбрать из Q ребро e = {u,v} с минимальным весом;
Удалить e из Q;
if (u и v принадлежат разным подмножествам W1 и W2 из Vs) {
Заменить W1 и W2 на W1 ∪ W2 в Vs;
T = T ∪ {e}
}
} // end-while
// конец алгоритма МОД

01.03.2016

Алгоритмы на графах: построение МОД

Замечание. Ср. с примером о связности.
Найти W1∈Vs, такое, что u∈W1. То же для v и W2. Это операция НАЙТИ.
Заменить в Vs подмножества W1 и W2 на их объединение W1∪W2 - это операция ОБЪЕДИНИТЬ.


Слайд 16 01.03.2016
Алгоритмы на графах: построение МОД
Жадный алгоритм построения МОД

01.03.2016Алгоритмы на графах: построение МОДЖадный алгоритм построения МОД (Kruskal, 1956)abcdefg1, 3,

(Kruskal, 1956)
a
b
c
d
e
f
g
1, 3, 4, 9, 15, 16, 17, 20,

23

Сложность (быстрый поиск – медленное объединение)
~ m log m + n2 (!)


Слайд 17 01.03.2016
Алгоритмы на графах: построение МОД
Корректность алгоритма (Теорема+индукция).
Сложность алгоритма

01.03.2016Алгоритмы на графах: построение МОДКорректность алгоритма (Теорема+индукция).Сложность алгоритма O(m log m)

O(m log m) при соответствующей реализации набора непересекающихся подмножеств

Vs.
Сортировка O(m log m). Очередь с приоритетами – пирамида → O(k log m). В худшем случае O(m log m).

Базовые операции с набором непересекающихся подмножеств:
принадлежность заданной вершины к одному из подмножеств (НАЙТИ);
ОБЪЕДИНИТЬ подмножества.
(См. следующую лекцию)


Жадный алгоритм построения МОД (Kruskal, 1956)


Слайд 18 01.03.2016
Алгоритмы на графах: построение МОД


3. Алгоритм Ярника-Прима-Дейкстры построения

01.03.2016Алгоритмы на графах: построение МОД3. Алгоритм Ярника-Прима-Дейкстры построения МОД (Jarnik, Prim,

МОД (Jarnik, Prim, Dijkstra; алгоритм "ближайшего соседа" )






















Жадный

алгоритм
(на каждом шаге дерево растёт за счёт слияния поддеревьев)

Алгоритм ЯПД
(выбор ближайшей вершины к дереву, на каждом шаге дерево вырастает на одну ветку)


Слайд 19 01.03.2016
Алгоритмы на графах: построение МОД
Корректность алгоритма:

01.03.2016Алгоритмы на графах: построение МОДКорректность алгоритма:

из теоремы, при этом (V1, T1) – дерево, а остальные (Vi, Ti) – изолированные вершины, т.е. Vi = {vj(i)} и Ti = ∅.
Предполагаемая сложность: пусть G – полный граф, тогда на i-ом шаге при выборе «ближайшей» для всех i вершин текущего дерева необходимо просмотреть все остальные (n – i) изолированные вершины, т.е. всего i (n – i) вариантов. Суммарно по всем шагам получим

Алгоритм Ярника-Прима-Дейкстры

Можно улучшить алгоритм до O(n2). i n-i









Слайд 20 01.03.2016
Алгоритмы на графах: построение МОД


Алгоритм Ярника-Прима-Дейкстры
Используем специальную СД,

01.03.2016Алгоритмы на графах: построение МОДАлгоритм Ярника-Прима-ДейкстрыИспользуем специальную СД, которая облегчает выбор

которая облегчает выбор ближайшей вершины, но требует коррекции на

каждом шаге.
Пусть Near[1..n] - массив вершин, Near [v] – вершина дереваT = (Vt, Et), ближайшая к вершине v, ещё не включённой в T.
Тогда на i-ом шаге находим ближайшую к дереву вершину за (n – i) сравнений. Коррекция оставшихся Near [*] требует (n – i – 1) действий, т.е. всего на i-ом шаге не более 2(n – i), а суммарно по всем шагам будет O(n2).















Дерево
T = (Vt, Et)

V \ Vt



Слайд 21 01.03.2016
Алгоритмы на графах: построение МОД
Вход : V -

01.03.2016Алгоритмы на графах: построение МОДВход : V - множество вершин графа

множество вершин графа G=(V,E), а d [1..n][1..n] – матрица

весов
Выход: множества Vt - вершин, Et - ветвей МОД, Wt - общий вес МОД
Рабочие: near[1..n] - массив вершин

//алгоритм МОД
//выбор произвольной вершины v0
Vt = {v0}; Et = { } ; Wt = 0;
for (∀ v ∈(V \ Vt) ) near[v] = v0; //инициализация near[*]
while (Card(Vt) < n) {
v=вершина из V\Vt с минимальным значением d[v][near[v]]; //ф1
Vt = Vt +{v}; Et = Et + { {v,Near[v]} } ; Wt = Wt + d[v][near[v]];
//коррекция массива near[*] после включения v в T :
for (∀ x ∈ (V \ Vt)) if (d[x][near[x]] > d[x][v]) near[x] = v;
} //end-while
} // конец алгоритма МОД

Алгоритм Ярника-Прима-Дейкстры




Слайд 22 01.03.2016
Алгоритмы на графах: построение МОД
//Детализация фрагмента ф1:
min

01.03.2016Алгоритмы на графах: построение МОД//Детализация фрагмента ф1: min = +∞ ;

= +∞ ;
for (∀ x ∈(V \ Vt))


if (d[x][near[x]] < min) {
min = d[x][near[x]] ;
v = x;
}

/* Можно наряду с near[*] использовать рабочий массив
расстояний dist[x] = d[x][near[x]] */

Алгоритм Ярника-Прима-Дейкстры


Слайд 23 01.03.2016
Алгоритмы на графах: построение МОД






Алгоритм Ярника-Прима-Дейкстры
Начальная вершина –

01.03.2016Алгоритмы на графах: построение МОДАлгоритм Ярника-Прима-ДейкстрыНачальная вершина – gW(T) = 23+1+4+9+3+17 = 57

g
W(T) = 23+1+4+9+3+17 = 57


Слайд 24 01.03.2016
Алгоритмы на графах: построение МОД
Худший случай: полный граф

01.03.2016Алгоритмы на графах: построение МОДХудший случай: полный граф m = n(n

m = n(n − 1)/2.
Алгоритм ЯПД – (асимптотически) оптимальный.
Действительно,

входная симметричная матрица весов содержит m=n(n − 1)/2 элементов. В том числе и вес минимального ребра. Минимум из m чисел нельзя найти быстрее, чем за (m-1) сравнений.
Пусть для заданной матрицы решена задача МОД за число шагов (операций) X(n). Решением является дерево, содержащее (n − 1) ребро, в том числе кратчайшее. За (n − 2) шага можно извлечь это ребро, т.е. минимальный элемент матрицы.
Тогда если X(n) + (n − 2) < (m-1), т.е. X(n) < (m-1) - (n − 2), то и задачу нахождения минимума из n(n − 1)/2 элементов можно решить за менее, чем n(n − 1)/2 -1 шагов, что неверно.
Отсюда X(n) ≥(n-1)(n-2)/2.
Итак, нижняя граница задачи МОД есть Ω(n2),
и алгоритм ЯПД – (асимптотически) оптимальный.

4. Нижняя граница задачи нахождения МОД


Слайд 25 4. Нижняя граница задачи нахождения МОД (2)
Можно рассуждать

4. Нижняя граница задачи нахождения МОД (2)Можно рассуждать иначе (чуть менее

иначе (чуть менее формально).
Во входной весовой матрице m=n(n −

1)/2 элементов. Ни один из них не может быть исключён из анализа. Пусть всё-таки один из элементов алгоритмом был проигнорирован. Он точно не войдёт в построенное ОД. Именно он мог оказаться минимальным ребром, и, следовательно, построенный остов не будет являться минимальным (!).

01.03.2016

Алгоритмы на графах: построение МОД


Слайд 26 01.03.2016
Алгоритмы на графах: построение МОД
Пусть наряду с near[*]

01.03.2016Алгоритмы на графах: построение МОДПусть наряду с near[*] используется рабочий массив

используется рабочий массив расстояний dist[x] = d[x][near[x]].
Реализуем

из данных (x, near[x], dist[x]) очередь с приоритетами по ключу dist[x].
Минимальный элемент извлекается (с восстановлением пирамиды) за O (log n) действий. При помещении вершины v в остовное дерево производим коррекцию данных о вершинах, смежных с v и находящихся в очереди. Коррекция каждой такой вершины x (ребра {v, x}) требует O (log n) действий, но при этом такое ребро «возникает» и «исчезает» лишь один раз за всё время.
Т.о. суммарно требуется O ((n+m) log n) операций, или, что то же, O (m log n).
Ср. с O (n2) (например, при m =O (n))

Реализация алгоритма Ярника-Прима-Дейкстры
для разрежённых графов


Слайд 27 01.03.2016
Алгоритмы на графах: построение МОД
Алгоритм Ярника-Прима-Дейкстры построения МОД
Примеры

01.03.2016Алгоритмы на графах: построение МОДАлгоритм Ярника-Прима-Дейкстры построения МОДПримеры выполнения.Варианты:Стандартный - для

выполнения.
Варианты:

Стандартный - для «плотных» графов (m =O(n2))
Для разрежённых графов

(m = O(n))

Слайд 28 01.03.2016
Алгоритмы на графах: построение МОД
Пример 1. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 1. МОД. Алгоритм ЯПД (n = 9; m = 20)Упрощённое представление

ЯПД (n = 9; m = 20)
Упрощённое представление


Слайд 29 01.03.2016
Алгоритмы на графах: построение МОД
Пример 1. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 1. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)

2

После двух шагов
Текущее МОД: {a, i, c}

После четырёх шагов
Текущее МОД: {a, i, c, b, h}


Слайд 30 01.03.2016
Алгоритмы на графах: построение МОД
Пример 1. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 1. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)

3

После четырёх шагов
Текущее МОД: {a, i, c, b, h}

После шести шагов
Текущее МОД: {a, i, c, b, h, g, e}


Слайд 31 01.03.2016
Алгоритмы на графах: построение МОД
Пример 1. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 1. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)

4

После восьми шагов
Результат - МОД:
{a, i, c, b, h, g, e, f, d}
W = 1+2+4+8+7+5+6+14 = 47

После шести шагов
Текущее МОД: {a, i, c, b, h, g, e}


Слайд 32 01.03.2016
Алгоритмы на графах: построение МОД
См. слайд 26
Пример выполнения

01.03.2016Алгоритмы на графах: построение МОДСм. слайд 26Пример выполнения алгоритма Ярника-Прима-Дейкстры (вариант для разрежённых графов)


алгоритма Ярника-Прима-Дейкстры (вариант для разрежённых графов)


Слайд 33 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


(x, near[x], dist[x])

dist[x] = d[x][near[x]].

(x, dist[x])

(b,4)

(c,2)

(d,15)

(e,13)

(f,12)

(g,10)

(h,11)

(i,1)

(b,4)

(c,2)

(d,15)

(e,13)

(f,12)

(g,10)

(h,11)

(i,1)



Слайд 34 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


(c,2)

(f,12)

(h,11)

(i,1)

(e,13)

(b,4)

(d,15)

(g,10)

(f,12)

(h,8)

(d,15)

(g,9)


(e,13)

(c,2)

(b,4)

(f,12)

(g,9)

(d,15)

(h,8)

(e,13)

(c,2)

(b,4)

Шаг 1

ТМОД = {a, i}


Слайд 35 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


(f,12)

(d,14)

(h,8)

(e,13)

(g,9)

(f,12)

(g,9)

(d,15)

(h,8)

(e,13)

(c,2)

(b,4)


(b,4)

Шаг 2

ТМОД = {a, i, c}


Слайд 36 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


(f,12)

(d,14)

(h,8)

(e,13)

(g,9)

(b,4)


(f,12)

(e,13)

(g,9)

(d,14)

(h,8)

Шаг 3

ТМОД = {a, i, c, b}


Слайд 37 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


(e,13)

(f,12)

(d,14)

(g,7)

Шаг 4

ТМОД = {a, i, c, b, h}

(f,12)

(e,13)

(g,9)

(d,14)

(h,8)



Слайд 38 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


(e,5)

(d,14)

(f,6)

Шаг 5

ТМОД = {a, i, c, b, h, g}

(e,13)

(f,12)

(d,14)

(g,7)


(f,6)

(d,14)

(e,5)


Слайд 39 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


(d,14)

(f,6)

Шаг 6

ТМОД = {a, i, c, b, h, g, e}

(f,6)

(d,14)

(e,5)



Слайд 40 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


(d,14)

Шаг 7

ТМОД = {a, i, c, b, h, g, e, f}

(d,14)

(f,6)


Слайд 41 01.03.2016
Алгоритмы на графах: построение МОД
Пример 2. МОД. Алгоритм

01.03.2016Алгоритмы на графах: построение МОДПример 2. МОД. Алгоритм ЯПД (n =

ЯПД (n = 9; m = 20)


Шаг 8

ТМОД = {a, i, c, b, h, g, e, f, d}

(d,14)


  • Имя файла: postroenie-i-analiz-algoritmov-minimalnoe-ostovnoe-derevo-lektsiya-61.pptx
  • Количество просмотров: 107
  • Количество скачиваний: 0