1.2算法研究-01背包问题
来源:互联网 发布:painttool sai mac 编辑:程序博客网 时间:2024/05/21 17:42
刚刚理解了动态规划,趁热打铁,理解下01背包问题。
度娘真是个好东西,这种经典问题,给的推送,都是点击量比较高的,问题说的也比较好。从别的博客搬过来个链接:http://blog.csdn.net/mu399/article/details/7722810讲的还是不错的。
另外加上写字节的理解。链接里的博主说的不错,理解01背包问题,就是理解那张表。我现在用自己的理解叙述下。
01背包问题,先解决,承重1到V,只放物品A,所蕴含的最大价值和承重1-V分别是什么个映射关系。处理完后,同样的问题,放物品A和B,然后还能得到映射关系。最后得到放物品ABCD...的最大价值。
01背包问题依旧是动态规划问题。他等效到上面表述的问题之后,就变的好理解了。
01背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] }。
f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。
Pi表示第i件物品的价值。
即,分两步走,考虑Vi承重时,能放ABCD,最大价值。等于求,我到底要不要放D。不放D,则最大价值是,Vi承重下,ABC的最大价值(已经在之前算得);放D,则最大价值是Vi-VD的承重下,ABC的最大价值(之前也算得),两个谁大就选哪个方案。至此,完成其中某一步决策。
理解的关键点是:我到底放不放D。放or不放,两个值,取大的。
另外的关键就是,如何把问题转换为01背包问题,才是难点。
阅读全文
0 0
- 1.2算法研究-01背包问题
- 01背包问题研究
- 1.3算法研究-完全背包问题
- [算法]01背包问题
- 【算法】01背包问题
- 背包算法研究
- 01背包问题 原理 算法
- 回溯算法---01背包问题
- 算法之01背包问题
- 【算法题】01背包问题
- 关于背包问题的研究
- 算法——背包问题 01背包+完全背包+多重背包
- [算法系列之二十九][背包问题]01背包
- 【算法】01背包问题的Java实现
- 01背包问题(回溯算法实现)
- 01背包问题几种算法实现
- 算法练习-NOJ-1004-01背包问题
- 01背包问题(回溯算法实现)
- JVM-运行时数据区(Run-time Data Areas)
- redis主从复制及切换
- Shell字符串截取实现
- mapreduce对日志数据上下行流量汇总
- E
- 1.2算法研究-01背包问题
- 来自一个前端新手的感悟
- linux---安装ubuntu
- windows 64位下,React-Native环境搭建详解 (Android)
- Java中方法调用的细微区别
- NAT技术与代理服务器
- 大数据基础知识--2017.7.17
- linux 操作系统 一.linux 操作系统概述 1.常见操作系统
- java泛型 泛型的内部原理:类型擦除以及类型擦除带来的问题