- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NANCHANG UNIVERSITY 课 程 设 计 报 告 课程名称: 程序设计课程设计实验 题 目: 破圈法求生成树 学 院: 信息工程 系: 电子商务 专 业: 计算机科学与技术 班 级: 学 号: 学生姓名: 时 间: 2013-12-30至2014-1-5 指导教师: PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT - 1 -目 录课程设计目的………………………………………………… 1课程设计问题描述与要求……………………………………^ 2课程设计报告内容…………………………………………… 2结论 ………………………………………………………… 10参考书籍 …………………………………………………… 10 PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT 1 PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT - 0 -摘 要最小生成树是数据结构中图的一种重要应用,在图中对于n个顶点的连通网可以建立许多不同的生成树,最小生成树就是在所有生成树中总的代价最小的生成树。本课程设计是以java语言来编写,主要运用了邻接矩阵的存储形式,和实现Collection接口的类来简化程序,实现生成最小生成树。最小生成树的应用非常的广,如矿井通风设计和改造最优化方面以及如何搭建最短的网络线缆, 构建造价最低的通讯网络 。关键词:java,最小生成树;破圈法课程设计目的求解最小生成树是《数据结构》课程教学中的一个重点学习的图论问题。但是目前教材中普遍讲解的是Prim和Kruskal算法,这两个算法的基本思想是基于避圈论法,破圈法而从相反的角度求解最小生成树。通过本次课程设计可以使学生了解破圈法求解最小生成树的基本理论,深化对破圈法算法方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念。课程设计题目描述和要求2.1题目描述 利用破圈法求最小生成树,并且运用面向对象的程序设计语言实现该算法。2.1.1最小生成树 在一给定的HYPERLINK /view/93110.htm无向图G = (V, E)中,(u, v) 代表连接顶点u 与顶点v的边(即),而w(u, v)代表此HYPERLINK /view/132226.htm边的权重,若存在T为E的HYPERLINK /view/276935.htm子集(即)且为无循环图,使得的w(T)最小,则此T为G的最小生成树。2.1.2破圈法实现的理论依据 该算法的理论依据是存在性定理:连通图至少有一棵生成树。如果我们给的连通图G 中没有回路,那么G 本身就是一棵生成树,若G 中只有一个回路,则删去G 的回路上的一条边(不删除结点),则产生的图仍是连通的,且没有回路,则得到的子图就是图G 的一棵生成树,若G 的回路不止一个,只要删去每一个回路上的一条边,直到G 的子图是连通没有回路且与图G 有一样的结点集,那么这个子图就是一棵生成树。由于我们破坏回路的方法可以不一样(即删去的边不一样)所以可得到不同的生成树,但是在求最小生成树的时候,为了保证求得的生成树的树权W(T)最小,那么在删去回路上的边的时候,总是在保证图仍连通的前提下删去权值较大的边,尽量保留权值较小的边。这就是所谓的破圈法。2.1.3破圈法算法步骤 1. 在给定的赋权的连通图上任意找一个圈。 2. 在所找的圈中去掉一条权数最大的边(若有两条或者两条以上权数相等的 边,则任意去掉其中一条)。 3. 重复1、2操作,直至余下的图为最小生成树。如图:课程设计报告内容3.1概要设计程序的UML图:3.2算法的基本过程3.2.1算法中的主要的主程序:createEdgeList()用于通过邻近矩阵创建边集数组,为了方便排序,所以返回一个为ArrayList类型的引用。removeEdge()用于删除某一条边。IsConnectedGraph()检查图是否为连通图,可用于输入检查,和破圈法中检验在删除某条边后,所剩下图是否为连通图。breakLoopBST()破圈法算法:首先用createEdgeList()方法由邻近矩阵产生图的边集列表,利用Collections的sor
文档评论(0)