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

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

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

    2 关于表

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

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

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

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

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

  • 相关阅读:
    记录使用cx_Freeze打包Python成exe可执行程序
    jquery plug-in DataTable API中文文档参考
    java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/xxx/lib/arm/liblame.so: has text relocations
    CocoaPods的安装及使用
    Android 贝塞尔曲线的浅析
    GUI学习中错误Exception in thread "main" java.lang.NullPointerException
    线程
    12月13日
    今天开始学习java编程
    UVA10140 Prime Distance
  • 原文地址:https://www.cnblogs.com/hustdc/p/8038570.html
Copyright © 2011-2022 走看看