【发布时间】:2023-03-19 20:02:01
【问题描述】:
给定一个由 1 和 0 组成的矩阵,我想找到一个包含最少或没有 0 的行和列的组合,从而最大化所选择的 n_of_rows * n_of_columns。
例如,行 (0,1,2) 和列 (0,1,3) 在 col #0 行 #1 中只有一个零,其余 8 个值为 1。
1 1 0 1 0
0 1 1 1 0
1 1 0 1 1
0 0 1 0 0
实际任务是搜索超过 1000 到 1000000 的行和列,在二分图中找到最大的 biclique——行和列可以被视为顶点,而值可以被视为连接。
据我所知,NP 完全问题。
请建议一种可以加快任务并减少对 CPU 和内存要求的方法/算法。
【问题讨论】:
-
要求不是很清楚。如果您想要最少数量的 0 或最大数量的列+行,那么问题是微不足道的。您想最大化选择的 1s-0 的数量吗?或者您是否给了一个数字 K,表示您可以选择的最大 0 数?
-
尽管计算机是人造的,但很难说在同样复杂的情况下哪个会更快。
-
@DinuSorin 这是一种从数据中寻找见解的方法。一项任务是最大化
rows * cols,同时只接受 1,不接受 0。另一个任务是允许选择中的 K 0(或更好的 K%),并再次最大化rows * cols。
标签: algorithm matrix machine-learning