Prim算法最小生成树C语言.docVIP

  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算法最小生成树C语言

最小生成树 一 目的 给定一个地区的n个城市间的距离网,用Prim算法建立最小生成树,并计算得到的最小生成树的代价。 二 需求分析 (1)城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价; (2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边);并且利用文件对数据进行提取。 (3)输出最小生成树中包括的边及其权值,并显示得到的最小生成树的代价。 (4)采用模块化设计; 三 概要设计 1、相关定义以及算法概述 (1)最小生成树的定义: 假设一个单位要在n个办公地点之间建立通信网,则连通n个地点只需要n-1条线路。可以用连通的无向网来表示n个地点以及它们之间可能设置的通信线路,其中网的顶点表示城市,边表示两地间的线路,赋于边的权值表示相应的代价。对于n个顶点的连通网可以建立许多不同的生成树,每一棵生成树都可以表示一个通信网。其中一棵使总的耗费最少,即边的权值之和最小的生成树,称为最小生成树。 (2)普里姆(Prim)算法即是利用MST性质构造最小生成树的算法。算法思想如下: 假设N=(V,{E})和是连通网,TE是N上最小生成树中边的集合。算法从U={u0}( u0∈V),TE={}开始,重复执行下述操作:在所有u∈U,v∈V-U的边(u, v) ∈E中找一条代价最小的边(u0, v0)并入集合TE,同时v0并入U,直到U=V为止。此时TE中必有n-1条边,则T=(V,{TE})为N的最小生成树。 2、函数设计 函数名 函数参数 返回值 功能 main 无 无 系统主函数 输入路径信息 Prim 无向图邻接矩阵 路径数目 代价 Prim算法实现 四 详细设计 1、mian函数 mian函数是一个程序的入口MAXCOST (0x7fffffff)表示。 例如: A B C A MAXCOST 2 3 B 2 MAXCOST 1 C 3 1 MAXCOST 流程: ①初始化所有路径为无穷大 ②获取城市和城市间通路路径的数目 ③获取边信息 ④将边信息对称存储在二维数组里,则形成邻接矩阵 ⑤求解最小生成树(调用Prim函数) ⑥输出最小权值和 2、Prim函数 Prim函数的功能用于Prim算法的实现,也就是求解最小树并返回该最小生成树的总代价。 在函数中: 数组BianQuan记录以i为终点的边的最小权值,当BianQuan[i]=0时表示终点i加入生成树 数组QiDian记录对应BianQuan[i]的起点,当QiDian[i]=0时表示起点i加入生成树。 流程: ①默认选择1号节点加入生成树,找出与它的所有通路,更新相应数组。 ②找出最小边权的路径进行输出,更新相应数组。 ③把步骤②输出的路径的终点作为新的起点,找到他所有通路(不包括已经加入生成树的结点),更新相应数组。 ④同步骤② ⑤跳转到步骤②,直到所有结点都加入生成树。 ⑥返回代价,结束。 五 调试分析 起初在编写程序时,没考虑城市与城市之间无通路的情况,导致当程序输入数据中每个城市都对每个城市有通路时运行正常,而当输入数据某个城市对某个城市之间无通路时运行错误,通过请教其他同学,我发现了这个问题,并通过在建立邻接矩阵时初始化所有路径为最大值解决了它。 六 测试结果 假设有一城市分布图如下图 输入数据:7 11 A B 7 A D 5 B C 8 B D 9 B E 7 C E 5 D E 15 D F 6 E F 8 E G 9 F G 11 输出: A - D : 5 D - F : 6 A - B : 7 B - E : 7 E - C : 5 E - G : 9 Total:39 《软件技术 》课程设计 4

文档评论(0)

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

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

1亿VIP精品文档

相关文档