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

Finding sequence of largest non-overlapping rectangles which cover only "free" pixels

提问人:user3234005 提问时间:4/8/2019 最后编辑:user3234005 更新时间:4/8/2019 访问量:226

问:

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

我们想找到一个只覆盖自由单元格的最大矩形。接下来,我们想找到另一个最大的矩形,它不仅应该覆盖自由单元格,而且不应该与以前找到的矩形重叠。我们希望找到给定阈值区域内的所有此类矩形。

换句话说,我们希望找到一个矩形平铺,它使用贪婪算法覆盖自由单元的最大面积。

例:

输入网格 ( - free, - occupied):0x

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赞 juvian 4/8/2019
最佳的 1 步解决方案似乎是这样的。需要一种比运行相同的算法更好的方法,直到满足要求为止
0赞 Alfe 4/8/2019
SO并不是一个真正的“为我编写代码”的网站,所以你最好向我们展示你的努力和你遇到的问题,然后我们可以开始帮助你解决这些问题,而不是为你做所有的工作;-)
0赞 user3234005 4/8/2019
@juvian我熟悉链接算法,但它不仅在时间上,而且在内存上都有二次困难,而我希望里面有对数的东西。
1赞 Alfe 4/8/2019
不完美的方法是否也适用于您的情况?我想这个问题很难解决,在 O(n²) 以下不可能找到最佳解决方案。但是像近似这样的东西可能更快。
1赞 user3234005 4/8/2019
是的,我忘了提,次优解决方案也很好。

答: 暂无答案