[论文解读] SSS* = Alpha-Beta + TT
本文将 SSS* 算法重新表述为 AB-SSS*,即一系列通过置换表(TT)增强的 Alpha-Beta 搜索,解决了 SSS* 历史上存在的复杂性、内存占用高和运行缓慢等问题。该方法在国际跳棋、奥赛罗和国际象棋中实现了与 Alpha-Beta 相当的叶节点数量,表明 SSS* 实际上是 Alpha-Beta 的一种增强,而非根本不同的算法,并支持现有 Alpha-Beta 优化技术的集成。
In 1979 Stockman introduced the SSS* minimax search algorithm that domi- nates Alpha-Beta in the number of leaf nodes expanded. Further investigation of the algorithm showed that it had three serious drawbacks, which prevented its use by practitioners: it is difficult to understand, it has large memory requirements, and it is slow. This paper presents an alternate formulation of SSS*, in which it is implemented as a series of Alpha-Beta calls that use a transposition table (AB- SSS*). The reformulation solves all three perceived drawbacks of SSS*, making it a practical algorithm. Further, because the search is now based on Alpha-Beta, the extensive research on minimax search enhancements can be easily integrated into AB-SSS*. To test AB-SSS* in practise, it has been implemented in three state-of-the- art programs: for checkers, Othello and chess. AB-SSS* is comparable in performance to Alpha-Beta on leaf node count in all three games, making it a viable alternative to Alpha-Beta in practise. Whereas SSS* has usually been regarded as being entirely different from Alpha-Beta, it turns out to be just an Alpha-Beta enhancement, like null-window searching. This runs counter to published simulation results. Our research leads to the surprising result that iterative deepening versions of Alpha-Beta can expand fewer leaf nodes than iterative deepening versions of SSS* due to dynamic move re-ordering.
研究动机与目标
- 解决 SSS* 长期以来的实际局限性,如高内存使用、复杂性和运行缓慢。
- 证明通过将 SSS* 重构为使用置换表的现有 Alpha-Beta 框架,可实现高效实现。
- 评估 AB-SSS* 是否能在实际对弈程序中实现与 Alpha-Beta 相当或更优的叶节点效率。
- 研究迭代加深版本的 SSS* 是否能超越 Alpha-Beta,与以往模拟结果相反。
提出的方法
- 将 SSS* 重构为一系列使用共享置换表的 Alpha-Beta 调用,以存储和重用搜索结果。
- 利用置换表避免重复计算,提升搜索效率,模拟 SSS* 的最优节点扩展行为。
- 将 AB-SSS* 集成到三个最先进的对弈程序中:国际跳棋、奥赛罗和国际象棋。
- 利用动态走法排序和迭代加深等标准 Alpha-Beta 优化技术,提升性能。
- 在所有三种游戏中对比 AB-SSS* 与标准 Alpha-Beta 的叶节点数量。
- 利用置换表高效存储边界信息并在搜索分支间传播。
实验结果
研究问题
- RQ1能否通过将 SSS* 重构为使用置换表的 Alpha-Beta 调用序列,使其具备实用性?
- RQ2AB-SSS* 是否能在实际对弈程序中实现与 Alpha-Beta 相当的叶节点数量?
- RQ3为何迭代加深版本的 Alpha-Beta 有时比迭代加深版本的 SSS* 扩展更少的叶节点?
- RQ4SSS* 是否与 Alpha-Beta 根本不同,还是仅是一种增强剪枝能力的 Alpha-Beta 形式?
- RQ5现有的 Alpha-Beta 优化技术能否有效应用于 AB-SSS*?
主要发现
- AB-SSS* 在国际跳棋、奥赛罗和国际象棋中实现了与 Alpha-Beta 相当的叶节点数量,证明了其实际可行性。
- 该重构解决了 SSS* 的历史缺陷:实现更简单、内存占用更少、运行速度更快。
- 由于有效的动态走法重排序,迭代加深版本的 Alpha-Beta 在叶节点数量上优于迭代加深版本的 SSS*。
- SSS* 并非与 Alpha-Beta 根本不同,而更类似于一种增强剪枝能力的 Alpha-Beta 变体,如零窗口搜索。
- 置换表的集成实现了搜索信息的高效重用,使 AB-SSS* 既正确又高效。
- 结果与早期基于模拟的结论相矛盾,即 SSS* 在叶节点效率上优于 Alpha-Beta,表明在实践中,配合良好走法排序的 Alpha-Beta 反而更优。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。