动态规划:线性DP

线性DP

  • 定义

        线性DP:即线性动态规划,不局限于“线性时间复杂度”的一维动态规划。与数学中的“线性空间”类似,如果一个动态规划算法的“状态”包含多个维度,但在每个维度上都具有“线性”变化的“阶段”,那么该动态规划算法同样称为“线性DP"。在这类问题中,需要计算的对象表现出明显的维度以及有序性,每个状态的求解直接构成一个阶段,这使得DP的状态表示就是阶段的表示。因此,我们只需要在每个维度上各取一个坐标值作为DP的状态,自然就可以描绘出“已求解部分”在状态空间中的轮廓特征,该轮廓的进展就是阶段的推移。另外,每个状态的求解显然只与之前阶段的最优解有关,最优子结构性质也得以验证。接下来,我们按顺序依次循环每个维度,根据问题要求递推求解的具体实现过程也就顺理成章了。-----《算法进阶指南》

如经典:最长上升子序列(LIS)最长公共子序列(LCS)数字三角形

线性DP练习题:
LIS : POJ - 3903S tock Exchange 最长上升子序列 +二分查找
LCS: HDU 1159 最长公共子序列
LCIS :CH 5101 :LCIS(最长公共上升子序列)
5维DP: POJ 3666 Making the Grade

你可能感兴趣的:(算法,动态规划)