剪枝
优化搜索顺序
在一些搜索问题中,搜索树的各个层次、各个分支之间的顺序不是固定的。不同的搜索顺序会产生不同的搜索树形态,其规模大小也相差甚远。
排除等效冗余
在搜索过程中,如果我们能够判定从搜索树的当前结点上沿着某几条不同分支到达的子树是等效的,那么只需要对其中的一条分支执行搜索。
可行性剪枝
在搜索过程中,及时对当前状态进行检查,如果发现分支已经无法到达递归边界,就执行回溯。这就好比我们在道路上行走时,远远看到前方是一个死胡同,就应该立即折返绕路,而不是走到路的尽头再返回。
某些题目条件的范围限制是一个区间,此时,可行性剪枝也被称为“上下界剪枝”。
最优性剪枝
在最优化问题的搜索过程中,如果当前花费的代价已经超过了当前搜索到的最优解,那么无论采取多么优秀的策略到达递归边界,都不可能更新答案。此时可以停止对当前分支的搜索,执行回溯。
记忆化
可以记录每个状态的搜索结果,在重复遍历一个状态时直接检索并返回。这就好比我们对图进行深度优先遍历时,标记一个顶点是否已经被访问过。