Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Определение 2.3. Остовное дерево, у которого сумма весов ребер минимальна, назовем минимальным остовным деревом (МОД).
Многие практические задачи сводятся к построению МОД. Например, пусть требуется связать заданное множество населенных пунктов сетью дорог таким образом, чтобы минимизировать связанные с этим затраты. Если известна стоимость создания дороги между каждой парой пунктов – вес соответствующего ребра, то, найдя МОД в полном графе, вершинам которого соответствуют населенные пункты, мы решим задачу. Известно несколько эффективных (полиномиальных) алгоритмов нахождения МОД. Приведем наиболее популярные.
Алгоритм Прима
Идея алгоритма принадлежит Приму. Эффективную технику реализации предложил Дейкстра [4]. Алгоритм состоит из
итераций. На каждой итерации к частично построенному дереву добавляется одна вершина и одно ребро. Сначала строящееся дерево
содержит одну произвольную вершину и не содержит ребер. На каждой итерации ищется ребро минимального веса, связывающее вершину
, принадлежащую
, с вершиной
, не принадлежащей
и добавляется в дерево:
,
,.
Когда
, алгоритм останавливается, МОД построено.
Эффективная реализация алгоритма [4] заключается в том, что каждой не принадлежащей
вершине
приписывается метка
, где
– номер ближайшей к
вершины из
, а
– вес ребра
. Тогда после присоединения очередного ребра, метка каждой вершины обновляется с трудоемкостью
. Число итераций равно
, трудоемкость каждой итерации –
. Следовательно, общая трудоемкость эффективной реализации алгоритма Прима равна
.
Алгоритм Краскала [4]
Алгоритм начинает работу с тривиального графа
. Упорядочим ребра в порядке неубывания их весов и будем добавлять ребра в
по порядку. Очередное ребро добавляется в
и исключается из списка, если это не приводит к образованию цикла.
В противном случае оно просто удаляется из списка и рассматривается следующее ребро списка. Это повторяется до тех пор, пока число ребер в
не станет
. Построенное дерево – МОД.
Трудоемкость упорядочивания ребер –
Очевидно, что при построении дерева в худшем случае будут рассмотрены все
ребер графа. Пока не построено МОД, частично построенный граф является несвязным, и добавляемое ребро связывает вершины из разных компонент связности. В процессе рассмотрения ребер упорядоченного списка нужно следить, чтобы не возникало циклов, т. е. чтобы не связывались вершины одной компоненты связности. Процедура, описанная в [4] (разделы 2.2.1 и 2.2.2), позволяет это сделать с константной трудоемкостью. Компоненты связности удобно хранить в виде системы непересекающихся множеств. Все операции в таком случае выполняются с трудоемкостью
где
– функция, обратная к функции Аккермана [5]. Поскольку для любых практических задач
, то можно принять ее за константу, таким образом, общая трудоемкость алгоритма Краскала равна
. Следовательно, этот алгоритм более подходит для построения МОД в графе с небольшим количеством ребер.
Алгоритм Борувки
Алгоритм впервые был опубликован в 1926 г. О. Борувкой в качестве метода нахождения оптимальной электрической сети. Работа алгоритма состоит из итераций, каждая из которых заключается в последовательном добавлении ребер к остовному лесу графа, до тех пор, пока не будет построено одно дерево. В алгоритме предполагается, что веса ребер различны, или ребра как-то упорядочены, чтобы выбиралось единственное ребро с минимальным весом (в случае нескольких ребер, имеющих минимальный вес, выбирается, например, ребро с минимальным номером).
Пусть сначала
– остовный лес, в котором каждая вершина является деревом. Пока
, выполнить:
– для каждой компоненты связности (дерева остовного леса) найти ребро минимального веса, связывающее эту компоненту с некоторой другой компонентой связности;
– добавить все найденные ребра в множество ET.
Полученное дерево T является МОД.
На каждой итерации число деревьев в остовном лесу уменьшается не менее чем в два раза, поэтому алгоритм выполняет
итераций. Трудоемкость одной итерации равна
, поэтому общая трудоемкость алгоритма – 
|
|
|
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!