动态规划是什么,意义在哪里:
今天花了几个小时,重新理解了一下dp。。。
首先我们要知道为什么要使用dp,我们在选择dp算法的时候,往往是在决策问题上,而且是在如果不使用dp,直接暴力效率会很低的情况下选择使用dp.
那么问题来了,什么时候会选择使用dp呢,一般情况下,我们能将问题抽象出来,并且问题满足无后效性,满足最优子结构,并且能明确的找出状态转移方程的话,
dp无疑是很好的选择。
无后效性是什么呢,无后效性通俗的说就是只要我们得出了当前状态,而不用管这个状态怎么来的,也就是说之前的状态已经用不着了,如果我们抽象出的状态有后效性,很简单,我们只用把这个值加入到状态的表示中。
最优子结构:在决策问题中,如果,当前问题可以拆分为多个子问题,并且依赖于这些子问题,那么我们称为此问题符合子结构,而若当前状态可以由某个阶段的某个或某些
状态直接得到,那么就符合最优子结构
状态转移:这个概念比较简单,在抽象出上述两点的的状态表示后,每种状态之间转移时值或者参数的变化。
接下来就是大量的训练来达到熟练使用了
下面是精品资料:
关于python的动态规划详细解释和案例https://blog.csdn.net/cloudxli/article/details/81272861
python学习动态规划视频:https://www.bilibili.com/video/av18512769?from=search&seid=12764309043530051846