algorithm - Alpha Beta 剪枝假设

标签 algorithm chess alpha-beta-pruning

我正在学习游戏树(国际象棋),并且想知道 alpha beta 修剪是否基于两个玩家都是“完美玩家”的假设。如果一个不完美的人下棋并做出了错误的举动,会发生什么?当对手并不总是选择最佳着法时,alpha beta 剪枝如何发挥作用。

最佳答案

每当你有一个位置,它就可以被认为是分析树的根。 Alpha-beta剪枝的哲学是假设对手下棋完美,因为如果对手犯了错误,那么自然情况对计算机来说会更好。因此,经典的 alpha-beta 剪枝假设对手是完美的,并且每当发生意外情况时,例如

  • 对手犯了错误
  • 发现被认为是最好的线路实际上并不是最好的

算法重新考虑位置。经典的 alpha-beta 剪枝会在每次发生移动时一次又一次地计算位置,但自然地,可以有重大改进:

  1. 您可以将有吸引力的棋步降序排列到下一步,如果对手做出预期的棋步,您首先计算最有吸引力的变化,请注意,国际象棋游戏是使用每个玩家的时间进行的,并且我们应该避免时间麻烦。

  2. 当对手认为您可以在第二个、第三个等最具吸引力的变化中构建最佳场景时

  3. 国际象棋实际上是一个非常复杂的游戏。 Alpha-beta 剪枝只是给你假设,它不能确定最好的移动。作为计算机,您可以通过计算变体中的战术野性( fork 、串肉串等的数量)来调整攻击性,并使用可以通过调整攻击性来添加“个性”的权重。此外,您还可以调整技巧,即计算机选择稍差的棋步以使事情复杂化并使对手变得更困难的概率。

  4. 您可以调整时间和深度策略。

还有很多事情,但我不会在这里描述它们,因为我不想因为分享太多细节和无聊的人而很快获得很多反对票:)

关于algorithm - Alpha Beta 剪枝假设,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27437923/

相关文章:

algorithm - hackerrank偶数树解法讲解(偶数节点的森林)

javascript - 获得具有特定总和的范围内 n 个数字的所有可能排列的算法

python - 如何从 read_game 中获取棋盘的最终位置?

c++ - Tic Tac Toe 失败的 MiniMax 算法

artificial-intelligence - 极小极大 α-β 剪枝深度

algorithm - 算法。从各种可能性中挑选最佳组合

php - 如何实现文章的独特点击

C 的国际象棋游戏,对齐问题

c# - 国际象棋静止搜索过于广泛

java - Minimax 算法中 alpha/beta 的起始值是多少?