
Алгоритм Прима:
Всегда имеется дерево, к которому ребра добавляют до тех пор, пока не получится остовное дерево.
Используя алгоритм Прима, сначала выбираем вершину v0 графа G, а затем выбираем ребро с наименьшим весом e1 = {v0 ,v1}, инцидентное к вершине v0 и формируем дерево Т1.
Следующим выбираем ребро с наименьшим весом е2 такое, что одна вершина ребра принадлежит дереву T1, а вторая — нет, и добавляем его в дерево, после чего получаем дерево T2 с двумя ребрами.
Сформировав дерево Тk формируем дерево Тk+1, выбирая ребро с минимальным весом ek+1 такое, что одна его вершина принадлежит дереву Тk, а другая — нет, и добавляем это ребро в дерево.
Продолжаем процесс до тех пор, пока дерево не будет содержать все вершины графа G.
1) Выбрать вершину v0 графа G и ребро с наименьшим весом e1, для которого v0 – одна из вершин, и сформировать дерево T1.
2) Для заданного дерева Tk с ребрами e1, e2, e3, …, ek, если имеется вершина, не принадлежащая Tk, выбрать ребро с наименьшим весом, смежное с ребром дерева Tk и имеющее вершину вне дерева Tk. Добавить в дерево Tk, формируя дерево Tk+1.
3) Продолжить, пока имеются вершины графа G, не принадлежащие дереву.
Построение минимального остовного дерева можно проводить двумя способами:
1) остов графа строится непосредственно на самом графе, выделяя ребра утолщенной линией, которые входят в остовное дерево;
2) строится отдельно корневое дерево, которое будет минимальным остовным деревом. Второй случай используется, если требуется определить высоту построенного дерева.
ПРИМЕР. Рассмотрим граф.
Начав с вершины а, первым выбираем ребро {а, е}, поскольку оно имеет минимальный вес.
Т. о. дерево T1 состоит из ребра {а, е}.
Теперь выбираем
ребро {e,d}, так как это ребро с минимальным
весом из тех, что имеют только одну
вершину в дереве T1.
Получаем дерево Т2.
Далее выбираем
ребро {d, b},
поскольку это ребро с минимальным весом
из тех, что имеют только одну вершину
в Т2. Получаем Т3.
Теперь, так как имеется два ребра с одинаковым весом и одной вершиной в Т3, имеем выбор.
Предположим,
выбрано ребро {d,c}, поэтому дерево Т4
имеет следующий вид.
Следующим выбираем ребро {е, f}. Это ребро имеет минимальный вес из тех, что имеют только одну вершину в дереве Т4; отсюда Т5
Наконец, выбираем ребро {f,g}. Поскольку это ребро минимального веса из тех, что имеют одну вершину в Т4, а вершина g — последняя из оставшихся вершин, имеем дерево Т6, которое является искомым остовным деревом.
ВЕС МОД 2+2+1+4=9
Пример. Для данного взвешенного графа найти минимальное корневое остовное дерево, используя алгоритм Прима. Определить высоту построенного дерева.
Алгоритм Прима.
Выбираем вершину
,
которая будет корнем дерева. Из трех
ребер, инцидентных вершине
,
выбираем те, что имеют наименьший вес.
Два ребра (до
вершин
и
)
с весом, равным 7, инцидентны вершине
.
Присоединяем их.
К вершине
присоединяем ребро с весом 5 до вершины
.
К вершине
присоединяем ребро с весом 4 до вершины
.
К вершине
присоединяем ребро с весом 6 до вершины
.
Получаем следующее минимальное корневое дерево с весом, равным min(T)=7+7+6+5+4=29. Высота дерева = 3.