算法学习系列之--动态规划法

本文探讨了动态规划的基本概念,包括其适用的问题特征如最优子结构性质和无后效性等。通过实例分析,介绍了如何将复杂问题分解为子问题并求解的方法。

  • 引言

    早上起来,看了一道美团面试题,是关于动态规划的。突然发现对学过的算法并没有一个系统全面的认识。于是准备把经典算法以写博客的形式回顾一遍。贵在坚持!

  • 理解

    如果问题是由交叠的子问题构成的,我们就可以运用动态规划技术来解决它。一般来说,这样的子问题出现在对给定问题求解的递推关系中,这个递推关系中包含了相同类型的更小子问题的解。动态规划法建议,与其对交叠的子问题一次又一次的求解,还不如对所有的子问题只求解一次,并把结果保存在一张表中,这样就可以从表中得到原始问题的解。

    能用动态规划法解决的问题的特点:具有最优子结构性质和无后效性

    最优子结构性质:问题的最优解所包含的子问题的解也是最优的

    无后效性:无后效性是指如果在某个阶段上过程的状态已知,则从此阶段以后过程的发展变化仅与此阶段的状态有关,而与过程在此阶段以前的阶段所经历过的状态无关。利用动态规划方法求解多阶段决策过程问题,过程的状态必须具备无后效性。

    思路就是:首先分析问题,是否可以划分为更小的子问题,即分析问题是否有最优子结构性质和无后效性,然后推导出问题的递归函数表达式,设计伪代码,求解问题。

  • 典型例子
  1. 币值最大化问题
  2. 找零问题
  3. 硬币收集问题


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值