algorithm - 多边形构造的复杂性

标签 algorithm time-complexity

我想证明从给定的一组点 (2D) 构造一个简单多边形 的问题的复杂性至少是 O(nlogn) ,即每个正确的算法在最坏的情况下至少需要 O(nlogn) 步来解决这个问题。 是否有可能以某种方式将此问题简化为排序问题或如何显示?

最佳答案

是的,使用基线算法:

enter image description here

  • 找到 x 值最低和最高的两个点:O(n)
  • 将位于基线上方和下方的两组中的其他点分开(连接这些点的线):O(n)
  • 按“y 升序/x 升序”顺序对上部集合进行排序:O(n*logn)
  • 按“y 降序/x 降序”顺序对较低的集合进行排序:O(n*logn)
  • 按顺序加入上层集合,按顺序加入下层集合:O(n)

关于algorithm - 多边形构造的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132308/

相关文章:

c++ - 线性搜索 vs 二进制搜索效率

javascript - 有没有更好的方法对 2 个数组进行元素操作

java - 避免循环内使用 toCharArray() 或 arrayCopy 产生冗余

c++ - 算法分析 : Am I analyzing these algorithms correctly? 如何解决这些问题

algorithm - 什么是大 O,这段代码的上限

c - C 程序的时间复杂度

c++ - 如何创建一个圆柱形骨骼,存储为由 2 个点(头、尾)组成的 vector ?

c++ - openMP for 循环增量语句处理

algorithm - 具有已知全局最优值的旅行商示例

ruby - 如何 "split and group"基于对象的一个​​属性的数组