- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
强连通分支、桥和割点北京大学信息学院 郭炜本讲义部分内容参考/blog//blog/ 以及北京大学信息学院实验班袁洋、陈科吉同学讲义,还有其他一些网站恕不一一列出,特此致谢定 义在有向图G中,如果任意两个不同的顶点相互可达,则称该有向图是强连通的。有向图G的极大强连通子图称为G的强连通分支。转置图的定义:将有向图G中的每一条边反向形成的图称为G的转置GT。(注意到原图和GT的强连通分支是一样的)Korasaju算法求有向图强连通分支procedure Strongly_Connected_Components(G); begin 1.深度优先遍历G,算出每个结点u的结束时间f[u],起点如何选择无所谓。2.深度优先遍历G的转置图GT,选择遍历的起点时,按照结点的结束时间从大到小进行。遍历的过程中,一边遍历,一边给结点做分类标记,每找到一个新的起点,分类标记值就加1。 3. 第2步中产生的标记值相同的结点构成深度优先森林中的一棵树,也即一个强连通分量 end;证明参考:/Algorithm/ShowArticle.asp?ArticleID=58(a)为有向图G,其中的阴影部分是G的强连通分支,对每个顶点都标出了其发现时刻与完成时刻,黑色边为深度优先搜索的树 枝;(b)G的转置图GT 依次以b,c,g,h为起点做DFS, 得到4个强连通分量算法复杂度分析深度优先搜索的复杂度:Θ(V + E)计算GT的复杂度:0或者Θ(V + E)(临接表)所以总的复杂度为:Θ(V + E)非常好的算法!POJ2186:Popular Cows给定一个有向图,求有多少个顶点是由任何顶点出发都可达的。顶点数= 10,000,边数 = 50,000有用的定理:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达(由于无环,所以从任何点出发往前走,必然终止于一个出度为0的点)POJ2186: 解题思路1. 求出所有强连通分量2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。3. DAG上面如果有唯一的出度为0的点,则该点能被所有的点可达。那么该点所代表的连通分量上的所有的原图中的点,都能被原图中的所有点可达,则该连通分量的点数,就是答案。4. DAG上面如果有不止一个出度为0的点,则这些点互相不可达,原问题无解,答案为0POJ2186: 解题思路缩点的时候不一定要构造新图,只要把不同强连通分量的点染不同颜色,然后考察各种颜色的点有没有连到别的颜色的边即可(即其对应的缩点后的DAG图上的点是否有出边)。POJ1236: Network of Schools题目大意:N(2N100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。ACM1236: Network of Schools给定一个有向图,求:1) 至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点2) 至少要加多少条边,才能使得从任何一个顶点出发,都能到达全部顶点顶点数= 100有用的定理:有向无环图中所有入度不为0的点,一定可以由某个入度为0的点出发可达。(由于无环,所以从任何入度不为0的点往回走,必然终止于一个入度为0的点)ACM1236: 解题思路1. 求出所有强连通分量2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。3. DAG上面有多少个入度为0的顶点,问题1的答案就是多少ACM1236: 解题思路在DAG上要加几条边,才能使得DAG变成强连通的,问题2的答案就是多少加边的方法:要为每个入度为0的点添加入边,为每个出度为0的点添加出边假定有 n 个入度为0的点,m个出度为0的点,max(m,n)就是第二个问题的解(证明难,略)有向图强连通分支的Tarjan算法思想:做一遍DFS,用dfn[i]表示编号为i的节点在DFS过程中的访问序号(也可以叫做开始时间)用low[i]表示i节点DFS过程中i的下方节点所能到达的开始时间最早的节点的开始时间。初始时dfn[i]=low[i]在DFS过程中会形成一搜索树。在搜索树上越先遍历到的节点,显然dfn的值就越小。DFS过程中,碰到哪个节点,就将哪个节点入栈。栈中节点只有在其所属的强连通分量已经全部求出时,才会出栈。如果发现某节点u有边连到搜索树中栈里的节点v,则更新u的low 值为dfn[v](更新为low[v]也可以)。有向图强连通分支的Tarjan算法如果一个节点u已经DFS访问结束,而且此时其low值等于dfn值,则说明u可达的所有节点,都不能到达任何在u之前被DFS访问的节点
您可能关注的文档
- 开展活动的过程性材料4.doc
- 开展网络校本研修_促进教师专业成长.doc
- 开幕式文本(4.10)(disiban).doc
- 开平市赤坎镇小学校.doc
- 开开心心海南行.doc
- 开心里个来_占德凤.doc
- 开放性活动质性评价量表的开发与应用开放性活动质性评价量表的开发与应用2.doc
- 开服统计.docx
- 开盘方案——余琪.doc
- 开盘答谢晚会方案(新改2月28日).doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)