解法
20世纪70年代的国际象棋程序通过从当前棋盘向前搜索有限步数来评估局面,对结果局面打分并选择最佳着法——这种方法在复杂的中局中效果不错,但在子力稀少的残局中则失效,因为正确的取胜计划可能需要数十步精确着法,而这些着法没有明显的短期收益,浅层的前向搜索无法评估其价值。
改进前向搜索意味着搜索更深,这在当时的硬件条件下计算上不可行,而且即使更深搜索,也无法保证在离终局还有很远的局面中找到客观正确的着法。贝尔实验室的肯·汤普森采取了完全不同的方法:他不是从未知局面向前搜索未知结果,而是从棋局中价值已知的唯一局面——将杀——开始,并由此向外扩展。
取得了什么结果
他们没有向前搜索,而是从每个将杀局面反向计算,为每个局面分配一个精确的步数来强制取胜或和棋。
为什么有效
将杀局面是确定的,提供了固定的起点。
国际象棋规则是可逆的,因此计算前驱和计算后继一样容易。
少数棋子的有限状态空间使得穷举成为可能,保证了完美解。
反向计算避免了使用启发式来修剪前向搜索的需要。
可以借鉴什么
当正向搜索不可行时,枚举已知的终局状态并通过可逆规则反向传播值。
后续
汤普森1977年的KQKR残局库辅导了美国冠军,发现需要比理论假设多得多的步数才能取胜,并改变了50步规则。反向计算的残局库成为计算机国际象棋的标准工具,后来其他研究人员将其扩展到所有六子和七子残局,这种从已知答案反向计算的技术也推广为一种基本方法,应用于其他完美信息游戏以及计算机科学中的一些搜索和规划问题。
从这里,追溯依据
参考来源
- Endgame tablebases: A short history ChessBase · en.chessbase.com