zoukankan      html  css  js  c++  java
  • 动态规划基本思想

          动态规划与分治法类似,都是构造子问题的解来求解原问题,但是与分治法不一样的是,分治法求解的是不重叠的子问题,而动态规划恰好是解决重叠子问题,如果用分治法来解决,将会反复求解子问题,使得计算效率极低,对于重叠子问题,动态规划只需要将子问题求解一遍将其记录在一表格中,需要时调用即可,这样提高了时间上的效率,但是需要储存子问题耗费空间量大,以空间为代价换取时间,这是一个典型的时空权衡问题。具体求解动态规划有以下四个步骤:

    1.刻画一个最优解的结构特征

    2.递归的定义最优解的值

    3.计算最优解的值,通常采用自底向上的方法

    4.利用计算出来的信息构造一个最优解

    前三步是求解最优解的值的步骤,如果需要最优解的信息就需要第四步

    动态规划两种等价实现方法:

    1.自顶向下法:此方法按自然递归方式编写,但过程会保存每一个子问题,在调用子问题时先判断子问题是否已经求解过。若果是则直接返回保存值,否则按通常方式计算这个问题。

    2:自底向上法:这种方法一般需要定义子问题的规模,使得任何问题求解转化为只依赖子问题的解,然而我们将子问题按规模排序,从小到大进行求解,每个子问题求解一次并保存下来,直到所有子问题求解完成。

  • 相关阅读:
    若干排序算法简单汇总(二)
    合并两个链表的问题
    pl/sql(2)
    jQuery的DOM操作之加入元素和删除元素
    怎样优雅的研究 RGSS3 (四) 使窗体从画面边缘弹出
    Android经常使用UI组件
    在Hadoop监控页面怎样查看Hive的完整SQL
    HDU4911:Inversion
    AIX系统开启ftp服务
    JavaScript 模拟策略模式
  • 原文地址:https://www.cnblogs.com/td15980891505/p/4931975.html
Copyright © 2011-2022 走看看