如何使 Minimax/Alpha-Beta 剪枝优先考虑较短的路径?

How can I make Minimax/Alpha-Beta pruning prioritize shorter paths?

我在国际象棋引擎中实现 minimax 算法时遇到问题。我怎样才能让算法偏向于最短的获胜路径?

以本板配置为例:

.

此处最好的一步是移动最后一行的皇后,但如果算法具有更高的搜索深度,则是否发生将死并不重要"faster"。

一些相当直接的更改:

  • 更改搜索函数的 return 类型,这样 returning 一对像 (move, q) where q 是衡量着手好坏的指标,它 return 是一个三元组,例如 (move, q, m) 其中 m 是该移动之后的序列长度。
  • 更改 return 语句以包含正确的序列长度;要么 0 表示游戏立即结束,要么 (m + 1) 其中 m 是递归调用找到的后续序列的长度。
  • 使用序列长度作为决胜局来比较相等的移动 q;较低的 m 是首选。
  • 如果您一发现就 return 取胜,请更改此条件,以便 立即 获胜移动短路。

请注意,这通常会降低算法的效率,因为您必须在找到获胜着法后探索更多分支,以防在未探索的分支中有更快的获胜着法。