多边形行走与图论中的算法问题解析
1. 多边形行走中的隐藏与寻找问题
在简单多边形边界行走的场景中,我们探讨孩子之间如何避免相互看见的问题。这里引入了不可见图(invisibility diagram)的概念,用于分析和解决此类问题。
1.1 安全路径的定义与判定
安全路径 $\pi_{safe}(s, t)$ 是指在不可见图中连接点 $s$ 和 $t$ 的路径,沿着该路径行走时,Jack 和 Jill 不会相互看见。安全路径完全包含在代表单元格并集的灰色区域内。Jack 能在不被 Jill 看见的情况下遍历其路径,当且仅当不可见图中存在安全路径 $\pi_{safe}(s, t)$。
为了判定安全路径是否存在,我们可以通过以下步骤:
- 确定 $s$ 和 $t$ 所在的骨架 :对于不可见图中的任意固定点 $(x, y)$,可以在 $O(n)$ 时间内确定包含该点的单元格的骨架。具体做法是先在 $O(n)$ 时间内计算可见多边形 $Vis(P, x)$,然后遍历多边形 $P$ 的边界,确定包含 $y$ 且从 $x$ 不可直接看见的最大连通区间。若不存在这样的区间,则该点不安全;否则,该区间的一个端点(如 $r$)必为 $P$ 的反射顶点,将 $(x, y)$ 与该反射顶点的骨架关联起来。
- 确定骨架的连通分量 :给定包含 $s$ 和 $t$ 的单元格的骨架后,我们要确定这两个骨架是否在灰色点的同一个连通分量中。根据水平和垂直线段定义所有 $O(n)$ 骨架,可在 $O(n \log n)$ 时间和 $O(n)$ 空间内计算这些正交线段的连通分量。因为引理 2
超级会员免费看
订阅专栏 解锁全文
5万+

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



