- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)算法,经
您可能关注的文档
最近下载
- 高中语文高考复习语言文字运用新题练习(共六大题,附参考答案和解析).pdf VIP
- 汽车式起重机吊装安全专项施工方案.pdf VIP
- 5eDnD_凡戴尔的失落矿坑_模组_中译(二校).pdf VIP
- 高考诗歌的比较鉴赏公开课省名师优质课赛课获奖课件市赛课一等奖课件.pptx VIP
- 甘肃省公路工程试验检测收费指导价格(最新).xls VIP
- 发生带状疱疹后神经痛的影响因素的logistic模型分析.pdf VIP
- 2023年建筑防火通用规范考试试题.pdf VIP
- 混凝土结构工程测试题(附参考答案).docx VIP
- 2025党校入党积极分子发展对象考试题库(含答案).docx VIP
- 1.党校入党积极分子发展对象培训考试题库含答案(完整版).pdf VIP
文档评论(0)