伪目录
- 给出支配树的定义
- 给出一些性质
- 介绍快速构造支配树的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 w→u,使得除了 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)