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

    1 可以用动态规划解决的问题的两个条件

    最优子结构和重叠的子问题。最优子结构很难定义,定义了也很难理解。就看原问题可不可以被分解从更小规模的子问题,并且解决了子问题后就可以从逻辑上解决原问题,这样的分解就是有效的,就是具有最优子结构的。至于重叠的子问题,这个是为了构造一个表来保存更小规模的子问题的解,然后加速更大规模的问题的解决的。

    2 关于表

    规模小的子问题先计算出来放在表中,规模大的子问题要用到的时候去查表,然后计算出来之后再填入表中,供规模更大的子问题使用。所以,这个表在循环的过程中逐渐填满的,填满的时候最终的结果也就计算出来了。

    3 动态规划的子问题和原问题的的关系

    子问题和原问题是同一类问题,不是说把某个子问题解决了,原问题就可以解决,而是要把所有的不同规模的子问题都解决了,才能解决原问题,并且更小规模的子问题的结果是更大规模的子问题所公用的,它们需要一个表来记录下来。当思考一个问题时,发现从当个的子问题和原问题很相关,但是通过解决单个的子问题又不能解决原问题时,就应该想到用动态规划的方法来解决,即解决所有的子问题,最终谋求原问题的解决。

    解决动态规划问题分两步:
    第一,明确这是一个动态规划问题,最明显的特征就是要解决原问题,必须要解决所有的子问题,并且可以用表来记录这些子问题。

    第二,用表来记录子问题,最终谋求原问题的解决。

  • 相关阅读:
    Python:起步
    实战Django:Rango Part8
    实战Django:Rango Part7
    实战Django:Rango Part6
    实战Django:Rango Part5
    实战Django:Rango Part4
    Fitnesse集成TestLink
    oracle存储过程代码覆盖率统计工具
    ant svn
    Jenkins中关于一些插件的使用方法
  • 原文地址:https://www.cnblogs.com/hustdc/p/8038570.html
Copyright © 2011-2022 走看看