[专题练习] Part1 搜索

Posted brimon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[专题练习] Part1 搜索相关的知识,希望对你有一定的参考价值。

一.DFS(深度优先搜索)

过于水略过。

二.BFS(广度优先搜索)

同上。

三.记忆化

记忆化搜索,就是我们的状态会重复利用,为了防止状态的重复计算耗费不必要的时间,我们可以把这个状态的结果记录下来,然后查询表中的结果就行了。

一般来所,记忆化搜索是和DP等价的。如果递推的DP不好写,可以考虑用记忆化搜索实现,但是因为是递归,所以常数略大。记忆化搜索有明显的优点,就是可以不用考虑状态在哪里终止,只用知道状态会终止就行了。

四.搜索剪枝

这是一门博大精深的学问, 通常用于解决搜索时间复杂度过高的问题。

原理就是在庞大的搜索树上剪去不可能对答案产生贡献的枝条。

搜索+剪枝的时间复杂度是$O(玄学)$,因为我们只能通过经验来估测剪枝效果。

所以考试打暴力的时候一定要多写剪枝,尤其是奇形怪状的玄学剪枝(参考i207m某次比赛的$N^2$跑过1e9)。

几道例题:

1. Noip2015斗地主  。

贪心出牌,出完顺子枚举出其他的尽可能出的多的牌的组合。

加上最优化剪枝,如果现在出了$ans-1$次没有出完就剪枝。

2.Noip2009靶形数独

我当时用了$lowbit$优化常数,然后把整个棋盘分成上下两部分,如果上半部分空位比下半部分多,就从下半部开始搜索。这样就睡、水过去了。

其实也可以按格搜索,优先搜可填的少的格。

还有$A*$剪枝,如果剩下的格子都填9还比$ans$小的话就剪枝。

通常使用的剪枝技巧

1.最优性剪枝。

2.$A*$剪枝。

3.改变搜索顺序,优先搜索扩展出的状态比较少的状态。

五.双向广搜

正在研究中...

以上是关于[专题练习] Part1 搜索的主要内容,如果未能解决你的问题,请参考以下文章

递推与递归专题练习

寒假练习题解 第四周 2.8-2.14

第六周练习 part1 --- 类

数论与数学专题练习(201802~201805)

区间dp专题练习

后缀自动机练习专题