改进的最小生成树算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 的最小生成树。

①避圈法

相关文档
最新文档