动态规划(多阶段决策)
意义:求解决策过程最优化的数学方法
基本思想:将待求解的问题分为若干个阶段,即若干个互相联系的子问题,在求解子问题的过程中逐步推导出原问题的解。
核心:在求解子问题的过程中,存储子问题的解。
注1:动态规划的思想实际上和递归相似。都是通过逐步推导,得到答案。而用它们解题时的核心也都是求出“递推公式”(类似 高中数学中数列的递推公式an=an-1+n)。但动态规划和递归的一大区别是:动态规划将递归的每一步的结果都存储下来,在下次使用时直接调用而非重复运算。从而节省了大量的计算资源。
注2:最简单的动态规划可以通过建立一个缓存数组配合略微修改原递归函数来实现。只要将递归过程中得到的解存入缓存数组,并在递归求解的过程中优先在缓存数组中寻找结果。就能避免重复的运算,使递归函数的效率大大提高。这实际上就是“用空间换时间”的方法。
递归和动态规划的区别:
递归: