深搜剪枝小结
深度优先搜索,俗称深搜,即DFS,是一个常用并且基础的算法和思想。但是搜索算法的时间复杂度往往很大,是OI不被允许的。所以对于深搜的优化最实用和基础的一个方法就是剪枝。
三原则:1、正确性;2、准确性;3、高效性;
正确性,顾名思义就是不能把通向正确的路径剪去。
准确性,则是尽可能多的剪去不会通向正确的路径,也就是判断条件更严格。
高效性,简单来说就是判断操作更更高效才行。
这就带来一个矛盾,就是判断条件的严格度和判断操作的效率的平衡。不过一般来讲,我们更注重判断条件的严格度之后再考虑优化判断操作(预处理什么的)。
剪枝技巧:
1、优化搜索顺序;
2、排除等效冗余;(即如果在递归树上有两个节点的状态一模一样,只不过走过的路不一样,那么在有些题目中可以只搜索一条)
3、可行性剪枝(上下界剪枝);在做可行性剪枝的时候我们设计的剪枝方案要“看的远",及时检查当时状态看是否可以达到递归条件。
4、最优性剪枝;当前花费加上预期的最小花费已经劣于搜索到的答案,直接返回。
5、记忆化;