我正在使用该游戏引擎来玩一些棋盘游戏,我实现了带有alpha beta修剪和移动顺序的minimax。现在,当我使用其他现有引擎时,一切看起来都很好。但是,我发现了两个细微的问题,我不知道是什么原因导致的,也许我的知识还有些不足。
第一个问题:
当我增加搜索深度时,即使消耗更多时间,直觉上我也应该获得更好的结果,但就我而言,从深度8(获胜)移至深度9会使我一直迷路,现在我增加它到10我突然又赢了。请记住,除深度外,我将其他所有内容保持不变。一开始我以为是因为在第9深度我们发现了一个有前途的举动,对手可以轻易地反驳它,但随后可能在每个深度发生。所以我的问题是什么导致这种奇怪的行为?是否有最佳深度,如果我们超越此深度,可能会适得其反?
第二期: 它与移动排序类似,但是可以获取下一个游戏的值来选择要玩的游戏。例如:
For every possible move starting from weakest move do:
minimax(move)
现在,由于我们必须经历所有可能的动作,为什么拥有强力的动作首先会赢得比赛,但是如果我从最弱的动作开始,则会输掉比赛。由于我们必须评估所有可能的移动,因此没有实现。是什么原因导致这种行为?
答案 0 :(得分:1)
当我增加搜索深度时,凭直觉我应该得到 即使耗费更多时间也可以获得更好的结果,但就我而言, 深度8(获胜)达到深度9使我一直失去 增加到10我突然又赢了。
在我看来,这听起来确实像是个小虫。
For every possible move starting from weakest move do:
minimax(move)
您应该始终从最有力的一步开始,以便从alpha-beta修剪中受益
现在,因为我们必须经历所有可能的动作
α-β修剪怎么样?您不必经历所有可能的动作。