动态规划

1、问题提出

  • 最近面试的过程中发现对基础算法的考察挺多的,准备复习下;
  • 翻看些博客与书籍,发现介绍的过于书面化不易理解;
  • 因此,将自己的理解写通俗一些,帮助他人与自己学习。

2、动态规划原理

从背包问题说起

一家商场搞活动,商家为顾客发放能够承重35磅的背包,顾客在商场内选择商品装入背包。假设商品有:

音响  3000美元  30磅

笔记本电脑  2000美元  20磅

吉他  1500美元  15磅

如何使得背包所含物品总价值最高?

此时若采用贪心算法则将音响装入背包,此时背包剩余空间为35-30=5磅,无法装入其余商品,背包价值为3000美元。

明显,此时贪心算法并非最优解。因为,将笔记本电脑与吉他装入背包,此时背包承重正好为35磅,且价值为3500美元。

因此,贪心算法常用来求解近似最优解(局部最优解),并非全局最优解。其特点是思想简单、求解速度快。

如何寻找全局最优解?

穷举法!那是不可能的,首先太耗时间且易出错,试想3件商品有8种选择方案,4件商品有16中选择方案,n件商品有2^{n}中选择方案,因此,穷举法不现实。

动态规划,能够很好地得出最优解。

动态规划先解决子问题,再逐步解决大问题。对于背包问题,先解决子背包问题,再逐步解决原来的问题。

为方便举例子说明动态规划的思想,假设:

背包可装4磅东西

吉他  1500美元  1磅

音响  3000美元  4磅

笔记本电脑  2000美元 3磅

可将动态规划算法视作对网格的填充,背包问题的网格如下:

                                                             

在对每个单元格放入商品时,需要判断背包的价值是否会增大。

首先,吉他行,重1磅价值1500美元,每一列都能够放下,得到下图价值列表:

                                                            

其次,音响行,此时可供选择的商品包含该行与其上方的各行,即可选商品有吉他、音响。由于音响的重量为4磅,则背包容量至少需要4磅,因此容量为1、2、3的背包内商品不发生变化,商品仍为1500美元的吉他。在背包容量为4时,因为已经包含吉他商品占有1磅容量,剩余3磅不够存放音响,因此比较吉他与音响的价值,将价值较低的吉他取出,将价值偏高的音响放入其中。更新背包的价值列表,得到下图:

                                                        

笔记本电脑行,笔记本电脑重量为3磅,价值2000美元,因此容量为1、2的背包内商品不发生变化。在背包容量为3磅时,已经含有重量1磅的吉他,无法放下重量3磅的笔记本电脑,因此将价值较低的吉他取出,将价值较高的笔记本电脑放入,得到下图:

                                                             

对于容量为4磅的背包,因为容量为1的背包最大价值为1500美元,容量为3磅的背包最大价值为2000美元,且商品未重复,因此容量为4磅的背包价值最大为3500美元,得到下图:

                                                           

此时,背包的最大价值为3500美元。

若此时新增价值为2000美元,重量为1磅的商品手机呢?

即下图中的最优解:

                                                                      

此时,1磅商品可放入1、2、3、4磅容量的背包,比较商品的价值。1磅手机的价值高于1磅吉他价值,因此1磅容量背包最大价值为2000美元。容量为2磅的背包中含有1磅的吉他,可再放入1磅商品,因此2磅容量的背包最大价值为1500+2000=3500美元。得到下图:

                                                                            

容量为3磅的背包此时已经含有重3磅价值2000美元的笔记本电脑,低于2磅容量背包的最大价值,因此将笔记本电脑替换为吉他、手机。得到下图:

                                                                            

对于最后一个单元格,当前最大价值为3500美元,选择手机则剩余3磅容量,3磅容量的最大值且不含有手机则为2000美元的笔记本,因此,4磅容量的最优解为2000+2000=4000美元。即选择笔记本电脑与手机,得到最终图如下:

                                                                                 

商场又新增价值为1000美元重量为1磅的MP3,此时的最优解为?

                                                                                  

结论为:

                                                                                 

4500美元1磅手机2000美元、1磅吉他1500美元、1磅MP3 1000美元,共2000+1500+1000=4500美元。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HPF4212

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值