algorithm - 在大型稀疏矩阵中查找大型非稀疏子矩阵

标签 algorithm matrix mathematical-optimization

我有一个非常大的 N x P 二进制矩阵,我想找到两个集合 R 和 C,其中包含构成最大可能密集(非稀疏,由只有 1's) 子矩阵,它至少满足 |R| 的特定大小和|C|。索引不一定是连续的。例如,对于最小值 |R|=3 |C|=2,对于下面的矩阵,我想输出 R = {1,2,3} C = {2,5}。

0 1 1 0 1

1 1 0 1 1

0 1 0 1 1

有什么好的算法可以做到这一点吗?

我的一个想法是将其建模为优化问题,我不知道这样的问题是否可以用 AMPL 编写以与任何开源求解器一起使用,例如,类似的东西(不确定如何准确表述):

optimization

但我怀疑它是 NP 困难的或者需要幂集搜索。或者这个问题也可以被看作是一个邻接矩阵并试图找到一个最大集团?欢迎任何想法!

最佳答案

我最终意识到这个问题可以重新表述为二分图,然后最大尺寸子矩阵就相当于二分图中的最大边biclique,这是一个NP完全问题。我在R包中找到了BiMax实现biclust很有用!

关于algorithm - 在大型稀疏矩阵中查找大型非稀疏子矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28974240/

相关文章:

python - 稀疏向量中的欧几里德距离与余弦距离 - 欧几里得如何表现更好?

python - 在小于 O(n) 的时间内找到小于给定数字的斐波那契和

c++ - 计算数字的总和乘以字符串的长度

C++ Opencv 不同分辨率相机标定

python - 如果两个矩阵相同,则仅返回一个 bool 语句

r - solve.default(oout$hessian) : Lapack routine dgesv: system is exactly singular: U[1, 1] = 0 中出现错误

java - 5x5 网格中的五个数字素数

java - 需要帮助理解算法的逻辑

R:从矩阵中提取一个圆

java - 如何使用约束规划来优化购物篮?