最小生成树-文献综述

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

毕业设计(论文)文献综述

题目:最小生成树算法及其应用

学院:数理与信息学院

学生姓名:许立

学号:070602137

专业:信息与计算科学

班级:A07信息

指导老师:陈丽燕

起止日期:2010. 07. 03-2010. 07. 07

2010年7月7日

最小生成树(minimum spanning tree,MST)是计算机学科中一重要内容, 其算法也是重

要的计算方法, 是现代科学中比较热门的研究方向.

一个有 n 个结点的连通图的生成树是原图的极小连通子图, 且包含原图中的所有 n

个结点, 并且有保持图联通的最少的边.

许多应用问题都是一个求五项连通图的最小生成树问题. 例如:要在n个城市之间铺

设光缆, 主要目标是要使这 n 个城市的任意两个之间都可以通信, 但铺设光缆的费用很高, 且各个城市之间铺设光缆的费用不同; 另一个目标是要使铺设光缆的总费用最低. 这就需

要找到带权的最小生成树.

MST性质: 最小生成树性质: 设G= ( V, E)是一个连通网络, U是顶点集V的一个真

子集. 若(u, v)是G中一条“一个端点在U中( 例如: u∈U),另一个端点不在U中的

边( 例如: v∈V-U) ,且( u, v) 具有最小权值, 则一定存在G的一棵最小生成树包括此

边( u, v) [1].

求MST的一般算法可描述为: 针对图G, 从空树T开始, 往集合T中逐条选择并加入n-1

条安全边( u, v) , 最终生成一棵含n-1条边的MST.

当一条边( u, v) 加入T时, 必须保证T∪{( u, v) }仍是MST的子集, 我们将这样的

边称为T的安全边. 其中主要有两种算法: Prim算法和Kruskal算法.

Prim算法: 该算法由Prim 提出, 但事实上Jarnik 于1930 年更早提出. 用于求无向

图的最小生成树.

设图G =(V,E),其生成树的顶点集合为U.

①、把v0放入U.

②、在所有u∈U, v∈V-U的边( u,v) ∈E中找一条最小权值的边, 加入生成树.

③、把②找到的边的v加入U集合. 如果U集合已有n个元素, 则结束,否则继续执行.

其算法的时间复杂度为O( n^2).

Prim算法实现:

(1)集合: 设置一个数组set( i=0,1,..,n-1 ) , 初始值为 0, 代表对应顶点不在集合中

(注意:顶点号与下标号差1)

(2)图用邻接矩阵或邻接表表示,路径不通用无穷大表示,在计算机中可用一个大整数(如 1 << 30)代替.

采用堆可以将复杂度降为O( m log n ),如果采用Fibonaci堆可以将复杂度降为O( n log n + m)

Kruskal算法: 每次选择n- 1条边, 所使用的贪婪准则是: 从剩下的边中选择一条不会产生环路的具有最小耗费的边加入已选择的边的集合中. 注意到所选取的边若产生环路则不可能形成一棵生成树. Kruskal算法分e 步, 其中e 是网络中边的数目. 按耗费递增的顺序来考虑这e 条边,每次考虑一条边. 当考虑某条边时,若将其加入到已选边的集合中会出现环路,则将其抛弃,否则,将它选入[2]. 假设 WN=( V, {E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n 棵树的一个森林. 之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,也就是说,将这两个顶点分别所在的两棵树合成一棵树;反之,若该条边的两个顶点已落在同一棵树上,则不可取,而应该取下一条权值最小的边再试之. 依次类推,直至森林中只有一棵树,也即子图中含有 n-1条边为止.

对于一个随机加权无向图,寻找其最小生成树的问题有许多重要的应用, 而且解决此问题的算法至少从1920 年就已经出现. 然而,研究人员仍在寻求更好的方法. 因为这个问题并没有得到完全的理解[3]经典的MST 算法其实现的效率大相径庭, 这些算法(例如Boruvka、 Prim 算法等)在做运算时大都要求一次将数据读入内存中以做比较, 如果处理的是大型图, 内存没办法在一次就把所有的数据读入时, 这些算法将受到一定局限性(虽然也有一些片外排序的技术, 但其实现也不容易). 针对这个问题, 本文提出一种新的算法以实现在无向连通图中寻找最小生成树, 基于分治法[4]的思想, 将主要的排序分为两部分, 在每部分中的子运算只需求读入内存很少的数据以做比较, 罗竣友, 赵军辉[5]等提出新算法.

最小生成树不仅在计算科学中有很大应用, 而且在信息, 遗传问题, 生物地理甚至在配电网架优化规划等方面都有着及其积极的作用.

陶午沙, 沈振康, 李吉成[6]提出一种融合多元模糊空间关系信息的支撑树搜索算法,

即S2Prim( spatial Prim) 算法, 用以识别低分辨率环境下(红外、多光谱遥感、SAR、恒星导航等图像中) 具有规则空间分布关系的目标斑点集合.

徐磊, 张兢[7]引八了节点的度的定义, 据此提出了广义最小生成树的概念. 采用遗传算法来求解最小生成树, 井针对普通遗传算法求解该问题的不足, 提出了白调整的变异算子和限制父代个体数日的混合选择策略. 通过一个有线电视网络的建摸与仿真, 表明了广义最小生成树模型的适用性. 分剐采用普通遗传算法和改进后的遗传算法进行采解, 井将结果进行比较, 证明了改进后的遗传算法的有效性.

刘健, 杨文宇, 余健明, 宋蒙[8]提出了一种用于配电网络规划的改进最小生成树算法:将配电网的电源点和负荷点当作顶点, 将各个顶点间可能架设线路的走廊当作边, 将线路的建设费用和运行费用( 主要为线损) 之和作为各条边的权, 在采用基本最小生成树算法获得初步规划方案的基础上, 采取动态调整各条边的权值并反复迭代的方法, 获得总费用最小的优化规划结果, 并采用随机初始权值的处理方法以提高获得全局最优解的机会.

目前最小生成树仍以其广泛的用途和极具逻辑的运算被广大学者和研究员等研究着, 最近的理论成果亦很丰富. 像对求解加权连通无向图最小生成树的KRUSKAL算法进行了探讨,并用VB实现, 同时以读取文件的方法输入图, 弥补了利用面向过程的程序设计语言在求解最小生成树时输入数据的复杂性. 通过可视化的形式显示无向图和最小生成树, 使结果直观且容易理解[8].

还有一种基于最小生成树的多目标进化算法MST_MOEA, MST_MOEA 在考虑了个体间支配关系的基础上, 利用个体与非支配集的距离和不同等级个体的树聚集密度来对适应度赋值;在外部种群中非支配个体数目超过规定规模时, 用最小生成树的度数和树聚集密度对其进行修剪; 将MST_MOEA 应用于不同维数下的9 个测试函数,并和NSGA2II , SPEA2 进行比较实验, 结果表明MST_MOEA 具有良好的搜索性能.

在离散数学中, 图和树有着很大的联系. 在各式各样的图中有一类图是及其简单, 然而却是非常有用的那就是树. 在各类树中, 赋权图的最小生成树尤其被广泛应用在解决工程技术及科学管理等各个领域的最优化问题中.

甚至在矿井通风系统网络中, 无论是自然分风计算, 还是调节计算以及调节设施的合理布局都要用到最小生成树. 由于篇幅所限, 下面只谈一个方面, 即最小生成树用于选择矿井通风网络独立回路.

相关文档
最新文档