码迷,mamicode.com
首页 > 编程语言 > 详细

Tarjan算法总结

时间:2019-10-24 20:01:25      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:sub   bzoj2730   追溯   并且   双连通分量   存在   bzoj2438   定义   str   

Tarjan算法总结

关于学习

《算法竞赛进阶指南》

前言

Tarjan算法能在线性时间内求出无向图的割点,进一步可求出无向图的双连通分量。并且能在有向图中求出有向图的强连通分量必经点和必经边
只打算给自己复习用,233.

Tarjan算法

几个定义:
时间戳:其实就是dfs序
在图的深度优先遍历过程中,按照每个节点第一次被访问的时间顺序,
依次给予 N 个节点 1-N 的整数标记,该标被称为时间戳,记为 dfn[u]
追溯值:
设 subtree(u) 表示搜索中以 x 为根的子树
low[u] 是下述所有节点时间戳的最小值

  1. 是 subtree(u) 中的节点
  2. 通过一条不在搜索树上的边,可以到达 subtree(u) 的节点

关于追溯值的计算:
先令\(low_u = dfn_u\)
v 没有被访问过,\(low[u]=min(low[u], low[v])\)
v 被访问过了,\(low[u]=min(low[u], dfn[v])\)

Tarjan算法结束,

无向图的割点和桥

割点定义:

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

若 u 不是搜索树的根节点 (深搜起点),则 x 是割点当且仅当搜索
树上存在 v 的一个子节点 v 满足:
dfn[u] ≤ low[v]
? 若 u 是搜素树的根节点,则 u 是割点当且仅当搜索树上存在至少
两个子节点 v 1 ,v 2 满足上述条件

桥定义:

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

无向边 (u,v) 是桥,当且仅当搜索树上存在的 u 的一个子节点 v 满足:
dfn[u] < low[v]

无向图割点和桥的例题

例题

BZOJ1718
BZOJ2730
逃不掉的路
HDOJ3686
POJ2762
BZOJ2438

Tarjan算法总结

标签:sub   bzoj2730   追溯   并且   双连通分量   存在   bzoj2438   定义   str   

原文地址:https://www.cnblogs.com/gaozhuoyuan/p/11734180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!