背包问题

背包问题九讲 2.0 alpha1
崔添翼 (Tianyi Cui, a.k.a. dd_engi)
September 15, 2011
本文题为《背包问题九讲》,从属于《动态规划的思考艺术》系列。
这系列文章的第一版于2007年下半年使用EmacsMuse制作,以HTML格式发
布到网上,转载众多,有一定影响力。
2011年9月,本系列文章由原作者用LATEX重新制作并全面修订,您现在看
到的是2.0 alpha1版本,修订历史及最新版本请访问https://github.com/tianyicui/
pack 查阅。
本文版权归原作者所有,采用CC BY-NC-SA 协议发布。
Contents
1 01背包问题2
1.1 题目. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 基本思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 优化空间复杂度. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 初始化的细节问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 一个常数优化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 完全背包问题4
2.1 题目. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 基本思路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 一个简单有效的优化. . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 转化为01背包问题求解. . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5 O(V N)的算法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.6 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 多重背包问题6
3.1 题目. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 基本算法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 转化为01背包问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 O(VN)的算法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.5 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 混合三种背包问题8
4.1 问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 01背包与完全背包的混合. . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 再加上多重背包. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.4 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1
5 二维费用的背包问题9
5.1 问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.2 算法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.3 物品总个数的限制. . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.4 复整数域上的背包问题. . . . . . . . . . . . . . . . . . . . . . . . . 9
5.5 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6 分组的背包问题10
6.1 问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.2 算法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.3 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7 有依赖的背包问题10
7.1 简化的问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.2 算法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.3 较一般的问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.4 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8 泛化物品11
8.1 定义. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.2 泛化物品的和. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.3 背包问题的泛化物品. . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.4 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9 背包问题问法的变化13
9.1 输出方案. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9.2 输出字典序最小的最优方案. . . . . . . . . . . . . . . . . . . . . . 13
9.3 求方案总数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.4 最优方案的总数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.5 求次优解、第K优解. . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.6 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1 01背包问题
1.1 题目
有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到
的价值是Wi。求解将哪些物品装入背包可使价值总和最大。
1.2 基本思路
这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不
放。
用子问题定义状态:即F[i; v]表示前i件物品恰放入一个容量为v的背包可以
获得的最大价值。则其状态转移方程便是:
F[i; v] = maxfF[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值