单连通图的判断

本文详细介绍了单连通图的判断算法,包括通过DFS遍历寻找前向边和横向边来确定图是否为单连通图。算法的时间复杂度为O(V*(V+E))。同时,文章对算法的正确性进行了必要性和充分性的证明,并针对证明中的漏洞给出了修补思路,讨论了不存在公共祖先的两种路径情况。
摘要由CSDN通过智能技术生成

在这里插入图片描述

  1. 单连通图的判断算法:
    (1)对每个点进行dfs得到一棵dfs树;
    (2)判断是否存在前向边和横向边,若有则必定存在两个点之间有至少2条简单路径,因此该图不属于单连通图;
    (3)若对所有dfs树不存在(2)中情况,则该图是单连通图。
  2. 算法时间复杂度:对 V V V个点进行dfs,每次dfs的时间为 O ( V + E ) O(V+E) O(V+E),因此总时间复杂度为 O ( V ∗ ( V + E ) ) O(V*(V+E)) O(V(V+E)).
  3. 算法正确性证明:
    必要性(对于单连通图,每个点出发的dfs树中不存在前向边和横向边):假设点A,B之间存在前向边AB,根据前向边的定义,应存在另外一条由树边组成的路径A->B,不满足至多1条简单路径的要求;
    假设点A,B之间存在横向边AB,根据算法步骤易知A,B应在以某个点为根的dfs树中,设为R,那么在点R,B之间至少存在R->A->B和R->B两条路径,不满足至多1条简单路径的要求;
    充分性(对于一个图,每个点出发的dfs树中不存在前向边或横向边则是单连通图):等价于证明逆否命题,若图中A,B两个点之间存在2条路径,则一定对应存在的前向边或者横向边。设A,B之间存在路径 ( A , x 1 , x 2 , . . . , x n , B ) (A,x_1,x_2,...,x_n,B) (A,x1,x2,...,xn,B)以及 ( A , y 1 , y 2 , . . . , y m , B ) (A,y_1,y_2,...,y_m,B) (A,y1,y2,...,ym,B),
    m , n m,n m,n均大于0时,根据白色路径定理, x i x_i xi y j y_j yj以及B均为A的子孙,因此 ( x n , B ) (x_n,B) (xn,B) ( y m , B ) (y_m,B) (ym,B)必有一个是横向边;(此处有纰漏)
    m = 0 , n > 0 m=0,n>0 m=0,n>0时, ( A , B ) (A,B) (A,B)是前向边或者 ( x n , B ) (x_n,B) (xn,B)是横向边;当 m > 0 , n = 0 m>0,n=0 m>0,n=0时类同。
    以上。

以下是老师ppt上的证明:
大题思路相同,但我证明最后“因此 ( x n , B ) (x_n,B) (xn,B) ( y m , B ) (y_m,B) (ym,B)必有一个是横向边”的论断是错的,可以修补。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
分为两条路径上存在v的后代和存在v的后代两种情况。第一种可以断定 ( x r , v ) (x_r,v) (xr,v) ( y t , v ) (y_t,v) (yt,v)中有一条是前向边或交叉边;第二种,存在这样一条搜索路径 u → y j → v → w → x k → v u\rightarrow y_j \rightarrow v \rightarrow w \rightarrow x_k \rightarrow v uyjvwxkv(如下图所示,标号对应关系: j = t j=t j=t k = r k=r k=r),此时 ( y k , v ) (y_k,v) (yk,v)是树边,而 ( x j , v ) (x_j,v) (xj,v)是返回边,但我们仍可以找到这样的两条边 ( x i − 1 , x i ) (x_{i-1},x_i) (xi1,xi) ( y i − 1 , y i ) (y_{i-1},y_i) (yi1,yi)其中有一条是前向边或交叉边。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u小鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值