数据结构程序设计最小生成树.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文档。上传文档
查看更多
数据结构程序设计最小生成树

重庆交通大学信息科学与工程学院 课程设计报告书 专 业:计算机科学与技术 课程设计名称:《数据结构》 题 目:n个城市间的最小生成树 班 级:软件一班 设 计 者: 王洁松 学 号:631106050108 指 导 教 师:鲁云平 完 成 时 间:2013年6月16日至2013年6月27日 重庆交通大学信息科学与工程学院课程设计任务书 课 程 数据结构 班级 软件一班 指导教师 鲁云平 题 目 同组人数 1-5人(每人代码量不少于300行) 设计要求 给定一个地区的N个城市的距离网(至少6个城市,10跳边),用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。 报告书要求 设计报告主要包括内容(参见后面的格式): 1.系统的功能需求及分析 2.类结构及类设计说明 3.系统总体结构 4.系统实现及主要代码 5.系统功能测试 6.设计体会 要求: 学生完成课程设计后,每个同学均应提交课程设计报告及软件; 设计报告要求文字通畅,排版规范; 设计报告文字原则上不少于3000字(程序代码除外),并装订成册。 版面要求 1.题目用黑体三号,段后距18磅(或1行),居中对齐; 2.标题用黑体四号,段前、段后距6磅(或0.3行); 3.正文用小四号宋体,行距为固定值“20”,程序代码用固定值“15”; 4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。 上机时间安排 星期 周次 一 二 三 四 五 六 日 第17周 1-4 1-4 1-4 1-4 1-4 自定 自定 第18周 1-4 1-4 1-4 1-4 1-4 自定 自定 指导地点及考核时间 1、指导地点:双福校区信息技术实验室 2、考核时间:第18周星期五上午(答辩方式考核,学生用PPT汇报及演示) 目 录 一 、需求分析 2 1. 问题描述: 2 2. 基本要求 2 二、 概要设计 3 1. 程序设计思路 3 2. 存储结构设计 3 3. 主要算法设计 5 4. 存储结构定义 5 三、详细设计 7 1. 数据类型定义 7 2. 函数实现代码 7 3. 函数之间的调用关系 7 四、用户手册 8 五、测试结果 8 六、调试分析及心得体会 7 七、参考文献 9 八、附录 10 一 、需求分析 1. 问题描述: 一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。 2. 基本要求 1) 城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。 2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边) 二、 概要设计 2.1程序设计思路 每个城市可以表示成城市网中的顶点,城市间的距离可以用距离网中的边表示,边的权值表示两地间的直接路径,采用Kruskal算法建立最小生成树,历城市生成最小生成树,通过计算得到最小生成树的代价; (1)克鲁斯卡尔算法思想基本描述: 为使生成树上边的权值之和最小,显然,其中每一条边的权值应该尽可能地小。克鲁斯卡尔算法的做法就是:先构造一个只含n个顶点的子图SG,然后从权值最小的边开始,若它的添加不使SG中产生回路,则在SG上加上这条边,如此重复,直至加上n-1条边为止。 (2)克鲁斯卡尔算法设计 a. 设置计数器E,初值为0,记录已选中的边数。将所有边从小到大排序,存于中。. 从p中选择一条权值最小的边,检查其加入到最小生成树中是否会构成回路,若是,则此边不加入生成树;否则,加入到生成树中,计数器累加1。 c. 从E中删除此最小边,转b继续执行,直到k=n-1,d. 判断是否构成回路的方法: 设置集合S,其中存放已加入到生成树中的边所连接的顶点集合,当一条新的边要加入到生成树中时,检查此边所连接的两个顶点是否都已经在S中,若是,则表示构成回路,否则,若有一个顶点不在S中或者两个顶点都不在S中,则不够成回路。 克鲁斯卡尔算法生成最小生成树的过程 (3)防止不能构成最小生成树的图 为避免输入的图构成的不是连通图,设计了judge ( ) 函数来判断输入数据构成的是否为连通图,此函数的主要算法是源于普里姆(PRIM)算法,经

文档评论(0)

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

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

1亿VIP精品文档

相关文档