【精选内容链接】
一、动态规划导学
什么是动态规划?动态规划的意义是什么?
二、动态规划初步
动态规划初步·各种子序列问题
三、非常好的动态规划总结,DP总结
https://blog.youkuaiyun.com/mmc2015/article/details/73558346
四、【目录】动态规划练习题
https://blog.youkuaiyun.com/qq_41958841/article/details/81706293
动态规划 —— 动态规划概述
【概述】
动态规划:解决多阶段决策问题的一种方法。实际上就是一种排除重复计算的算法,更具体的说,动态规划就是用空间换取时间。
多阶段决策问题:若一类问题的求解过程可分为若干个互相联系的阶段,在每一个阶段都需作出决策,并影响到下一个阶段的决策。这类问题的解决,就是要在可以选择的那些策略间,选一个最优策略,使在预定的标准下达到最好的效果。
阶段:将所给求解问题的过程恰当地分成若干个相互联系的阶段,以便于求解,过程不同,阶段数就可能不同,描述阶段的变量称“阶段变量”。
状态:描述事物的性质,不同事物有不同的性质,因而用不同的状态来刻画。对问题的求解状态的描述是分阶段的。描述状态的量称“状态变量”
决策:一个阶段的状态给定以后,从该状态演变到下一阶段某个状态的选择性操作。描述决策的变量称决策变量。决策变量的范围称“允许决策集合”。
无后效性:我们要求状态具有下面的性质:如果给定某一阶段的状态,则在这一阶段以后过程的发展不受这阶段以前各段状态的影响,所有各阶段都确定时,整个过程也就确定了。换句话说,过程的每一次实现可以用一个状态序列表示,这个性质称为“无后效性”。
策略:由每个阶段的决策组成的序列称为策略。对于每一个实际的多阶段决策过程,可供选取的策略有一定的范围限制,这个范围称“允许策略集合”。允许策略集合中达到最优效果的策略称“最优策略”。
状态转移方程:用数学公式描述与阶段相关的状态间的演变规律。是本阶段的状态往往是上一阶段状态和上一阶段决策的结果。如果给定了第K阶段的状态Sk以及决策uk(Sk),则第K+1阶段的状态Sk+1也就完全确定。
【最优性原理】
不论初始状态和第一步决策是什么,余下的决策相对于前一次决策所产生的新状态,构成一个最优决策序列。
最优决策序列的子序列,一定是局部最优决策子序列。
包含非局部最优的决策子序列,一定不是最优决策序列。
【无后效性原则】
某阶段的状态一旦确定,则此后过程的演变不再受此前各状态及决策的影响。
当前状态是此前历史的一个完整的总结,此前的历史只能通过当前的状态去影响过程未来的演变。
【指导思想】
在做每一步决策时,列出各种可能的局部解。
依据某种判定条件,舍弃那些肯定不能得到最优解的局部解。
以每一步都是最优的来保证全局是最优的。
【基本特征】
问题具有多阶段决策的特点。
每一阶段都有相应的“状态”与之对应。
每一阶段都面临一个决策,选择不同的决策将会导致下一阶段不同的状态。
每一阶段的最优解问题可以递归地归结为下一阶段各个可能状态的最优解问题,各子问题与原问题具有完全相同的结构。
【一般解题步骤】
判断问题是否具有最优子结构性质,若不具备则不能用动态规划
把问题分成若干个子问题(分阶段)
建立状态转移方程(递推公式)
找出边界条件
将已知边界值带入方程
递推求解
【问题分类】
背包问题:点击这里
线性 DP:点击这里
区间 DP:点击这里
状压 DP:点击这里
数位 DP:点击这里
树型 DP:点击这里