解释
阿尔法-贝塔剪枝可以加快的搜索,引擎是一种比较着法及其应对的程序。搜索可以想象成一棵树:每个节点是一个局面,每条分支是一种合法着法。没有剪枝时,程序会检查许多最终证明无关紧要的后续变化。
搜索过程中,该方法维持两个界限。阿尔法表示一方在当前路线中已经能够保证的最佳结果。贝塔表示对手已有另一种选择所形成的界限。一旦某个后续变化差到理性的棋手绝不会选择,继续深入搜索它也无法改变更高层节点的决定。
分支停止是因为搜索树中的逻辑界限,而不仅仅是因为某一步看起来不漂亮。在相同深度、搜索边界使用相同评估的情况下,阿尔法-贝塔会返回与完整搜索相同的选择,后者假定双方都作出最佳应对。
节省多少工作高度依赖着法顺序。尽早测试强着,可以更快建立有用界限,让更多分支无需继续深入便停止。会为有限搜索终止处的局面提供数值估计。
用法与背景
阿尔法和贝塔并不是棋盘局面的两个永久评估值,而是算法探索路线时不断更新的界限。
常见混淆
剪枝与任意丢弃
阿尔法-贝塔只有在证明某分支无法在当前界限下改变选择后,才会跳过它。
剪枝更多就自动更强
实力还取决于着法排序、评估质量、搜索深度和许多其他引擎技术。
来源
- 1.An analysis of alpha-beta pruning, Artificial Intelligence / Elsevier
- 2.Alpha-Beta, Chess Programming Wiki
- 3.search.cpp, Stockfish
