【问题标题】:Knapsack with unbounded items装有无限物品的背包
【发布时间】:2015-06-15 06:00:33
【问题描述】:

我熟悉 0-1 背包问题,并且当您从每个项目中获得一定数量的副本时,但是当您使用动态编程获得每个项目的无限副本时,我可以弄清楚如何解决它。我现在正在尝试手动解决它,所以我对任何特定代码都不感兴趣。例如here 是我解决 0-1 问题的方法。如果给我每个项目的无限数量的副本,我需要如何修改它?

编辑:我知道该问题的第二个解决方案包含具有相同总值的项目 1、2 和 3。

【问题讨论】:

    标签: algorithm dynamic-programming knapsack-problem


    【解决方案1】:

    一种可能性是提供适当数量的项目多重性。对于itemi,最多可以有

    m_i := K / w_i
    

    该物品的选择,其中K 表示背包容量,w_i 表示i-th 物品的重量。此外,对于实例中出现的每个权重值,最多需要一种物品类型,即相对于权重而言利润最大的物品类型。

    同样,可以修改动态程序的评估以反映要采取的不同数量的项目,而不仅仅是区分01 的选择。

    【讨论】:

    • 事实上你的支配规则可以进一步加强:给定一些项目 i,你可以立即扔掉同时具有 w_j >= w_i 和 v_j w_i 和 v_j
    • 感谢您的评论;如果我没记错的话,这在this article 和很可能在this textbook 中进行了广泛讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多