对标题感到抱歉,SO不允许使用“问题”这个词。我有以下问题:
我有我要卖的东西包,每个包都有价格。当有人请求X
,Y
和Z
时,我想查看所有包,其中一些包含多个项目,并为用户提供将包含多个包的组合覆盖他们的东西,并有最低的价格。
例如,我可能会建议[(X, Y), (Z, Q)]
10美元,因为[(X), (Y), (Z)]
需要11美元。由于这些是价格,我不能使用贪婪加权集合覆盖算法,因为两个人为不同的价格得到同样的东西会很糟糕。
然而,我无法找到详细说明加权集覆盖问题的最佳算法的论文(或任何内容)。有人可以帮助实现(我正在使用Python),论文,甚至是它的工作原理的高级描述吗?
我拥有的软件包数以百计,而事情是5-6,因此运行时间不是问题。
谢谢!
答案 0 :(得分:2)
如果你想要一个指数算法,只需尝试一组包的每个子集,并选择包含你需要的所有东西的最便宜的包。
答案 1 :(得分:2)
如果您正在寻找参考文献,请尝试使用本文
“针对最小集合覆盖问题的贪婪近似算法”, Refael Hassin和Asaf Levin , 2005年2月3日 [link]