线性时间内的最小轴平行边界框

时间:2018-01-02 16:36:40

标签: algorithm bounding-box convex-hull radix-sort

问题
我必须计算线性时间O(n)中一组二维点的直径。

为了做到这一点,我想到了使用最小轴平行边界框,可以用线性时间计算旋转卡尺从凸多边形开始。
遗憾的是,我没有凸多边形,并且由于凸包,计算它需要O(nlogn)时间。

我的想法是使用基数排序,然后通过单调链算法计算凸包(如果输入已排序,则需要线性时间)。

现在我的问题是:

  • 如何确定基数排序将以线性时间运行?
  • 你有更好的想法来计算线性时间内的最小轴平行边界框吗?

提前谢谢!

修改
我特别需要最小边界框,因为我必须为直径设计一个sqrt(2)近似算法,这是我知道证明这种近似的唯一方法。

1 个答案:

答案 0 :(得分:2)

如果您正在寻找一组积分的直径Welzl's algorithm可能是您最好的选择。它在线性时间内找到最小的封闭圆。

编辑:我没有意识到你需要来制作一个盒子。要找到最小边界框的轴对齐边界,您只需要对数据进行线性扫描并获取(x,y)坐标的相应最小/最大值。