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

    通常,我们把动态规划简称为:DP(dynamic programming)

    首先,动态规划在本质上是对搜索的一种优化。也就是对重叠子问题的优化。
    比如斐波那契数列,如果我们既要计算f(99)、f(100)和f(101),我们就可以保存f(99)和f(100)的值,这样对于f(101)来说时间复杂度为O(1),否则时间复杂度为O(101),也就是时间复杂度优化到了约为原来的1/100。

    重叠子问题:
    重叠子问题就是前面的解可以用在后面一个解上,如上面说过的斐波那契数列。如果没有重叠子问题,则DP无法优化。因为DP的本质是把已经算出的结果存起来,也就是记忆化。并在下一步计算中直接使用上一步的结果,而不是重新算一遍。如果没有重叠子问题,也就是说没有重复计算的地方,那么我们存储结果也没有意义。因此,我们说:如果某个问题没有重叠子问题,那么使用DP无法有效优化。

    记忆化:
    记忆化的意思就是存储已经算出的结果。

    最优子结构:
    子问题的最优解可以用于问题的最优解。

    无后效性:
    如果我们解决了一次问题B(假设解决B使用了问题A的结论),那么我们就不需要再求问题A的结论,在问题B后面的问题直接使用问题B的结论即可。

  • 相关阅读:
    PHP读取Excel文件(PHPExcel)
    Yii实现Password Repeat Validate Rule
    php中字符串长度和截取的函数
    【推荐】PHP中格式化时间函数date与gmdate的区别 | 修改PHP的默认时区
    PHP+AJAX 地区三级联动代码
    ECSHOP session
    JS 中 Class
    js 匿名函数 json
    JS操作JSON总结
    ECshop中的session机制理解
  • 原文地址:https://www.cnblogs.com/zbsy-wwx/p/11680728.html
Copyright © 2011-2022 走看看