动态规划

动态规划是算法中的难点与重点,面试的时候应该也会经常遇到。动态规划是运筹学的一个分支,是求解决策过程最优化的教学问题,其处理对象是多阶段决策问题。这种问题一般可以分解成为若干个相互联系的阶段,在每一个阶段都要做出决策,形成一个决策序列,该决策序列也成为一个策略。对于每一个决策序列,可以在满足问题的约束条件下用一个数值函数(即目标函数)衡量该策略的优劣。多阶段决策问题的最优化目标是获取导致问题最优值的最优决策序列,即得到最优解。

最优性原理

假设为了解决某一多阶段决策过程中的优化问题,需要依次作出n个决策D_1,D_2,...,D_n,如果这个决策序列是最优的,对于任何一个整数k,1<k<n,无论前面k个决策D_1,D_2,...,D_k是怎样的,以后的最优决策只取决于由前面决策所确定的当前状态,即以后的决策序列D_{k+1},D_{k+2},...,D_n也是最优的。

最优性原理体现为问题的最优子结构特性,最优子结构特性是动态规划求解问题的必要条件。

个人觉得递推算法的思想是动态规划算法的第一步。

动态规划实施步骤

1. 把所求最优化问题分成若干个阶段,找出最优解的性质,并刻划其结构特性。

2. 将问题各个阶段时所处不同的状态表示出来,确定各个阶段状态之间的递推关系,并确定初始条件。

3. 应用递推求解最优值

4. 根据计算最优值时所得到的信息,构造最优解,构造最优解就是具体求出最优决策序列。

示例

1. 插入乘号问题,n在一个由n个数字组成的数字串中插入r个乘号(1≤r<n),将它分成r+1个整数,找出一种乘号的插入方法,使得这r+1个整数的乘积最大。例如:在数字串847313926中插入5个乘号,分为6个整数相乘,使乘积最大的最优解为:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值