1、问题分析
有 n 个物品和购物车的容量,每个物品重量为 w[i],价值为 v[i],购物车的容量为 W。选若干个物品放入购物车,让其价值达到最大,可表示如下:
问题归结为求解满足约束条件,使目标函数达到最大值的解向量 X = {x1,x2,…,xn}。
首先分析该问题是否具有最优子结构性质。
(1)分析最优解的结构特征
- 假设已经直到 X = {x1,x2,…,xn} 是原问题 {a1,a2,…,an} 的最优解,那么原问题去掉第一个物品就变成了子问题 {a2,a3…,an},如图4-89所示。
- 子问题的约束条件和目标函数如下。
- 我们只需要证明: X’ = {x2,x3,…,xn} 是原问题 {a2,a3,…,an} 的最优解,即证明了最优子结构性质。
(2)建立最优值的递归式
用 c[i][j] 表示前 i 件物品放入一个容量为 j 的购物车可以获得的最大价值。