平面图最小消除排序算法详解
1. 广度优先搜索初步近似最小消除排序
首先,我们选择一个顶点 $r$ 作为最大元素,通过广度优先搜索来确定各层级 $L_i$。这里的 $L_i$ 由与顶点 $r$ 距离为 $i$ 的顶点组成。对于图 $G$ 中的任意顶点 $x$,我们用 $l(x)$ 表示 $x$ 所在的层级,即若 $x \in L_i$,则 $l(x) = i$。
有如下定理:存在一个最小消除排序 $<$,满足:
1. $r$ 是 $<$ 中的最大元素;
2. 若 $x \in L_i$,$y \in L_j$,且 $j < i$,则 $x < y$。
证明思路:根据相关理论,图 $G$ 顶点集的一个连通子集的闭邻域 $C$ 是最小消除排序的一个最终段,即存在一个最小消除排序 $<$,使得当 $x \notin C$ 且 $y \in C$ 时,$x < y$。
我们将具有上述性质的最小消除排序称为忠实排序。值得注意的是,层级 $L_i$ 可以在线性时间内确定。
2. 距离层级的结构
2.1 添加辅助边
假设图的面是顺时针定向的。我们定义层级对角线集合 $E_1$ 如下:对于图 $G$ 的每个面 $f$ 以及处于同一层级 $l(x) = l(y)$ 的所有顶点 $x$ 和 $y$,若在面 $f$ 的顶点顺时针枚举中,$x$ 和 $y$ 之间的所有顶点都处于某个层级 $L(j)$,且 $j > l(x) = l(y)$,则在 $E_1$ 中添加连接 $x$ 和 $y$ 的边。
确定 $E_1$ 的线性时间算法步骤如下
超级会员免费看
订阅专栏 解锁全文
1542

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



