记忆化搜索 = 暴力dfs + 记录答案
记忆化搜索是一种优化技术,结合了暴力深度优先搜索 (dfs) 和记录答案的方式。
在动态规划的学习过程中,我们可以将问题划分为以下阶段:dfs暴力搜索,记忆化搜索,以及最终的递推。
动态规划入门思路: dfs暴力 --> 记忆化搜索 --> 递推
动态规划的入门思路可以总结为:从dfs暴力搜索开始,通过记录已经计算过的结果,即记忆化搜索,逐步优化到递推。
在具体优化过程中,我们可以看到递归的过程实际上包含了两个主要阶段:递和归。
- dfs
- 记忆化搜索
- 逆序递推
- 顺序递推
- 优化空间
递归的过程:
-
"递" 的过程是: 分解子问题的过程;
-
"归" 的过程才是: 产生答案的过程;
"递" ---> 自顶向下, "归" ---> 自底向上 , 其中 "底" 是 递归搜索树 的底
写出递推公式的方法:
- 递推 的公式 = dfs 向下 递归 的公式
- 递推 数组的初始值 = 递归 的边界
对于递推数组的初始值,它实际上对应于递归的边界条件,即在递归的过程中最小的子问题的解。
递推数组的初始值可以看作是递归的终点,作为动态规划的起点。