算法动态规划 ② ( 动态规划四要素 | 动态规划状态 State | 动态规划初始化 Initialize | 动态规划方程 Function | 动态规划答案 Answer )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法动态规划 ② ( 动态规划四要素 | 动态规划状态 State | 动态规划初始化 Initialize | 动态规划方程 Function | 动态规划答案 Answer )相关的知识,希望对你有一定的参考价值。

文章目录





一、动态规划四要素



在上一篇博客 【算法】动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 ) 中 , 不管是 自底向上的动态规划 还是 自顶向下的动态规划 , 实现 动态规划 算法时 , 需要实现 4 个步骤 , 分别是

  • 状态 State
  • 初始化 Initialize
  • 方程 Function
  • 答案 Answer

1、动态规划状态 State


动态规划 的 状态 State , 与 递归的定义 对应 ;


使用 一维数组 f[i] 或者 二维数组 f[i][j] 表示 特定条件下 规模更小 的问题的答案 ;

使用 i 或 i , j 参数 将 大规模的问题 划分成 小规模问题 ;


一维数组 f[i] 或者 二维数组 f[i][j] 中的元素值 可能是 :

  • 某个小规模问题的 最大值 结果
  • 某个小规模问题的 最小值 结果
  • 方案可行性 , 如 : 是 True 或 否 False 的 布尔值

上一篇博客 【算法】动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 ) 中 , 动态规划 状态 State 就是 二维数组 dp , dp[i][j] 表示从 第 i 行 第 j 列的元素出发 , 数组的元素值就是走到最底层的最短路径 ; 是 小规模问题的 最小值结果 ;


2、动态规划初始化 Initialize


动态规划 的 初始化 Initialize , 与 递归的出口 对应 ;


大规模问题 无法 拆解成 小规模问题 时的 最小状态 , 就是 动态规划初始化 Initialize ;


在 自底向上 的 动态规划 中 , 初始化 就是 最底层 的数据 ;

在 自顶向下 的 动态规划 中 , 初始化 就是 最顶层 的数据 ;

另外 无法代入 到 动态规划方程 Function 中的数据 , 也要并入到 动态规划初始化 Initialize 范畴中 , 对这部分数据也要进行初始化操作 ; 如 : 上一篇博客 【算法】动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 ) 中 自顶向下的动态规划示例 中 , 对 数字三角形 左右两边 的 两列 数据进行初始化 操作 ;


3、动态规划方程 Function


动态规划 的 方程 Function , 与 递归的拆解 对应 ;


动规方程 主要用于 描述 大规模问题 如何 拆解成 小规模问题 , 即 大规模问题 是 如何 依赖于 小规模问题的 , 如 :

  • 大规模问题的结果 由 小规模问题 的计算结果 相加
  • 大规模问题的结果 由 小规模问题 的计算结果 取最大值
  • 大规模问题的结果 由 小规模问题 的计算结果 取最小值
  • 大规模问题的结果 由 小规模问题 的计算结果 必须全部可行
  • 大规模问题的结果 由 小规模问题 的计算结果 只要有一个可行即可
  • 大规模问题的结果 由 小规模问题 的计算结果 没有可行结果
  • 大规模问题的结果 由 小规模问题 的计算结果 可行方案总数

小规模问题的 结果 存放在 一维数组 f[i] 或者 二维数组 f[i][j] 中 ;


4、动态规划答案 Answer


动态规划 的 答案 Answer , 与 递归的调用 对应 ;


动态规划 方程 执行后 , 得到 一堆 小规模问题的计算结果 , 小规模问题的 结果 存放在 一维数组 f[i] 或者 二维数组 f[i][j] 中 ;

  • 大规模问题的结果 由 小规模问题 的计算结果 相加
  • 大规模问题的结果 由 小规模问题 的计算结果 取最大值
  • 大规模问题的结果 由 小规模问题 的计算结果 取最小值
  • 大规模问题的结果 由 小规模问题 的计算结果 必须全部可行
  • 大规模问题的结果 由 小规模问题 的计算结果 只要有一个可行即可
  • 大规模问题的结果 由 小规模问题 的计算结果 没有可行结果
  • 大规模问题的结果 由 小规模问题 的计算结果 可行方案总数

以上是关于算法动态规划 ② ( 动态规划四要素 | 动态规划状态 State | 动态规划初始化 Initialize | 动态规划方程 Function | 动态规划答案 Answer )的主要内容,如果未能解决你的问题,请参考以下文章

求算法。。noip动态规划的题。。。。要C语言的!!!!!!!!

关于动态规划算法,哪位可以讲一下自己心得体会?

Python之动态规划算法

算法题套路总结(三)——动态规划

Python算法-动态规划(Dynamic Programming)

动态规划 - 矩阵链的乘法问题