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

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

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

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

12得票2回答
算法设计:您能提供多背包问题的解决方案吗?

我正在寻找一种伪代码解决方案,来解决多背包问题(优化语句在页面中间)。我认为这个问题是NP完全问题,所以解决方案不需要是最优的,如果它相当高效和易于实现那就好了。 问题如下: 我有很多工作项,每个工作项需要不同(但固定和已知)的时间完成。 我需要将这些工作项分成组,以便具有最小的组数(理...

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

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

12得票3回答
奇怪但实用的二维装箱优化

我正在尝试编写一个应用程序,为分隔面板生成绘图。 我有N个小隔间(2D矩形)(N 这些N个隔间必须按列排列,以便满足每个隔间的上述约束条件。 此外,每列的宽度由该列中每个隔间的minWidths的最大值决定。 此外,每列的高度应相同。 这决定了面板的高度。 我们可以在任何列的剩余空间中添加...

18得票5回答
多重约束背包问题

如果有多个限制条件(例如,体积限制和重量限制,其中每个物品的体积和重量不相关),我们就会遇到多重约束背包问题、多维背包问题或m维背包问题。 如何用最优化的方式编写代码?可以开发蛮力递归解决方案。也许是分支和界限,但基本上在某些情况下是指数级的,直到进行某种记忆化或使用动态规划,否则如果做得不...

8得票3回答
Haskell背包问题

我已经用Scala编写了一个解决有限背包问题的答案,其中每种物品只有一个,现在想要将其转换为Haskell,并得到以下结果: knapsack :: [ ( Int, Int ) ] -> [ ( Int, Int ) ] -> Int -> [ ( Int, Int ) ...

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...

24得票2回答
内存受限的硬币找零问题,适用于小于十亿的数字

我在一次培训中遇到了这个问题。我们有N个不同的值(N<= 100)。我们把这个数组称为A[N],对于这个数组A,我们确定其中有一个1,而且A[i] ≤ 109。其次,我们给出了数字S,其中S ≤ 109。 现在我们需要使用这些值来解决经典的硬币问题。实际上,我们需要找到最少...

12得票1回答
多背包问题中,物品只有重量,如何解决?

我正在尝试解决这个问题,并想知道是否有已知的算法/解决方案可以解决这个问题。 问题: 我有n个袋子和n个物品(它们的重量可能相等也可能不同)需要放入这些袋子中。每个袋子都有一定的重量限制,并且需要以这样的方式将n个物品放入这些袋子中,以便我可以在每个袋子中使用最大的空间。 袋子大...