【问题标题】:Knapsack problem with item's weight depending on items selected物品重量取决于所选物品的背包问题
【发布时间】:2018-09-24 20:20:55
【问题描述】:

假设有students[]ages[]subjectsFailed[]subjectsTaken[]。假设每个学生的质量指数是subjectsFailed[i]/subjectsTaken[i]。鉴于averageQualityIndex <= x where

,我需要选择学生,以便他们的年龄总和达到最大值

averageQualityIndex = ∑subjectsFailed[k]/∑subjectsTaken[k] 其中 k 是被选中的学生。

在正常的背包问题中,重量是独立的。但是,在这种情况下,平均体重将取决于到目前为止选择的学生人数和他们各自的体重。有没有办法我可以使用背包解决这个问题(最好的解决方案),或者有其他方法可以解决这个问题(如果是,那是什么方法?)。

【问题讨论】:

    标签: algorithm dynamic-programming knapsack-problem


    【解决方案1】:

    你想满足约束∑subjectsFailed[k]/∑subjectsTaken[k] <= x

    两边都乘以∑subjectsTaken[k],就变成了∑subjectsFailed[k] <= x.∑subjectsTaken[k]

    重新排列我们发现∑(subjectsFailed[k]-x.subjectsTaken[k]) <= 0∑weights[k] <= 0 其中weights[k] = subjectsFailed[k]-x.subjectsTaken[k]

    所以有了这个重量的定义,它又变成了一个背包问题。

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多