动态规划的思想:
同分治法类似,将待求解问题分解成若干子问题,先求出子问题,然后从这些子问题的解得到原问题的解。但与分治法不同的是,适用于分治法的问题,经分解得到的子问题可以是相互独立的,而适用于动态规划求解的问题,经分解得到的子问题往往不是相互独立的,彼此之间有联系。分治法的子问题被重复计算多次,而动态规划发采用一个表来记录已解决子问题的答案,不管该子问题以后是否被用到,只要它被计算过,就将结果填入表中,在需要的时候再找出已求得的答案。
动态规划算法适用于解最优化问题。通常包括4个步骤:
(1) 找出最优解的性质,并刻画其结构特征。最优子结构性质
(2) 递归地定义最优值。
(3) 以自底向上的方式计算出最优值。
(4) 根据计算最优值时得到的信息,构造最优解。
示例:矩阵连乘问题。
给出n个矩阵{A1……An},其中Ai 和A(i+1)是可乘的,考察这n个矩阵的连乘积。通过哪种加括号方式(即:断开位置k)可以使得数乘次数最少。
具体见 王晓东《计算机算法设计与分析》 P45-P49