首页 > 其他分享 >tarjan学习笔记

tarjan学习笔记

时间:2024-04-21 20:44:22浏览次数:26  
标签:tarjan 结点 笔记 Subtree 学习 dfn 搜索 low

在 Tarjan 算法中为每个结点u维护了以下几个变量:
dfn[u]:深度优先搜索遍历时结点u被搜索的次序。
low[u]:设以u为根的子树为Subtree(u)。 low[u]定义为以下结点的dfn的最小值: 
Subtree(u)中的结点;
从Subtree(u)通过一条不在搜索树上的边能到达的结点。

如何计算low?
首先让low[x]=dfn[x](根据定义,最大也不过是dfn[x])
若在搜索树上x是y的父节点,则low[x]=min(low[x],low[y]) 递归求解
若无向边(x,y)不是搜索树上的边,则low[x]=min(low[x],dfn[y])

性质:
一个结点的子树内结点的 dfn 都大于该结点的 dfn。
从根开始的一条路径上的 dfn 严格递增,low 严格非降。

感性理解:low[x]就是从以x为根的搜索树子树内能到达的最小dfn

标签:tarjan,结点,笔记,Subtree,学习,dfn,搜索,low
From: https://www.cnblogs.com/wuhupai/p/18149476

相关文章

  • 前端资源共享方案对比-笔记:iframe/JS-SDK/微前端
    vue2异步加载之前说过,vue3还是之前的方法,只是把 i18n.setLocaleMessage改为i18n.global.setLocaleMessage但是本文还是详细说一遍:为什么需要异步加载语言包主要还是缩小提代码包,没有按需加载前,语言包内容太多好几屏幕全部是,虽然从webpack-analysis看图里面占比可以忽略不计......
  • 第15.16.17章学习笔记
    实际上的问题II15.1大整数的运算所有公钥中的计算都是基于大整数运算。如我们曾提及的,恰当地实现大整数运算并不是一件容易的事情。大多数的处理例程总是或多或少地与平台相关。能够通过平台特性得到的有效率提升总是难以发挥实际作用。比如,多数CPU有一种带进位加法运算(add-wi......
  • 1月20日,RPA 学习天地成功举办基于弘玑RPA公开课,让更多人用上RPA,用好RPA!
    1月20日,RPA学习天地成功举办了,基于弘玑CycloneRPA工具直播公开课,成功地帮助学员们初步了解了弘玑CycloneRPA的特色。  本次公开课,主要介绍了如何弘玑CycloneRPA工具来实现在中国执行信息公开网批量查询失信被执行的公司及个人的信息,并实现自动化保存的自动化流程。 RPA学......
  • [学习笔记] 丢番图方程 & 同余 & 逆元 - 数论
    首先,他们几个都是兄弟,有着极大的相似性。另外,他们的各自的思想都能够很好的服务于另外几个,有助于加深理解。线性丢番图方程丢番图不是个图啊!他是个man……——百度百科现在主要说的是二元线性丢番图方程:通用形式为\(ax+by=c\)。其中常数全都为整数。很像不定方程对吧?现在在......
  • 多项式学习笔记
    1.快速傅里叶变换(FFT)1.1.定义傅里叶变换(法语:TransformationdeFourier,英语:Fouriertransform,缩写:FT)是一种线性变换,通常定义为一种积分变换。其基本思想是一个函数可以用(可数或不可数,可数的情况对应于傅里叶级数)无穷多个周期函数的线性组合来逼近,从而这些组合系数在保有原函......
  • Google XTS测试学习
    XTS是一个统称,包含VTS、CTS、GTS,如果是TV类型产品,还要做netflix认证,简称NTS,其余TS含义如下: CTS测试简介Android的CTS测试,意为兼容性测试;只有通过CTS测试的设备才有可能获得Android的商标和享受AndroidMarket的权限AndroidCTS通过运行和安装一系列dex和APK文件,通过模......
  • 李沐动手学习深度学习 锚框部分代码解析
    这里只是对代码的解析,我在写这个解析的时候并没有看后面的内容,只能大概猜一下可能是要干嘛的首先是import相关工具,这里使用pytorch%matplotlibinlineimporttorchfromd2limporttorchasd2ltorch.set_printoptions(2)#精简输出精度1.生成锚框接下来是第一个难点,这......
  • JAVA学习第一次Blog
    前段时间老师在PTA上发布了三次大作业,这几次大作业的难度都比较高,对我来说除了前面的题目,最后的大分数压轴题我每次都做不出来。这与上个学期学的C语言作业难度简直不是一个等级的,不过JAVA老师也在上课期间一直强调,“我们JAVA课程一定要做出改变,不能说怕学生挂科就把难度设置的很......
  • linux shell 编程学习总结
    1文件和数组1.1读文件并将文件内容保存到数组,遍历数组src.f文件内容./src/xxx_1.md./src/xxx_2.md./src/xxx_3.md./src/xxx_4.md./src/xxx_5.mdrun.sh#!/bin/bash###readflisttoarraysrc_array=()whilereadline;dosrc_array+=("$line")done<$1##......
  • 《Effective C++》读书笔记
    《EffectiveC++》读书笔记之前看过一遍,不过草草了事。近日看了《深度探索C++对象模型》,想起《EffectiveC++》中的内容已经有些忘记了,所以重新温习一下。这篇笔记只挑选书中的一些重要内容进行记录。条款07:为多态基类声明virtual析构函数这一个条款几乎是面试中的高频问题,只需......