图连通性分析:桥与割点判定方法.pdfVIP

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

7.23总结

今天我们学习了关于图的连通性的一些问题。

图本身是连通的,否则没什么好研究的。

而在无向图和有向图上,分别有一些关于连通的问题。

无向图:

桥:

在一个无向图上,删掉一条边,使得图不相连,这条边叫做桥。

换句话说,删掉一条边后,两边的点不连通,这条边就是桥。

桥肯定不会在环上,因为删除这条边后,两边的点肯定还有一个路径相连。

所以我们找桥,可以与环相关。

算法:

我们在DFS或者BFS的时候,如果X找到一个已经找过的点Y,那么,这说明一定有

环,因为我们可以找到两条简单路径从X到Y,一条是新找到的,一条是过来X的边。

但是,这样找到的不一定是最大的环,所以我们要试着记录找到的最早的节点。

我们试着用DFS来解决,

我们在DFS的过程中,如果X找到了已经找过的点Y,那么Y肯定是X的祖先。

因为,如果Y不是X的祖先,例如A和B,

反证:假设A不是X的祖先。

因为A先搜索,那么A到X有路,X肯定是A的后代,与条件。

所以X找到的已经找过的点一定是X的祖先。

怎样找到的环才是最大的呢?

很明显找到最早的祖先就是最大的环。

为了表示最早的祖先,我们在DFS时加上时间戳。最早的祖先,也就是时间戳最小的

祖先。我们设节点x的时间戳是id[x],能找到的最早的祖先的时间戳是low[x]。

那么,很明显low[x]=min{low[y]},y是x的儿子。

如果low[y]id[x],说明这个儿子最早能找到的祖先是x后代,那么,y所在的环

肯定不包括x,也就是说,x和y不在一个环上,所以x到y的边是桥。

总的来说,算法是这样的:在DFS的过程中,打上时间戳,一开始,每一个节点的low

值是它自己的id,DFS它的子节点,每一个节点的low值是它的所有子节点的low的最

小值,如果有一个子节点的low值大于它的id,则它和这个子节点的边是桥。

割点:

在一个无向图上,删除掉一个点,使得图不连通,则这个点叫做割点。

割点和桥很类似,也和环有关,但是,割点可以在环上。

如上图中,红色的点是割点,同时,它们都在环上。

我们可以看出,红色的点之间的边是桥,桥两边的点肯定是割点,因为删掉任意一个点

后,也就相当于删除掉了桥。但是,也有特例,如果桥的一边只有一个点,那么这个点不是

割点。(如下图蓝色的点。)

我们可以得到启示:用类似求桥的算法求割点。

算法:

我们看DFS树上,割点的特点。

我们从Y点找到了它的祖先X点,那么,Y点的low值小于Y的id,Y不是割点。

同理,Y的父亲节点也不是割点。

但是虽然A的low值比A的id小,但是A是割点,因为我们可以看出,AB之间有一

座桥。也就是说,找出最大的环以后,如果有任意一个节点A连到了一个不在环上的节点B,那

么A肯定是割点。因为B不在环上,所以A到B只有一条路,也就是桥,而且A在一个环

上,桥的这边不可能只有A一个节点,所以A肯定是割点。也就是说,只要A有一个子节

点B的low比A的id大,那么A就是割点。

我们再看X,X在环上,但是它和父亲节点不在同一个环上,low[x]id[x],x也

是割点。X是割点的理由和A的很像,但是X连到的是父亲节点,A连到的是子节点。我们

又得到一种判断方法:如果一个节点X的low[x]=id[x],那么它肯定是割点。

B也是割点,它和X一样,low[B]id[B],所以它是割点。

我们还有一个特殊的点要判断:根。

这些搜索树中,红色的节点是根。

我们可以看出,第一个不是割点,它只有一个子节点,不可能是割点。

第二个是割点,删掉它,它的左右子树就不连通了。

第三个是割点,删掉它,它的所有子树都不连通了。

我们可以看出:当根的子树数量大于1时,它是割点。

因为搜索树中,每一个节点能找到的比它更早的节点只可能是祖先节点,所以两棵子树

之间不能有,也就是说,两棵子树之间,除了根,没有别

文档评论(0)

159****9610 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6044052142000020

1亿VIP精品文档

相关文档