普利姆算法

普利姆算法寻找最小生成树

普利姆算法

原理:将顶点分为两个类,其中一类为没有选中类,另一类为选中类。每次迭代中将权值小的路径添加到选中类找到最小生成树。

图形理解:

我们从A点开始,首先将A点纳入选中类,在从A点向非选中类找最小路径得到A——>B这条,此时再将A和B看为一个整体,向非选中类找最小路径得到A——>B——>C,按照这种流程最终可以得到最后一幅图,去掉不必要的边后,就为最小生成树。值为39。

JAVA代码实现: 

运行结果

代码运行过程:

第一次遍历从A到其他点,代表A的是第一行,而A只能到B-K的点,第一列是A,所以只能遍历下标1到10的数据。得到B点。

第二次遍历从A和B到其他点,代表AB的是第一二行,而AB只能到C-K的点,第一列和第二列是A和B,所以只能遍历下标2到10的数据。得到C点。

第三次遍历从AB和C到其他点,代表ABC的是第一二三行,而ABC只能到D-K的点,第一列第二列和第三列分别是AB和C,所以只能遍历下标3到10的数据。得到E点。

第四次遍历从ABC和E到其他点,代表ABCE的是第一二三五行,而ABCD只能到D和F-K的点,第一列第二列第三列和第五列分别是ABC和E,所以只能遍历下标3和5到10的数据。以此类推,后面的大家自己体会。

第一次写,经验不足,后会有期。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值