动态规划的理论性和实践性都比较强,一方面需要理解状态、状态转移、最优子结构、重叠子问题等概念,另一方面又需要根据题目的条件灵活设计算法。
动态规划是一种用途很广的问题求解方法。它本身并不是一个特定的算法,而是一种思想,一种手段。
动态规划算法与分治法类似,其基本思想也是将待求解问题分解为若干个子问题。
在分解时,得到的子问题往往不是互相独立的,不同子问题的数目常常只有多项式量级。
在用分治法求解时,有些子问题被重复计算了许多次。
如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。
动态规划基本步骤:
1、找出最优解的性质,并刻画其结构特征。
2、递归的定义最优值。
3、以自底向上的方式计算最优值。
4、根据计算最优值时得到的信息,构造最优解。
动态规划算法产用于求解具有某种最优性质的问题。
可能会有许多可行解,希望找到具有最优解的那个解。
矩阵连乘问题。
给定n个矩阵, 其中与是可乘的,考察这n个矩阵的连乘积
计算矩阵的连乘可以有许