DP(动态规划)的本质以及基础优化
Posted NightPoetry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DP(动态规划)的本质以及基础优化相关的知识,希望对你有一定的参考价值。
DP的本质:
DP的本质是通过记录之前的计算结果来计算之后的计算,从而减少重复计算。
DP的基本计算过程以及思维方式:
抽象而言DP的基本过程是就是假设之前的数据已经计算完成的情况下利用这个已经计算完成的数据计算下一个数据。要解决的主要问题就是如何利用已经计算完成的数据计算下一个数据,具体表现为写出需要写出状态转移方程。主要思考方式就是专注思考如何之前的数据和之后的数据的关系,想方设法的将之后的数据用之前的数据进行表示,并在代码编写的时候假设之前的数据已经计算出来了直接写之后该怎么利用之前的数据计算之后的数据,然后再通过一些设计让计算的时候保证之前的数据已经计算出来了。例如边界条件的处理,如果状态转移方程是s[i]=s[i-1]+ai那么你需要将s[1]进行特殊处理,因为s[1]没有s[0]可以使用,同时计算时应该从小往大计算,因为s[i]需要s[i-1]的数据,因此不能从s[n]开始倒着计算。
DP与递归的类比理解:
通过DP与递归都是抽象思维方式,通过关注全局和重复性质的局部细节来解决问题,而不是陷入细节需要步步跟随。也正是因为不能步步跟随形成从数据处理到数据计算完成的详细的逻辑链所以是一种比较抽象的逻辑。而在抽象程度上DP与递归有异曲同工之妙。
DP是假设之前的结果已经计算完成的情况下如何推导出下一个结果,而递归的核心思维是假设之后的多分枝的(也可能是单分支)结果已经计算完成了,如何利用这些结果得到一个更加综合的结果。在实际计算顺序上,DP是从前往后算,递归是从后往前算。
以上是关于DP(动态规划)的本质以及基础优化的主要内容,如果未能解决你的问题,请参考以下文章