图论(一)最小生成树

来源:互联网 发布:数据库设计步骤 编辑:程序博客网 时间:2024/06/06 02:48

最小生成树有两种算法:这里先不写代码

1:普利姆算法(prim):初始状态相当于两个篮子A与B,篮子中装的是点vertex,初始化时候A是空的,B是满的

算法描述:

先从B中随机找一个点放到A中,不断从B中找距离A集合最近的一个点放到A中,直到B为空

在这个过程中最近距离对应的边集便能构成一颗最小生成树

所谓B中距离A集合最近的点就是,与A集合中任意点相连的,且彼此距离最近的B集合中的点;

有点类似吸铁石,每次吸一个,有点像层次聚类的思想,只是prim最终需要寻找的是那些最近的边集合;

其实更像传销,不断的拉新人,每次只能是最近距离的人被拉进来。

 

2:克鲁斯卡尔算法(kruskal)

算法描述:

prim是找集合最近点,克鲁斯卡尔是找最小边加入到新的边集中,但是有约束,就是新的边集中不能有回路,如果有回路就找次近的边

 

描述的不好,权当自己看看怕忘了,写成代码中主要是考虑集合的问题

 

 

0 0
原创粉丝点击