zoukankan      html  css  js  c++  java
  • 动态规划


    基本思想

    动态规划算法通常用于求解某种最优化性质的问题,在这类问题中,可能会有多个可行解。

    每一个解都对应一个值,我们希望找到具有最优值得解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解为若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划求解的问题,经分解得到的子问题往往不是相互独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了多次。如果我们能够保存已解决的子问题的答案,在需要时找出已求得的答案,这样就可以避免大量重复的计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这就是动态规划的思路。

     

    适用条件

    适用动态规划的问题必须满足最优化原理和无后效性。

        1、最优化原理:一个最优化策略的子策略总是最优的。

        2、无后效性:将各阶段按照一定的次序排列好之后,对于某个给定的阶段,它以前各阶段的状态无法直接影响它未来的决策,而只能通过当前的这个状态,换句话说,每个状态都是对过去历史的一个完整总结。

    注:

        动态规划实质是一种以空间换取时间的技术,它在实现过程中,不得不存储产生过程中的各种状态,所以它的空间复杂度要大于其他算法。

  • 相关阅读:
    TSQL Beginners Challenge 1
    SQL拾遗
    简易实体生成方式
    CTE-递归[2]
    编号处理
    行列转换/横转竖
    OUTPUT、Merge语句的使用
    关于SQL IO的一些资料
    对左值(lvalue)和右值(rvalue)的两种理解方式
    跨平台判断64位和32位开发的一些宏定义
  • 原文地址:https://www.cnblogs.com/luosongchao/p/3551441.html
Copyright © 2011-2022 走看看