如何找到一组线的最小边界矩形?

时间:2011-12-14 13:48:15

标签: algorithm graphics geometry 2d

在2D轴上提供了一组N条连线,我正在寻找一种算法来确定X最小边界矩形。

例如,假设我有10行,我想用最多3个(可能相交的)矩形绑定它们。因此,如果8条线紧密地聚集在一起,它们可以使用1个矩形,而另外两条可以使用第二个或者也可以是第三个矩形,具体取决于它们彼此的接近程度。

感谢。

1 个答案:

答案 0 :(得分:2)

如果这些线实际上是一条路径,那么也许你不会反对每个矩形覆盖路径的连续部分的要求。在这种情况下,有一个动态程序在时间O(n 2 r)运行,其中n是段数,r是矩形数。

计算一个表,其中条目C(i,j)表示用j个矩形覆盖段1,...,i的成本。对于i,j的复发是> 0,

  

C(0,0)= 0
  C(i,0)=∞
  C(i,j)=最小于i'< i(C(i',j - 1)+ [覆盖段i'+ 1,...,i的矩形的成本)

有O(n r)个条目,每个条目的计算时间为O(n)。通过例如为每个条目存储最佳i'来最终恢复最佳矩形集合。

我不知道一般案例的简单,最优算法。由于存在“仅”O(n 4 )矩形,其边缘每个都包含一个段端点,因此我很想将此问题表述为广义集合覆盖的实例。