

61.Минимальные покрывающие деревья. Алгоритм Крускала.
Остовным (покрывающим) деревом называется подграф, не содержащий циклов, включающий все вершины исходного графа, для которого сумма весов ребер минимальна. Минимальное остовное дерево в связанном, взвешенном, неориентированном графе — это остовное дерево этого графа, имеющее минимальный возможный вес, где под весом дерева понимается сумма весов входящих в него рёбер.
Алгоритм Крускала. Вычислительная сложность: Сортировка(mlogn), Основная часть(n2). Первоначально каждая вершина(v1,v2…) исходного графа помещается в одноэлементное множество, где все вершины изолированы (поэтому считается что множество Ws имеет вид: Ws={{v1},{v2},…,{vn}}. Ребра сортируются по возрастанию. Ребро включается в остовное дерево, если оно связывает вершины, принадлежащие разным множествам. Алгоритм заканчивает работу, когда все вершины объединяются в одно множество, при этом оставшиеся ребра не включаются в оставное дерево. E-количества ребер,V- вершин.
Алгоритм Kruskal(G)
1.for each viV do Mark[vi]I; 2.T<-
; LESort[E];
3.while |T|<|v|-1 do 4.(v,w)min(LE)
5.if Mark[v]Mark[w] then 6.TT
{(v,w)}; 7.zMark[w];
8.for each uV do
9.if Mark[u]=z then 10.Mark[u]Mark[v] end if; 11.end for;
12.end if;
13.LE LE –{(v,w)}; 14.end while.