您的位置:首页 > 其它

03-算法的乐趣-动态规划

2017-04-14 17:01 204 查看

动态规划

动态规划(Dynamic progamming)是解决多阶段决策问题常用的最优化理论。在最短路线,库存管理,资源分配,设备更新,排序,装载等问题上比较高效。动态规划的原理就是把多阶段决策过程转化为一些列的单阶段决策问题。

动态规划适合求解多阶段(状态转换)决策问题的最优解,也可用于含有线性或非线性递推关系的最优解问题,但是这些问题必须满足必须满足最优化原理和子问题的“无后向性”。

最优化原理:最优化原理其实就是问题的最优子结构的性质,如果一个问题的最优子结构是不论过去状态和决策如何,对前面的决策所形成的状态而言,其后的决策必须构成最优策略。也就是说,不管之前决策是否是最优决策,都必须保证从现在开始的决策是之前决策基础上的最优决策,则这样的最优子结构就符合最优化原理。

无后向性(无后效性):所为“无后向性”,就是当各个阶段的子问题确定以后,对于某个特定阶段的子问题来说,它之前的各个阶段的子问题的决策只影响该阶段的决策,对该阶段之后的决策不产生影响,也就是说,每个阶段的决策仅受之决策的影响,但是不影响之后个阶段的决策。

动态规划的基本思想

分治法要求子问题是相互独立的,但是动态规划的子问题不是相互独立的,子问题之间通常有包含关系,甚至两个子问题可能包含相同的子子问题,子问题A由子问题C递推得到,子问题B也由子问题C递推得到,所以只需要对C求解一次,然后将其结果保存在一张表中(备忘录)。

动态规划没有固定的实现模式,可以用带备忘录的递归方法实现,也可以根据堆叠子问题之间的递推公式用递推的方法实现。使用动态规划一般包含四个步骤:定义最优子问题,定义状态和状态转换方程以及确定边界条件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: