一、学习目标
1.了解动态规划需要解决的问题
2.了解动态规划的由来和目标
3.学习动态规划的基本思想与实现
二、动态规划解决的问题
现实中,并不是所有问题都是像前面学习过的问题那样可以用数学公式来表达,也存在一些问题不仅需要做一步决策,而是做多步决策来达到最优。而动态优化,就是要解决这些问题。
动态规划问题还有以下特点:
三、动态规划
1.由来与目标
动态规划来源于一个经典的问题:旅行商问题,有一个旅行商需要从一个地方旅行遍多个地方最后到达终点,而每段路程的消耗是不一样的,如何找到一条消耗最少或者收获最大的旅行路径:
以一个例子来说明:(每条边的数值代表收获)
最优路径如下:(可以使用迪杰斯特拉算法来求解该问题)
2.算法过程
针对上面的例子,原始的动态规划是从后往前递归求解的(在实际操作中,我们是正向来求解):第一步,保存从H->J和I->J的最高收益(红色字部分)。
然后从后往前,依次计算每个stage到J的最大收益,直到初始点:
所以说,动态规划有两大重点:问题划分stage、保存当前信息。二者结合就是,前一步求解的信息可以用于求解下一步的信息。于是乎我们可以将动态规划使用一定的数学公式来表达:
3.概率动态优化(Probabilistic dynamic programming)
其描述如下:
相比于动态优化,其就是多了一个状态概率化,作了一个决策后的状态变化是不确定的,是有概率跳转为不同的状态的。其算法框架如下:
而其要解决的问题也不是原本的动态规划要解决的问题,而是像下围棋这样的任务:
而其也就涉及了蒙特卡洛树搜索(MCTS):(这里就不赘述这些知识了)
四、本章小结
动态规划要想使用,就必须思考出问题中是否可以分阶段进行,每个阶段之间是否存在相互关联,这些关联是否能帮助我们求解出最后的结果。