给定一个布尔值的二维数组我想查找所有由至少2列和至少2行组成的模式。这个问题有点接近于找到cliques in a graph。如何在布尔数组中找到模式组?
在下面的例子中,绿色单元表示“真”位,灰色是“假”。模式1包含列1,3,4和5以及行1和2.模式2仅包含列2和列4以及行2,3,4。这背后
经营思路是寻找社交网络用户的不同群体之间的类似图形。在现实世界中,行数可以达到3E7,并且列数可以达到300.
无法真正找出除蛮力匹配以外的解决方案。
请指出问题的正确名称,以便我可以阅读更多内容,或者建议一个优雅的解决方案。
如果数组是对称的,并且所有的对角条目都是真的,则必须找到对应于图中派系的对称全真子阵列等等。由于确定最大的集团(或补充中最大的独立集合)是NP难度,所以这个问题也是如此。这并不意味着它不能在实践中完成,但它确实表明您应该提供有关数组特性的更多信息,而不是希望获得快速,通用的算法。 –
究竟是什么模式?我仍然不清楚。 –
@DouglasZare,谢谢你的评论。数组不对称。行代表一个用户,并且这些位对于从研究到研究各不相同的独立属性处于打开状态。即b1“有高等教育”,b2“喜欢页面X”,b3:喜欢页面Y“等等。 JuanLopes by”pattern“我的意思是”开“列的集合,超过2个,适用于2个以上的用户 – Serge