算法设计与分析实验报告实验二0-1背包年月院系:班级:学号:姓名:任课教师:成绩:1实验二0-1背包一
实验内容分别用编程实现动态规划算法和贪心法求0-1背包问题的最优解,分析比较两种算法的时间复杂度并验证分析结果二.实验目的1、掌握动态规划算法和贪心法解决问题的一般步骤,学会使用动态规划和贪心法解决实际问题;2、理解动态规划算法和贪心法的异同及各自的适用范围
算法描述1、动态规划法01背包问题的状态转换公式为:(1)V(i,0)=V(0,j)=0(2)公式表明:把前面i个物品装入容量为0的背包和把0个物品装入容量为j的背包,得到的价值均为0
如果第i个物品的重量大于背包的容量,则装入前i个物品得到的最大价值和装入前i-1个物品得到的最大价值是相同的,即物品i不能装入背包;如果第i个物品的重量小于背包的容量,则会有以下两种情况:(1)如果把第i个物品装入背包,则背包中物品的价值等于把前i-1个物品装入容量为j-wi的背包中的价值加上第i个物品的价值vi;(2)如果第i个物品没有装入背包,则背包中物品的价值就等于把前i-1个物品装入容量为j的背包中所取得的价值
显然,取二者中价值较大者作为把前i个物品装入容量为j的背包中的最优解
2、贪心法背包问题至少有三种看似合理的贪心策略:(1)选择重量最轻的物品,因为这可以装入尽可能多的物品,从而增加背包的总价值
但是,虽然每一步选择使背包的容量消耗得慢了,但背包的价值却没能保证迅速增长,从而不能保证目标函数达到最大
(2)选择价值最大的物品,因为这可以尽可能快地增加背包的总价值
但是,虽然每一步选择获得了背包价值的极大增长,但背包容量却可能消耗得太快,使得装入背包的物品个数减少,从而不能保证目标函数达到最大
(3)选择单位重量价值最大的物品,在背包价值增长和背包容量消耗两者iiiiwjvwjiVjiVwjjiVjiV}),1(),