最优树问题(Kruskal算法)
由于没有看懂并查集 ,所以用了一种笨重的方法求解。
由于生成树有限,所以总可以通过逐个比较最终找到一个最优树(可能不唯一),这说明最优树是存在的,但当顶点和边的数目较大时,这种方法显然是不切实际的。Kruskal于1956年提出了求最优树的有效算法,其步骤如下(设G的各边权非负且无环) :
(1)选择e,∈E(G),使权w(e,)最小;
(2)假设已选好e,e,e,则从E(G)- {e,e..,.中选取0。,满足:
①G[ {e,.. ,.}无回路;
②w(e,1)是满足①的尽可能小的权;
(3)重复(2)直到不存在满足①的边
例如,下图给出了利用上述算法求最优树的过程,其中,粗边就是算法所选定的边.
权值标注
顶点标注
将其权值排列,找出最小权值
初始化cnt =1;
先选出权值最小的边,其两端顶点1和6
用sym[1][0] =1,sym[6][0]=1标记两点使用过
并用sym[1][1] ,sym[6][1]标记为cnt=1;