首页 > 其他分享 >Tarjan

Tarjan

时间:2023-09-18 21:44:19浏览次数:43  
标签:Tarjan 子树 到达 割点 dfn 非树边 可达性

无向图的割点

先给出几个定理:

  • A:一棵树中的所有结点对于任意结点的可达性一致。

记 \(p(u,v)表示u和v可以相互到达\)。
也就是说,如果G是一棵树,那么 \(\forall u,v \in G,\forall k,p(u,k) \iff p(k,u)\)。

  • B:一个无向图的DFS树中,对于任意一个非树边\((u,v)\),\(u,v\)一定有祖先孩子关系。

如果连到了左边的兄弟上,那么DFS树就不会是当前形态了,\((u,v)\)一定是非树边。

同样,如果连到了右边的兄弟上,也是矛盾。(画个图就知道了)

所以,只可能连到祖先或者子树中的孩子上。

  • C:点u是割点等价于以u为根的子树G中,存在一个点v,使得v不通过点u,能够到达的所有点都在G中。

正方向:如果不存在,也就是说G里面的x,都可以不通过点u到达G外的点,删去u后,连通性不变,与u是割点矛盾。

反方向:删去点u后,点v此时能到达的点就是原图中不通过点u能到达的点,而点v不能到达G外的点,由定理A,v所在的子树(挂在u上)会形成一个新的连通分量,所以u是割点。

  • D:定义 \(low[u]\)(\(u\)的父亲是\(fa\)) 为点u通过一条非树边能够到达的时间戳最小的点的时间戳(和\(dfn[u]\)取个最小值)。那么u是割点等价于\(\exists v \in E(u),low[v]\ge dfn[u]\),其中 \(E(u)\) 是u的儿子的集合。

正方向:如果u是割点,由C,存在一个v,……。在这个v所属的挂在u上的子树中,由A,所有点的可达性一致,所以找到该树中u的直接儿子s,则s也满足……。从s出发,只经过非树边的路径,若不经过u,所以可到达的所有点的一定在\(G(u)\)中,满足;若经过u,也满足。

反方向:

标签:Tarjan,子树,到达,割点,dfn,非树边,可达性
From: https://www.cnblogs.com/zhangchenxin/p/17713082.html

相关文章

  • tarjan 求强连通分量
    for(inti=0;i<n;i++)//图可能是不连通的,因此要表里每个点 if(!dfn[i]) tarjan(i);voidtarjan(intu){ inti,v; dfn[u]=low[u]=ntime++; z.push(u); f[u]=1; for(i=0;i<q[u].size();i++){ v=q[u][i]; if(!dfn[v]){ tarjan(v); low[u]=min(low[u],low[v]);......
  • tarjan强连通分量
    intscc[N],sc;//结点i所在scc的编号intsz[N]; //强连通i的大小//dfn(u)为搜到结点u时的次序编号//low(u)为u或u的子树能够追溯到的最早的栈中节点的次序号//当dfn(u)=low(u)时,以u为根的搜索子树上的所有节点是一个强连通分量voidtarjan(intu){ dfn[u]=low[u]......
  • tarjan求点双连通分量
    边双连通分量见tarjan求边双连通分量部分参考lyd《算法竞赛进阶指南》前置知识给定无向连通图\(G=(V,E)\)割点:若对于\(x\inV\),从图中删去x及其连边,\(G\)分裂成两个及以上不相连子图,那么x是\(G\)的割点时间戳:在深度优先访问时按照每个节点第一次被访问的时间顺......
  • tarjan求边双连通分量
    本文仅为作者的一些学习笔记,内容可能具有局限性,比如并未就“点双连通分量”进行整理。部分参考lyd《算法竞赛进阶指南》前置概念桥(割边):若\(e\inE\),如果删去e后图分裂成两个子图,那么e这条边就为桥(割边)。时间戳:在深度优先访问时按照每个节点第一次被访问的时间顺序,依次......
  • Tarjan 求割点和桥
    欢迎批评指正!前置芝士割点:对于一个点\(u\),若删除\(u\)会使当前无向图中连通分量增多,我们就称\(u\)为该图的割点。桥(割边):同理,对于一条边\((u,v)\),若删除\((u,v)\)会使当前无向图中连通分量增多,我们就称\((u,v)\)为该图的桥。Tarjan求强连通分量Tarjan求割点设......
  • Tarjan 求强连通分量
    欢迎批评指正!前置芝士什么是强连通分量(\(\text{SCC}\))?强连通分量,一般指有向图的极大强连通子图,在这些子图中,所有点双向可达。dfs序:即dfs过程中访问点的顺序。dfs生成树:由dfs过程中访问的边组成的边集和原图的点集组成的树。树边,非树边:属于dfs过程中访问的边为......
  • tarjan
    割点与桥简介割点:对于一个无向图,如果把一个点及与其相连的边删除后这个图分裂为两个及两个以上不连通的子图,那么这个点就是这个图的割点(又称割顶)。割边:对于一个无向图,如果把一条边删除后这个图分裂为两个不连通的子图,那么这个点就是这个图的割边(又称桥)。tarjan求割点定理:如......
  • Tarjan基础用法
    \(\operatorname{Tarjan}\)基础用法目录\(\operatorname{Tarjan}\)基础用法\(\operatorname{Tarjan}\)求最近公共祖先前置芝士实现过程例题\(\operatorname{Tarjan}\)求割点、割边前置芝士\(\operatorname{Tarjan}\)求割点\(\operatorname{Tarjan}\)求割边例题\(\operatorn......
  • [Tarjan] 学习笔记
    原理强连通分量讲得超级屌,这次比董晓好得多voidtarjan(intx){ dfn[x]=low[x]=t++; s.push(x); in[x]=true; for(inti=h[x];i;i=e[i].next) { inty=e[i].to; if(!dfn[y]) { tarjan(y); low[x]=min(low[x],low[y]); } elseif(i......
  • Tarjan学习笔记
    TarjanTarjan算法是图论中非常常用的算法之一,能解决强连通分量,双连通分量,割点和桥,求最近公共祖先(LCA)等问题。Tarjan算法是基于深度优先搜索的算法,用于求解图的连通性问题。割点如果从图中删除节点\(x\)以及所有与\(x\)关联的边之后,图将被分成两个或两个以上的不相连的......