最小生成树求解课程设计报告.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文档。上传文档
查看更多
合肥学院 计算机科学与技术系 课程设计报告 2009~2010 学年 第 二 学期 课程 数据结构与算法 课程设计名称 最小生成树求解 学生姓名 学号 专业班级 指导教师 20 年 6月 课程设计题目 对任意给定的网和起点,用PRIM算法的基本思想求解出所有的最小生成树。 问题分析和任务定义 本课程设计重在使用prim算法实现任意给定的网和起点的图的所有最小生成树的求解,实现本课程设计的关键即是能够掌握prim算法的思想,并能够灵活使用。 首先我们必须对prim算法有个清晰地认识,prim算法是普利姆(Prime)于1957年提出了一种构造最小生成树的算法,算法的主要思想如下:按照将顶点逐个连通的步骤,把顶点加入到已经连通的顶点集合U中,最后使得U成为最小生成树。 PRIM思路:1)初始化顶点集合U为空集。 2)任意选取一个顶点v加入U。 3)选取一条权值最小的边(u,v),其中u∈U,v∈(V-U),将该边假如到生成树,v加入到U中。 4)重复步骤3),直到所有顶点均加入到U中构成一颗最小生成树。 为了实现这一算法需要附设一个辅助数组closedge[v]用来存储从U到V-U之间具有最小代价的边。对于每个顶点 v∈(V-U),在closedge,树组中都存在一个分量closedge[v],它有两个域组成。其中一个是权值,即: closedge[v].lowcost=MIN{cost(u,v)|u∈U},另外一个是顶点域vexs,存储依附于该边在U中的顶点。 其次,针对本课程设计的题目要求,我们需要考虑到五个问题: 如何选择、设计一个合适的算法来建立图,用以实现接下来的操作。 如何正确的在本实验中使用prim算法。 对于本课程设计中的需要,求出对于给定任意给定的网和结点,得出所有的最小生成树,关键在于需要求出所有的最小生成树,需要灵活使用prim算法实现。 对于一些细节也是需要考虑斟酌的,比如,当所输入的顶点不存在时,需要一个示语句警示,并能够重新输入。 当算法设计完成后,还需对于整个运行程序的运行界面,提示语句以及如何完美、清楚的输出各个最小生成树设计一番。 最后,在课程设计过程中,自己需要做好充足的准备工作,吃透课本中关于prim算法的解释说明,同时把握好时间,掌握整个课程设计的进度,做好整体规划,保证本次课程设计可以及时的、成功的设计出来。 数据结构的选择和概要设计 对于本次设计,在prim算法中使用的图均为无向图,对于各顶点之间的权值以及连通关系是采用邻接矩阵来实现的。同时在prim算法中采用了辅助数组closedge[v],主要用来存储到顶点的最小边权值。 建立图的数据结构类型如下: typedef struct{ int vexs[MAX]; //顶点信息集合 int arcs[MAX][MAX]; //各边的权值 int vexnum; //顶点数 int arcnum; //边数 }MGraph; //图类型 建立辅助数组结构类型如下: struct closed{ int adjvex; //依附于最小权值边在顶点集合U中的顶点 int lowcost; //存储最小边的权值 }; closed closedge[MAX]; 整个算法概要设计主要在于图的初始化,以及如何求出所有最小生成树。下面我们可以通过相应的流程图来清楚的理解。 刚开始时初始化各顶点的顶点域、权值域赋值的算法流程: j不等于I j等于I 小于等于 大于 .求出最小代价的边的算法流程: 小于 大于等于 有一个条件不满足 都是肯定的回答 是 否 对于上述流程图可简单解释如下,首先通过对其它顶点依次判断,找出相连的顶点,然后得到顶点序号,再通过for循环,进行循环判断,找出边权值最小的,并赋值进入closedge[]中。 重新调整各顶点中的顶点域和权值域的流程: 有一个不满足 答案是肯定的 是的 否 普利姆算法的总流程: 是 否 图3-7. 普利姆算法的总流程图 主函数的流程: 详细设计和编码 图的建立: MGraph CreateMarph(MGraph G){ int v1,v2,weight,i,j,k; printf(●●请输入无向图的顶点数和边数:);

文档评论(0)

工程资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档