ACM周训练总结(四)
本周学习了动态规划的相关算法。
所谓动态规划,就是解决多阶段决策问题的一种方法。其实质上就是一种排除重复计算的算法,更具体的说,动态规划就是用空间换取时间。
动态规划问题的特征有:
1.具有多阶段决策的特点。
2.每一阶段都有相应的“状态”与之对应。
3.每一阶段都面临一个决策,选择不同的决策将会导致下一阶段不同的状态。
4.每一阶段的最优解问题可以递归地归结为下一阶段各个可能状态的最优解问题,各子问题与原问题具有完全相同的结构。
该算法的一般解题步骤是:
1.判断问题是否具有最优子结构性质,若不具备则不能用动态规划
2.把问题分成若干个子问题(分阶段)
3.建立状态转移方程(递推公式)
4.找出边界条件
5.将已知边界值带入方程
6.递推求解
目前接触到的经典问题有:(线性动态规划)
方格问题(吃金币游戏)
序列问题(最长上升子序列、最长公共子序列、最大子段和)
矩阵问题(最大子矩阵和)
以上就是本周所学习到的动态规划的相关问题,接下来就需要做一些相关题目来提升自己了。
关于vj上的题,有些虽然是上课已经讲过的,但是要自己来独立地做出做对,感觉还是很难的,而且题目还是英语的就更难搞了。。。
·