Минимально критичное остовное дерево
Минимально критичное остовное дерево (англ. minimum bottleneck spanning tree, MBST) во взвешенном неориентированном графе — это остовное дерево, в котором наиболее тяжёлое ребро весит как можно меньше. Критичное ребро[1] — это самое тяжёлое ребро в остовном дереве. Остовное дерево является минимальным критичным остовным деревом, если граф не содержит остовного дерева с критичным ребром меньшего веса[2]. Для ориентированного графа аналогичная задача известна как минимально критичное ориентированное остовное дерево (англ. Minimum Bottleneck Spanning Arborescence, MBSA).
Определения
Неориентированные графы
В неориентированном графе и функция , пусть S будет множеством всех остовных деревьев . Пусть будет максимальным по весу ребром для любого остовного дерева . Мы определяем подмножество минимально критичных остовных деревьев S′ так, что для любого и мы имеем для всех i и k[3].
Граф на рисунке справа является примером MBST, красные рёбра графа образуют MBST графа .
Ориентированные графы
Ориентированное остовное дерево графа G — это ориентированное (корневое) дерево в орграфе G, которое содержит ориентированный путь из указанной вершины L в каждую вершину графа. Вершина L называется корнем ориентированного остовного дерева. Критичная дуга — это самая тяжёлая дуга в ориентированном остовном дереве. Ориентированное остовное дерево называется минимально критичным (англ. Minimum Bottleneck Spanning Arborescence, MBSA), если орграф не содержит ориентированного остовного дерева с критичной дугой меньшего веса.
Граф справа является примером MBSA, красные рёбра в графе образуют MBSA графа .
Свойства
Любое минимальное остовное дерево (MST, англ. minimum spanning tree) неизбежно является MBST, но не любое MBST обязательно будет MST[4][5].
Алгоритм Камерини для неориентированных графов
Камерини в 1978 году предложил[6] алгоритм, использующийся для получения минимально критичного остовного дерева (MBST) для данного неориентированного связного со взвешенными рёбрами графа. Алгоритм делит рёбра на два множества. Веса рёбер в одном множестве не превосходят весов в другом. Если остовное дерево существует в подграфе, состоящем из рёбер исключительно набора с меньшими весами, алгоритм вычисляет MBST в подграфе и MBST этого подграфа будет в точности MBST исходного графа. Если остовное дерево не существует, алгоритм комбинирует каждую отдельную компоненту в новую супервершину, затем вычисляет MBST в графе, образованном этими супервершинами и рёбрами из множестве рёбер с бо́льшими весами. Лес в каждой отдельной компоненте является частью MBST исходного графа. Продолжаем процесс, пока в графе не останутся две (супер-) вершины и соединяющее их единственное ребро с минимальным весом будет добавлено. MBST состоит из всех рёбер, найденных на предыдущих шагах[5].
Псевдокод
Процедура имеет два входных параметра. G является графом, w является массивом весов всех рёбер графа G[7].
1 function MBST(граф G, веса w)
2 E ← множество рёбер графа G
3 если | E | = 1 то возвращаем E иначе
4 A ← половина рёбер из E, чьи веса не меньше, чем медиана веса
5 B ← E - A
6 F ← лес графа GB
7 если F является остовным деревом то
8 возвращаем MBST(GB,w)
9 иначе
10 возвращаем
Выше является подграфом, составленным из супервершин (трактуя вершины в несвязной компоненте как одну вершину) и рёбер из A.
Время работы
Алгоритм работает за время O(E), где E является числом рёбер. Эта граница достигается за счёт того, что
- рёбра разбиваются на два множества с помощью алгоритма поиска медианы за время O(E)
- находится лес за время O(E)
- рассматривается половина рёбер множества E на каждой итерации,
Пример
На следующем примере зелёные рёбра используются для образования MBST, а красные штриховые области показывают супервершины, полученные при работе алгоритма.
Алгоритмы MBSA для ориентированных графов
Есть два алгоритма для ориентированных графов — алгоритм Камерини для поиска MBSA и алгоритм Габова и Тарьяна[5].
Алгоритм Камерини для MBSA
Для ориентированного графа алгоритм Камерини фокусируется на нахождении множества рёбер, которые имеют максимальную критичную цену MBSA. Делается это путём разбиения множества рёбер E на два множества A и B и поддержки множества T, которое является множеством, для которого известно, что GT не имеет ориентированного остовного дерева. Множество T расширяется множеством B, если максимальное ориентированное остовное дерево графа не является ориентированным остовным деревом графа G, в противном случае мы уменьшаем множество E, удаляя A. Общая сложность алгоритма по времени выполнения равна [6][5].
Псевдокод
1 function MBSA(G, w, T) 2 E ← множество рёбер графа G; 3 если | E - T | > 1 то 4 A ← UH(E-T); 5 B ← (E - T) - A; 6 F ← BUSH(GBUT); 7 если F является ориентированным остовным деревом графа G то 8 S ← F; MBSA((GBUT),w,T); 9 иначе 10 MBSA(G,w,TUB);
- T представляет подмножество E, для которого известно, что не содержит какого-либо ориентированного остовного дерева с корнем в вершине «a». Первоначально T пусто
- UH берёт множество (E-T) рёбер графа G и возвращает such that:
- для a ∈ A и b ∈ B
- BUSH(G) возвращает максимальное ориентированное дерево графа G с корнем в вершине «a»
- Окончательным результатом будет S
Пример
Алгоритм Габова и Тарьяна для MBSA
Габов и Тарьян предложили образующую MBSA модификацию алгоритма Дейкстры кратчайшего пути с одним источником. Их алгоритм работает за время , если используется фибоначчиева куча[8].
Псевдокод
Для графа G(V,E), F является набором вершин из V. Начально F = s, где s является стартовой точкой графа G и c(s) = ∞
1 function MBSA-GT(G, w, T) 2 Выбираем v с минимальным c(v) из F; 3 Удаляем его из F; 4 для всех ребер(v,w) выполняем 5 если w ∉ F или ∉ Tree то 6 добавляем w в F; 7 c(w) = c(v,w); 8 p(w) = v; 9 иначе 10 если w ∈ F и c(w) > c(v,w) то 11 c(w) = c(v,w); 12 p(w) = v;
Пример
Следующий пример показывает работу алгоритма.
Другой подход предложили Тарьян и Габов с границей для разреженных графов, который очень похож на алгоритм Камерини для MBSA, но вместо разбиения множества рёбер на два множества на каждой итерации, вводятся , в которых i является числом осуществлённых разбиений, или, другими словами, номер итерации, а является возрастающей функцией, которая отражает число множеств, которые получаем в результате разбиений на каждой итерации. с . Алгоритм находит , которое является значением веса критичного ребра в любом MBSA. После того, как найдено , любое ориентированное остовное дерево в является MBSA, в котором является графом, в котором все цены рёбер [5][8].
Примечания
- ↑ В оригинале — бутылочное горлышко (bottleneck). Иногда переводится как «Минимально узкое остовное дерево», что выглядит не вполне логично.
- ↑ Everything about Bottleneck Spanning Tree . Дата обращения: 9 сентября 2019. Архивировано 5 мая 2018 года.
- ↑ Murali, 2009.
- ↑ in question 3 you have a proof for this claim (англ.) (pdf).
- ↑ 1 2 3 4 5 Traboulsi, 2014.
- ↑ 1 2 Camerini, 1978, с. 10.
- ↑ Cui Yuxiang. Minimum Bottleneck Spanning Tree (2013). Дата обращения: 26 сентября 2019. Архивировано 4 марта 2016 года.
- ↑ 1 2 Gabow, Tarjan, 1988, с. 411–417.
Литература
- Ahmad Traboulsi. Bottleneck Spanning Trees. — 2014. Архивировано 4 марта 2016 года.
- Murali T. M. Applications of Minimum Spanning Trees. — 2009.
- Camerini P.M. The min-max spanning tree problem and some extensions // Information Processing Letters. — 1978. — Т. 7, вып. 1. — doi:10.1016/0020-0190(78)90030-3.
- Harold N. Gabow, Robert E. Tarjan. Algorithms for two bottleneck optimization problems // Journal of Algorithms. — 1988. — Т. 9, вып. 3. — ISSN 0196-6774. — doi:10.1016/0196-6774(88)90031-4.
На эту статью не ссылаются другие статьи Википедии. |
Для улучшения этой статьи желательно:
|