我在一个表中存储了大约 2M 条记录。每条记录都有一个数字和大约 5K 个布尔属性。
所以桌子看起来像这样。
3, T, F, T, F, T, T, ...
29, F, F, T, F, T, T, ...
...
-87, T, F, T, F, T, T, ...
98, F, F, T, F, F, T, ...
我定义SUM(A, B)
为 Ath 和 Bth 属性为真的数字的总和。例如,从上面的示例数据来看:SUM(1, 3) = 3 + ... + (-87)
因为第 1 和第 3 个属性是 T 代表 3 和 -87
3, (T), F, (T), F, T, T, ...
29, (F), F, (T), F, T, T, ...
...
-87, (T), F, (T), F, T, T, ...
98, (F), F, (T), F, F, T, ...
并且SUM()
可以采用任意数量的参数:SUM(1)
并且SUM(5, 7, ..., 3455)
都是可能的。
是否有一些智能算法可以找到可以产生最大结果的属性L
列表SUM(L)
?显然,暴力破解对于这个大数据集是不可行的。
如果有一种方法不仅可以找到最大值而且可以找到前 N 个列表,那就太棒了。
编辑 似乎没有蛮力就不可能找到答案。如果我改变问题以找到一个“好的估计”,会有一个好的方法吗?或者,如果我说 L 的基数固定为 10 左右,有没有办法计算 L?我会很高兴的。