Java实现之普利姆(Prim)算法

使用普利姆算法解决最小生成树问题
本文详细介绍了最小生成树的概念及其在修路问题中的应用,重点讲解了普利姆算法的原理和步骤,并通过代码实现展示了如何在给定的村庄连接问题中找到最短的公路修建方案。

一.问题引入

 

1.问题引入

1)有胜利乡有7个村庄(A, B,C,D,E,F,G),现在需要修路把7个村庄连通

2)各个村庄的距离用边线表示(权),比如A-B距离5公里

3)问:如何修路保证各个村庄都能连通,并且总的修建公路总里程最短?

2.最小生成树

修路问题本质就是就是最小生成树问题,先介绍一下最小生成树(Minimum Cost Spanning Tree),简称MST.
1) 给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为
最小,这叫最小生成树

2)N个顶点,一定有N-1条边

3)包含全部顶点

4)N-1条边都在图.

5)举例说明(如图)

6)求最小生成树的算法主要是普里姆
算法和克鲁斯卡尔算法

 

二.普利姆算法

1.基本介绍

1)普利姆(Prim)算法求最小生成树,也就是在包含n个顶点的连通图中,找出只有
(n-1)条边包含所有n个顶点的连通子图,也就是所谓的极小连通子图
2)普利姆的算法如下:
(1)设G=(V,E)是连通网,T=(U,D)是最小生成树,v,u是顶点集合,E,D是边的集合
(2)若从顶点u开始构造最小生成树,则从集合v中取出顶点u放入集合u中,标记顶点v的
visited[u]=1
(3若集合u中顶点ui与

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

允歆辰丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值