欢迎来到天天文库
浏览记录
ID:28386367
大小:153.00 KB
页数:17页
时间:2018-12-09
《最小生成树prim算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、-《数据结构》 课程设计报告(最小生成树问题)1课程设计的目的和意义2需求分析3系统(项目)设计4系统实现5系统调试附录源程序1课程设计的目的和意义据《数据结构》课堂讲授及书本.---内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C及C++程序的经验;通过完成课程设计中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。“数据结构”作为计算机专业基础课,该课程的目标就是使学生学会如何从问题出发,分析数据,构造求解问题的数据结构和算法,培养学生有一定进行较复杂程序设计的能力。本次课程设计的内容是
2、用最小生成树的构造来表示城市间的最小代价即最小距离,最小生成树可以用连接矩阵和连接表表示,而它们的区别就是连接矩阵一般用来表示密集型的网络,连接表一般用来表示稀疏型的网络,连接矩阵是用数组来存储,连接了是用链表来存储的,比较复杂密集型的网络就网连接矩阵较适用了,设计中运用了Prim算法,“构造可以使n个城市连接的最小生成树”问题就是用连接矩阵和Prim算法处理的一个实际应用。通过这个题目的设计实例,了解了最小生成树的实际运用意义,也了解连接矩阵和连接表的相同与不同之处,进一步加深了对最小生成树结构和Prim算法的理解。通过这次课程设计,一
3、方面使学生加深对课内所学的有关数据的逻辑结构和存储表示、数据结构的选择和应用、算法的设计和时空分析等课程基本内容的理解,另一方面,使学生在程序设计方法(如抽象数据类型、结构化分析、模块化设计和结构化设计)、C和C++语言编程环境以及程序的调试和测试方面受到比较系统的严格的训练。.---2需求分析1.题目:最小生成树的Prime算法实现(难度**)要求:1)先任意创建一个图;2)用Prime算法,求出该图的最小生成树。.---3系统(项目)设计(包括总体设计和详细设计)一.设计思想及方案:n个顶点的连通图应该至少有n-1条边,而生成树正好有
4、n-1条边,所以生成树是对应的连通图的极小连通子图。带权的无向图,经过遍历得到的生成树也是带权的,最小生成树即权值最小的生成树。所以要求图的最小生成树,即只要求权值最小的极小连通子图。这实际上是求图的一个生成树。同时还要考虑造价最低这个条件。一棵树的权定义为它所含各边的权之和。一个连通网络的最小生成树是该图所有生成树中权最小的生成树普里姆算法(Prim)算法:设N=(V,{E})是连通图,TE是N上最小生成树中边的集合,U为V中具有最小生成树的顶点集合,初始时,TN为空,U={uo}(uo∈V),重复下叙操作:在所有u∈U、v∈V-U的边
5、(u,v)∈E中找一条代价最小的边(u0,v0)并入集合TE,同时v0并入集合TE,同时,直到U=V为止,此时TE必有n-1条边,且T=(V,{TE})为N的最小生成树。二.模块的设计及介绍(1).主程序模块voidmain(){{接受命令;处理命令;Cout<6、raph_LG;inti,d,g[20][20];chara='a';d=creatMGraph_L(G);vnodev;cout<7、'){cout<<"请选择菜单:"<>s;switch(s){case0:cout<<"邻接矩阵显示如下:"<>y;if(y=='n')break;}}程序解释:该8、主函数用一个循环语句,来执行其它的函数的功能。从键盘输入顶点数和边数上限,再调用定义连接矩阵的函数,后输出创建连接矩阵的信息,再调用creatMGraph()函数,接着进入菜单,然后再选择输入
6、raph_LG;inti,d,g[20][20];chara='a';d=creatMGraph_L(G);vnodev;cout<7、'){cout<<"请选择菜单:"<>s;switch(s){case0:cout<<"邻接矩阵显示如下:"<>y;if(y=='n')break;}}程序解释:该8、主函数用一个循环语句,来执行其它的函数的功能。从键盘输入顶点数和边数上限,再调用定义连接矩阵的函数,后输出创建连接矩阵的信息,再调用creatMGraph()函数,接着进入菜单,然后再选择输入
7、'){cout<<"请选择菜单:"<>s;switch(s){case0:cout<<"邻接矩阵显示如下:"<>y;if(y=='n')break;}}程序解释:该
8、主函数用一个循环语句,来执行其它的函数的功能。从键盘输入顶点数和边数上限,再调用定义连接矩阵的函数,后输出创建连接矩阵的信息,再调用creatMGraph()函数,接着进入菜单,然后再选择输入
此文档下载收益归作者所有