无重量约束背包
Posted
技术标签:
【中文标题】无重量约束背包【英文标题】:Constrained Knapsack without weight 【发布时间】:2016-02-09 19:30:04 【问题描述】:我刚刚遇到了以下问题(它让我想起了背包问题,但有一些不同):
给你 n 件物品,你必须把它们放在你的背包里,以获得最大的利润。每个项目都有特定的利润值和特定的形状。由于它们的形状,有些物品不能一起放入背包。与正常的背包问题不同,没有最大重量限制背包中物品的数量。 您还将获得每个项目的列表。在该列表中,您可以看到可以与相应物品一起放入背包的物品。
是否有计算最优解的算法? 或者它是一个NP完全问题?那样的话,有没有逼近的方法?
【问题讨论】:
【参考方案1】:我认为这是NPC。
polynomial verification requirement 是微不足道的。
减少到Maximal Independent Set 问题。对于每个 MIS 实例 G = (V, E),构造一组项目 V,每个项目都有单位利润。对于每个项目 v ∈ V,它可以放置的项目列表是它不共享边的顶点集。即,如果 G(v) 是可以与 v 一起使用的项目列表,则 G(v) = w | (u, w) ∉ E.
如果对于新问题有一个利润k 的解决方案,那么它使用不在彼此列表中的k 个项目。由此可见,独立集问题有一个大小为k的解。
【讨论】:
非常感谢!很好的答案!现在我还发现,如果你没有单位利润,这个问题就叫做最大权重独立集。以上是关于无重量约束背包的主要内容,如果未能解决你的问题,请参考以下文章