From cf9c120aaba90b69d021864c6e21ec15c45541a7 Mon Sep 17 00:00:00 2001 From: lzd Date: Sun, 1 Sep 2024 20:23:12 +1000 Subject: [PATCH] Update dfs-summary.md Fix typo. --- docs/dfs/dfs-summary.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dfs/dfs-summary.md b/docs/dfs/dfs-summary.md index d5c395edb..720deb50b 100644 --- a/docs/dfs/dfs-summary.md +++ b/docs/dfs/dfs-summary.md @@ -112,8 +112,8 @@ void dfs(type &input, type &path, type &result, int cur or gap) { 递归有两种加速策略,一种是 **剪枝(prunning)**,对中间结果进行判断,提前返回;一种是**缓存**,缓存中间结果,防止重复计算,用空间换时间。 -其实,递归+缓存,就是 memorization。所谓**memorization**(翻译为备忘录法),就是"top-down with cache"(自顶向下+缓存),它是Donald Michie 在1968年创造的术语,表示一种优化技术,在top-down 形式的程序中,使用缓存来避免重复计算,从而达到加速的目的。 +其实,递归+缓存,就是 memorization。所谓**memoization**(翻译为备忘录法),就是"top-down with cache"(自顶向下+缓存),它是Donald Michie 在1968年创造的术语,表示一种优化技术,在top-down 形式的程序中,使用缓存来避免重复计算,从而达到加速的目的。 -**memorization 不一定用递归**,就像深搜不一定用递归一样,可以在迭代(iterative)中使用 memorization 。**递归也不一定用 memorization**,可以用memorization来加速,但不是必须的。只有当递归使用了缓存,它才是 memorization 。 +**memoization 不一定用递归**,就像深搜不一定用递归一样,可以在迭代(iterative)中使用 memoization 。**递归也不一定用 memoization**,可以用memoization来加速,但不是必须的。只有当递归使用了缓存,它才是 memorization 。 既然递归一定是深搜,为什么很多书籍都同时使用这两个术语呢?在递归味道更浓的地方,一般用递归这个术语,在深搜更浓的场景下,用深搜这个术语,读者心里要弄清楚他俩大部分时候是一回事。在单链表、二叉树等递归数据结构上,递归的味道更浓,这时用递归这个术语;在图、隐式图等数据结构上,深搜的味道更浓,这时用深搜这个术语。