我正在尝试找到一种最佳算法,该算法可以在覆盖所有元素的同时找到元素总和最低的最大子集。
例如:- 假设 ABC 是零售商,WXYZ 是产品,目标是尽量减少访问量并降低价格。
A B C
W 4 9 2
X 1 3 4
Y 9 3 9
Z 7 1 1
So it appears my top two choices are
a) B:{XYZ} - 7 C:{W} - 2
b) C:{WXZ} - 7 B:{Y} - 3
So a) is picked because since it has a lower cost, i.e 9.
这个问题似乎类似于顶点覆盖和其他线性规划算法,但我无法找出正确的问题。
更新:
看来我需要添加一个额外的变量。介绍 t。如果访问最少零售商的成本和下一个最少的零售商的成本 > t,则选择下一个前者。
Continuing with the example.
say t = 5,
The largest subset containing all elements would be B:{WXYZ} with a cost of 16.
The next largest subset(s) is B:{XYZ} - 7 C:{W} - 2 with a cost of 9.
t = 16 - 9 > 5. So we pick B:{XYZ} - 7 C:{W} - 2
but if we did A:{X}, B:{Y}, C:{WZ} - 5, t = 9 - 5 < 5.
So B:{XYZ} - 7 C:{W} - 2 is picked
如果已经有适合这种模式的算法,我真的很感兴趣。我不能成为第一个需要这种优化的人。