alpha-beta修剪如何降低运行时复杂度?

时间:2016-05-08 07:50:14

标签: minimax

我对alpha-beta修剪如何帮助minimax算法的运行时缩减感到有些困惑。也许我对minimax算法的理解是错误的,但我知道天真版本在O(b ^ d)中运行,其中b是分支因子,d是搜索深度。现在使用alpha-beta修剪,我们平均将其减少到O(b ^(3/4)d)。但是,生成游戏状态所需的时间是否还需要O(b ^ d)时间?所有状态的生成都没有考虑到minimax的运行时间,或者我对minimax算法的理解是错误的吗?

1 个答案:

答案 0 :(得分:2)

你是对的,Alpha-Beta并没有降低动作的生成速度。

但是,通过Alpha-Beta-Cutoffs减少要搜索的游戏分支数量是做什么的。由于只有在确定要搜索分支后才会生成移动,因此不必计算alpha-beta子分支的移动,从而减少时间复杂度。

AB-Tree source:google

在上图中,我标记了不必生成的动作。如您所见,虽然最右边的分支在第2层被截断,但仍然会生成前导到层的移动。但保存截止后之后的移动。这就是复杂性降低的地方。