7

给定一个布尔值的二维数组,我想找到包含至少 2 列和至少 2 行的所有模式。这个问题有点接近于在图中找到派系

在下面的示例中,绿色单元格代表“真”位,灰色单元格代表“假”。模式 1 包含第 1、3、4 和 5 列以及第 1 和第 2 行。模式 2 仅包含第 2 和 4 列以及第 2、3、4 行。

例子

这背后的商业理念是在各种社交网络用户群体之间寻找相似性模式。在现实世界中,行数可以达到 3E7,列数可以达到 300。

除了蛮力匹配之外,无法真正找到解决方案。

请建议问题的正确名称,以便我可以阅读更多内容,或者建议一个优雅的解决方案。

4

1 回答 1

4

这(等效于)要求在二分图中大于某个大小的所有bicliques (完全二分子图)。这里的行是图的一部分 A 的顶点,列是另一部分 B 的顶点,并且每当 u 行第 v 列的单元格时,u \in A 和 v \in B 之间就有一条边是绿色的。

尽管您说要查找所有模式,但您可能只想找到最大的模式——即无法通过添加更多行或列来扩展为更大模式的模式。(否则,对于任何 c >= 2 列和 r >= 3 行的模式,您还将获得超过 2^(c-2)*2^(r-3) 可以形成的非最大模式通过删除一些行或列。)

但是,假设 P != NP,即使仅列出最大模式也可能会花费行数和列数呈指数增长的时间。这是因为根据绿色单元的总数,找到一个最大(即最大可能)模式的问题已被证明是 NP 完全的:如果可以在多项式时间内列出所有最大模式,那么我们可以简单地这样做,并选择最大的,从而在多项式时间内解决这个 NP 完全问题。

于 2015-04-25T19:26:47.740 回答