×

动态规划背包问题

动态规划,0-1背包问题?分析用动态规划和贪心算法求解背包问题的差异

admin admin 发表于2022-07-22 01:35:47 浏览67 评论0

抢沙发发表评论

动态规划,0-1背包问题


相当于一个滚动数组的处理
for i=1..n bound=max{V-sum{w} for v=V..bound
f}
现在我们处理好了
f
现在处理f时...
我们发现f已经没用了
可是还站着内存..所以只需要一维..在状态转移时滚动就行了
而f有关
滚动就像
f有关
而如果bound...V去循环
会提早改了某个j-w
所以要V...bound去循环
sum;
for(int i=N-1;i》=1;i--)
sum;//预处理得到sum数组
for(int i=1;i《=N;i++)
{
low=((V-sum;
for(int j=V;j》=low;j--)
f);
}

分析用动态规划和贪心算法求解背包问题的差异


动态规划本质是以空间换时间,算出了所有可行解的值域。
而贪心算法,每次选则最优的,而结果未必最优。
举个简单例子。
背包能装8kg,有3个物品,分别为3kg,4kg,5kg
动态规划,是计算,3+4, 3+5,得出解,最大的是3+5=8kg
贪心算法,是选择,第一次选最大的:5kg《8kg,第二次选则剩下的最大的4kg,4+5》8,故而解为5kg。

动态规划背包问题与贪心算法哪个更优

首先,这两种算法用于解决不同类型的背包问题,并且没有更好的问题。当可以分配背包项目时,使用贪婪的算法,并且可以使用该项目的单位音量的值。从大到小。当背包项目不可分割时(因为它是密不可分的,即使该项目的单位体积的值不一定是最好的,也不一定是最佳解决方案。)此时,它是使用贪婪是不正确的,应使用动态计划。-动态规划背包问题