集训日志(三) 动态规划

来源:互联网 发布:淘宝送一个月优酷会员 编辑:程序博客网 时间:2024/05/31 06:24

一、基本概念

    动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。

 

二、基本思想与策略

    基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。

    由于动态规划解决的问题多数有重叠子问题这个特点,为减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一个二维数组中。

    与分治法最大的差别是:适合于用动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)。

 

三:解题的一般思路

1、将原问题分解为子问题

把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题即解决。且子问题的解一旦求出就会被保存,所以每个子问题只需求一次。

2、确定状态。

在用动态规划解题时,我们往往将和子问题相关的各个变量的一组取值,称之为一个“状态”。一个状态对应于一个或者多个子问题,所谓某个状态下的值,就是这个状态对应的子问题的解。所有状态的集合,构成问题的状态空间。状态空间的大小,与动态规划解决问题的时间复杂度直接相关。整个问题的时间复杂度就算状态乘以计算每个状态所需要的时间。状态的选择要满足最优子结构和无后效性。

3、确定一些初始状态的值。

定义出什么是状态,以及在该状态下的值后,就要找出不同的状态之间如何迁移――即如何从一个或多个值已知的状态,求出另一个状态的值(“人人为我”递推型)。状态的迁移可以用递推公式表示,此递推公式也可被称作“状态转移方程”。

4、确定状态转移方程,给出边界条件。

给出的状态转移方程是一个递推式,需要一个递推的终止条件或边界条件。

 

 

能用动态规划解决的问题特点:

1)  问题具有最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质。


2)  无后效性。当前的若干个状态值一旦确定,则此后过程的演变就只和这若干个状态的值有关,和之前是采取哪种手段或经过哪条路径演变到当前的这若干个状态,没有关系。

 

0 0
原创粉丝点击