如果存储的状态包含很少的信息,minmax / negamax 树会表现得更好吗?

Would a minmax / negamax tree perform significantly better if the stored states contained little information?

我正在研究国际象棋 AI,对以后的表现感到担忧。
现在,我的 negamax 树包含您所期望的每个游戏状态,尽管每个状态都以 ASCII 格式存储整个棋盘,以及适应度和方法。
如果我 trim 将存储的信息缩减为仅移动的部分,树会表现得更好吗? 例如,不存储整个 ASCII 板,只存储 "b2a2"(b2 移至 a2)。 谢谢。

简短回答:是的,只存储移动应该更快。

长答案:

在每个位置,您都必须能够访问当前面板。通常,国际象棋引擎使用棋盘数据结构,其中包括 MakeMove 和 UnmakeMove 操作。那么只存储走法就够了。

从技术上讲,可以通过在内部保留一堆位置来避免实施真正的 UnmakeMove 操作。然后 UnmakeMove 只是弹出堆栈。在一些较旧的架构上,这曾经非常快。如果我没记错的话,Cray Blitz 在 80 年代使用了这种技术。

今天,我所知道的所有引擎都实现了 UnmakeMove 操作,因为在今天的机器上缓存效率非常重要。保持一堆位置对缓存压力太大,所以避免了。

顺便说一下,正如您提到的,您正在使用棋盘的 ASCII 表示,我建议您阅读国际象棋编程维基上的 Board Representation 文章。使用有效的棋盘表示对于性能至关重要。