关于背包的问题?

问题描述 投票:0回答:1

早安,

背包算法在我的脑海中并不完全“点击”。我知道如何很好地回答不同变化的背包问题(0-1背包,带有香料的背包等),但是我并不完全理解算法本身。我很想填补空白

为了使我的问题不再含糊不清,我将我的问题分解为几个子问题。这也是我对考试中背包问题的典型答案,

构造X维矩阵(其中X是需要注意的多个变量)。从点0 {0,0,... 0}开始,计算相邻节点,然后从获得的结果中,将得出矩阵中的下一个对角点,其结果给出了迄今为止最佳的解决方案。重复执行直到算法中所有考虑的选项都充分显示为止

  • 我们如何知道背包算法的工作原理(除了经验观察结果之外)?特别是,我们如何确切地知道不存在被认为是s.t.的可选配置。它产生的结果比我们的算法最终返回的结果更优化?

  • 使用“ X维矩阵”似乎在内存使用方面非常冗余,对于背包问题是否有更优化的数据结构?也许是最小-最大二叉树(在这种情况下,“似乎”更理想的东西)

  • 假设我们有一个非常大的背包。在只剩下很小的空间之前,用贪婪的方法(使物品具有最佳比例)填充背包会不会更有效率?在我看来,直到2*(largest item)还有剩余空间?

欢呼声

algorithm knapsack-problem
1个回答
0
投票

1]由于背包算法是贪婪算法,因此我们知道该算法具有贪婪选择属性(也为某些最优解做出选择),并且具有最优子结构。由于我们的算法总是选择最优决策,因此不可能有一个最优的结果。

© www.soinside.com 2019 - 2024. All rights reserved.