• 动态规划基本思想


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

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

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

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

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

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

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

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

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

  • 相关阅读:
    leetcode bugfree note
    leetcode 419
    leetcode 165
    leetcode 155
    leetcode 204
    leetcode 28
    将二叉搜索树转为有序双向链表
    leetcode 397
    ABAP 动态内表创建/赋值
    ABAP 屏幕下拉框值根据选择框填值赋值
  • 原文地址:https://www.cnblogs.com/td15980891505/p/4931975.html
Copyright © 2020-2023  润新知