- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本术语 图的表示 图的搜索算法 图与树的联系
*5.11 每一对顶点间的最短路径 基本思想: 假设求顶点vi到顶点vj的最短路径。如果从 vi 到 vj 存在一条长度为C[i][j] 的路径,该路径不一定是最短路径,尚需进行 n 次试探。首先考虑路径 (vi, v0,vj) 是否存在。如果存在,则比较 (vi,vj) 和 (vi,v0,vj) 的路径长度取长度较短 者为从vi到vj的中间顶点的序号不大于0的最短路径。假设在路径上再增加一 个顶点v1,也就是说,如果 (vi,…,vj)和 (v1,…,vj) 分别是当前找到的中间顶点的 序号不大于0的最短路径,那么 (vi,…,v1,…,vj)就是有可能是从vi到vj的中间顶点 的序号不大于1的最短路径。 将它和已经得到的从vi到vj中间顶点序号不大于0的最短路径相比较,从 中选出中间顶点的序号不大于1的最短路径,在增加一个顶点v2, 继续进行试 探。 一般情况下,若 (vi,…,vk) 和 (vk,…,vj) 分别是从 vi到vk和从vk到Vj的中间 顶点序号不大于 k-1 的最短路径,则将 (vi,…,vk,…,vj) 和已经得到的从 vi到 vj 且中间顶点序号不大于k-1的最短路径相比较,其长度较短者便是从vi到 vj 的 中间顶点的序号不大于 k 的最短路径。 Floyd算法: 输入:表示有向图G = ( V, E )的邻接矩阵C 输出:表示任意两点之间最短路长的矩阵A 算法要点 Void Floyd( A,C,n) { for ( i = 1; i = n; i++ ) for ( j = 1; j=n; j++ ) A[i][j] = C[i][j] ; for ( k = 1; k = n; k++ ) for ( i = 1; i = n; i++ ) for ( j = 1; j =n; j++ ) if ( A[i][k] + A[k][j] A[i][j] ) A[i][j] = A[i][k] + A[k][j] ; } 时间复杂度:O(n3) 求有向图的中心点: 定义:设G = ( V , E )是一个有向图,d[i][j]表示从 I 到 j 的最短 距离。对任一点 k, 称: E( k ) = max { d[i][k] } i ∈V 为结点k的偏心度,而称具有最小偏心度的结点为图G的 中心点. a b d e c 1 1 2 2 3 4 5 7 e 5 d 8 c 6 b ∞ a 偏心度 结点 0 1 3 5 7 ∞ 0 2 4 6 ∞ 3 0 2 4 ∞ 1 3 0 7 ∞ 6 8 5 0 最短路径矩阵D 算法步骤: 第一步:调用Floyd算法,求每一对顶点间的最短路径矩阵D 第二步:对矩阵D的每一列求最大值,即为各顶点j的偏心度。 第三步:求具有最小偏心度的顶点k,即为中心点。 图 图的ADT 数学模型 操作集 图的存储结构 邻接矩阵 邻接表 有向图 无向图 有向网 无向网 图的遍历 深度优先(DFS) 广度优先(BFS) 最小生成树 拓扑序列 最短路径 单源最短路径 每一对顶点间最短路径 网状结构 层次结构 线性结构 数组 队列 其它 典型算法 其它 常规 遍历 链式 顺序 物理结构 ADT 定义 逻辑结构 有向图 无向图 树 二元树 串 栈 线性表 图 树 线性表 三大 数据结构 类型 V1 V2 V3 V4 V5 V6 V9 V7 V8 V1 V2 V3 V2 V4 V5 V6 V9 V7 V8 V4 V6 无向图和它的双连通分量 图G 图 G 的 双 连 通 分 量 (1) (2) (3) (4) 5.5.2 求关节点—对图进行一次先深搜索便可求出所有的关节点 若生成树的根有两株或两株以上子树,则此根结点必为关节点 (第一类关节点)。因为图中不存在连接不同子树中顶点的边,因此,若删去根顶点,生成树变成生成森林。 若生成树中非叶顶点v,其某株子树的根和子树中的其它结点均没有指向v 的祖先的回退边,则v 是关节点(第二类关节点)。 因为删去v,则其子树和图的其它部分被分割开来 1 a b d e c f g 2 3 4 5 6 7 由先深生成树可得出两类关节点的特性: g c a f e d b 定义 low[v]: 设对连通图G=(V,E)进行先深搜索的先深编号
文档评论(0)