算法——动态规划

动态规划

和贪婪算法一样,在动态规划中,可将一个问题的解决方案视为一系列决策的结果。不同的是,在贪婪算法中,每采用一次贪婪准则便做出一个不可撤回的决策,而在动态规划中,还要考察每个最优决策序列中是否包含一个最优子序列。

动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解,区别在于它的子问题往往不是相互独立的。

动态规划在各种算法中难度最大。它建立在最优原则的基础上。通常用于求解具有某种最优性质的问题。

动态规划思路:

         在用分治法求解时,有些子问题被重复计算了很多次,如果我们能保存已解决的子问题的答案,而在需要时再找出已求得的答案。我们借助于一个表来记录所有已解决的子问题的答案。这样就避免了大量的重复计算,从而得到多项式时间的算法。

求解步骤:

1.       找出最优解的性质,并刻画其结构特征

2.       递归地定义最优值

3.       以自底向上的方式计算出最优值

4.       根据计算最优值时得到的信息,构造一个最优解

实例:

1.       矩阵连乘

2.       最长公共子序列

3.       最大子段和

4.       凸多边形最优三角剖分

5.       多边形游戏

6.       图像压缩

7.       电路布线

8.       流水作业制度

9.       背包问题

10.   最优二叉搜索树

问题实现:

你可能感兴趣的:(算法,作业,游戏)