Минимальное связующее дерево с узким местом
В математике минимальное связующее дерево с узким местом (MBST) в неориентированном графе — это связующее дерево , в котором самое дорогое ребро является максимально дешевым. Ребро узкого места — это ребро с наибольшим весом в связующем дереве. Охватывающее дерево является минимальным связующим деревом с узким местом, если граф не содержит остовное дерево с меньшим весом ребра узкого места. [1] Для ориентированного графа аналогичная проблема известна как «Минимальное узкое место, охватывающее древовидность» (MBSA) .
Определения
[ редактировать ]Неориентированные графы
[ редактировать ]В неориентированном графе G ( V , E ) функции w : E → R пусть S — множество всех остовных деревьев Ti и . Пусть B ( Ti остовного ) — ребро максимального веса для любого Ti дерева . Мы определяем подмножество минимальных узких остовных деревьев S ′ такое, что для каждых T j ∈ S ′ и T k ∈ S мы имеем B ( T j ) ⩽ B ( T k ) для всех i и k . [2]
Граф справа является примером MBST, красные ребра на графике образуют MBST G ( V , E ) .
Ориентированные графы
[ редактировать ]Древовидность графа G — это направленное дерево графа G , содержащее направленный путь от заданного узла L до каждого узла подмножества V ′ из V \{ L } . Узел L называется корнем древовидности. Древовидность является охватывающей древовидностью, если V ′ = V \{ L } . MBST в данном случае представляет собой пролетное ветвление с минимальным краем узкого места. MBST в этом случае называется минимальным узким местом, охватывающим древовидность (MBSA).
Граф справа является примером MBSA, красные ребра на графике образуют MBSA G ( V , E ) .
Характеристики
[ редактировать ]MST (или минимальное связующее дерево ) обязательно является MBST, но MBST не обязательно является MST. [3]
Алгоритм Камерини для неориентированных графов
[ редактировать ]Предлагаются раздевалки [5] алгоритм , используемый для получения минимального связующего дерева с узкими местами (MBST) в заданном неориентированном связном графе с взвешиванием по ребрам в 1978 году. Он делит ребра наполовину на два набора. Веса ребер в одном наборе не больше, чем в другом. Если остовное дерево существует в подграфе, состоящем исключительно из ребер из набора меньших ребер, оно затем вычисляет MBST в подграфе, MBST подграфа в точности является MBST исходного графа. Если связующее дерево не существует, оно объединяет каждый несвязный компонент в новую супервершину, а затем вычисляет MBST в графе, образованном этими супервершинами и ребрами в большем наборе ребер. Лес в каждом несвязном компоненте является частью MBST в исходном графе. Повторяйте этот процесс до тех пор, пока в графе не останется две (супер) вершины и между ними не будет добавлено одно ребро с наименьшим весом. Находится MBST, состоящий из всех ребер, найденных на предыдущих шагах. [4]
Псевдокод
[ редактировать ]Процедура имеет два входных параметра. G — граф, w массив весов всех ребер в графе G. — [6]
function MBST(graph G, weights w)
E ← the set of edges of G
if | E | = 1 then return E else
A ← half edges in E whose weights are no less than the median weight
B ← E - A
F ← forest of GB
if F is a spanning tree then
return MBST(GB,w)
else
return MBST((GA)η, w) F
В приведенном выше ( GA в ) η супервершин (путем рассмотрения вершин в несвязном компоненте как одно) и ребер A. — это подграф, состоящий из
Время работы
[ редактировать ]Алгоритм работает за время O ( E ), где E — количество ребер. Эта граница достигается следующим образом:
- разделение на два набора с алгоритмами поиска медианы за O ( E )
- найти лес в O ( E )
- учитывая полуребра в E на каждой итерации O ( E + E /2 + E /4 + ··· + 1) = O ( E )
Пример
[ редактировать ]В следующем примере зеленые края используются для формирования MBST, а пунктирные красные области обозначают супервершины, сформированные на этапах алгоритма.
Алгоритмы MBSA для ориентированных графов
[ редактировать ]Для ориентированного графа доступны два алгоритма: алгоритм Камерини для поиска MBSA и еще один от Габоу и Тарьяна. [4]
Алгоритм Камерини для MBSA
[ редактировать ]Для ориентированного графа алгоритм Камерини фокусируется на поиске набора ребер, максимальная стоимость которого будет равна стоимости узкого места MBSA. Это делается путем разделения набора ребер E на два набора A и B и сохранения набора T , который является набором, в котором известно, что G T не имеет охватывающей древовидности, увеличивая T на B всякий раз, когда максимальная древовидность G ( B ∪ T ) не является остовным древовидием группы G , иначе мы уменьшим E на A . Общая временная сложность равна O ( E log E ). [5] [4]
Псевдокод
[ редактировать ]function MBSA(G, w, T) is E ← the set of edges of G if | E − T | > 1 then A ← UH(E-T) B ← (E − T) − A F ← BUSH(GBUT) if F is a spanning arborescence of G then S ← F MBSA((GBUT), w, T) else MBSA(G, w, TUB);
- T представляет собой подмножество E, для которого известно, что GT не содержит какой-либо связующей древовидности с корнем в узле «a». Первоначально T пусто
- UH берет (E−T) набор ребер в G и возвращает A ⊂ (E−T) такой, что:
- W a ≥ W b , для a ∈ A и b ∈ B
- BUSH(G) возвращает максимальное разветвление G с корнем в узле «a».
- Конечный результат будет S.
Пример
[ редактировать ]Алгоритм Габоу и Тарьяна для MBSA
[ редактировать ]Габоу и Тарьян представили модификацию алгоритма Дейкстры для определения кратчайшего пути с одним источником, который создает MBSA. Их алгоритм работает за время O ( E + V log V ), если используется куча Фибоначчи . [7]
Псевдокод
[ редактировать ]For a graph G(V,E), F is a collection of vertices in V. Initially, F = {s} where s is the starting point of the graph G and c(s) = -∞ 1 function MBSA-GT(G, w, T) 2 repeat |V| times 3 Select v with minimum c(v) from F; 4 Delete it from the F; 5 for ∀ edge(v, w) do 6 if w ∉ F or ∉ Tree then 7 add w to F; 8 c(w) = c(v,w); 9 p(w) = v; 10 else 11 if w ∈ F and c(w) > c(v, w) then 12 c(w) = c(v, w); 13 p(w) = v;
Пример
[ редактировать ]Следующий пример показывает, как работает алгоритм.
Другой подход, предложенный Тарьяном и Габоу, с границей O ( E log * V ) для разреженных графов, в котором он очень похож на алгоритм Камерини для MBSA, но вместо разделения набора ребер на два набора на каждую итерацию был введен K ( i ) , в котором i - количество разбиений, которые потребовали место или, другими словами, номер итерации, а K ( i ) — возрастающая функция, обозначающая количество разделенных наборов, которые должны быть на итерацию. К ( я ) знак равно 2 к ( я - 1) с k (1) = 2 . Алгоритм находит λ * где это значение края узкого места в любом MBSA. После λ * находится любое остовное дерево в G ( λ * ) — это MBSA, в котором G ( λ * ) — это граф, стоимость всех ребер которого ≤ λ * . [4] [7]
Ссылки
[ редактировать ]- ^ Все о связующем дереве узких мест
- ^ Мурали, Т.М. (2009), Применение минимальных остовных деревьев (PDF)
- ^ в вопросе 3 у вас есть доказательство этого утверждения (PDF)
- ^ Jump up to: а б с д и Трабулси, Ахмад (2014), связующие деревья узких мест (PDF) , заархивировано из оригинала (PDF) 4 марта 2016 г. , получено 28 декабря 2014 г.
- ^ Jump up to: а б Камерини, П.М. (1978), «Проблема связующего дерева мин-макс и некоторые расширения», Information Processing Letters , 7 (1): 10, doi : 10.1016/0020-0190(78)90030-3
- ^ Цуй, Юйсян (2013), Минимальное связующее дерево с узкими местами (PDF) , заархивировано из оригинала (PDF) 4 марта 2016 г. , получено 28 декабря 2014 г.
- ^ Jump up to: а б Габоу, Гарольд Н ; Тарьян, Роберт Э (1988). «Алгоритмы решения двух задач оптимизации узких мест» . Журнал алгоритмов . 9 (3): 411–417. дои : 10.1016/0196-6774(88)90031-4 . ISSN 0196-6774 .