据我所知,背包问题使用动态规划来找到每个项目的最优解,这取决于它之前的项目。这个假设假设解决方案取决于项目的顺序。为什么最终的解决方案不依赖于顺序?
发布于 2017-05-24 12:56:04
不是的。背包问题的动态规划解决方案不依赖于前面的项目。
在考虑是否将物品放入背包时,我们只需要考虑背包在选择物品之前和之后的剩余容量。因此,我们循环所有可能的剩余容量,并选择最好的一个。
dp[i][c] = max(dp[i-1][c+w[i]] + v[i], dp[i-1][c])其中,dpi表示考虑第i项之后的最大可能值,背包的剩余容量等于c。wi表示第i项的重量(或体积),vi表示第i项的值。
没有必要按顺序考虑项目。考虑项目的顺序只是为了方便。您还可以考虑以相反的顺序或随机顺序选择项目。
https://stackoverflow.com/questions/44148051
复制相似问题