支配树与Lengauer-Tarjan算法

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

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

伪目录

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

支配树是啥

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

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

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

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

一些性质

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

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

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

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

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

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

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

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

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

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

那么怎么求idomidomidom呢?

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

Lemma 3: 对于任意一点u̸=ru\not=ru̸=ridom(u)idom(u)idom(u)uu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值