algorithm - 有重量和元素限制的背包

标签 algorithm knapsack-problem

如果我有一个背包,重量限制为 W,元素限制为 K,我有 N 件元素,N >= k

我知道如何通过拥有一个 3 维内存数组 m[N][W][K](要考虑 N 个项目,剩下 W 个权重,剩下 K 个项目可供选择)来最大化它,因此在 O (N * W * K) 复杂度,但有没有办法在二维内存数组中更快地完成它并实现更快的复杂度,比如 O(N * W) 复杂度?

最佳答案

您使用的内存不正确:“m[N][W][K](要考虑的 N 个项目,剩余 W 个权重,剩余 K 个项目可供选择)”。它不会捕获关于哪些项目可供选择以及有多少项目可供选择的完整信息。

您要解决的问题是 Multi dimensional knapsack ,这比经典问题更复杂。

关于algorithm - 有重量和元素限制的背包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23221989/

相关文章:

algorithm - 动态规划的问题

algorithm - 用动态规划最小化无界背包

查找名称/字符之间比较的算法

java - Java中如何从这个ArrayList中快速知道海量ArrayList中的索引?

algorithm - 产生常数模 2 的幂的乘法链

python - 按长度查找匹配组的轨道

python - 递归生成所有位数和为 n 的 k 位数字

algorithm - Unity 3D - 洪水填充/油漆桶算法不断崩溃引擎

algorithm - 多约束背包问题

c++ - 小背包的堆栈溢出