最小生成树(poj1797)路径最小值最大

                                                           路径最小值最大

kruskal 算法是基于贪心。--最小平均树

        怎么个贪心:    首先生成树不能有环,那我们给最小生成树添加一条边(随机)使得其变成环,模拟初步的图的环境,观察有什么规律可以得到。

        

        假如之前是1 2 我们添加3,那么可以删除 3.

        假如之前是1 3 我们添加2,那么可以删除 3.

        假如之前是2 3 我们添加1,那么可以删除 3.

删除环中最大的那个。那么我们的最小生成树还在。

应该有人会想,这个删除操作影响其余的树结构吗??

        答案:不会。

这样我们先将权值小的(排序)让其生成最小生成树,反正权值最大会被删(在某环内)。

而且只需要生成到n-1边就结束了。

我们经常遇到这样的递归效应,也是数学归纳法的思想。


将边按权值排序如下:

            

是某环最大值,所以必删。

那么第一次生成的树或者其他,必然是平均最小。



            回到  主题

将边按权值排序如下:


两个端点第一次在一个集合内时候 ,路径如下:


假如后面还有其他路径一旦包含小于的,必然不是我们想要的解。

同样对于任意两点存在两条路径,删掉小的那条,因此,跳过某环中的最小边。

总结:可能有些思考不完善,一定要指正,不希望误人子弟。


猜你喜欢

转载自blog.csdn.net/kala0/article/details/79421253