《人机博弈》摘录(六)搜索引擎

实现人机博弈核心是搜索引擎,可适配不同的搜索算法。

1、Alpha-Beta搜索

剪枝可减少极大极小搜索的冗余。

Alpha剪枝,父节点取极大值,剪除已确认较小的子节点。

Beta剪枝,父节点取极小值,剪除已确认较大的节点。

实验数据表明负极大值算法不适合alpha-beta搜索。效率比极大极小值算法低。

2、Fail-soft alpha-beta

搜索失败依然返回分数,并未提高效率,而是为算法改进提供便利。

3、渴望搜索,Aspiration Search

搜索估值在一个目标区间内视作成功,否则视作失败。失败需要重新调整目标区间。

4、极小窗口搜索,PVS,Principal Variation Search

记录最佳节点值作为目标区间最小值,能提升效率。

5、置换表,Transposition Table,TT

如果搜索过的节点已有记录,直接利用记录的结果。需要良好的层次设计。

6、哈希表,Hash Table

利用散列提升内存数据的查找速度。

7、Zobrist哈希技术

一种快速求hash算法。但实际上现代编程语言集成的开发sdk中通常有优秀的hash结构可直接使用,不用重复造轮子。

8、迭代深化,Iterative Deepening

从低到高逐层搜索,不断求精,以控制搜索时间。

9、历史启发,History Heuristic

根据部分已搜索的结果对将要搜索的节点进行优先级排序,提高剪枝效率。

10、杀手启发,Killer Heuristic

记录引发剪枝最多的走法,下次搜索同样深度时优先搜索。

11、SSS*

最佳优先方式建立搜索树,节点较少,但难以理解,内存空间过大。

12、MTD(f)

通过极小窗口不断调整区间,并用置换表记录优化搜索,依赖估值函数精确度。

你可能感兴趣的:(《人机博弈》摘录(六)搜索引擎)