如何优化搜索

时间:2013-08-09 11:55:10

标签: javascript algorithm node.js optimization

考虑到多个选项,我需要选择n个, 使总评级最大化,但总成本 不超过预算。

var options = [
    { rating: 8, cost: 6, },
    { rating: 5, cost: 4, },
    //...100 of these in total
];

function select(n, budget) {
    //TODO: Replace this code with some real implementation
    return options.slice(0, 5);
}

//Sudocode:
var result = select(5, 25);
Assert(result.length == 5);
Assert(sum(result.cost) <= 25);
Assert(sum(result.rating) is maximized);

我尝试了一些不同的选项,循环中循环的所有变体。 但是,当然,它们的表现非常缓慢或根本没有回归。

我认为只是循环永远不会起作用,并且必须有一个 解决这个问题的根本方法不同。

1 个答案:

答案 0 :(得分:3)

这正是knapsack problem,即NP-Complete - 因此没有已知的多项式解决方案。

但是,如果你的权重(成本)是相对较小的整数,那么效率很高pseudo-polynomial solution using dynamic programming