算法基础-动态规划
算法基础-动态规划
youmuren0613
这个作者很懒,什么都没留下…
展开
-
怎样优化动态规划的空间?
动态规划的空间优化往往采用滚动数组优化,以一个二维的动态规划为例子,假如状态转移方程如下:f[i][j] = f[i-1][j] + f[i][j-1]。可以发现,第i层的状态,已经和第i-2层的状态没有关系了,那么这种情况下,用于存储第i-2层的空间就可以被重复利用,方法非常简单,把数组的第一维对2取模就可以了:f[i%2][j] = f[(i-1)%2][j] + f[[i%2]][j-1]。这种方法通常可以将空间复杂度降低一个数量级。...原创 2020-07-12 10:14:42 · 434 阅读 · 0 评论 -
怎么优化动态规划的时间?
一般来说,使用动态规划求解的问题,时间上已经比暴力搜索要优化很多了,但是依然存在一些可以优化的空间常见的优化方式有以下两种:1.通过变换状态优化2.通过决策单调优化通过变换状态来优化问题比较难,需要经验和灵感。对于决策单调优化,则比较简单,但是适用范围不广,一般只适用于划分型动态规划当中,通常这个方法可以将复杂度降低一个数量级。...原创 2020-07-12 10:09:30 · 561 阅读 · 0 评论 -
解决一个动态规划问题的步骤是什么
1.首先先根据问题判断是否问题是可用动态规划解决的问题2.如果是可用动态规划解决的问题,尝试从以往的几个类型分类中找到相应的类别或者相似的问题3.接着从以下4个方面分析这个问题: 1)状态是什么 2)状态转移方程是什么 3)状态的初始值是什么 4)问题要求的最后答案是什么 每个步骤分析完成后,基本上就可用解决整个动态规划问题了...原创 2020-07-12 10:04:09 · 618 阅读 · 0 评论 -
什么样的问题适合使用动态规划
可以使用动态规划的问题一般都有一些特点可以遵循。如题目的问法一般是三种方式:1.求最大值/最小值2.求可不可行3.求方案总数如果碰到一个问题,是问这三个问题之一的,就有90%概率是使用动态规划来求解。重点说明的是,如果一个问题是让求出所有的方案和结果,则肯定不是使用动态规划。...原创 2020-07-12 09:59:11 · 3510 阅读 · 0 评论 -
常见的动态规划常见类型
矩阵型* 序列型* 双序列型* 划分型* 区间型* 背包型* 状态压缩型* 树型面试常出现的是矩阵型,序列型和双序列型。区间型和背包型偶尔出现。状态压缩和树性2基本不会出现(一般在算法竞赛才会出现)将所做过的动态规划问题按照这些类别进行分类,分析状态的表示方法和状态转移方程的构造方法在每种类型中的近似之处,会更快的学会动态规划。...原创 2020-07-12 09:55:34 · 747 阅读 · 0 评论 -
动态规划入门注意
动态规划与其说是一个算法,不如说是一种方法论,该方法论主要致力于将合适的问题拆分成三个子目标一一击破:1.建立状态转移方程2.缓存并复用以往结果3.按顺序从小往大算原创 2020-07-12 09:47:46 · 204 阅读 · 0 评论 -
如何理解动态规划
作者:力扣(LeetCode)链接:https://www.zhihu.com/question/39948290/answer/1309260344来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。动态规划问题一直是大厂面试时最频繁出现的算法题,主要原因在于此类问题灵活度高,思维难度大,没有很明显的套路做法。也正是因为这个原因,我们将持续更新此回答来尝试破解面试中所涉及的动态规划问题。本次更新是这个系列的第一篇回答,主要目的是说明动态规划是什么,动态规划问题应.转载 2020-07-12 09:22:02 · 326 阅读 · 0 评论