寻找一种算法,将自定义 2D 多边形作为输入。 该算法应将多边形分成两半,并根据面积产生两个(至少大约)相等的一半。
到目前为止我的想法是:
我很好奇在速度或准确性方面是否有比这更好的解决方案。
快速、精确的解决方案简单多边形:
Step 1 有一个 O(n log n)-time 算法。 (有更快的算法,但我不知道它们有多复杂。)
第 2 步和第 3 步显然是 O(n)。
Step 4 有一个 O(n)-time 算法。将树放在某处,并使用深度优先搜索计算每个子树的总数。从根节点开始,通过占总总数一半以上的孩子重复下降,直到不再可能为止。
第 5 步是 O(1) 时间。