最大矩形集

时间:2015-06-30 23:48:57

标签: algorithm set

我有一个二进制矩阵,我试图找到所有可以由矩阵中相邻元素形成的最大矩形。我指的是最大的矩形,所有矩形都是唯一的,任何其他矩形的非子集。例如,以下矩阵包含六个这样的矩形。

enter image description here

这与集合覆盖问题有关,虽然这里我对最大矩形数感兴趣,而不是最小数。我尝试过的方法是找到所有矩形而不管大小,然后比较矩形并删除它们,如果它们是另一个矩形的子集。这不是最佳方法。看起来套装问题的这种情况不应该太难。

我看了一下,发现没有类似这个问题的东西。有this论文,它有一些好的想法,但仍然很广泛。这个特殊问题还有另一个名字吗?是否存在用于在集合覆盖问题中查找所有可能矩形的现有算法?

1 个答案:

答案 0 :(得分:2)

经过多一点工作,我发现这与套装问题没有关系。实际上,它找到了二进制矩阵问题中任何其他矩形中未包含的唯一矩形'。

我提出了一些运作良好的方法,但我不知道它的复杂性。

基本上,水平和垂直扫描矩阵。在每种情况下,查找可以与下一行形成矩形的1个连续组。这导致了许多矩形,其中一些是其他矩形的副本或子矩形。这些矩形被缩减为一个唯一的集合,其中没有矩形是另一个矩形的子矩形。然后你就拥有了所有的矩形。

以下是与原始帖子中的图像相关的图表:

enter image description here