题目描述
一个旅行者有一个背包容积为m的背包,现在有 n 件物品,它们的重量分别是W1,W2,…,Wn,它们的价值分别为V1,V2,…,Vn,求旅行者能获得最大总价值。
算法分析
用回溯法解0-1背包问题,算法步骤如下:
-
确定问题的解空间,本题是为了从n个物品的集合中找出总价值最大且满足约束条件的一组物品选择方案。对于第i个物品,有且仅有两种选择,即放入背包或者不放入背包,用0和1表示。所以解空间为子集树,共有 2 n 2^n 2n个解。
-
确定剪枝函数,将不满足约束条件和限界条件的解给去掉
约束条件: Σ i = 1 n w i x i \Sigma_{i=1} ^ n w_i x_i Σi=1nwixi <= m
限界条件: 对于