[学习笔记] 支配树

基本概念

支配树

一个有向图 (G),给定一个起点 (s)假设 (s) 能够访问到其他所有顶点。若去掉某点 (i) 后,从 (s) 无法访问到 (j),则称 (i)(j) 的支配点。

支配关系满足传递性,如果 (i) 支配 (j)(j) 支配 (k),那么说明 (i) 支配 (k),证明很简单,因为删掉 (i) 之后 (j) 不能被到达,相当于 (j) 被删掉了,自然 (k) 不能被到达。

根据支配关系的传递性,可以建一棵 (s) 为根的有向树,每个点找到 ( t dfs) 序最大(原图 ( t dfs) 一遍就求出来了)的支配点作为父亲,那么满足每个点的祖先都是他的支配点,这样的树被称为支配树,注意支配树并不一定是 (G) 的树形图。

最近支配点idom

(i) 的支配点中 ( t dfn) 最大的点就是 (i) 的最近支配点,用 (idom(i)) 表示

半支配点sdom

理解这个定义至关重要,顶点 (v) 的半支配点 (u) 是符合下列条件的点 (i)( t dfn) 值最小的点:

  • 顶点 (i) 存在一条路径上的顶点(不含端点)的 ( t dfn) 值均大于 (dfn(v))

(v) 的半支配点记为 (sdom(v)),特别的,如果 (u)(v) 直接有边相连,则 (u) 也是 (v) 半支配点的候选点。

性质和定理

约定

如果 (v)(x) 的祖先并且是 (y) 的子节点,那么记 (vin[y,x])

如果要求 (v ot=y),那么记 (vin(y,x])

引理一

(idom(u))( t dfs) 树中 (u) 的某个祖先,容易证明。

引理二

(sdom(u))( t dfs) 树中的某个祖先,这个引理我好好证一下。

如果 (dfn[sdom(u)]>dfn[u]),那么我们可以把 (sdom[u]) 调整成他的父亲,父亲一定合法并且 ( t dfn) 序会变小所以更优,故这种情况不会出现。

如果 (dfn[sdom(u)]<dfn[u]) 并且 (sdom(u)) 不是 (u) 的祖先,假设我们 ( t dfs) 顺序是从左边的子树到右边的子树的,那么 (sdom(u)) 一定在 (u) 左边的子树,但这和 ( t dfs) 的方式产生矛盾,故这种情况不会出现。

证明了这个结论之后我想补充一下对半支配点的理解。

半支配点也就是提供了另一种根到 (u) 的路径,所以会对支配点产生影响,我们取最浅的有最强的限制

这东西是支配树的精髓,所以你下面会看到用半支配点去求支配点。

引理三

(idom(u)) 要么是 (sdom(u)) 的祖先,要么是 (sdom(u)) 本身。

好证,因为如果最近支配点在下面的话可以通过 (sdom(u)) 访问到 (u),所以矛盾。

定理一

(forall v ot= s),如果有 (vin(sdom(u),u]) 并且 (dfn[sdom(v)]geq dfs[sdom(u)]),则有 (idom(u)=sdom(u))

根据引理二和三,我们只需要证明 (sdom(u)) 是一个合法的支配候选点即可。那么删掉 (sdom(u)),因为夹在中间的 (v) 就算是另一条路径也要经过 (sdom(u)),所以 (u) 是无法被到达的,证毕。

定理二

(v)(dfn[sdom(v)]) 最小的满足 (vin(sdom(u),u]) 的点,如果 (dfn[sdom(u)]>dfn[sdom(v)]),则有 (idom(u)=idom(v))

如果我们删去 (idom(v)) 那么 (xin(sdom(u),u]) 的这些点都不能到达,因为 (idom(v))(sdom(x)) 之上,那么 (x) 就被切断了道路,所以我们证明了 (idom(v)) 是一个合法的支配候选点。

现在证明 (idom(v)) 是优的候选点,如果删去的点是 (idom(v)) 的儿子那么 (v) 一定能被到达,所以 (u) 就能够到达,这就和 (u) 不能被到达产生矛盾,所以 (idom(v)) 就是 ( t dfn) 序最大的支配点。

推论一

原文地址:https://www.cnblogs.com/C202044zxy/p/14671640.html