动态规划问题总结

来源:互联网 发布:windows专业版和旗舰版 编辑:程序博客网 时间:2024/05/14 17:05

本文提纲参考自视频:https://www.bilibili.com/video/av9379437/#page=29


感谢左大神的讲解

文章是本人的学习笔记,侵删!



在介绍动态规划是什么之前,先来看一道题目


求解该题,有四种方法


在面试题中出现类似的题目,优化轨迹高度一致。


方法一:暴力搜索方法



暴力搜索的时间复杂度很高,因为存在太多的重复劳动


方法二:记忆搜索法



其实记忆化搜索的方法,本质上与动态规划的思想非常相似。时间复杂度和动态规划一样0(m*n^2)


方法三:动态规划



记忆搜索方法和动态规划方法的联系

1.记忆化搜索方法就是某种形态的动态规划方法;

2.记忆化搜索方法不关心到达某一个递归过程的路径,只是单纯地对计算过的递归过程进行记录,避免重复计算;

3.动态规划的方法则是规定好每一个递归过程的计算顺序,依次进行计算,后面的计算过程严格依赖前面的计算过程。

4.两者都是空间换时间的方法,也都有枚举的过程没区别就在于动态规划规定了计算顺序,而记忆搜索不用规定。


什么是动态规划方法?

1.其本质是利用申请的空间来记录每一个暴力搜索的计算结果,下次要用结果的时候直接使用,而不再进行重复的递归过程。

2.动态规划规定每一种递归状态的计算顺序,依次进行计算。


经过化简后的动规划方法的时间复杂度为O(m*n).


总结:虽然动态规划方法和记忆搜索方法本质上是相同的,但是由于动态规划规定了计算过程,所以使状态继续优化得以实现。


面试中遇到的暴力递归题目可以优化为动态规划方法的过程:



动态规划方法的关键点:






原创粉丝点击