码迷,mamicode.com
首页 > 编程语言 > 详细

最小生成树算法

时间:2015-03-12 14:47:48      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.

1、克鲁斯卡尔算法

方法:将图中边按其权值由小到大的次序顺序选取,若选边后不形成回路,则保留作为一条边,若形成回路则除去.依次选够(n-1)条边,即得最小生成树.(n为顶点数)

克鲁斯卡尔法对于边特别多的情况,消耗时间比较多,不是很实用。

2、普里姆算法

 方法:从指定顶点开始将它加入集合中,然后将集合内的顶点与集合外的顶点所构成的所有边中选取权值最小的一条边作为生成树的边,并将集合外的那个顶点加入到集合中,表示该顶点已连通.再用集合内的顶点与集合外的顶点构成的边中找最小的边,并将相应的顶点加入集合中,如此下去直到全部顶点都加入到集合中,即得最小生成树。

最小生成树算法

标签:

原文地址:http://www.cnblogs.com/chenxf0619/p/4332265.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!