alpha / beta修剪,从哪个角度进行评估?

时间:2013-08-29 20:08:02

标签: chess alpha-beta-pruning

我正在尝试开发国际象棋程序。这将是对树的定期强力搜索,唯一不同的是评估。最初,我将使用Claude Shannon设计的标准评估器,以便更容易测试它是否在底座上正常工作。移动列表生成和周围的所有其他基础设施工作正常。

现在进行搜索:我想使用wikipedia的alpha / beta修剪代码示例。 这就是一个有点问题的问题:一件事情模棱两可;从谁的角度来评估应该完成?我一直在谷歌搜索几天(字面上),但没有一个例子明确说明。 所以:评估应该

  • 从那个深度的“当前移动者”的角度来看
  • 从那个深度的“当前行动的对手”的角度来看
  • 从树根处的移动者的角度来看,例如,这个树搜索正在进行的人(AI播放器)
  • 从树根处的移动者的对手的角度来看

我实验性地尝试了rootSide,side,rootOpponent,基本上所有选项,然后让它们互相对抗。结果是“当前那个深度的推动者”将是一个使用它(它最常见的),但测试该版本对任何其他引擎导致100%的损失。

当然维基百科会更新,以便更清楚! (请忽略维基百科历史中旁边的注释:那是我自己可能不正确的,所以我将其删除了)

1 个答案:

答案 0 :(得分:1)

应该从调用它的节点的角度进行评估。这是你的第一个案例,它是唯一真正有意义的案例。

如果您正在针对其他完整引擎测试您的基本引擎,那么是的,您可能会失去每场比赛。你缺少很多技巧,所以与其他引擎对战并不是一个很好的测试方法。一旦您的发动机变强,那么您可以使用此方法来提高强度或执行回归测试。

我建议设置简单的位置并手动玩它来查看是否可以看到基本的捕获,检查,检查等。请注意,即使完美实施alpha-beta和简单评估您的引擎仍然会犯错误。这是因为固定的搜索范围,所以接下来你可能想要查看静止搜索。