【发布时间】:2013-06-26 05:36:01
【问题描述】:
我正在尝试找到一种最佳算法,该算法可以在覆盖所有元素的同时找到元素总和最低的最大子集。
eg :- 假设 A B C 是零售商,W X Y Z 是产品,目标是尽量减少访问量并降低价格。
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
真的,我只是对是否已经有适合这种模式的算法感兴趣。我不能成为第一个需要这种优化的人。
【问题讨论】:
-
嗯,考虑过使用树和深度优先搜索?自从我做这种事情以来已经有一段时间了,但似乎它可以工作。
-
最小化价格和最小化访问之间的权衡是什么。您想以最低的价格找到满足此要求的最少访问次数吗?
-
我不明白这个问题,这个例子让我很困惑。请解释为什么不能选择
C:{WXYZ}(访问量较少)或A:{X}, B:{Y}, C:{WZ}(成本较低)而不是B:{XYZ}, C:{W}。 -
也许他想要帕累托边界? (一组解决方案使得在这两个标准中都不存在更好的解决方案。)但看起来不像。
标签: algorithm dynamic-programming linear-programming