Tarjan
无向图的割点
先给出几个定理:
- A:一棵树中的所有结点对于任意结点的可达性一致。
记
也就是说,如果G是一棵树,那么
- B:一个无向图的DFS树中,对于任意一个非树边
, 一定有祖先孩子关系。
如果连到了左边的兄弟上,那么DFS树就不会是当前形态了,
同样,如果连到了右边的兄弟上,也是矛盾。(画个图就知道了)
所以,只可能连到祖先或者子树中的孩子上。
- C:点u是割点等价于以u为根的子树G中,存在一个点v,使得v不通过点u,能够到达的所有点都在G中。
正方向:如果不存在,也就是说G里面的x,都可以不通过点u到达G外的点,删去u后,连通性不变,与u是割点矛盾。
反方向:删去点u后,点v此时能到达的点就是原图中不通过点u能到达的点,而点v不能到达G外的点,由定理A,v所在的子树(挂在u上)会形成一个新的连通分量,所以u是割点。
- D:定义
( 的父亲是 ) 为点u及其孩子通过一条非树边能够到达的时间戳最小的点的时间戳(和 取个最小值)。那么u是割点等价于 ,其中 是u的儿子的集合。
正方向:如果u是割点,由C,存在一个v,……。在这个v所属的挂在u上的子树中,由A,所有点的可达性一致,所以找到该树中u的直接儿子s,则s也满足……。从s出发,只经过非树边的路径,若不经过u,所以可到达的所有点的一定在
反方向:v出发的所有路径中(不经过u),可以分为经过非树边和不经过非树边两种。
经过非树边的情况:假设终点不在
不经过非树边:走的全部都是树边,肯定就不会跑出子树了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现