当前位置:   article > 正文

动态规划-基本思想_动态规划的基本思想

动态规划的基本思想

一、定义

动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域,并在背包问题、生产经营问题、资金管理问题、资源分配问题最短路径问题和复杂系统可靠性问题等中取得了显著的效果 。 

二、基本思想和策略

        通常用于求解具有最优性质的问题,跟分治法类似,基本思想也是将待求解问题分解成若干个子问题,用子问题的解得到原问题的解。

        与分治法不同的是,动态规划求解的问题,子问题往往不是相互独立的,若用分治法解这类问题,分解得到的子问题太多,有些子问题,重复计算很多次。

        如果能保存已解决子问题的解,需要时找出已求解的解,就可以避免大量重复计算,所以可以用一个表来记录已求解子问题的解,这就是动态规划的基本思路。

三、适用情况和基本特征

        适用动态规划算法必须满足最优化原理、无后效性和子问题重叠性

1. 最优化原理(最优子结构性质)

        即一个最优化策略具有这样的性质,不论之前的状态和决策如何,对之前决策所形成的状态,后边的决策必须构成最优策略。也就是说,一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构性质。

2. 无后效性

        即某阶段状态一旦确定,就不受这个状态之后决策的影响,某状态之后的过程不会影响之前的状态,换句话说,每个状态都是过去历史的一个完整总结,这就是无后向性,又称为无后效性。

3. 子问题重叠性

        即子问题之间不是相互独立的,一个子问题可能在之后决策中被多次用到。

四、算法特点总结

        动态规划将原来具有指数级时间复杂度的搜索算法,改进成了具有多项式时间复杂度的算法。其中的关键就是解决冗余,这是动态规划的根本目的。动态规划实质上是一种以空间换时间的技术,不得不存储各种状态,所以它的空间复杂度要大于其他算法。

        到底什么时候用动态规划:当每个阶段的最优状态可以从之前某个阶段的某个或者某些状态直接得到,而不管之前这个状态是如何得到的。

五、解题步骤 

  1. 将原问题分解为子问题(注意:1,子问题与原问题形式相同或类似,只是问题规模变小了,从而变简单了; 2,子问题一旦求出就要保存下来,保证每个子问题只求解一遍)
  2. 确定状态(状态:在动规解题中,我们将和子问题相关的各个变量的一组取值,称之为一个"状态",一个状态对应一个或多个子问题所谓的在某个状态的值,这个就是状态所对应的子问题的解,所有状态的集合称为"状态空间".我的理解就是状态就是某个问题某组变量,状态空间就是该问题的所有组变量) 另外:整个问题的时间复杂度就是状态数目乘以每个状态所需要的时间
  3. 确定一些初始状态(边界条件)的值 (这个视情况而定,千万别以为就是最简单的那个子问题解,上面只是例子,真正实践动规千变万化)
  4. 确定状态转移方程 (这一步和第三步是最关键的 记住"人人为我"递推,由已知
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/601266
推荐阅读
相关标签
  

闽ICP备14008679号