最小生成树

算法使用的是二叉堆,时间为O(ElgV)。如果V小于E的话,使用Prim更好。

Kruskal算法:

O(ElgE): E<V,所以有 lgE=O(lgV)

集合A是一个森林,加入集合A中的安全边总是图中连接两个不同连通分支的最小权边。

使用不相交集合数据结构。

测试边时,即测试两端点是否在同一棵树上。

若不在则可以对集合进行合并。

 

Prim算法:

集合A形成单棵树,添加集合A的安全边总是连接树与一个不在树中的顶点的最小权边。

使用最小优先队列。优先队列基于Key值,key[v]是所有将v与树中某一顶点相连的边中的最小权值。

一开始除了根节点,其他节点的key为无穷大。

posted @ 2012-10-06 22:21  billowkiller  阅读(131)  评论(0编辑  收藏  举报
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.