- 问题描述
证明:分数背包问题具有贪心选择性质。 - 问题求解
(本求解过程来源于对英文答案的翻译以及改编)
①贪心选择性质:
全局最优解可由局部最优(贪心)选择实现。换句话说,当我们考虑如何做出当前问题看起来最好的选择,而不考虑子问题的结果。
②证明:
假设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)的。因此原问题具有贪心选择性质。