25
Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Графы: сильно связанные компоненты, остовные деревья. Николай Гребенщиков, www.grebenshikov.ru

Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Хакасский государственный университет им. Н.Ф. Катанова

Структуры и алгоритмы обработки данных

Лекция: Графы: сильно связанные

компоненты, остовные деревья.

Николай Гребенщиков, www.grebenshikov.ru

Page 2: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Проблема связности

В коммуникационных и транспортных сетях важно знать, чтолюбой узел сети доступен из любого другого узла.

Орграф называется сильно связным, если для каждой па-ры вершин u, v ∈ V существует путь из v в u и обратно.

1

Page 3: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Сильно связный компонент графа G есть сильно связныйподграф графа G, причем в него входят максимально воз-можное количество вершин, для которых существуют путитуда и обратно.

2

Page 4: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Сильно связные компоненты и DFS

3

Page 5: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Поиск сильно связных компонентов

FindStrongComp(G)

1 DFS(G) � вычислим f [u] для каждой вершины u

2 R← Reverse(G) � инвертируем все ребра в G3 SortByF (R) � сортируем вершины в R по f [u] по убыванию4 DFS(R)

Результат: каждое DFS-дерево в R яляется сильно связнымкомпонентом.

4

Page 6: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Алгоритм поиска сильно связных компонетов

5

Page 7: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Доказательство теоремы на семинар:

Процедура FindStrongComp(G) корректно вычисляет сильносвязные компоненты ориентированного графа G.

6

Page 8: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Проблема построения сети

Области возникновения: коммуникационные и дорожные се-ти.

Дано: множество узлов сети (хосты, города).

Необходимо: построение сети с наименьшим общим весомребер (длина сетевых кабелей, длина дорог).

Графовая модель: узлы сети являются узлами графа, E =

V 2, нам известны веса всех ребер.

Результат: свободное дерево.

7

Page 9: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Минимальное дерево Стайнера

8

Page 10: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Минимальное остовное дерево

Остовное дерево - ацикличный подграф G1 = (V 1, E1, w1)

графа G = (V,E,w), где E1 ⊆ E, V 1 = V,w1 = w.

Минимальное остовное дерево - остовное дерево с мини-мальным весом. w(G) =

∑(u,w)∈E

w(u,w).

9

Page 11: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Примеры остовных деревьев

10

Page 12: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Подход к поиску МОД

Строим дерево путем добавления по одному ребру, и передкаждой итерацией текущее дерево является подмножествомнекоторого МОД.

GenericMST(G,w)

1 A← 0

2 while A не является МОД3 do Найти безопасное для A ребро (u, v)

4 A← A⋃{(u, v)}

5 return A

11

Page 13: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Разрез (S, V −S) неориентированного графа G = (V,E) естьразбиение множества вершин графа.

12

Page 14: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Ребро (u, v) ∈ E пересекает разрез (S, V − S), если один изего концов находится в S, а другой в V − S.

Разрез согласован с множеством A по ребрам, если ни одноребро из A не пересекает разрез.

Ребро, пересекающее разрез, является легким, если оно име-еит минимальный вес среди всех ребер, пересекающих раз-рез.

13

Page 15: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Теорема

Пусть G = (V,E) - связный неориентированный граф с дей-ствительной весовой функцией w, определенной на E. ПустьA - подмножество E, которое входит в некоторое минималь-ное остовное дерево G, (S, V − S) - разрез G, согласованныйс по ребрам, а (u, v) - легкое ребро, пересекающее разрез(S, V − S). Тогда ребро (u, v) является безопасным для A.

Доказательство на семинар.

14

Page 16: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Алгоритм Крускала

15

Page 17: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Алгоритм Крускала - процедуры

Create− Set(u) - создать множество из одной вершины u.

Find−Set(u) - найти множество, которому принадлежит вер-шина u.

Union(u, v) - объединить множества, которые содержат вер-шины u и v.

Структуры данных для хранения непересекающихся под-множеств на семинар.

16

Page 18: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Алгоритм Крускала

17

Page 19: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Анализ алгоритма Крускала

E ≥ V , так как граф связный.

Создание множеств - Θ(V · αV ) = Θ(V logV ) = Θ(ElogE)

Сортировка ребер - Θ(ElogE).

Цикл выполняется E раз.

Поиск и объединие множеств - Θ(αV ) = Θ(logV ) = Θ(logE)

T (G) = Θ(ElogE)

18

Page 20: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Алгоритм Прима: идея

19

Page 21: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Алгоритм Прима

20

Page 22: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Алгоритм Прима: пример

21

Page 23: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Алгоритм Прима: анализ

T (G) = V +V logV +∑u∈V

(logV +deg(u)logV ) = V +V logV +(V +

2E)logV = Θ(ElogV )

22

Page 24: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

На семинар

Алгоритм Барувки (Baruvka)

23

Page 25: Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Структуры и алгоритмы обработки

Список литературы

• David M. Mount, The Lecture notes: Design and Analysisof Computer Algorithms. [Электронный ресурс] / Dept. ofComputer Science, University of Maryland, 2004. - Режимдоступа: http://www.cs.umd.edu/ mount/451/Lects/451lects.pdf. - сс.39-49

• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007. сс.644-662.

24