2

你好!我正在尝试实现 alpha-beta 搜索,但我首先想了解它背后的所有逻辑,而不仅仅是使用某种伪代码来实现它。

我的理解是:一个白人玩家移动(我们称之为move1)。第一步被保存为 alpha(玩家确信的最小值)。现在,如果我们移动到下一个可能的白棋走法(move2),并且看到黑棋玩家的第一反应导致的估值比 alpha 更差,我们可以跳过所有可能的黑棋反击,因为我们已经知道当白棋走 2 时,最坏的可能结果比 move1 的最坏可能结果更差。

但是,我不明白的是那个 beta 变量。从国际象棋编程维基中我读到:'保证最小化玩家的最高分数'。但我无法真正理解它背后的想法。

有人可以用非常简单的术语解释一下吗?非常感谢你。

4

2 回答 2

3

在国际象棋中,没有简单的方法可以判断 move1 是否比 move2 好(从您的示例中)。近似值是通过查看“硬”参数来实现的:棋子的数量和价值、双兵或自由兵的存在……通常这种近似值被插入到极小极大算法中。

极小极大

简单来说,思路如下:首先,扩展所有可能的移动(白-黑-白-黑-...),直到达到预定义的深度或时间限制。这将创建一个棋盘位置树(以移动作为边缘),并使用启发式方法评估叶子(如上所述)。然后,树被折叠,最终导致对 move1 与 move 2 的评估。

崩溃是如何工作的?它从树的叶子开始,并为每个节点(又名棋盘位置)分配一个值。对于所有子节点的值已知的每个节点,汇总子节点的值:如果轮到白,则取白的最佳值(最大值);如果轮到黑方,最差(分钟)。因此得名极小极大。重复此过程,直到到达根。

假设以下棋盘位置树:

 A
|  \
B1  B2
|   |  \
A11 A21 A22

现在假设以下评估:A11 = 0,A21 = -1,A22 = +1(正值对白色有好处)。我们从近似值中假设位置 A21 优于 A22(黑色),因此我们将 -1 分配给节点 B2。对于 B1,这很清楚,它的值为 0。现在我们假设 B1 对于白色优于 B2,因此 A 的值为 0,白色应该移动到 B1 位置。

α-β修剪

这里的想法不是构建整棵树,而是深度优先搜索更有希望的移动,以实现早期截止。在上面的例子中,如果我们从左到右(A-B1-A11-B2-A21-...)深度优先遍历树,在评估 A21 之后,我们知道对于白色,位置 B2 比位置 B1 差。因此,不再需要评估 A22。Alpha 和 beta 仅存储当前已知的对白的最佳可能移动的评估,以及对黑的当前已知的最佳可能响应的评估。遍历树的节点的顺序(初始排序)决定了是否有可能以及有多少个可能的截止。来自维基百科:

通常在 alpha-beta 期间,子树暂时由第一玩家优势(当许多第一玩家移动是好的,并且在每个搜索深度处,第一玩家检查的第一移动是足够的,但所有第二玩家的反应都需要试图找到一个反驳),反之亦然。...

如果排序不是最优的,则必须完全探索更多的子树。

另见 迭代深化深度优先搜索

优化

严格来说,这棵树是一个有向无环,因为相同的棋盘位置可以通过不同的移动组合(例如,转座子)来实现。使用哈希表来检测相同的位置,这将节省大量的计算工作。

于 2012-09-17T20:22:18.407 回答
2

基本上,这个想法是alphabeta是最佳结果的上限和下限,根据您已经探索过的游戏树,因此超出这些界限的任何内容都不值得探索。

自从我详细了解 minimax 和 alpha-beta 修剪已经有一段时间了,但这是我记得的要点。

如您所说,如果我们已经知道白棋的move1得分为 10,并且在检查时move2我们发现黑棋的响应方式可以使白棋的最佳得分为 8,那么就不值得move2进一步研究了;我们已经知道,我们所能做的最好的事情比我们所知道的另一个选择更糟糕。

但这只是极小极大算法的一半。假设我们现在正在检查白棋move3,并查看所有黑棋的反应。我们探索黑色的moveX,并发现白人对此的反应之一可以强制得分至少为 15。如果我们然后开始探索黑人moveY(仍然是对白人的原始move3反应)并找到白人对此的反应moveY将强制得分为至少 18 点,那么我们立即知道源自黑方的整个博弈树moveY是没有意义的;黑色永远不会使moveY,因为moveX只强制黑方让白方得 15 分,而moveY强制黑方让白方得 18 分。

Alpha表示我们已经知道白人可以通过做出不同选择来达到我们正在探索的点的最低分数。因此,一旦我们知道不可能得到超过alpha的任何路径,就不值得继续探索任何路径,因为白色不允许我们到达那条路径。

Beta代表我们已经知道黑色可以通过做出不同选择来强制达到我们正在探索的点的最大分数。因此,一旦我们知道不可能得到低于beta的任何路径,就不值得继续探索任何路径,因为黑色不允许我们到达那条路径。

于 2012-09-18T07:06:40.043 回答