- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最小生成树算法
------prim Kruskal
生成树的概念
生成树
一个连通图的生成树是一个极小连通子图,它含有图中全部顶点,但只有足以构成一棵树的n-1条边。
生成树不唯一
生成树
最小代价生成树
生成树的代价等于其边上的权值之和。
V4
V1
V3
V2
V6
V5
6
5
1
2
6
6
5
5
3
4
最小代价生成树
两种常用的构造最小生成树的方法:
普里姆算法(prim)
克鲁斯卡尔算法( Kruskal)
普里姆(Prim)算法
假设N=(V,E)是连通网,TE是N上最小生成树中边的集合。
算法从U={u0}(u0∈V),TE={}开始,重复执行下述操作:
在所有u∈U,v∈V-U的边(u,v)中找一条代价最小的边(u0 ,v0),将其并入集合TE,同时将v0并入U集合。
当U=V则结束,此时TE中必有n-1条边,则T=(V,{TE})为N的最小生成树。
普里姆算法构造最小生成树的过程是从一个顶点U={u0}作初态,不断寻找与U中顶点相邻且代价最小的边的另一个顶点,扩充到U集合直至U=V为止。
V4
V1
V3
V2
V6
V5
6
5
1
2
6
6
5
5
3
4
V4
V1
V3
V2
V6
V5
1
2
5
3
4
U
V-U
{V1 }
{ V2 ,V3 ,V4 , V5 ,V6 }
步骤
(0)
最小代价生成树
普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止
V4
V1
V3
V2
V6
V5
1
6
5
V1
V3
1
{V1 }
{ V2 ,V3 ,V4 , V5 ,V6 }
步骤
(0)
U
V-U
普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止
最小代价生成树
V4
V1
V3
V2
V6
V5
6
5
V1
V3
1
{V1 }
{ V2 ,V3 ,V4 , V5 ,V6 }
步骤
(0)
V6
4
6
5
5
4
U
V-U
普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止
最小代价生成树
V4
V1
V3
V2
V6
V5
6
5
V4
V1
V3
1
{V1 }
{ V2 ,V3 ,V4 , V5 ,V6 }
步骤
(0)
V6
4
6
5
5
2
6
2
U
V-U
普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止
最小代价生成树
V4
V1
V3
V2
V6
V5
6
V4
V1
V3
1
{V1 }
{ V2 ,V3 ,V4 , V5 ,V6 }
步骤
(0)
V2
V6
4
6
5
6
2
5
U
V-U
普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止
最小代价生成树
V4
V1
V3
V2
V6
V5
V4
V1
V3
1
{V1 }
{ V2 ,V3 ,V4 , V5 ,V6 }
步骤
(0)
V2
V6
V5
4
6
6
2
5
3
3
U
V-U
普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止
最小代价生成树
普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止
V4
V1
V3
V2
V6
V5
V4
V1
V3
1
{V1 }
{ V2 ,V3 ,V4 , V5 ,V6 }
步骤
(0)
V2
V6
V5
4
2
5
3
U
V-U
最小代价生成树
普里姆(Prim)算法
生成树中只放置一个顶点
在关联生成树顶点的边中(即边的
一个顶点在生成树中,另一个顶点不在)
取权值最小者
将选中的边加入生成树,
同时将该边的关联顶点加入生成树中
生成树中顶点数小于n?
是
否
结束
开始
从键盘(或数据文件)输入图的信息,用普里姆算法求解给定无向连通图的最小生成树,最后输出最小生成树中的权值和所有的边,图的存储结构自行设定。
基本要求
例如 下图的输出为
weight:15
(v1, v3) (v3, v6) (v6, v4) (v3, v2) (v2, v5)
或者(1, 3) (3, 6) (6, 4) (3, 2) (2, 5)
普里姆算法的实现
顶点集合如何表示?
最小边如何选择?
一个顶点加入U集合(生成树中)
如何表示?
struct {
int adjvex;
double lowcost;
}closedge[MAX_VERTEX_NUM];
closedge[i].adjvex=k
closedge[i].lowcost
顶点i与顶点k邻接
顶点k已经在U集合中
顶点i加入U集合时
= 0
closedge[2].adjvex=1
.lowcost=6
closedge[3].adjve
您可能关注的文档
最近下载
- 【关爱青春期】《男生青春期教育讲座》.pptx VIP
- JB∕T 8527-2015 金属密封蝶阀.pdf VIP
- 2025 《高质量数据集 分类指南》.pdf VIP
- 2025年八年级语文上册《钱塘湖春行》古诗鉴赏对比阅读训练含答案.docx VIP
- 《工程测量基础(第2版)》课件 闭合导线测量.pptx
- 《铁路技术管理规程》(普速铁路部分)考试复习参考题库资料(500题).pdf VIP
- 2025年宿州市公安机关第二批公开招聘警务辅助人员240人笔试备考试题及答案解析.docx VIP
- 管理创新与思维创新 .pptx VIP
- 《光电传感器》PPT课件.ppt VIP
- CAD基础教程详解.ppt VIP
原创力文档


文档评论(0)