动态规划
作者:互联网
动态规划针对满足特定条件的一类问题,对各状态维度进行分阶段、有顺序、无重复、决策性的遍历求解。————《算法竞赛进阶指南》
总所周知,动态规划(DP,DynamicProgramming)有基本的三要素:“阶段”、“状态”、“决策”,而能用动态规划解决的问题则需具备三个基本条件:“子问题重叠性”、“无后效性”、“最优子结构性质”。
其中,“阶段”指原问题能转化为多个重复的子问题(即“子问题重叠性”),每个子问题都是一个阶段,而除了最初的阶段,每个阶段都由前面的一个或多个阶段得出,而前面已完成的阶段应不受后面的阶段的影响,只由更前面的阶段得出(即“无后效性”);“状态”一般指各阶段下的解,而问题的答案也一般由最后的一个或多个阶段的状态得出,一般来说,下一阶段的最优解能由前面阶段的最优解得出(即“最优子结构性质”);“决策”指有前面的阶段得出后面阶段的方法,可以分为两种:有前面阶段得出当前阶段或由当前阶段更新后面阶段。
动态规划中最为重要的就是“动态转移方程”,只要能得出DP的计算过程,一般动态规划问题的难点就已被解决,当然问题的边界,具体的形式与实际的目标也随着问题的种类而有着诸多不同,这也是DP问题中需要注意的细节。
DP问题有“线性DP”、“背包”、“区间DP”、“树形DP”等多种类型,优化手段也多种多样,如“倍增”、“状压”等。
标签:前面,问题,阶段,动态,规划,得出,DP 来源: https://www.cnblogs.com/hh--/p/16576403.html