动态规划求解

来源:互联网 发布:无限恐怖网络剧 编辑:程序博客网 时间:2024/06/05 02:59

参考博客
动态规划讲解:
教你彻底学会动态规划——入门篇
教你彻底学会动态规划——进阶篇

以下为对上面大神内容的总结

动规的三种形式

1)记忆递归型优点:只经过有用的状态,没有浪费。递推型会查看一些 没用的状态,有浪费。缺点:可能会因递归层数太深导致栈溢出,函数调用带来额外时间开销。总体来说,比递推型慢。2) “我为人人”递推型没有什么明显的优势,有时比较符合思考的习惯。个别特殊题目中会比“人人为我”型节省空间。3)“人人为我”递推型在选取最优备选状态的值Fm,Fn,…Fy时, 有可能有好的算法或数据结构可以用来显 著降低时间复杂度。

思路:动态规划
动规解题的一般思路

  1. 将原问题分解为子问题
    就是确定dp[i][j] 中的i,j代表着什么
    把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题即解决(数字三角形例)。
    子问题的解一旦求出就会被保存,所以每个子问题只需求 解一次。

2.确定状态
就是确定dp[i][j]的值代表着什么

3.确定一些初始状态(边界状态)的值
就是确定dp[i][j]的一些初始值,一些已知值

4.确定状态转移方程
就是确定递推公式
即如何从一个或多个“值”已知的 “状态”,求出另一个“状态”的“值”(递推型)。状态的迁移可以用递推公式表示,此递推公式也可被称作“状态转移方程”。

1 0
原创粉丝点击