2022年实验5最小生成树算法的设计与实现 .pdf
《2022年实验5最小生成树算法的设计与实现 .pdf》由会员分享,可在线阅读,更多相关《2022年实验5最小生成树算法的设计与实现 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验 5 最小生成树算法的设计与实现一、实验目的1、根据算法设计需要 , 掌握连通图的灵活表示方法;2、掌握最小生成树算法,如Prim、Kruskal算法;3、基本掌握贪心算法的一般设计方法;4、进一步掌握集合的表示与操作算法的应用。二、实验内容1、认真阅读算法设计教材和数据结构教材内容, 熟习连通图的不同表示方法和最小生成树算法;2、设计 Kruskal算法实验程序。有n个城市可以用( n-1)条路将它们连通,求最小总路程的和。设计测试问题 ,修改并调试程序 , 输出最小生成树的各条边, 直至正确为止。三、Kruskal 算法的原理方法边权排序 : 1 3 1 4 6 2 3 6 4 1 4
2、 5 2 3 5 3 4 5 2 5 6 1 2 6 3 5 6 5 6 6 1. 初始化时:属于最小生成树的顶点U= 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 9 页不属于最小生成树的顶点 V=1 ,2,3,4,5,6 2. 根据边权排序,选出还没有连接并且权最小的边(1 3 1),属于最小生成树的顶点 U=1,3 ,不属于最小生成树的顶点V=2,4,5,6 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 9 页3. 根据边权排序,选出还没有连接并且权最小的边(4 6 2
3、),属于最小生成树的顶点 U=1 ,3,4,6 (还没有合在一起,有两颗子树),不属于最小生成树的顶点 V=2,5 4. 根据边权排序,选出还没有连接并且权最小的边(3 6 4),属于最小生成树的顶点 U=1,3,4,6(合在一起),不属于最小生成树的顶点V=2,5 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 9 页5. 根据边权排序,选出还没有连接并且权最小的边(3 6 4),属于最小生成树的顶点 U=1,2,3,4,6, ,不属于最小生成树的顶点V=5 6. 根据边权排序,选出还没有连接并且权最小的边(3 6 4),属于最小生成
4、树的顶点 U=1,2,3,4,5,6此时,最小生成树已完成精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 9 页四、实验程序的功能模块功能模块:bool cmp(Edge a,Edge b); /定义比较方法int getfa(int x);/在并查集森林中找到x 的祖先int same(int x,int y);/判断祖先是否是同一个,即是否联通void merge(int x,int y); /合并子树,即联通两子树sort(e+1,e+m+1,cmp); /对边按边权进行升序排序详细代码:#include #include #in
5、clude #include #define MAXN_E 100000 #define MAXN_V 100000 using namespace std; struct Edge 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 9 页int fm,to,dist; /边的起始顶点,边的到达顶点,边权eMAXN_E; int faMAXN_V,n,m; /顶点数组,顶点总数,边总数/定义比较,只是边权比较bool cmp(Edge a,Edge b) return a.dist b.dist; /查找x的祖先int getfa(int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年实验5最小生成树算法的设计与实现 2022 实验 最小 生成 算法 设计 实现
限制150内