……是什么?

  给定无向连通图G=(V,E)(不一定连通);

  割点:若对于x∈V,从图中删去节点x以及所有与x关联的边后,G分裂成两个或两个以上不相连的子图,则称x为G的割点。

  桥(割边):若对于e∈E,从图中删去边e之后,G分裂成两个不相连的子图,则称e为G的桥或割边。

  (如果图不连通,“割点”和“桥”就是它的各个连通块的“割点”和“桥”)。

  时间戳:在图的深度优先遍历过程中,按照每个节点第一次被访问的时间顺序,以此给予N个节点1~N的整数标记,该标记就被称为“时间戳”,记为dfn[x]。

  搜索树:在无向联通图中任选一个节点出发进行深度优先遍历,每个点只访问一次。所有发生递归的边(x,y)构成一棵树,我们把它成为“无向联通图的搜索树”。

  (严谨的,从x到y是对y的第一次访问)

  搜索森林:无向图的各个连通块的搜索树构成无向图的“搜索森林”。

  追溯值: 设subtree(x)表示搜索树中以x为根的子树,“追溯值”low[x]定义为以下节点的时间戳的最小值:

    1.subtree(x)中的节点。

    2.通过1条不在搜索树上的边,能够到达subtree(x)的节点。

  割边判定法则:无向边(x,y)是桥,当且仅当搜索树上存在x的一个子节点y,满足:

    dfn[x]<low[y];

  割点判定法则:若x不是搜索树的根节点(深度优先遍历的起点),则x是割点当且仅当搜索树上存在x的一个子节点y,满足:

    dfn[x]<=low[y];

……为什么?

  割边判定法则:根据定义,dfn[x]<low[y]说明从subtree(y)出发,在不经过(x,y)的前提下,不管走哪条边,都无法到达x或比x更早访问的节点。若把(x,y)删除,则subtree(y)就好像形成了一个封闭的环境,与节点x没有边相连,图断开成了两部分,因此(x,y)是割边。反之,若不存在这样的子节点y,使得dfn[x]<low[y],则说明每个subtree(y)都能绕行其他边到达x或比x更早访问的节点,(x,y)自然就不是割边。

  割点判定法则与之类似。

……怎么做?

  追溯值:为了计算low[x],应该先令low[x]=dfn[x],然后考虑从x出发的每条边(x,y):

    若在搜索树上x是y的父节点,则令low[x]=min(low[x],low[y]);

    若无向边(x,y)不是搜索树上的边,则令low[x]=min(low[x],dfn[y]).  

以上所有内容均来自于《算法竞赛进阶指南》

0x66 Tarjan算法与无向图连通性(1)的更多相关文章

  1. 0x66 Tarjan算法与无向图联通性

    bzoj1123: [POI2008]BLO poj3694 先e-DCC缩点,此时图就变成了树,树上每一条边都是桥.对于添加边的操作,相当于和树上一条路径构环,导致该路径上所有边都不成为桥.那么找这 ...

  2. [Tarjan系列] Tarjan算法求无向图的双连通分量

    这篇介绍如何用Tarjan算法求Double Connected Component,即双连通分量. 双联通分量包括点双连通分量v-DCC和边连通分量e-DCC. 若一张无向连通图不存在割点,则称它为 ...

  3. tarjan算法求无向图的桥、边双连通分量并缩点

    // tarjan算法求无向图的桥.边双连通分量并缩点 #include<iostream> #include<cstdio> #include<cstring> ...

  4. tarjan算法与无向图的连通性(割点,桥,双连通分量,缩点)

    基本概念 给定无向连通图G = (V, E)割点:对于x∈V,从图中删去节点x以及所有与x关联的边之后,G分裂为两个或两个以上不相连的子图,则称x为割点割边(桥)若对于e∈E,从图中删去边e之后,G分 ...

  5. tarjan算法--求无向图的割点和桥

    一.基本概念 1.桥:是存在于无向图中的这样的一条边,如果去掉这一条边,那么整张无向图会分为两部分,这样的一条边称为桥无向连通图中,如果删除某边后,图变成不连通,则称该边为桥. 2.割点:无向连通图中 ...

  6. tarjan算法--求解无向图的割点和桥

    1.桥:是存在于无向图中的这样的一条边,如果去掉这一条边,那么整张无向图会分为两部分,这样的一条边称为桥 也就是说 无向连通图中,如果删除某边后,图变成不连通,则称该边为桥 2.割点:无向连通图中,如 ...

  7. Light OJ - 1026 - Critical Links(图论-Tarjan算法求无向图的桥数) - 带详细注释

     原题链接   无向连通图中,如果删除某边后,图变成不连通,则称该边为桥. 也可以先用Tajan()进行dfs算出所有点 的low和dfn值,并记录dfs过程中每个 点的父节点:然后再把所有点遍历一遍 ...

  8. [Tarjan系列] Tarjan算法求无向图的桥和割点

    RobertTarjan真的是一个传说级的大人物. 他发明的LCT,SplayTree这些数据结构真的给我带来了诸多便利,各种动态图论题都可以用LCT解决. 而且,Tarjan并不只发明了LCT,他对 ...

  9. SPF Tarjan算法求无向图割点(关节点)入门题

    SPF 题目抽象,给出一个连通图的一些边,求关节点.以及每个关节点分出的连通分量的个数 邻接矩阵只要16ms,而邻接表却要32ms,  花费了大量的时间在加边上. //   time  16ms 1 ...

随机推荐

  1. CHD 5.15 安装 Kylin

    这里主要参考官网安装单机案例,并写入到脚本中.具体请看如下:      1.说明           这里采用的是root用户安装,但是运行时需要改一些配置,不然没有权限      2.安装     ...

  2. 云笔记项目-Spring事务学习-传播NOT_SUPPORTED

    接下来测试事务传播属性设置为NOT_SUPPORTED Service层 Service层主要设置如下,其中还插入了REQUIRED作为比较. package Service; import java ...

  3. 二十三、Interpreter 解释器模式

    设计: 代码清单: Node public abstract class Node { public abstract void parse(Context context) throws Parse ...

  4. ES6学习笔记(let,const,变量的解构赋值)

    1.let: ; i < 3; i++) { let i = 'abc'; console.log(i); } // abc // abc // abc 不存在变量提升,它所声明的变量一定要在声 ...

  5. 第五周博客作业 <西北师范大学| 周安伟>

    第五周博客作业 一,助教博客链接https://home.cnblogs.com/u/zaw-315/ 二,本周工作查阅项目汇报,班级微信群.对同学们的中期项目汇报进行查看,解决上周留言问题,对及时出 ...

  6. Leetcode中sort排序遇到的一些问题

    class Solution { public: static bool cmp(vector<int>a,vector<int>b) { ]-a[]<b[]-b[]; ...

  7. Myeclipse加载php插件

    下载PHPEclipse-1.2.3.200910091456PRD-bin.zip 解压缩后.发现内容包含:两个目录features和plugins,一个xml文件site.xml 全部扔进myec ...

  8. LinkedIn TAG

                 List1  [leetcode]243. Shortest Word Distance最短单词距离 Two Pointers [leetcode]244. Shortest ...

  9. code first , Migration

    文章引用至: https://www.cnblogs.com/panchunting/p/entity-framework-code-first-migrations.html 随着业务的增加, 之前 ...

  10. node.js中对 mysql 进行增删改查等操作和async,await处理

    要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...