自学动态规划

1.动态规划的定义
  动态规划,dynamic Programming,是一种高效解决问题的方法,使用与具有重复子问题和最优子结构的问题。
2.动态规划的核心简单解释
         一句话:Those who cannot remember the past are condemnde to repeat it.
         一段对话:
A * "1+1+1+1+1+1+1+1 =?" *

A : "上面等式的值是多少"
B : *计算* "8!"

A *在上面等式的左边写上 "1+" *
A : "此时等式的值为多少"
B : *quickly* "9!"
A : "你怎么这么快就知道答案了"
A : "只要在8的基础上加1就行了"
A : "所以你不用重新计算因为你记住了第一个等式的值为8!"
          动态规划算法也可以说是 '记住求过的解来节省时间'
3.动态规划最重要的工具
        表格,对于动态规划而言,最重要的是记录之前的运算结果。而表格恰好可以做到这一点,表格之间的位置关系可以很好的记录计算结果之间的关系,从而达到存储的目的。
以背包问题为例(出自算法图解)
          假如有一个小偷,现在他来到了一家商店准备年底冲业绩,店里有三件商品可以偷,分别是吉他(1磅)1500元  笔记本电脑(3磅)2000元
音响(4磅)3000元 小偷的只有一个背包(容量4磅),该如何拿才能获得最高业绩。注意,这里的商品都是不可分割的,所以贪心算法行不通。
下图可以很好的解释动态规划的原理


4.何时使用动态规划
a.问题要求最优解;
b.问题可以拆分若干小问题;
c.问题之间存在重叠的子问题。
         还没有系统的学习过dp,所以只能借鉴CSDN大佬们的文章先了解一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值