动态规划主要分为两个核心部分,一是确定「DP 状态」,二是确定「DP 转移方程」。
DP 状态
DP 状态的确定主要有两大原则:
最优子结构
无后效性
什么是「最优子结构」?将原有问题化分为一个个子问题,即为子结构。而对于每一个子问题,其最优值均由「更小规模的子问题的最优值」推导而来,即为最优子结构。
而对于「无后效性」,顾名思义,就是我们只关心子问题的最优值,不关心子问题的最优值是怎么得到的。
最后概括一下
「最优子结构」就是「DP 状态最优值由更小规模的 DP 状态最优值推出」,此处 DP 状态即为子问题。而「无后效性」就是「无论 DP 状态是如何得到的,都不会影响后续 DP 状态的取值」。
DP 转移方程
有了「DP 状态」之后,我们只需要用「分类讨论」的思想来枚举所有小状态向大状态转移的可能性即可推出「DP 转移方程」。
动态规划问题类别
DP 问题主要分为两大类,第一大类是 DP 类型,第二大类是 DP 优化方法。
线性 DP 概述
线性划分 DP 规模的动态规划算法被统称为线性 DP。在线性 DP 中,DP 状态从「小规模」转移到「大规模」的同时, DP 状态沿着各个维度线性增长。
面试之动态规划
最新推荐文章于 2024-04-16 05:54:37 发布