Комбинаторные алгоритмы для программистов

          

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


Связный неориентированный ациклический граф называется деревом, множество деревьев называется лесом. В связном неориентированном графе

Остовные деревья
существует по крайней мере один путь между каждой парой вершин; отсутствие циклов в
Остовные деревья
означает, что существует самое большее один такой путь между любой парой вершин в
Остовные деревья
. Поэтому, если
Остовные деревья
- дерево, то между каждой парой вершин в
Остовные деревья
существует в точности один путь. Рассуждение легко обратимо, и поэтому неориентированный граф
Остовные деревья
будет деревом тогда и только тогда, если между каждой парой вершин в
Остовные деревья
существует в точности один путь. Так как наименьшее число ребер, которыми можно соединить
Остовные деревья
вершин, равно
Остовные деревья
и дерево с
Остовные деревья
вершинами содержит в точности
Остовные деревья
ребер, то деревья можно считать минимально связными графами. Удаление из дерева любого ребра превращает его в несвязный граф, разрушая единственный путь между по крайней мере одной парой вершин.

Особый интерес представляют остовные деревья графа

Остовные деревья
, то есть деревья, являющиеся подграфами графа
Остовные деревья
и содержащие все его вершины. Если граф
Остовные деревья
несвязен, то множество, состоящее из остовных деревьев каждой компоненты называется остовном лесом графа. Для построения остовного дерева (леса) данного неориентированного графа
Остовные деревья
, мы последовательно просматриваем ребра
Остовные деревья
, оставляя те, которые не образуют циклов с уже выбранными.

Во взвешенном графе

Остовные деревья
часто интересно определить остовное дерево (лес) с минимальным общим весом ребер, то есть дерево (лес), у которого сумма весов всех его ребер минимальна. Такое дерево называется минимумом оставных деревьев или минимальное остовное дерево. Другими словами, на каждом шаге мы выбираем новое ребро с наименьшим весом (наименьшее ребро), не образующее циклов с уже выбранными ребрами; этот процесс продолжаем до тех пор, пока не будет выбрано
Остовные деревья
ребер, образующих остовное дерево
Остовные деревья
. Этот процесс известен как жадный алгоритм.

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

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

Остовные деревья
в заданном графе. Пусть
Остовные деревья
- ребро с наименьшим весом, инцидентное
Остовные деревья
; ребро
Остовные деревья
включается в дерево. Затем среди всех ребер, инцидентных либо
Остовные деревья
, либо
Остовные деревья
, выбираем ребро с наименьшим весом и включаем его в частично построенное дерево. В результате этого в дерево добавляется новая вершина, например,
Остовные деревья
. Повторяя процесс, ищем наименьшее ребро, соединяющее
Остовные деревья
,
Остовные деревья
или
Остовные деревья
с некоторой другой вершиной графа. Процесс продолжается до тех пор, пока все вершины из
Остовные деревья
не будут включены в дерево, то есть пока дерево не станет остовным.

Наихудшим для этого алгоритма будет случай, когда
Остовные деревья
- полный граф (то есть когда каждая пара вершин в графе соединена ребром); в этом случае для того, чтобы найти ближайшего соседа, на каждом шаге нужно сделать максимальное число сравнений. Чтобы выбрать первое ребро, мы сравниваем веса всех
Остовные деревья
ребер, инцидентных вершине
Остовные деревья
, и выбираем наименьшее; этот шаг требует
Остовные деревья
сравнений. Для выбора второго ребра мы ищем наименьшее среди возможных
Остовные деревья
ребер (инцидентных
Остовные деревья
или
Остовные деревья
) и делаем для этого
Остовные деревья
сравнений. Таким образом, ясно, что для выбора
Остовные деревья
-го ребра требуется
Остовные деревья
сравнений, и поэтому в сумме потребуется
Остовные деревья
сравнений для построения минимума остовных деревьев.


Содержание раздела