查找仅覆盖“自由”像素的最大非重叠矩形的序列

时间:2019-04-08 15:37:58

标签: algorithm geometry language-agnostic computational-geometry

我们有一个大小为NxM的矩形网格,其中的每个单元格都可以空闲或占用。可用单元格的数目或数量要远远大于被占用单元格的数目,因此我们将网格表示为已占用单元格的XY坐标列表。我们还假设占用的单元格具有一定的结构。

我们想找到一个最大的矩形,仅覆盖自由单元格。接下来,我们要找到另一个最大的矩形,该矩形不仅应仅覆盖空闲单元,而且不应与先前找到的矩形重叠。我们想找到所有给定阈值区域之内的矩形。

换句话说,我们想使用贪心算法找到一个覆盖最大自由单元格的矩形拼贴。

示例:

输入网格(0-免费,x-占用):

0 0 0 0 0
0 0 0 0 0
x 0 x 0 0
0 0 x 0 0
0 0 0 0 0

解决方案(单元格编号表示解决方案矩形):

1 1 1 1 1
1 1 1 1 1
x 0 x 2 2
3 3 x 2 2
3 3 0 2 2

可以使用哪些算法来有效地解决此问题?乍一看,应该使用某种索引(例如四叉树)来获得针对大型MN(例如数十万)的实际性能。解决方案不必是最优的,次优的,但在计算上也很有效。欢迎学术文献参考!

加分点:适用于2D和3D网格的通用方法(甚至可能适用于更高的尺寸)。

0 个答案:

没有答案