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

标签 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,这是最好的选择。

是否有任何算法或启发式这样做..

谢谢

最佳答案

这个问题是 NP 困难的,通过对集合覆盖进行简单的简化(令 A 为表示元素集包含关系的 0-1 矩阵)。我会在简单的整数规划公式上尝试使用 MIP 求解器,其中如果采用第 j 列,则 c(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

关于algorithm - 找到使每行总和最小值最大化的列集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890018/

相关文章:

c++ - 确定两个字符串是否相差一个字符的最快方法

python - 如何在OpenCV-Python中使用优化处理器性能?

MySQL 性能 : Single table or multiple tables

java - Connect 4应该如何设计一个好的评价函数?

ruby - 我们如何在 Ruby 中进行图形表示

algorithm - 商品到商品的亚马逊协同过滤

algorithm - 从一个数组中删除另一个数组中的元素

c# - 管理绝对路径和完整路径

memory - 在 Redis 中批量设置哈希

algorithm - 如果我使用 4xManhattan 距离作为 15-Puzzle 的启发式算法,为什么 A* 更快