0-1背包问题,动态规划
2015-06-05 19:46
183 查看
摘录转自http://www.cnblogs.com/Anker/archive/2013/05/04/3059070.html
1. 动态规划算法:
(1)全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解 ;(2)动态规划的关键是状态转移方程,即如何由以求出的局部最优解来推导全局最优解 ;
(3)边界条件:即最简单的,可以直接得出的局部最优解。
2. 0-1背包问题描述
有一个窃贼在偷窃一家商店时发现有n件物品,第i件物品价值为vi元,重量为wi,假设vi和wi都为整数。他希望带走的东西越值钱越好,但他的背包中之多只能装下W磅的东西,W为一整数。他应该带走哪几样东西?
0-1背包问题中:每件物品或被带走,或被留下,(需要做出0-1选择)。小偷不能只带走某个物品的一部分或带走两次以上同一个物品。
部分背包问题:小偷可以只带走某个物品的一部分,不必做出0-1选择。
3. 0-1背包问题解决方法
0-1背包问题是个典型举办子结构的问题,但是只能采用动态规划来解决,而不能采用贪心算法。因为在0-1背包问题中,在选择是否要把一个物品加到背包中,必须把该物品加进去的子问题的解与不取该物品的子问题的解进行比较。这种方式形成的问题导致了许多重叠子问题,满足动态规划的特征。动态规划解决0-1背包问题步骤如下:
0-1背包问题子结构:选择一个给定物品i,则需要比较选择i的形成的子问题的最优解与不选择i的子问题的最优解。分成两个子问题,进行选择比较,选择最优的。
0-1背包问题递归过程:设有n个物品,背包的重量为w,C[i][w]为最优解。即:
课后习题给出了伪代码:
相关文章推荐
- eclipse配置问题汇总
- Hubot插件开发:井字游戏
- 【c++类与对象练习】判断字符串str是否为当前串的子串
- Kmeans++及字典学习和图像分割
- jquery绝对路径
- SourceForge接管网络安全审计软件Nmap的项目
- 大视野在线测评 1010 [HNOI2008]玩具装箱toy (动态规划)
- 组员名单
- 块设备
- 构造函数方法创建Mat对象
- matlab画甘特图
- CentOS安装PostgreSQL数据库
- Java集合框架22课后编程题
- [转]深入分析ConcurrentHashMap
- dietpi请暂时不要升级为jessie
- SQL输出矩阵
- 编译复习第二章
- 运算符优先级口诀
- layoutSubviews总结
- POJ1062 昂贵的聘礼