我理解杀手启发式背后的想法以及它为什么有帮助。我正在努力解决的是如何在 Alpha-Beta 搜索例程中实现它。特别是如何保证只先尝试兄弟节点的杀手级 Action ?伪代码会有很大帮助。
最佳答案
在搜索树的许多部分,杀手级移动很可能是一个很好的反驳移动。因此,尝试其他位置的杀手级 Action 可能是个好主意。
您可以为每个层设置不同的杀手级移动阵列,并在进入 (ply) 时清除 (ply+1) 的阵列,这将为您提供“仅限 sibling ”的杀手级。我想说的是“+1”偏移量类似于要调整的参数:尝试清除 (ply+N) 的数组,然后查看性能最佳的位置(我猜增加 N 会改善情况)。
顺便说一下,引擎性能的评估是一项不同的相当消耗资源的任务:通常一个引擎试图解决一个测试套件,或者两个具有不同参数的引擎在它们之间进行比赛(比赛应该足够长,例如 100 场比赛)以确定哪个更好。
关于artificial-intelligence - 在国际象棋的 Alpha-Beta 搜索中实现杀手启发式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17692867/