固定尺寸的topN解决方案的背包变形问题

时间:2019-06-06 17:37:44

标签: python algorithm dynamic knapsack-problem

我有一个动态编程问题。我正在尝试在python中找到一个解决背包问题的适当解决方案。

附加要求:

  1. 我在寻找最佳解决方案,而不仅仅是最佳解决方案 topN解决方案。
  2. 我正在寻找尺寸正好为S的解决方案,即背包中的物品数量必须为S。可选地,如果S为-1,我们接受灵活的尺寸

因此,我想放入背包S元素以找到重量不超过最大重量的最有价值的子序列。 每个元素都有(值,权重),其中值是一个数字,权重是一个非负整数。 Maxweight是一个非负整数。

示例:

def knapsack_variant(items, maxweight, S=-1, topN=10):
    """
    >>> items = [(4, 12), (2, 1), (6, 4), (1, 1), (2, 2)]
    >>> maxweight = 15
    >>> S = 4
    >>> topN = 3
    >>> knapsack_variant(items, maxweight, S, topN)
    (11, [(2, 1), (6, 4), (1, 1), (2, 2)])
    next two solutions
    """

0 个答案:

没有答案