【发布时间】:2016-10-05 20:15:03
【问题描述】:
任务
从一组不重叠(但接触)的多边形计算对偶图。
示例
多边形 A、B 和 C,它们的部分共享坐标 1-22(黄色)和对偶图(蓝色)。
数据
我有一组 S 个多边形。每个多边形 Pi 都表示为坐标的有序列表。多边形Pi的边a—b用Pi,(a,b)
想法
多边形代表面,因此代表对偶图的节点。要识别多边形 Pi 的相邻面,只需将 Pi 的每条边与其他每条边进行比较多边形Pj。如果边被另一个多边形共享,则 Pi 和 Pj 是相邻的。
这将产生大量的多重边缘,这些边缘可以在以后移除。
问题
算法效率不是很高,因为它在 O(E2) 中运行,其中 E 表示集合的边数 S 个多边形。
改进思路
第一步创建一个边缘索引。这会将运行时间减少到 O(2×E) = O(E)
删除每个度数为 2 的节点。(我认为这不会影响对偶图?)
问题
- 我走对了吗?
- 是否有任何经过批准的算法可用于此任务?
【问题讨论】:
-
我希望算法的目的是找到相邻的多边形(那是所需的输出)?
-
是的,这正是我需要的。
-
图形是平面的吗?
-
是的,多边形不重叠,它们只是接触。因此,该图是平面的。
标签: algorithm graph geometry computational-geometry planar-graph