动态规划练习总结

来源:互联网 发布:java异常处理 编辑:程序博客网 时间:2024/05/22 14:15

   动态规划与其它算法相比,大大减少了计算量,丰富了计算结果,不仅求出了当前状态到目标状态的最优值,而且同时求出了到中间状态的最优值。动态规划算法通常用于求解具有某种最优性质的问题。动态规划算法与分治法类似,基本思想也是将待求解问题解成若干个子问题,先求子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了分多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。

   动态规划的缺点:空间占据过多,但对于空间需求量不大的题目来说,动态规划无疑是最大方法,动态规划算法和贪婪算法都是构造最优解的常用方法。

   最优化原理:一个最优化策略具有这样的性质不论过去状态和决策如何,对面的决策所形成的状态而言,余下的据测必须构成呢个最优策略。简单来说,一个最优化策略的子策略总是最优的,一个问题满足最优化原理又称其具有最优子结构性质。

      动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。动态规划算法将问题的解决方案视为一系列决策的结果,与贪婪算法不同的是,在贪婪算法中,每采用一次贪婪准则,便做出一个不可撤回的决策;而在动态规划算法中,还要考察每个最优决策序列中是否包含一个最优决策子序列,即问题是否具有最优子结构性质。 

   动态规划解题步骤:

1)划分阶段:按照问题的时间或空间特征,把问题分成若干个阶段。

2)确定状态和状态变量:将问题发展到各个阶段时所处于的各种客观情况用不同的状态表示出来。

3)确定决策并写出状态转移方程。

4)寻找边界。

5)程序设计。


0 0
原创粉丝点击