我正在开发一台国际象棋电脑,但我的静止搜索遇到了问题。
以国际象棋的位置为例:
如果我们搜索深度为1,那么最佳移动将是exf5
。
但是,计算机还会搜索exd5
,然后进入静止搜索。它会尝试Qxc6
然后dxc6
,这比第一步提供了比exf5
更好的位置。第二个玩家当然不会玩Qxc6
但是我不知道如何让静止搜索只看"好的捕获" 。
有谁知道如何解决这个问题?
答案 0 :(得分:1)
两种众所周知的方法是 MVV-LVA (最有价值的受害者 - 最不值得的侵略者)和 SEE (静态交换评估)。
MVV-LVA 是一种简单的启发式方法,可以合理的顺序生成/排序捕获移动。最初(MVV)算法以最有价值的第一个顺序查找所有被攻击对手棋子的潜在受害者。
在找到最有价值的受害者之后,LVA以相反的顺序(Pawn,Knight,Bishop,Rook,Queen to King)识别可能攻击受害者的潜在侵略者。
它可能会失败,但很容易实现,并涵盖了很多简单的案例。
SEE 检查在给定移动后在单个方格上进行一系列交换的结果,并计算可能丢失或获得的评估更改(材料)。
良好的实施非常棘手。
有关详细信息,请查看: