弱可见性与最短路径树计算算法解析
1. 可见性弦的构建
在简单多边形中,存在构建可见性弦的算法。对于一个具有 (n) 个顶点的简单多边形 (P),某些步骤的时间复杂度分析如下:
- 更新 (u_k) 和 (u_z) 的总成本为 (O(n))。
- 更新 (w_m) 和 (w_r) 的总成本同样为 (O(n)),因为它们仅在 (P) 边界的两个不相交部分上逆时针移动。
- 步骤 7 和 8 可在 (O(n)) 时间内完成。
- 步骤 9 和 10 也需 (O(n)) 时间。
- 步骤 11 中构建弦 (st) 能在 (O(n)) 时间内完成。
综上,该算法的整体时间复杂度为 (O(n)),即一个具有 (n) 个顶点的简单多边形 (P) 中的可见性弦 (st) 可在 (O(n)) 时间内构建。
2. 简单多边形中最短路径树的计算
2.1 算法概述
Guibas 等人提出了一种 (O(n)) 时间复杂度的算法,用于计算简单多边形 (P) 内从给定点 (s) 到所有顶点的欧几里得最短路径。该算法是 Lee 和 Preparata 线性时间算法的推广,后者用于计算 (P) 内从点 (s) 到另一点 (t) 的最短路径。
从 (s) 到 (P) 所有顶点的最短路径的并集构成一棵树,称为以 (s) 为根的最短路径树,记为 (SPT(s))。算法首先对多边形 (P) 进行三角剖分(记为 (T(P))),这可通过 Chazelle 的算法在 (O(n)) 时间内完成。然后利用 (T(P)) 的对偶图逐个遍历三角形,计算从 (s) 到 (T(P)) 中三角形顶点的最短路径,从而得到
弱可见性与最短路径树算法
超级会员免费看
订阅专栏 解锁全文
13

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



