无后效性

动态规划的概念

在上例的多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有"动态"的含义,称这种解决多阶段决策最优化问题的方法为动态规划方法。

动态规划的最优化概念是在一定条件下,我到一种途径,在对各阶段的效益经过按问题具体性质所确定的运算以后,使得全过程的总效益达到最优。

应用动态规划要注意阶段的划分是关键,必须依据题意分析,寻求合理的划分阶段(子问题)方法。而每个子问题是一个比原问题简单得多的优化问题。而且每个子问题的求解中,均利用它的一个后部子问题的最优化结果,直到最后一个子问题所得最优解,它就是原问题的最优解。

1.3 动态规划适合解决什么样的问题

准确地说,动态规划不是万能的,它只适于解决一定条件的最优策略问题。

或许,大家听到这个结论会很失望:其实,这个结论并没有削减动态规划的光辉,因为属于上面范围内的问题极多,还有许多看似不是这个范围中的问题都可以转化成这类问题。

上面所说的"满足一定条件"主要指下面两点:

(1)状态必须满足最优化原理;

(2)状态必须满足无后效性。

动态规划的最优化原理是无论过去的状态和决策如何,对前面的决策所形成的当前状态而言,余下的诸决策必须构成最优策略。 可以通俗地理解为子问题的局部最优将导致整个问题的全局最优在上例中例题1最短路径问题中,A到E的最优路径上的任一点到终点E的路径也必然是该点到终点E的一条最优路径,满足最优化原理。

动态规划的无后效性原则某阶段的状态一旦确定,则此后过程的演变不再受此前各状态及决策的影响。也就是说,"未来与过去无关",当前的状态是此前历史的一个完整总结,此前的历史只能通过当前的状态去影响过程未来的演变。具体地说,如果一个问题被划分各个阶段之后,阶段 I 中的状态只能由阶段 I+1 中的状态通过状态转移方程得来,与其他状态没有关系,特别是与未发生的状态没有关系,这就是无后效性。

相关推荐
PfCoder33 分钟前
C#的判断语句总结
开发语言·c#·visual studio·winform
好看资源平台1 小时前
Java/Kotlin逆向基础与Smali语法精解
java·开发语言·kotlin
wjcroom1 小时前
数字投屏叫号器-发射端python窗口定制
开发语言·python
静候光阴1 小时前
python使用venv命令创建虚拟环境(ubuntu22)
linux·开发语言·python
Y1nhl1 小时前
力扣hot100_二叉树(4)_python版本
开发语言·pytorch·python·算法·leetcode·机器学习
阿木看源码2 小时前
bindingAdapter的异常错误
java·开发语言
学习两年半的Javaer2 小时前
Rust语言基础知识详解【九】
开发语言·rust
灵山悟空2 小时前
rust语言match模式匹配涉及转移所有权Error Case
linux·开发语言·rust
m0_748240022 小时前
Rust与Cargo版本关系(Rust版本、rustc、rustup)
开发语言·后端·rust
muren2 小时前
deepin安装rust
开发语言·rust