内部预算最高价值算法

时间:2015-11-04 22:41:42

标签: algorithm math language-agnostic

我不完全确定提出这个问题的最佳方式(或者进行研究以确定之前是否已经回答过问题)。

给定一个数据集,其中每个条目都有一个Point值和一个Dollar值,我希望生成一个长度为N个条目的列表,这些条目在保持在预算B范围内时产生最高的聚合点值。

示例数据集:

Item    Points    Dollars
Apple   3.0       $1.00
Pear    2.5       $0.75
Peach   2.8       $0.88

使用此(小)数据集,假设我的预算(B)为2.25美元,列表长度(N)必须为2.您必须使用固定列表长度,但要求使用所有预算。

显然,所提供的示例很容易在一个人的头脑中做,但是给定一个更大的数据集,以及更高的N和B值,我正在寻找可以生成列表的算法。我很难绕过这个。

只是在寻找伪算法,但如果你喜欢任何给定的语言,请随意回复!

2 个答案:

答案 0 :(得分:1)

我非常肯定这可以简化为NP完全问题,因此开发一个总能给你“正确”答案的过程并不值得,因为许多人已经尝试过并且未能有效地做到这一点在大型数据集上。但是,您可以使用更有效的近似技术,虽然它无法保证为您提供正确的答案,但许多流行的近似算法都能够实现高精度。

希望这可以帮助你:)

答案 1 :(得分:1)

这个问题是NP-Complete(NP和NP-Hard),意思是,直到现在还没有找到算法,它在多项式量时间(多项式到输入大小)中解决了这个问题,如果找到算法那么,你会解决计算机科学中最大的一个问题(P = NP),你至少会带来一百万美元的奖励。

如果您对近似值感到满意,我会推荐使用Greedy算法:

https://en.wikipedia.org/wiki/Greedy_algorithm