支配树与Lengauer-Tarjan算法

本文介绍了支配树的概念,给出了支配树的一些性质,并详细解释了Lengauer-Tarjan算法如何快速构造支配树。通过一系列的定理和证明,阐述了算法的原理,最后讨论了算法的具体实现和数据结构的选择,如使用带权并查集,时间复杂度为O(nlogn)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

伪目录

  1. 给出支配树的定义
  2. 给出一些性质
  3. 介绍快速构造支配树的Lengauer-Tarjan算法及具体实现

支配树是啥

一个有源点的有向图,其支配树是满足下面条件的一个有向图:

对于支配树上一点,若断开此点,则源点必定不能到达它的任何儿子,并且能到达其他任意一个点。

不显然的,它是一棵树(当然后面会有证明)

支配树有很多实际用途,我都不知道

一些性质

对于一个有向图,假设源点为 r r r,先从 r r r出发构造一棵dfs树。

定义:对于一个点 u u u,若一支配 u u u的点 w w w满足 w ̸ = u w\not= u w̸=u并且 w w w被支配 u u u的其他不含 u u u的支配点支配,则 w w w就是 u u u的最近支配点,记作 i d o m ( u ) idom(u) idom(u)

通俗的讲, w w w是离 u u u最近的那个支配点,并且能恰好支配 u u u

Lemma 1: 支配关系不存在环。

Proof: 若 a a a支配 b b b,那么 r r r b b b必定经过 a a a,若 b b b支配 a a a则到达 b b b需要经过 a a a,此时并没有经过 b b b,产生矛盾。

Lemma 2: 除源点外,其他点有且仅有一个最近支配点。

Proof: 若 a a a支配 b b b b b b支配 c c c,则 a a a支配 c c c;若 a a a支配 c c c b b b支配 c c c,那么 a a a支配 b b b b b b支配 a a a,否则可以找到一条路径不经过 a a a而到达 c c c而矛盾。因此支配 u u u的所有点的集合构成了一个全序关系,因此总可以找到一个点满足上述最近支配点的定义。

Theorem 1: 若连接一个点和其最近支配点,那么这张图构成了一棵树,并且满足支配树的定义。

Proof: 由Lemma 1和Lemma 2可以得到这张图就是一棵树。容易证明,若断开 u u u,则源点不可能到达 u u u的任意一个儿子。对于其他点,由支配树的定义和Lemma 2可以推导出这个点不会受到 u u u是否断开的影响。

由Theorem 1,若得到了所有点的 i d o m idom idom,则容易构造出这张图的支配树。

那么怎么求 i d o m idom idom呢?

首先定义:定义一个点 u u u的半支配点 w w w为存在路径 w → u w\rightarrow u wu,使得除了 w w w,这条路径上任意一个点的dfs序都大于等于 u u u的dfs序,并且 w w w是所有满足条件的点中最小的那个,记作 s d o m ( u ) sdom(u) sdom(u)

Lemma 3: 对于任意一点 u ̸ = r u\not=r u̸=r i d o m ( u ) idom(u) idom(u) u u u在dfs树上的祖先。

Proof: 若不是祖先,则可以找到一条只经过树边的路径,必定不经过 i d o m ( u ) idom(u)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值