【问题标题】:Reduction of 0,1 knapsack to subset sum将 0,1 背包减少到子集总和
【发布时间】:2017-05-24 20:24:42
【问题描述】:

我知道如何将子集总和减少到 0,1 背包。但是有可能将背包减少到子集总和吗?怎么样?

【问题讨论】:

    标签: knapsack-problem reduction np-complete subset-sum


    【解决方案1】:

    论文"Reducing a Target Interval to a Few Exact Queries" 的定理 2 中描述了从 0,1 背包到子集和的减少。它分三个步骤进行。首先,将背包简化为一个决策问题,该问题测试是否存在一个权重最多为 b 且值至少为 t 的子集。这可以通过对阈值的二分搜索来完成。其次,将此决策问题简化为一小组精确查询,形式为“是否有一个子集的权重恰好为 b,值恰好为 t?”这是一个巧妙的简化,不需要枚举所有可能的 b 和 t。第三,通过将每个 (weight,value) 对映射到足够大的 C 的整数 (weight*C + value) 来将此精确查询简化为子集和。

    【讨论】:

      【解决方案2】:

      我可以提供一个简化,我相信它相当容易理解。由于 StackOverflow 显然不支持 LaTeX,因此您可以找到 PDF here。它基于您在线性规划建模中也发现的想法,即松弛变量和缩放。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-12
        • 2014-01-03
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多