我有一个二进制矩阵,我试图找到所有可以由矩阵中相邻元素形成的最大矩形.我指的是最大的矩形,所有矩形都是唯一的,任何其他矩形的非子集.例如,以下矩阵包含六个这样的矩形.
这与集合覆盖问题有关,虽然这里我对最大矩形数感兴趣,而不是最小数.我尝试过的方法是找到所有矩形而不管大小,然后比较矩形并删除它们,如果它们是另一个矩形的子集.这不是最佳方法.似乎套装问题的这种情况不应该太难.
我看了一下,发现没有类似这个问题的东西.有7000篇论文,有一些好主意,但仍然有很大的标志.这个特殊问题还有另一个名字吗?是否存在用于在集合覆盖问题中查找所有可能矩形的现有算法?
最佳答案 经过多一点工作后,我意识到这与套装问题没有关系.它实际上是’找到二进制矩阵问题中任何其他矩形中未包含的唯一矩形’.
我想出了一些运作良好的东西,但我不知道它的复杂性.
基本上,线水平和垂直扫描矩阵.在每种情况下,查找连续的1组,可以与下一行形成矩形.这导致了许多矩形,其中一些是其他矩形的副本或子矩形.这些矩形被缩减为一个唯一的集合,其中没有矩形是另一个矩形的子矩形.然后你有所有的矩形.
这是一张与原始帖子中的图像相关的图表: