有向无环图中最近公共祖先的路径覆盖技术
1. 引言
在有向无环图(DAG)中,最近公共祖先(LCA)问题是一个重要的研究领域。在平均情况下,LCA问题可以分别在 $O(n^2\log n)$ 和 $O(n^3 \log\log n)$ 的运行时间内解决。本文深入探讨了使用路径覆盖技术来解决DAG中的LCA问题,提出了一种多用途的分解技术,可应用于各种LCA问题。
2. 预备知识
- 有向无环图(DAG) :设 $G = (V, E)$ 是一个有向无环图,$n$ 表示顶点数,$m$ 表示边数。$G_{clo}$ 表示 $G$ 的自反传递闭包,即当且仅当 $u$ 到 $v$ 存在有向路径时,图中存在边 $(u, v)$。$G_{clo}$ 与偏序集 $P = (V, \leq)$ 一一对应。
- 公共祖先(CA)和最近公共祖先(LCA) :对于 $G$ 中的顶点 $x, y, z$,如果 $x$ 和 $y$ 都可以从 $z$ 到达,则 $z$ 是 ${x, y}$ 的公共祖先,记为 $CA{x, y}$。如果 $z \in CA{x, y}$ 且 $CA{x, y}$ 中没有其他顶点可以从 $z$ 到达,则 $z$ 是 ${x, y}$ 的最近公共祖先,记为 $LCA{x, y}$。
- 宽度(Width) :$G$ 的宽度 $w(G)$ 定义为 $G$ 中最大反链的基数,即相对于 $G_{clo}$ 不可比较的顶点数。注意,$LCA{x, y}$ 按定义是一个反链,因此 $|LCA{x, y}|$ 上限为 $w(G)
超级会员免费看
订阅专栏 解锁全文
32

被折叠的 条评论
为什么被折叠?



