x bins, each with capacity y
x*y items
each (item, bin) pair has an associated score
根据上述标准,是否有最大化总分的标准算法?
答案 0 :(得分:0)
这只是背包问题的变化,它是非常常见的:http://en.wikipedia.org/wiki/Knapsack_problem
在背包问题中,复杂度为O(2^n)
,这将为O(k^n)
,其中k
为分箱数。
解决方案:对于背包问题,您可以将每种可能性写为0和1的数字,其中0表示该位置的项目不在包中,1表示它在包中。
对于这个问题,它是相似的,但0和1是不够的,你必须知道该项目在哪个包,因此你必须记住包的位置。
例如,如果您有6个项目,则可以将其编写为此数字(或数组):
005110
这可能意味着第一件和第二件不在任何包中,第三件在第5件袋中,第二件在第一件袋中,下一件在第一件袋中,其次是在任何袋中。
工程推荐流程:创建自己的完全工作背包问题,然后将其重写为此问题。 (因为背包问题基本上只有一个只有一个垃圾箱)