最小生成树算法详细讲解.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

文档分享 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档