动态编程深入理解(二)
来源:互联网 发布:好用的唇膏知乎 编辑:程序博客网 时间:2024/06/13 02:10
转载地址:http://iprai.hust.edu.cn/icl2002/algorithm/algorithm/technique/dynamic_programming/chapter2.htm#BasicEqn
动态规划的基本定理和基本方程
动态规划发展的早期阶段,从简单逻辑出发给出了所谓最优性原理,然后在最优策略存在的前提下导出基本方程,再由这个方程求解最优策略。后来在动态规划的应用过程中发现,最优性原理不是对任何决策过程普遍成立,它与基本方程不是无条件等价,二者之间也不存在任何确定的蕴含关系。基本方程在动态规划中起着更为本质的作用。
[基本定理]
对于初始状态x1∈X1,策略p1n*={u1*,..un*}是最优策略的充要条件是对于任意的k,1<k<=n,有
[推论]
若p1n*∈P1n(x1)是最优策略,则对于任意的k,1<k<n,它的子策略pkn*对于由x1和p1,k-1*确定的以xk*为起点的第k到n后部子过程而言,也是最优策略。
上述推论称为最优化原理,它给出了最优策略的必要条件,通常略述为:不论过去的状态和决策如何,对于前面的决策形成的当前的状态而言,余下的各个决策必定构成最优策略。
根据基本定理的推论可以得到动态规划的基本方程:
其中是决策过程的终端条件,为一个已知函数。当xn+1只取固定的状态时称固定终端;当xn+1可在终端集合Xn+1中变动时称自由终端。最终要求的最优指标函数满足(10)式:
(9)式是一个递归公式,如果目标状态确定,当然可以直接利用该公式递归求出最优值(这种递归方法将在后文介绍,称作备忘录法),但是一般在实际应用中我们通常将该递归公式改为递推公式求解,这样一般效率会更高一些。
- 动态编程深入理解(二)
- 动态规划(二)深入理解
- 动态编程深入理解(三)
- 深入理解网络编程(二)
- 深入理解C#:编程技巧总结(二)
- 深入理解C#:编程技巧总结(二)
- 深入理解C#:编程技巧总结(二)
- 深入理解Linux文件系统编程(二)
- 深入理解REST(二)
- 深入理解缓冲区(二)
- 《深入理解计算机系统》(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD深入理解(二)
- UVA 10954 ADD ALL
- 关于快速排序的错误问题
- 动态规划算法的深入理解(一)
- 【腾讯第二届校园编程马拉松】HDU-4525,威威猫系列故事——吃鸡腿
- MIT Scheme 的基本使用
- 动态编程深入理解(二)
- FragmentTabHost的使用
- 建造者模式 -通俗讲解
- 动态编程深入理解(三)
- 周末自动化测试沙龙
- HDOJ2602 Bone Collector(0/1背包)
- Uva 10895 - Matrix Transpose
- 电脑常用快捷键
- 通过JUnit查看操作执行时间