首页 > 其他分享 >[学习笔记] Tarjan 连通性全家桶

[学习笔记] Tarjan 连通性全家桶

时间:2023-10-04 23:11:18浏览次数:41  
标签:Tarjan 连通性 text DCC 笔记 割边 割点 当且 节点

拜谢陈老师的 PPT!!!

无向图

割点

若点 \(x\) 不为搜索树的根节点,则 \(x\) 是割点当且仅当搜索树上存在一个 \(x\) 的子节点 \(y\) 满足: \(dfn_x\le low_y\)。特别地,当 \(x\) 是搜索树的根节点时,则 \(x\) 是割点当且仅当有两个点 \(y_1,y_2\) 满足上述条件。

割边

边 \((x,y)\) 是桥当且仅当搜索树上存在 \(x\) 的子节点 \(y\) 满足:\(dfn_x<low_y\)。

\(\text{v-DCC}\)

为求出点双连通分量,则需在 Tarjan 算法的过程中维护一个栈,并按如下操作维护:

  1. 将第一次被访问到的点入栈。
  2. 当割点判定法则成立时:从栈顶开始弹,直到弹出 \(y\),且弹出的所有点都与 \(x\) 构成一个 \(\text{v-DCC}\)。

\(\text{e-DCC}\)

求 \(\text{e-DCC}\) 比 \(\text{v-DCC}\) 简单多了。

求出所有割边,然后再跑一遍 dfs,过程中不走割边,每个连通块就都是一个 \(\text{e-DCC}\)。

\(\text{v-DCC}\) 缩点

\(\text{v-DCC}\) 和割点都分别看做一个点,然后根据原图关系连边。

\(\text{e-DCC}\) 缩点

\(\text{e-DCC}\) 作为点,割边作为边,连边即可。

有向图

我不会。

标签:Tarjan,连通性,text,DCC,笔记,割边,割点,当且,节点
From: https://www.cnblogs.com/y1wei/p/tarjan_tarjan_tarjan.html

相关文章

  • 笔记——线段树
    蓝月の笔记——线段树篇在树状数组中,我们讲解了关于单点修改区间查询的操作。今天,我们要讲一种更加高级的数据结构,他解决的是区间修改区间查询的问题多了一个区间当然更高级啦。这个数据结构就是——线段树Luogu-P3372给定一个长度为\(n\)的序列\(a_1,a_2,\cdots,a_n\)......
  • Linux运维学习笔记
    此笔记为学习https://www.bilibili.com/video/BV1nW411L7xm/?vd_source=3f851e85e66ef33269a2eefee664cec2的学习记录,目前持续更新中,希望能找到运维的实习吖 O(≧▽≦)OLinux的终端终端组成部分Linux关机命令shoutdown-hnow(正常关机)halt(关闭内存)init0使用VMware备......
  • 活动报名与缴费小程序开发笔记一
    项目背景活动报名与缴费小程序的开发背景主要源于以下几个因素:1.数字化时代的需求:随着移动互联网和智能手机的普及,人们习惯使用手机进行各种活动。传统的纸质报名表格和线下缴费方式变得相对繁琐,而数字化报名与缴费小程序提供了更便捷的解决方案。2.提高效率和减少人力成本:对于活......
  • 流畅的python笔记 (二) 2.序列构成的数组
    内置序列类型分类1:容器序列(能存放不同类型):list,tuple,collections.deque扁平序列(不能存放不同类型):str,bytes,bytearray,memoryview,array.array分类2:可变序列(能被修改):list,bytearray,array.array,collections.deque,memoryview不可变序列:tuple,str,bytes列表推导......
  • Python笔记
    第一章、Python概述1.1 扩展库安装方法使用pip命令安装扩展库。在cmd命令行中输入pip,回车后可以看到pip命令的使用说明。1.2 常用的pip命令pip命令示例说明pipfreeze[>requirements.txt]列出已安装扩展库及其版本号(不知道怎么用。。?)pipinstallSomePacka......
  • 【做题笔记】dp,但是国庆限定版
    Day1方块消除传送门看到这个数据范围就可以猜测正解是\(O(n^4)\)的dp,与这个差不多相符合的可以想到区间dp。然后大胆猜测一下就是区间dp,令\(dp[i][j]\)表示消除掉\([i,j]\)后的最大价值,这个显然可以从长度更短的区间转移过来。所以此题我们可以从区间dp的方向思考......
  • 《敏捷软件需求》阅读笔记一
    以下是关于敏捷软件需求这本书籍的前八章的阅读心得体会,涵盖了每章的主要观点和个人体会:第一章:敏捷方法概述    第一章介绍了敏捷方法的起源和核心原则,其中最关键的原则是个体与交互、工作的软件、客户合作和响应变化。我学到了敏捷方法的灵活性和迭代开发是应对不断变化......
  • HTML学习笔记——简单介绍
    什么是HTMLHTML:HyperTextMarkupLanguageHTML是一种用来告知浏览器如何组织页面的标记语言。其由一系列的元素组成,这些元素用来包围或者标记不同部分的内容,让它以某种方式呈现或者工作。简单拆分一个HTML元素观察下面一个HTML元素<p>HelloWorld!</p><p>HelloWo......
  • Java 学习笔记一
    dos环境下(Windows即cmd)的Java命令先用javac文件名.java;命令,编译java文件,生成一个后缀为class、名与类名相同的文件。再用java类名命令,执行文件。注释当类名前的修饰符为public时,类名必须和源文件名一致。并且以上操作不能执行带package的java文件。和C......
  • Qemu源码分析(11)—Apple的学习笔记
    一,前言昨天了解了qemu中虚拟开发板的内存创建,接着再了解下中断创建和使用。二,分析昨天看了flash初始化,后面的我理解应该一样,接着发现sram初始化后,本来以为和flash是一样的,结果多了如下一句,通过注释也很好理解就是把1个bit展开为了1个byte,这样1M的sram变成了32M空间。//Bitbandthe......