【发布时间】:2009-07-08 09:52:09
【问题描述】:
这是什么算法,我几乎一无所知,但这就是我在代码中尝试做的事情......我有类“项目”,属性int A 和int B——我有多个List<Item> 的列表,每个列表中有随机数量的 Item,与任何其他列表不一致。我必须从每个列表中选择 1 项以获得总和 Item.A 的最高可能值,同时遵守 Item.B 的总和也必须至少为某个数字。将来可能还会有另一个属性Item.C 符合该总和必须等于某个数字。我不知道怎么写这个:(
这么说吧;
class Item
int A
int B
int C
我有一个 10 倍不同的 List<Item>,每个里面都有一个随机数的项目
我们必须找到最合适的组合
a) Highest sum of Item.A
b) Constraint that the sum of Item.B must be higher than X
c) Constraint that the sum of Item.C must be equal to X
我不知道如何编码才能快速高效。 :(
【问题讨论】:
-
对我来说,这看起来像是 NP 难的二进制编程。尤其是对 Item.C 的等式约束,这将很困难。你有更多的结构吗?
-
绝对不是线性规划!这是一个非常棘手的问题,除非这些列表中的类有更多的“顺序”可以用来发挥优势。还有更多信息吗?列表有多大,通常有多少项目? ---- NP-硬信息:en.wikipedia.org/wiki/NP-hard。 ----
-
(re:用户帐户;我为您合并了它们)