网站大量收购闲置独家精品文档,联系QQ:2885784924

图连通性总结.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图连通性总结.doc

图的连通性总结 boboo 目录 图的遍历及应用 DFS遍历 DFS树的边分类 DFS树的性质 拓补排序 欧拉回路 无向图相关 求割顶 求图的桥 求图的块 有向图相关 求强连通分量(SCC划分) 求传递闭包 最小环问题 一、图的遍历及应用 1.1 DFS遍历 DFS是求割顶、桥、强连通分量等问题的基础。 DFS对图进行染色, 白色:未访问; 灰色:访问中(正在访问它的后代); 黑色:访问完毕 一般在具体实现时不必对图的顶点进行染色,只需进行访问开始时间和访问结束时间的记录即可,这样就可以得出需要的信息了。 -发现时间D[v]:变灰的时间 -结束时间f[v]:变黑的时间 -1=d[v]f[v]=2|V| 伪代码: DFS(G) for every vertex u ∈ V[G] do color[u] = WHITE       π[u] = NIL time = 0     for every vertex u ∈ V[G] do       if color[u] = WHITE then DFS_VISIT(u)   DFS_VISIT(u)     color[u] = GRAY d[u] = time += 1     for every vertex v ∈ Adj[u] do       if color[v] = WHITE then         π[v] = u         DFS_VISIT(v)     color[u] = BLACK     f[u] = time += 1   A)   B)   C)   D)   我们可以把DFS遍历算法做一下补允,使之遇到边时能对其进行分类。算法的核心思想在于可以根据第一次被搜索的边所达到的结点v的颜色来对该边(u, v)进行分类(但正向边和交叉分不能用颜色区分出)。   1、白色表明它是树枝。   2、灰色表明它是反向边。   3、黑色表明它是正向边或交叉边,其中,如果d[u] d[v],则边(u, v)就是正向边;反之,或d[u] d[v],则(u, v)就是交叉边。   上述证明比较简单,可根据定义证明。另外,如果图G为无向图的话,那么G的深度优先搜索树中的边只能是树枝或反向边。 在程序具体使显示颜色值以及时间戳可以省略, 用意义更加明确的pre数组和post代替d和f数组, pre[u]和post[u]代表点u的先序/后序编号, 则检查 (u,v)可以写为 if (pre[v] = -1) then dfs(v) //树边, 递归遍历 else if (post[v] = -1) then show(“B”) //后向边 else if (pre[v] pre[u]) then show(“F”) // 前向边 else show(“C”); // 交叉边 ? pre和post的初值均为-1(0), 方便了判断 程序实现: 1.3 DFS树的性质 ? 括号结构性质 对于任意结点对(u, v), 考虑区间[d[u], f[u]]和[d[v], f[v]], 以下三个性质恰有一个成立: – 完全分离 – u的区间完全包含在v的区间内, 则在dfs树上u是v的后代 – v的区间完全包含在u的区间内, 则在dfs树上v是u的后代 ? 定理1(嵌套区间定理): 在DFS森林中v是u的后代当且仅当d[u]d[v]f[v]f[u], 即区间包含关系. 由区间性质立即得到. ? 定理2(白色路径定理): 在DFS森林中v是u的后代当且仅当在d[u]时刻(u刚刚被发现), v可以由u出发只经过白色结点到达. 证明: 由嵌套区间定理可以证明 1.4 拓补排序 算法一: ? 对图G使用DFS算法, 每次把一个结点变黑的同时加到链表首部 ? 定理1: 有向图是DAG当且仅当没有B边 – 如果有B边, 有环(易证) – 如果有环c, 考虑其中第一个被发现的结点v, 环中v的上一个结点为u, 则沿环的路径v??u是白色路径, 有白色路径定理, u是v的后代, 因此(u,v)是B边 ? 定理2: 该算法正确的得到了一个拓扑顺序 算法二: 其实还有更方便的方法,不必进行dfs遍历,统计入度的情况即可。 程序实现:(这里只给出DFS的方法) 1.5 欧拉回路 每条边经过一次且仅一次的路径。 经典的递归实现. 算法:从一个点u出发DFS,每次标记边(u,v)和(v,u),递归调用EulerRoute(v),然 后把(u,v)放到栈中. 程序实现: 二、无向图

文档评论(0)

克拉钻 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档