Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何使Minimax/Alpha-Beta修剪优先于较短的路径?_Algorithm_Minimax - Fatal编程技术网

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

Algorithm 如何使Minimax/Alpha-Beta修剪优先于较短的路径?,algorithm,minimax,Algorithm,Minimax,我在一个国际象棋引擎中实现minimax算法时遇到了问题。我如何使算法有利于最短路径获胜 以该板的配置为例: 这里最好的移动方式是将女王移动到最后一行,但如果算法具有更高的搜索深度,那么将死是否“更快”并不重要。一些相当简单的更改: 更改搜索函数的返回类型,这样它就不会返回一个类对(move,q),其中q是衡量移动效果的指标,而是返回一个类三元组(move,q,m),其中m是移动后序列的长度 更改返回语句以包含正确的序列长度;0表示即时游戏结束,或(m+1),其中m是递归调用找到的后续序列

我在一个国际象棋引擎中实现minimax算法时遇到了问题。我如何使算法有利于最短路径获胜

以该板的配置为例:


这里最好的移动方式是将女王移动到最后一行,但如果算法具有更高的搜索深度,那么将死是否“更快”并不重要。

一些相当简单的更改:

  • 更改搜索函数的返回类型,这样它就不会返回一个类对(move,q),其中q是衡量移动效果的指标,而是返回一个类三元组(move,q,m),其中m是移动后序列的长度
  • 更改返回语句以包含正确的序列长度;0表示即时游戏结束,或(m+1),其中m是递归调用找到的后续序列的长度
  • 将序列长度用作平局断路器,以比较q相等的移动;较低的m是首选
  • 如果你是通过在找到一个成功的招式后立即返回一个成功的招式来短路,请更改此条件,以便只有一个立即成功的招式短路
请注意,这通常会降低算法的效率,因为如果在未探索的分支中有更快的获胜移动,则在找到获胜移动后必须探索更多分支