华南理工大学无线电爱好者协会软件小组美妙的算法程序员

动态规划

2017-09-27  本文已影响268人  廖少少

动态规划(Dynamic Programming)

本文包括:

  1. 动态规划定义
  2. 状态转移方程
  3. 动态规划算法步骤
  4. 最长非降子序列(LIS)
  5. 最大乘积子串
  6. Unique Paths
  7. Unique Paths II
  8. Minimum Path Sum
  9. Triangle
  10. 最长公共自序列(LCS)
  11. 编辑距离
  12. 交替字符串
  13. 矩阵链乘积

前文引自:http://www.hawstein.com/posts/dp-novice-to-advanced.html

1、 什么是动态规划,我们要如何描述它?

2、“状态”代表什么及如何找到它?

3、DP 算法步骤

最优子结构:问题的最优解包含的子问题的解相对于子问题而言也是最优的。
并非所有组合优化问题都具有最优子结构特性。

4、最长非降子序列(LIS)

另一个解法:利用LCS思想(第9点)

5、最大乘积子串

6、Unique Paths

7、Unique Paths II

8、Minimum Path Sum

9、Triangle

10、最长公共子序列(LCS)

11、编辑距离

12、交替字符串

13、矩阵链乘积

m[i,j] 为 A1A2...Aj 的最优完全加括号所需的最少标量乘法次数,对于整个问题来说,计算 A1...n 的最节省方式的代价自然应为 m[1,n]

Pi-1PkPj 是计算 Ai...k 和 Ak+1...j 的积所消耗的时间

上一篇下一篇

猜你喜欢

热点阅读