1 / 39

Остовные деревья

Остовные деревья. Лекция 4. Задача «Минимальное остовное дерево». Дано : Граф G , веса c : E ( G ) → R . Найти остовное дерево в G наименьшего веса или определить, что G ― несвязный. Задача «Максимальный взвешенный лес». Дано : Граф G , веса c : E ( G ) → R .

horace
Download Presentation

Остовные деревья

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Остовные деревья Лекция 4

  2. Задача «Минимальное остовное дерево» • Дано:ГрафG, весаc: E(G) → R . • Найтиостовное деревовGнаименьшеговесаилиопределить, чтоG―несвязный.

  3. Задача «Максимальный взвешенный лес» Дано:ГрафG, весаc: E(G) → R . НайтилесвGнаибольшеговеса.

  4. Эквивалентные задачи • Будем говорить, чтозадачаPлинейно сводится кзадаче Q,еслисуществуютфункцииfиg, вычислимыеза линейноевремя, такиечтоf преобразует частную задачуxизPвчастную задачуy изQ,иg преобразуетрешениеf (x) врешениеx. • EслиPлинейно сводится кQиQ линейно сводится кP , тообезадачиназываютсяэквивалентными.

  5. Эквивалентность Предложение4.1 Задача «Минимальное остовное дерево»изадача «Максимальный взвешенный лес»эквивалентны.

  6. Доказательство • (G,c)―исходный пример задачи «Максимальный взвешенный лес». • Удалим все ребра отрицательного веса. • Положим c'(e) = – c(e). • Добавим минимальное множество ребер F, так чтобы полученный граф G' стал связным. (Веса можно взять любые.) • Решим задачу «Минимальное остовное дерево» на примере (G',c'). • Удалив из решения множество ребер F, получим решение исходной задачи. • (G,c)―исходный пример задачи «Минимальное остовное дерево». • Положим c'(e) = K – c(e), где K = 1 + max e  E(G)c(e). • Решение задачи «Максимальный взвешенный лес» на примере (G',c') дает решение задачи «Минимальное остовное дерево» на исходном примере.

  7. Условия оптимальности Теорема4.2 Пусть (G ,c) ― пример задачи «Минимальное остовное дерево», ипустьT ―остовное деревов G. Тогда следующие условия эквивалентны: • T ―оптимум. • Для любого e = {x, y}E(G)\ E(T), все ребра из x-y-путив T недорожечем e. • Для любогоe E(T), e ―ребро наименьшей стоимостииз(V(C)), где C ― связнаякомпонентана T– e.

  8. (c)(a) • (с) Пусть T такое, что для любогоe E(T), e ―ребро наименьшей стоимостииз(V(C)), где C ― связнаякомпонентана T– e. • ПустьT*оптимальное решение, такое что E(T)∩ E(T*)максимально возможное. Покажем, что T = T*. • Пусть e = {x,y} E(T)\ E(T*). • Пусть C― связнаякомпонентана T– e. • T* + e содержит цикл D.Так как e E(D)∩ δ(C), то существует f≠ e, f E(D)∩ δ(C). • Тогда (T* + e)– fявляется остовным деревом. • T*оптимум  c(e) ≥ c(f) и (с)  c(f) ≥ c(e). • c(f) = c(e) и (T* + e)– fявляется оптимальным остовным деревом. • Противоречие, так как в (T* + e)– fбольше на одно общее ребро с T,чем в T*.

  9. Алгоритм Краскала (1956) Input: СвязныйграфG, веса c: E(G) → R . Output: Остовное деревоTнаименьшеговеса. • Сортируемребратак,чтоc(e1) ≤c(e2) ≤…≤c(em). • SetT  (V(G), ). • For i  1 to m do: If T+ei не содержит циклаthenT  T +ei.

  10. Алгоритм Краскала(2) Теорема4.3 Алгоритм Краскала находит оптимальное решение за O(mn).

  11. Алгоритм Краскала(3) Теорема4.4 Алгоритм Краскала можно реализовать за O(m log n).

  12. Алгоритм Краскала (1956) Input: СвязныйграфG, веса c: E(G) → R . Output: Остовное деревоTнаименьшеговеса. • Сортируемребратак,чтоc(e1) ≤c(e2) ≤…≤c(em). • SetT  (V(G), ). • For i  1 to m do: If T+eiне содержит циклаthenT  T +ei.

  13. Как улучшить шаг 3 • Основная цель шага 3 проверить не приведет ли добавление ребра ei= {v,w} к образованию цикла. • Это эквивалентно проверки лежат ли vи wв одной связной компоненте. • По ходу алгоритма будем строить дополнительный орлес Bс V(B) = V(G), такой что связные компоненты B индуцированы на тех же вершинах, что и связные компоненты T.

  14. Проверка • Первоначально, B = (V(G), ø) и h(v) = 0, для всех v V(G), где h(v) длина максимального пути из v в B. 3.1 Для ребра ei= {v,w} находим корни rvи rw ордеревьев в B, содержащих vи w. 3.2 Если rv = rw, то переходим к следующему ребруи идем на 3.1. 3.3 Если rv≠rw, то добавляем eiк T. 3.4. Еслиh(rv) ≥ h(rw), то добавляем дугу (rv, rw)к B, иначе добавляем дугу (rw, rv)к B.

  15. Время работы шага 3 • Время работы пропорционально длине rv-v-пути в B. • Покажем, что любое ордерево в B с корнем r имеет по крайней мере 2h(r)вершин. • Когда B = (V(G), ø) утверждение очевидно. • Пусть алгоритм добавляет дугу (x,y)в B. Получаем новое ордерево с корнем в xичислом вершин ≥ 2h(x) + 2h(y). • Если h(x) > h(y), то значение h(x) не меняется и утверждение справедливо. • Если h(x) =h(y), то значение h(x) увеличивается на 1. Число вершин в новом ордереве ≥ 2h(x) + 2h(y) =2h(x)+1. • h(r) ≤ log n, и трудоемкость шага 3 ≤ mlog n.

  16. Алгоритм Прима (1957) Input: СвязныйграфG, веса c: E(G) → R . Output: Остовное деревоTминимального веса. • Выбратьv V(G). T  ({v}, ). • While V(T) ≠V(G) do: Выбратьреброe G(V(T)) минимальной стоимости. T  T +e.

  17. Алгоритм Прима (2) Теорема4.5 Алгоритм Прима находит решение заO(n2)элементарных операций.

  18. Как реализовать шаг 2 While V(T) ≠V(G) do: Выбратьреброe G(V(T)) минимальной стоимости. T  T +e. • Для каждой вершины vV(T) будем хранить самое дешевое ребро (кандидата) из v в V(T). • Тогда выбор ребра минимальной стоимости и замена кандидатов может быть выполнена за O(n)элементарных операций.

  19. Задача «Максимальный взвешенный ориентированный лес» • Дано:ОрграфG, весаc: E(G) → R . • НайтиориентированныйлесвGнаибольшеговеса.

  20. Задача «Минимальное остовное ориентированное дерево» • Дано:ОрграфG, весаc: E(G) → R . • Найтиостовное ориентированное деревовGнаименьшеговесаилиопределить, чтооно не существует.

  21. Задача «Минимальное остовное корневое ориентированное дерево» • Дано:ОрграфG, вершинаr ∊V(G), весаc: E(G) → R . • Найтиостовное ориентированное деревос корнем r вGнаименьшеговесаилиопределить, чтооно не существует.

  22. Эквивалентность трех задач Предложение4.6. Задачи «Максимальный взвешенный ориентированный лес», «Минимальное остовное ориентированное дерево»и «Минимальное остовное корневое ориентированное дерево» эквивалентны. Упражнение 4.1 Доказать предложение 4.6 .

  23. Ориентированный лес Орграф называется ориентированным лесом, еслисоответствующий ему граф является лесомикаждая вершинаvимеет неболее одного входящего ребра.

  24. Ориентированный леси циклы Предложение4.7. Пусть B ―орграф сдля всех x ∊ V(B). ТогдаB имеетциклтогда и только тогда, когдасоответствующий емуграфимеетцикл. Лемма4.8. (Karp [1972]) Пусть B0 ―подграф G максимального весас для всех v ∊ V(B0). Тогда существуетоптимальный ориентированный лес B в G такой, чтодлякаждого цикла C в B0, |E(C)\ E(B)| = 1.

  25. Доказательство леммы Пусть B – оптимальный орлес в Gимеющий макси -мально много ребер из B0. b1 a1 С  B0 a2 b3 E(C)\ E(B)={(a1, b1),…, (ak, bk)} b2 a3 Покажем, что в Bесть bi-bi-1-путьдля всех i.

  26. Покажем, что в Bесть bi-bi-1-путьдля всех i. bi-1 ai-1 С  B0 [bi-1 ai]B ai PB bi+1 eE(B) bi ai+1 E(B′):={(x,y)E(B)}\{e}U{(ai ,bi)} B′―не орлес.

  27. Основная идея • Найти B0 ориентированный подграф G максимального веса, в котором в каждую вершину входит не больше одной дуги. • Стянуть каждый цикл в B0в вершину. • Перераспредилить веса в новом графе G1, так чтобы любой оптимальный орлес в G1 соответствовал оптимальному орлесу в G.

  28. Алгоритм Эдмондса построения ориентированного леса максимальноговеса (1967) Input: орграфG, веса c: E(G) → R+. Output: орлес максимального весаB of G. • Seti 0, G0  G, и c0  c. • ПустьBi подграф G максимального весасдлявсехv∊ Bi . • If Bi не содержит цикловthenB  Bi иgo to (5). • Построим (Gi+1,ci+1) из (Gi,ci): doдля каждогоциклаC изBi . СтянемC кодной вершинеvC в Gi+1. For каждого ребраe = ( z, y) E(Gi) сzV(C), yV(C) do: Setci+1 (e′)  ci(e) – ci((e,C)) + ci(eC) и(e′) e, гдеe′ ( z, vC), (e,C)=(x,y) E(C),иeC самое дешевое ребро C. • If i = 0 then stop. • For каждого циклаC изBi-1 do: If есть реброe′ ( z, vC)  E(B) thenE(B)  (E(B)\{e′ }) ⋃(e′) ⋃(E(C)\{((e′),C)}) else E(B)  E(B) ⋃(E(C)\{eC}). SetV(B)  V(Gi-1), i  i–1 иgo to (5).

  29. Шаг 4 z z e x α(e,C) vC e′ y С  Bi eC • For каждого ребраe = ( z, y) E(Gi) сzV(C), yV(C) do: Setci+1 (e′)  ci(e) – ci((e,C)) + ci(eC) и(e′) e, • гдеe′ ( z, vC), (e,C)=(x,y) E(C), иeC самое дешевое ребро C.

  30. Шаг 6 z e z x α(e,C) y vC e′ E(B) С  Bi eC x α(e,C) y vC С  Bi eC

  31. Алгоритм Эдмондса Теорема4.9 Алгоритм Эдмондса находит оптимальное решение.

  32. Доказательство • Последовательно применяя шаг 4 алгоритма, мы получили последовательность (Gi,ci), i = 0,…, k. • Ясно, что полученный на последнем применении шага 4 орлес B является оптимальным для (Gk,ck). • Покажем, что на шаге 6 мы последовательно строим оптимальные решения для (Gi,ci), i = k–1,…,0. • Мы хотим показать, что шаг 6 переводит ориентированныйлеснаибольшеговеса Bдля Gi в ориентированныйлеснаибольшеговеса B*для Gi–1.

  33. Доказательство(2) • Пусть B'i–1 ― произвольный орлес в Gi–1, такой что |E(C)\ E(B'i–1)| = 1 для любого Cиз Bi–1. • Пусть B'iполучается из B'i–1 стягиванием циклов в Bi–1. • Тогда B'iорлес в Gi.

  34. Шаг 4 z z e x α(e,C) vC e′ y С  Bi eC Setci+1 (e′)  ci(e) – ci((e,C)) + ci(eC)

  35. Индукция • По индукции, B ― ориентированныйлеснаибольшеговеса в Gi . • ci(B) ≥ ci(B'i)

  36. Шаг 6 z e z x α(e,C) y vC e′ E(B) С  Bi eC x α(e,C) y vC С  Bi eC

  37. Упражнение 4.2 • Пусть (V,T1) и (V,T2) два дерева на одном множестве вершин V. Доказать, что для любого ребра eT1существует ребро fT2такое, что(V,(T1 \{e})U{f}) и (V,(T2 \{f})U{e}) ―деревья.

  38. Упражнение 4.3 • Дан граф G с произвольными весами c:E(G) → R . • Найтиостовный подграфвGнаименьшеговеса.

  39. Упражнение 4.4 • Дан граф G с произвольными весами c:E(G) → R . • Найти остовное деревоT вG, такое чтовесмаксимального ребра в Tнаименьший (max{c(e)|e T}→ min).

More Related