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

时间:2019-12-01 17:50:26

标签: algorithm minimax

我在象棋引擎中实现minimax算法时遇到问题。如何让算法支持最短的获胜路线?

以该板的配置为例:

enter image description here

最好的方法是将女王/王后移到最后一行,但是如果算法具有更高的搜索深度,则将不会出现“将死”更快的问题。

1 个答案:

答案 0 :(得分:1)

一些相当简单的更改:

  • 更改搜索功能的返回类型,以便代替返回类似(move, q )的对,其中 q 是衡量移动程度的方法,则返回一个三元组(移动, q m ),其中 m 是该移动之后的序列长度。
  • 更改return语句以包含正确的序列长度;可以是0表示立即结束游戏,也可以是( m +1),其中 m 是递归调用找到的后续序列的长度。
  • 使用序列长度作为平局,比较具有相等 q 的移动;较低的 m 是首选。
  • 如果您通过找到获胜的举动而立即短路,请更改此条件,以便仅使立即获胜的举动短路。

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