我正在尝试解决的问题涉及一张项目表:
并且。
一个可能的解决方案是:
目标是找到所有满足此条件的可能组合。如果这需要太长时间,则只需找到一些非常小的子集即可。
我的问题是是否有任何良好的算法来解决这个问题?这不是作业问题或其他什么,而是我个人项目的一部分。我一直在尝试想出一个好的解决方法,但似乎总是得到非常低效的解决方案。希望我错过了什么。
Item | x | y | z | ... | n
================
A | 2 | 3 | 1
B | 6 | 6 | 8
C | 9 | 2 | 1
D | 1 | 5 | 7
.
.
.
w
{x, y, z, ..., n}
的值可以是任意的,行数和列数也可以是任意的。
当您将项目组合在一起时,会有约束条件,使得它们的总和为:
1. 7 <= sum(x) <= 10
2. 10 <= sum(y) <= 15
3. 8 <= sum(z) <= 10}
并且。
4. The number of items is 2 <= numItems <= 10
一个可能的解决方案是:
A + B
(x = 8,y = 9,z = 9)。目标是找到所有满足此条件的可能组合。如果这需要太长时间,则只需找到一些非常小的子集即可。
我的问题是是否有任何良好的算法来解决这个问题?这不是作业问题或其他什么,而是我个人项目的一部分。我一直在尝试想出一个好的解决方法,但似乎总是得到非常低效的解决方案。希望我错过了什么。
numItems
范围的限制也是可变的。 - Chris Kdon