Tarjan 算法笔记

Tarjan 系列算法笔记

0 概述

\(\text{Tarjan}\) 的核心思想:\(\text{dfn}\) 序与 \(\text{low}\) 数组

因此, \(\text{Tarjan}\) 的算法框架也是一个标准的 \(\text{dfs}\) 过程

\(\text{Juanzhang}\) 曾说过:

我到现在也没有理解 \(\text{Tarjan}\) 其中一些深奥的东西

希望我自己能够看到 \(\text{Juanzhang}\) 所看到的东西

笔记整理了如下算法:

  1. 割点与桥
  2. 点、边双联通分量
  3. 强联通分量
  4. 圆方树

1 dfn 与 low

1.1 dfn

\(\text{dfn}\) 数组所记录的是,该图中,在由一个点出发进行的 \(\text{dfs}\) 这个过程中,\(\text{dfn}\) 便为 \(\text{dfs}\) 到每一个点的时间戳 (由 \(1\) 开始)

简单记录下做题中用到的 \(\text{dfn}\) 的性质:

  1. \(\text{dfs}\) 的过程中,\(\text{dfn}\) 比某一个点的 \(\text{dfn}\) 大的点与该点的子树中的每一个点一一对应 (即可轻松判断是否在子树内)

在我看来,\(\text{dfn}\) 的意义在于,由于性质 \(1\),我们记录的 \(\text{dfn}\) 事实上暗含了一些信息,这些信息有如下作用:

  1. 给每一个点赋予了独一无二的编号
  2. 记录了一些关于子树的信息

1.2 low

\(\text{low}[\text{i}]\) 表示对于第 \(\text{i}\) 个节点,在 \(\text{dfs}\) 树上,以它为根的子树,除去它自己的所有节点的相邻节点的 \(\text{dfn}\) 的最小值

简单记录下做题中用到的 \(\text{low}\) 的性质:

  1. 容易想到,如果是一个树,那么这棵树上的任意一个节点,都有 \(\text{dfn}[\text{i}] = \text{low}[\text{i}]\)
  2. 但如果随便连一条本来不在树上的边 \((u, v)\)

2 割点与桥

割点的定义:

将该点割去后,即删除这个点和与之相邻的所有边之后,该图联通块数量增加的点称为割点

桥的定义:

将该边删除后,该图联通块数量增加的边称为边

转载于:https://www.cnblogs.com/blackwhitetony/p/11025810.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值