动态规划



Those Who Cannot remember  the past are condemned to repeat it
那些不能记住过去的注定重蹈覆辙

      动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远小于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解决一个给定问题,我们需要先解其不同部分(子问题),再根据子问题的解以得出原问题的解。通常许多子问题非常相似,为此动态规划法试图仅仅解决子问题一次,从而减少计算量:一旦某一个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题的解时可以直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。

一言以蔽之
     动态规划算法的核心就是记住已经解决过的子问题的解,从而节省接下来面对相同子问题的时间,这点尤其在重复的子问题数目很大的时候更明显;使用动态规划来解题只需要多项式时间复杂度。这也是开头图片所想要表达的观点,如果没有使用动态规划来仅解决子问题一次,那么每次重复性地解决相同的子问题就会变得毫无意义,像受处罚一样浪费时间。

动态规划的适用情况

  1. 最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态規劃算法解决问题提供了重要线索。
  2. 无后效性。即子问题的解一旦确定,就不再改变,不受在这之后、包含它的更大的问题的求解决策影响。
  3. 子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态規劃算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。


全部评论

相关推荐

头像
昨天 16:48
已编辑
百度_高级研发工程师
事实是检验真理的唯一标准。 无论我们怎么去说,去讲述,去证明,都抵不过一个offer来得实在,无论我们怎么去复现求职中的摸爬滚打、扒皮抽筋、狼狈不堪,都抵不过你在简历写上大厂的名字(外包不算)。 所以在我求职期间,我什么话都不说,什么话都不讲,因为没有意义,虽然我总讲过程才是意义,但只有当你上岸的那一刻,你才有资格回想在水里的挣扎,只有等你出了山,你才知道山的全貌。 我为什么一定要离开华为OD,难道它不稳定吗,不能赚钱吗。为了证明自己,那肯定有的。其实更多的是印证我的认知是否真的正确。 (给不了解我的人交代一下背景,在下双非一本,gap一年,华为OD外包,摸爬滚打4个月,艰难上岸百度正编)一、...
先锋战士:说得很真诚。鄙视链自古有之,学历,家庭背景,财富,权利。从小有之,小学羡慕那些当班委的,中学羡慕那些学生会的,高中羡慕尖子班拿教学金的,大学羡慕高绩点,毕业了羡慕进大厂的。工作了,又羡慕高职级的,再后来又羡慕别人早早结婚的。我想表达的观点很简单,无论是华为od还是百度,都是经历,没有孰高孰低,为了抵达下一个风景,总会付出更多东西,但不就是人生吗?正如登山,每个阶段的山,都要想办法攀登,在博主的文字中,见到了坚持和积极寻找问题解决办法的心态
学历对求职的影响
点赞 评论 收藏
分享
点赞 评论 收藏
分享
迷茫的大四🐶:看来已经准备换人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务