最大的空球体或矩形

时间:2013-07-11 14:01:28

标签: geometry computational-geometry

在N(~500)维度中,我希望找出最大的球体或矩形,使得球体/矩形不包含已存在的点。整个点集以一个轴对齐的矩形框(值的下限和上限)为界。

我可以使用任何已知的多项式时间方法/代码来解决我的问题吗?

两个众所周知的算法:i)矩形(http://www.cs.princeton.edu/~chazelle/pubs/ComputLargestEmptyRectangle.pdf)中最大的空矩形,以及ii)在位置约束(http://www.cs.dartmouth.edu/reports/TR86-130.pdf)内找到最大的空圆圈不起作用。

虽然上述算法的复杂度为N log N或N ^ 2 log N,其中N是已存在点的数量,但复杂度也是凸包或边界多边形顶点数的线性函数。 。 500维的矩形将具有2 ^ 500个角,这使得上述技术不可行。

理想情况下,我正在寻找一种方法(它不必精确),它可以确定多项式时间中最大的圆/矩形,以N(点数)和D(维度)。

谢谢。

1 个答案:

答案 0 :(得分:1)

一种可能的启发式解决方案是限制大矩形,使其轴对齐。在这种情况下,矩形可以被最多2 * d个点限制,其中每个点表示一个或多个维度的边界最小值或最大值。然后可以确定一个点是否仅在O(d)中位于该矩形内。

使用此方法的启发式方法是选取2个点,并使用它们形成初始边界框,然后随机添加点。如果该点位于框内,则缩小或拆分框。如果该点位于框外,请尝试将框放大。如果框缩小而不是分割,则单次传递应采用O(d * N)。

通过确保两点之间的边界框内没有任何点,可以稍微改善质量。找到所有点对可能是理想的,因为在边界框内没有点,因为当转换为图形时,它们应该有助于以较不随机的方式扩展解决方案。动态编程可能导致比O(d * N ^ 3)更好的算法,可能是O(d * N ^ 2)或更好。