17得票3回答
填充两个背包的最佳方法是什么?

对于一个背包,动态规划算法可以有效地实现最优填充。但是是否有已知的高效算法可以最优地填充两个背包(容量可以不同)? 我尝试了以下两种方法,但都不正确。 使用原始DP算法填充一个背包,然后再填充另一个背包。 首先填充大小为“W1 + W2”的背包,然后将解决方案分成两个解决方案(其中W1和...

16得票2回答
变形背包问题 - 最小总价值超过“W”

假设有常见的n个物品集合(每个集合数量不限),其中包括它们的权重和价值:w1, v1 w2, v2 ... wn, vn 给定一组物品,每个物品有一个重量 w 和一个价值 v,以及一个目标重量 W,需要选择物品使得总重量至少为 W 且总价值最小化。 这看起来像是整数/无限背包问题的一个变种(...

15得票5回答
Haskell中动态规划的高效表格

我已经使用Haskell编写了0-1背包问题的代码。到目前为止,我对实现的惰性和通用程度感到相当自豪。 我首先提供了创建和处理惰性二维矩阵的函数。 mkList f = map f [0..] mkTable f = mkList (\i -> mkList (\j -> f ...

14得票2回答
这个记忆化动态规划表为什么在SPOJ上太慢了?

剧透警告:我正在解决http://www.spoj.pl/problems/KNAPSACK/,如果你不想被可能的解决方案剧透,请勿查看。 模板: import Data.Sequence (index, fromList) import Data.MemoCombinators (mem...

14得票3回答
如何确保Java线程在不同的核心上运行

我正在使用Java编写一个多线程应用程序,以改进顺序版本的性能。它是0/1背包问题动态规划解决方案的并行版本。我有一台Intel Core 2 Duo电脑,在不同分区上安装了Ubuntu和Windows 7 Professional操作系统。我正在Ubuntu下运行。 我的问题是,并行版本实...

14得票6回答
有界背包的DP算法?

"The Wikipedia article about Knapsack problem includes three types of it: 1-0 (one item of each type) Bounded (several items of the same type) Un...

13得票3回答
在背包中打印袋子里的物品

假设您是一名小偷,闯入了一所房子。你找到了以下物品: 一个重量为3磅的花瓶,价值50美元。 一个重量为6磅的银块,价值30美元。 一幅重4磅的画,价值40美元。 一面重5磅的镜子,价值10美元。 解决这个大小为10磅的背包问题的方案是90美元。 使用动态规划的方法制作的表如下: 现在我想知道...

13得票3回答
0/1背包动态规划优化,从二维矩阵到一维矩阵

我需要从维基百科上得到一些澄清:背包问题,具体在以下部分中: 这个解决方案将以O(nW)时间和O(nW)空间运行。此外,如果我们只使用一个一维数组m[W]来存储当前最优值,并且在每次重写时将其传递i + 1次,从m[W]重写到m[1],那么我们将仅使用O(W)空间获得相同的结果。 ...

12得票2回答
背包算法的附加属性

当只有一个属性时,我能理解其中的内容。但是当有多个属性时,我对背包问题的理解存在问题。 我将为您翻译以下内容: 我需要编写一个使用背包算法的程序,其中有两个属性。老师告诉我们,必须在三维数组中完成。我无法想象这样的数组会是什么样子。 假设这是我的输入: 4 3 4 // number...

12得票2回答
OpenMP - 当在外循环之前并行化时,嵌套的for循环会变得更快。为什么?

我目前正在实现一个动态规划算法来解决背包问题。因此,我的代码有两个 for 循环,一个外部循环和一个内部循环。 从逻辑上讲,我可以并行化内部 for 循环,因为其中的计算是相互独立的。由于存在依赖关系,无法并行化外部 for 循环。 所以这是我的第一种方法:for(int i=1; i &...