- 自然界斐波那契数列F[n]=F[n-1]+F[n-2](n>=3,F[1]=1,F[2]=1)是递归数列
- 自然界中的斐波那契数列
-
n动态规划的思想实质是分治思想和解决冗余。
-
n与分治法类似的是,将原问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
-
与分治法不同的是,经分解的子问题往往不是互相独立的。若用分治法来解,有些共同部分(子问题或子子问题)被重复计算了很多次。
-
求解步骤
1、找出最优解的性质,并刻画其结构特征;(最优子结构——无后效性:除接合点外不能共享资源)
2、递归地定义最优值(写出动态规划方程);
3、以自底向上的方式计算出最优值(重叠子问题);
4、根据计算最优值时记录的信息,构造最优解。
注:
-步骤1-3是动态规划算法的基本步骤。在只需要求出最优值的情形,步骤4可以省略;
-若需要求出问题的一个最优解,则必须执行步骤4,步骤3中记录的信息是构造最优解的基础
例题:
-
多段图的最短路问题
-
格路问题
-
货郎担问题(TSP/旅行售货员问题)
-
矩阵链乘
-
货物储运问题
-
0-1背包问题
-
找零钱问题
-
最长公共子序列
-
最大子段和
-
发射导弹
-
最长递增子序列