数据结构之图形结构二

图形的遍历

图形遍历的方法有两种:深度优先遍历广度优先遍历

深度优先遍历有点类似于前序遍历:从图形的某一点开始遍历,被访问过的顶点就做上已访问的记号,接着遍历此顶点的所有相邻且未访问过的顶点中的任意一个顶点,并做上已访问的记号再已该点为新的起点继续进行深度优先的搜索。

注意了:这种图形遍历方法结合了递归和堆栈两种数据结构的技巧。


广度优先遍历遍历方式是队列和递归技巧来遍历,也是从图形的某一顶点开始遍历,被访问过的顶点就做上已访问的记号


生成树(Spanning Tree)

定义:一个图形的生成树以最少的边来连接图形中所有的顶点,且不造成回路的树状结构。(我们会发现图的遍历结果就可以当作生成树序列)

如果使用深度优先遍历所产生的生成树就叫深度优先生成树。若是广度优先则叫做广度优先生成树

所以:一个图形通常具有不止一条生成树


MST生成树

给图的边加一个权重值,这叫做加权图,生成最小成本生成树是相当重要的

以贪婪法则为基础,求一个无向连通图的最小生成树的常见方法有:Prim's算法和Kruskal's算法

Prim's算法

产生U,V两个集合,从V-U集合里,找出V集合中每一步形成最小成本边的点,加入U,反复执行同样的步骤,直到U=V集合

Kruskal's算法

Kruskal算法是将各边线按照权值大小由小到大排列,接着从权值最低的边线开始建立最小成本生成树,如果加入的边线会造成回路则舍弃不用,直到加入了n-1个边线为止


图形的最短路径

单点对全部顶点:Dijkstra算法

顶点两两之间的最短距离:Floyd算法


AOV网络与拓扑排序

网络图形常用于规划大型项目,我们称用图形顶点来代表一项工作的网络为顶点活动网(简称AOV网络)

拓扑排序与拓扑次序:如果在AOV网络中,具有部分次序的关系(即有某几个顶点为前驱),拓扑排序的功能就是将这些部分次序(Partial Order)的关系,转换成线性次序(Linear Order)的关系。

例如i是j的前驱,在线性次序中,i仍排在j的前面,具有这种特性的线性次序就称为拓扑次序(Topological Order)。

下面我们为拓扑排序与拓扑次序进行摘要性的说明:

1.产生拓扑次序必须存在的条件是一个无回路的图形,由于AOV网络代表各项小工作的先后完成顺序图,所以没有循环工作的问题,也就是说AOV网络经过拓扑排序后可以产生有线性次序关系的拓扑次序。

2.在一个AOV网络经过拓扑排序后所产生的拓扑次序可能有一个以上,亦即拓扑次序并不是唯一的。

如果同时有两个顶点没有前驱顶点,那结果就不是唯一解。

另外如果每一个顶点网络都有前驱,那表示此网络含有回路即有环,则无法进行拓扑排序。


AOE网络

AOV网络是指在有向图形中的顶点表示一项工作,而边表示顶点之间的先后关系。
还有一个新名词AOE(Ativity On lEdge)。 所谓AOE是指事件(event)的行动(action)在边上的有向图
其中的顶点作为各“进入边事件”(imeident in edge)的汇集点,当所有“进入边事件”的行动全部完成后,才可以开始“外出地事件”(lneident out edge)的行动。

在AOE网络中会有源头顶点和目的顶点。从源头顶点开始计时执行各边上事件的行动,到目的顶点完成为止所需的时间为所有事作完成的总时间。 

熟悉一下概念:

关键路径

最早时间

最晚时间

关键顶点



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值