改进的最小生成树算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与算法
课程设计报告
课程名称:数据结构与算法课程设计
题目:改进的最小生成树算法
专业:计算机科学与技术
班级:(一)班
学号:1362810118,1362810107,1362810108 学生姓名:王洪,汪妍,罗林芳
一、目录
一、问题描述 (1)
二、需求分析 (1)
1. 性能需求 (1)
2. 功能需求 (2)
3. 问题假设 (2)
三、准备知识 (2)
1. 欧拉图定义: (2)
2. 欧拉图相关定理:......................................................................... 错误!未定义书签。
3. 欧拉图应用:................................................................................. 错误!未定义书签。
四、算法和数据结构设计 (5)
1. 算法分析 (5)
2. 建立模型 (5)
1) 前期准备................................................................................. 错误!未定义书签。
2) 确定模型................................................................................. 错误!未定义书签。
3. 具体算法实现................................................................................. 错误!未定义书签。
4. 时间复杂度分 (6)
5.题目拓展 (8)
五、程序测试......................................................................................... 错误!未定义书签。
1. 测试1(测试没有度数为奇数的顶点) (9)
2. 测试2(测试度数为奇数的定点有4个) (9)
六、总结 (11)
1. 已完成部分 (11)
2. 后期设想 (11)
3. 课程设计思考与体会............................................................. 错误!未定义书签。
七、参考文献 (11)
摘要
最小生成树是数据结构中图的一种重要应用,在图中对于n个顶点的连通网可以建立许多不同的生成树,最小生成树就是在所有生成树中总的代价最小的生成树。本课程设计是以java语言来编写,主要运用了邻接矩阵的存储形式,和实现Collection接口的类来简化程序,实现生成最小生成树。最小生成树的应用非常的广,如矿井通风设计和改造最优化方面以及如何搭建最短的网络线缆, 构建造价最低的通讯网络。
关键词:java,最小生成树;破圈法
一、问题描述
一般都采用prim算法或者kruskal算法,两个算法都很直接。prim算法其实就是disj算法的变形,只是更新策略和判断策略不同而已。kruskal采用了不相交集和堆,写出的算法也很简洁并且很好理解。而这两者都是通过添加边来构造树,最小生成树还有一种大类就是破圈法。本文我们探究的是用破圈法来构造树,即连续删除某些边,从而破坏图中的回路,直到图中不存在回路为止,此时的图就是生成树。
二、需求分析
根据提示使用删除边的方法,我们想到了破圈算法。破圈算法是1975年由我国数学家管梅谷教授提出来的。
破圈法基本思想:在给定的图中任意找出一个回路,删去该回路中权最大的边。然后在余下的图中再任意找出一个回路,再删去这个新找出的回路中权最大的边,……一直重复上述过程,直到剩余的图中没有回路。这个没有回路的剩余图便是最小生成树。
算法的基本思想:
先将图G 的边按权的递减顺序排列后, 依次检验每条边, 在保持连通的情况下, 每次删除最大权边, 直到余下n- 1 条边为止。
1.性能需求
1)构造数据的输入形式和范围
输入顶点数为int类型,范围为0-100。
2)数据结构
采用邻接矩阵存储图。
2.功能需求
1.在给定的赋权的连通图上任意找一个圈。
2.在所找的圈中去掉一条权数最大的边(若有两条或者两条以上权数相等的边,则任意去掉其中一条)。
3.重复1、2操作,直至余下的图为最小生成树。
3.问题假设
假设本题涉及的无向图是一个连通图。
三、准备知识
1.算法的理论基础:
定理1: 任意图G 有支撑树的充分必要条件是图G 是连通的。
定理2: 图G= ( V, E) 是一个树的充分必要条件是G 是连通图, 且e=n- 1 。
2.最小生成树
最小生成树:一个有n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中
的所有n 个结点,并且有保持图连通的最少的边,如图1所示。
图1 最小生成树示意图
设G = (V, E)是无向连通带权图,即一个网络。E 中的每一条边(v, w)的权为W(v, w)。如果G 的子图G’是一棵包含G 的所有顶点的树,则称G’为G 的生成树。生成树上各边权的总和称为生成树的耗费。在G 的所有生成树中,耗费最小的生成树称为G 的最小生成树。
①避圈法