知识大全 图 - 生成树和最小生成树 - 生成树
Posted 知
篇首语:但使书种多,会有岁稔时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 图 - 生成树和最小生成树 - 生成树相关的知识,希望对你有一定的参考价值。
树(自由树) 无序树和有根树
自由树 就是一个无回路的连通图(没有确定根)(在自由树中选定一顶点做根 则成为一棵通常的树)
从根开始 为每个顶点(在树中通常称作结点)的孩子规定从左到右的次序 则它就成为一棵 有序树
在图的应用中 我们常常需要求给定图的一个子图 使该子图是一棵树
生成树
生成树
如果连通图G的一个子图是一棵包含G的所有顶点的树 则该子图称为G的生成树(SpanningTree)
生成树是连通图的包含图中的所有顶点的极小连通子图
图的生成树不惟一 从不同的顶点出发进行遍历 可以得到不同的生成树
深度优先生成树和广度优先生成树
( )生成树的求解方法
设图G=(V E)是一个具有n个顶点的连通图 则从G的任一顶点(源点)出发 作一次深度优先搜索(广度优先搜索) 搜索到的
n个顶点和搜索过程中从一个已访问过的顶点v i 搜索到一个未曾访问过的邻接点v j 所经过的边(v i v j )(共n 条)组成
的极小连通子图就是生成树 (源点是生成树的根)
通常 由深度优先搜索得到的生成树称为深度优先生成树 简称为DFS生成树;由广度优先搜索得到的生成树称为广度优先生成树
简称为BPS生成树
【例】从图G 的顶点v 出发所得的DFS生成树如下图(a) 具体生成过程【 参见动画演示 】 BFS生成树如下图(b) 具
体生成过程【 参见动画演示 】
>
( )求DFS生成树和BFS生成树算法
只要在DFS(或DFSM)算法的if语句中 在递归调用语句之前加入适当生成边(v i v j )的操作(如将该边输出或保存) 即可得到
求DFS生成树的算法
在BFS(或BFSM)算法的if语句中 加入生成树边(v i v j )的操作 可得到求BFS生成树的算法 【参见练习】
注意
①图的广度优先生成树的树高不会超过该图其它生成树的高度
②图的生成树不惟一 从不同的顶点出发进行遍历 可以得到不同的生成树
生成树的通用定义
若从图的某顶点出发 可以系统地访问到图中所有顶点 则遍历时经过的边和图的所有顶点所构成的子图 称作该图的生成树 (此
定义不仅仅适用于无向图 对有向图同样适用 )
( )若G是强连通的有向图 则从其中任一顶点v出发 都可以访问遍G中的所有顶点 从而得到以v为根的生成树
( )若G是有根的有向图 设根为v 则从根v出发可以完成对G的遍历 得到G的以v为根的生成树
【例】下图中(a)图是以v 为根的有向图 它的DFS生成树和BPS生成树分别如图(b)和(c)所示
>
( )若G是非连通的无向图 则要若干次从外部调用DFS(或BFS)算法 才能完成对G的遍历 每一次外部调用 只能访问到G的一个
连通分量的顶点集 这些顶点和遍历时所经过的边构成了该连通分量的一棵DFS(或BPS)生成树 G的各个连通分量的DFS(或BFS)生成
树组成了G的DFS(或BFS)生成森林
( )若G是非强连通的有向图 且源点又不是有向图的根 则遍历时一般也只能得到该有向图的生成森林
【例】下图(a)所示的有向图 其DFS和BFS生成森林分别如(b)和(c)所示
> cha138/Article/program/sjjg/201311/23831
相关参考
普里姆(Prim)算法 ()算法思想 T=(UTE)是存放MST的集合 ①T的初值是(r¢) 即最小生成树初始时只有一个红点r没有红边 ②T经过n次如下步骤操作最后得到一棵含n个顶点n条
克鲁斯卡尔(Kruskal)算法 ()算法思想 ①T的初始状态 只有n个顶点而无边的森林T=(V¢) ②按边长递增的顺序选择E中的n安全边(uv)并加入T生成MST 注意 安全边指两个
最小生成树的概念和应用背景 最小生成树(MinimumSpanningTree)各边权的总和最小的生成树 MST性质 假设N=(VE)是一个连通网U是顶点集V的一个非空子集若(UV)是一条具有最
在例及中已考察过这个问题因为具有n个顶点的无向网络G的每个生成树刚好具有n条边所以问题是用某种方法选择n条边使它们形成G的最小生成树至少可以采用三种不同的贪婪策略来选择这n条边这三种求解最小生成树
生成树(SpanningTree)从连通图的任何一个顶点出发进行遍历遍历过程中经过的边加上图的所有顶点构成的子图称为图的生成树 深度优先生成树由深度优
.考虑右图 ()从顶点A出发求它的深度优先生成树 ()从顶点E出发求它的广度优先生成树 ()根据普利姆(Prim)算法 求它的最小生成树【上海交通大学六(分)】 在什么情况下Prim算法
.一带权无向图的邻接矩阵如下图试画出它的一棵最小生成树【浙江大学五 (分)】 .请看下边的无向加权图 ().写出它的邻接矩阵(分) ().按Prim算法求其最小生成树并给出构造最小
最小生成树的KRUSKAL算法是一种贪心法(GREEDY)( )【华南理工大学一(分)】 求最小生成树的普里姆(Prim)算法中边上的权可正可负( &
Prim(普里姆)算法适用于求______的网的最小生成树kruskal(克鲁斯卡尔)算法适用于求______的网的最小生成树【厦门大学一】 .克鲁斯卡尔算法的时间复杂度为______它对___
.试写出用克鲁斯卡尔(Kruskal)算法构造下图的一棵最小支撑(或生成)树的过程【吉林大学一 (分)】 求出下图的最小生成树【合肥工业大学四(分)】 cha138