带孔多边形可见性图的计算方法
1. 简单多边形可见性图计算
在计算简单多边形的可见性图时,有特定的算法和步骤。首先,当计算出最短路径树(SPT)后,可以按照一系列步骤来确定可见性图。
- 算法步骤 :
1. 从某个顶点开始,按逆时针方向在多边形边界上选取顶点或点。
2. 若选取的顶点不是特定顶点 (v_i),则回到步骤 1。
3. 将 (v_{i + 1}) 设为 (v_i) 的父节点。
4. 从多边形边界移除最短路径图(SPM)扩展边在可见区域 (V(v_1v_{i + 1})) 边界上的端点,算法停止。
- 时间复杂度分析 :对于一个可见线段 (v_jv_k),它会在 (SPT(v_j)) 和 (SPT(v_k)) 中作为边出现。设 (v_jv’ j) 和 (v_kv’_k) 为其扩展边,其中 (v’_j \in v_pv {p + 1}),(v’ k \in v_qv {q + 1}),则 (v_jv_k) 至少会在 (SPT(v_p))、(SPT(v_{p + 1}))、(SPT(v_q)) 和 (SPT(v_{q + 1})) 中的两棵树里作为边。所以,在计算弱可见多边形内的切线时,算法对一个可见线段及其扩展边最多考虑 4 次。因此,该算法的整体时间复杂度为 (O(E)),其中 (E) 是简单多边形可见性图的边数。
2. 带孔多边形可见性图计算 - 最坏情况 (O(n^2)) 算法
Welzl 提出了一种在 (O(n^2)) 时间内计算 (n) 条不相交线段集合 (S) 可见性图的算法。
超级会员免费看
订阅专栏 解锁全文
18

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



