计算机国际象棋搜索技术深度解析
1. 迭代深化搜索
迭代深化搜索能为预估下一迭代所需时间提供有用信息。若在当前迭代完成前搜索时间耗尽,迭代控制器可立即将上一迭代的最佳走法作为结果返回;也可依据之前迭代收集的信息,分配额外时间继续搜索。
在根节点进行迭代深化,与置换表和动态走法排序结合使用时效果尤佳。在现代国际象棋程序中,所有连续迭代访问的节点总数通常远少于单次非迭代全深度搜索的节点数。连续的根迭代会填充置换表,使动态走法排序方案能够收集和优化数据,这有助于在下一次迭代中改善走法排序,大幅提高深度搜索时的剪枝效率。
2. 期望搜索
窄搜索窗口能通过更多的截断操作提高α - β剪枝的效率。因此,当能对搜索得分进行合理预估时,预先缩小根节点原本无限的搜索窗口是个不错的选择。在实际对局中,上一步的最终得分能很好地用于此目的。此外,迭代深化搜索每次迭代后的最佳得分也可作为合适的预估(通常随着迭代深度增加,预估质量会提高)。这种搜索优化方式被称为期望搜索,它依据对实际搜索得分的先验信息,在根节点规定固定的期望窗口,从而优化常规搜索。期望搜索与迭代深化完美结合。
不过,期望搜索模式使根搜索的处理变得复杂,可能会导致搜索失败。为此,游戏程序会采用特殊的顶层搜索,通过以更宽的搜索窗口(必要时为无限窗口)重新搜索根位置,来解决根节点的过高失败和过低失败问题。根节点的重新搜索代价高昂,如果频繁发生,期望搜索节省的时间很快就会消失。所以,合理选择期望窗口的宽度至关重要。在计算机国际象棋中,以得分预估为中心,范围在半个兵到一个兵之间的期望窗口效果最佳。
3. 前向剪枝
虽然α - β剪枝在理论上是正确且可靠的,但前向剪