深度搜索与回溯

深度搜索与回溯法的区别

回溯法 = 深搜 + 剪枝。一般大家用深搜时,或多或少都会剪枝。深搜一般用递归实现,比较简洁。深搜能够在候选答案生成一半的时候,就进行判断,抛弃不满足要求的答案,所以深搜比暴力法更快。

深度搜索与递归的区别

深搜经常用递归来实现。
深搜,是逻辑意义上的算法,递归是一种物理意义上的实现,它和迭代相对应。深搜,可以用递归来实现,也可以用栈来实现;而递归一般总是来实现深搜。可以说递归一定是深搜,深搜不一定用递归。
递归有两种加速策略,一种是剪枝,对中间结果进行判断,提前返回,一种是加缓存,缓存中间结果。防止重复计算,用空间换时间。
其实, 递归+缓存,就是一种备忘录法。
备忘录法不一定用递归,就像深搜不一定用递归一样,可以在迭代中使用备忘录。
在大多数情况下,递归和深搜是一回事儿,在单链表,二叉树,等递归数据结构上,递归的味道更浓,在图等数据结构上,递归的比重不大,就使用深搜这个术语。

你可能感兴趣的:(深度搜索与回溯)