最优树问题(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)直到不存在满足①的边
例如,下图给出了利用上述算法求最优树的过程,其中,粗边就是算法所选定的边.
权值标注
顶点标注