动态算法

更新时间:2024-05-07 22:11

动态算法,计算机原理术语,涉及多阶段决策过程的最优化。它把已知问题分为许多阶段或许多子问题,然后按顺序求解各个子问题。在每种情况下,列出各种可能的局部解,然后根据某些条件,从局部解中挑选出那些有可能产生最优结果的解。

概念

前一子问题的解为后一子问题的求解提供有用的信息,从而大大减少了计算量。最后一个子问题的解就是初始问题的解。也就是说,在多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的。故有“动态”的含义,通常称这种解决多阶段决策最优化的过程为动态规划方法。动态规划的目标就是要在所有容许选择的决策序列中选取一个会获得问题最优解的决策序列,即最优决策序列。

工作原理

动态算法所遵循的原则是最优性原理,它可描述如下:

一个最优决策序列具有下述性质:无论初始状态和第一步决策是什么,余下的决策必须按照前一次决策所产生的新状态构成一个最优决策序列。也就是说,不论前面的状态和策略如何,后面的最优策略只取决于由最初策略所决定的当前状态。

如果所求解问题的最优性原理成立,则说明用动态算法有可能解决该问题。而解决问题的关键在于获取各阶段间的递推关系式。贝尔曼认为,利用最优性原理以及所获得的递推关系式去求解最优决策序列可以使枚举量急剧下降。

动态算法的设计方法对于不同问题有不同的表达方式。这是由于各种问题的性质各不相同所造成的,所以,判定最优解的条件也不相同。因此,不存在一种通用的动态规划算法。如果存在一个决策序列,它包含有非局部最优的决策子序列时,该决策序列一定不是最优的。

满足最优性原理的问题可以试着使用动态规划算法。然而,动态算法只是考察求解多阶段决策问题的一种途径,而不是一种特殊算法。不想线性规划那样,具有一个标准的数学表达式和明确的定义。

无论是使用向前处理法还是使用向后处理法,都将所有子问题的最优解保存下来,这样做的目的是为了便于逐步递推得到原问题的最优解并避免对它们的重复计算。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}