首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >资源优化:使用背包、蛮力还是其他方法?

资源优化:使用背包、蛮力还是其他方法?
EN

Stack Overflow用户
提问于 2016-01-07 14:42:44
回答 1查看 400关注 0票数 1

在一个资源分配问题中,我有n、桶大小和m资源。资源应该分配给桶,这样才会有最大的利用率。我需要用节点js编写算法。

问题是:假设我有两个大小分别为50和60的水桶。资源大小是20,25,40。以下是更恰当的表述和可能的解决办法:

解决方案1

#^ Size =#^Size=#^Size#^Size#^Size资源#^Size#.#^Size#.#^Size#.

*\x{e76f}\x{e76f}\x{e76f}=0.0 5 0 0.0.0 0 0.0.0.0.0.0.0.0.0.2 0 0%的产品

*_~_

这种情况下的总利用率是>1.5

解决方案2

#^ Size =#^Size=#^Size#^Size#^Size资源#^Size#.#^Size#.#^Size#.

*_~_

*\x{e76f}\x{e76f}=‘1,2.0. 1.0 .2.0/2.0/2.0/2.0/2

这种情况下的总利用率是1.5

推理:

-- 背包方法将返回解决方案2,因为它将根据更高的桶大小进行优化。

-Brute-强制方法将返回这两种解决方案。我对这种方法的关注之一是:考虑到我必须使用Node,而且它是单线程的,我对当n(桶)和m(资源)非常大时的性能几乎不抱怀疑态度。

Brute-Force会做得很好吗?还是有更好的方法/算法来解决这个问题?另外,我上面提到的关注在任何意义上都是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-07 15:25:27

背包问题(这是背包问题)是NPC问题,这意味着你只能通过蛮力或与蛮力相同的O-复杂度,但在一般情况下可以更好地找到解。

它是单线程的,当n(桶)和m(资源)非常大时,我很少怀疑性能。

我不确定,你是否知道事情是如何运作的。如果您不创建子线程并处理它们(这不是那么容易),那么每种标准语言都将在一个线程中工作,因此在一个处理器中工作。如果您需要更多的处理器,那么即使在Node.Js中也可以创建子线程。同样在复杂的问题中,如果解决方案需要更多的时间,如果“多重”是常数的话,这并不重要。在你的例子中,如果你有四核的话,我想“倍数”的意思是4。

有两个很好的解决方案:

1)回溯--基本上是先进的蛮力机制,在同样的情况下,返回解的速度要快得多。

2)动态规划()--如果你的项目值相对较低,那么当经典的蛮力无法在宇宙本身的预期时间内找到200个项目的解时,动态方法可以在(毫秒)内给出解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34657924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档