找到最大化每行总和最小值的列集

时间:2011-07-31 14:30:32

标签: algorithm optimization heuristics

给定矩阵A,我正在寻找一组p列,它们最大化每行中匹配单元格总和的最小值。

例如:如果p = 2且A =

1 2 4

3 0 3

5 6 2

选择C1和C2会得到f = min(r1,r2,r3)= min(1 + 2; 3 + 0; 5 + 6)= 3

选择C1和C3时会给出f = min(1 + 4; 3 + 3; 5 + 2)= 5这是最好的选择。

是否有任何算法或启发式方法。

谢谢

1 个答案:

答案 0 :(得分:4)

这个问题通过集合覆盖的平凡减少是NP难的(让A是表示元素集包含关系的0-1矩阵)。我会在简单的整数程序公式中尝试MIP求解器,如果c(j)列被取j为1,则其他为0。

maximize lambda
subject to
lambda <= c(1) A(i,1) + ... + c(n) A(i,n)    for all i
c(1) + ... + c(n) = p
c(j) in {0, 1}                               for all j