Алгоритм Краскала
Вход: список рёбер графа
с длинами.
.
Выход: множество рёбер кратчайшего остова.
Упорядочить в порядке возрастания длин
{ номер рассматриваемого ребра }
for from 1 to
do
while добавление ребра образует цикл в
do
{пропустить ребро }
end while
{добавить это ребро в SST }
end for
(SST-Shortest Sceleton Tree - стандартное обозначение для кратчайшего остова).
Пример. Дан нагруженный граф . Необходимо построить минимальное остовное дерево
.
Алгоритм: Строим таблицу, в которую заносим все ребра с их стоимостями в порядке возрастания. На каждом шаге алгоритма включаем в остовное дерево ребро графа минимальной стоимости, проверяя, не образуется ли цикл с уже включенными в дерево ребрами.
Рисунок 6.72
Шаг | Ребро | Стоимость | +/- |
(1, 7) | включаем | ||
(3, 4) | включаем | ||
(2, 7) | включаем | ||
(3, 7) | включаем | ||
(2, 3) | образует цикл, не включаем | ||
(4, 7) | образует цикл, не включаем | ||
(1, 5) | включаем | ||
(1, 2) | образует цикл, не включаем | ||
(1, 6) | Включаем. Все вершины включены в остов. Конец. | ||
(5, 7) | |||
(5, 6) | |||
(6, 7) |
Рисунок 6.73
Рисунок 6.74
Рисунок 6.75
В результате работы алгоритма получаем остов минимальной стоимости: =57.