Kruskal算法
Kruskal算法
求解最小生成树的另一种常见算法是Kruskal算法,它比Prim算法更直观。从直观上看,Kruskal算法的做法是:每次都从剩余边中选取权值最小的,当然,这条边不能使已有的边产生回路。
手动求解会发现Kruskal算法异常简单,下面是一个例子
先对边的权值排个序:1(0,1) 2(2,6) 4(1,3) 6(1,2) 8(3,6) 10(5,6) 12(3,5) 15(4,5) 20(0,1)
首选边1(0,1)、2(2,6)、4(1,3)、6(1,2),此时的图是这样
显然,若选取边8(3,6)会出现环,则必须抛弃8(3,6),选择下一条10(5,6)没有问题,此时图变成这样