- 问题描述
证明:分数背包问题具有贪心选择性质。 - 问题求解
(本求解过程来源于对英文答案的翻译以及改编)
①贪心选择性质:
全局最优解可由局部最优(贪心)选择实现。换句话说,当我们考虑如何做出当前问题看起来最好的选择,而不考虑子问题的结果。
②证明:
假设 I 为分数背包问题的一个实例,n 是商品的数量, vi 是 ith 商品的价值, wi 是 ith 商品的重量, W 是背包的容量。假设商品已经按照vi/wi 递增的顺序排列,并且 W≥wn 。令 S={s1,s2,...,sn} 为一个解, si 代表 ith 商品被拿走的重量。贪心算法指定 sn=min(wn,W) ,然后继续解决子问题 I′=(n−1,{v1,v2,...,vn−1},{w1,w2,...,wn−1},W−wn) (也就是说问题规模上的变化)直到 W=0 或者 n=0 。
我们需要证明该策略总会得到一个最优解。我们通过反证法证明。令问题 I 的最优解为s1,s2,...,sn ,假设该问题不具有贪心选择性质,也就是它的最优解不是由每次的贪心选择构成,那么就会有 sn<min(wn,W) 。设 i 是使得si>0 成立的最小值。通过让 si 减小 max(0,W−wn) 并让 sn 增加相同的数量,我们可以得到一个更好的解。因此得到矛盾,假设不成立, sn 是等于 min(wn,W) 的。因此原问题具有贪心选择性质。
算法导论16.2-1
最新推荐文章于 2022-09-17 22:03:23 发布