首页 > 解决方案 > 什么是 Alpha Beta 修剪?如何从状态中提取游戏值?

问题描述

Hexapawn 是一个简单的回合制游戏,在 3 × 3 棋盘上进行。每个玩家从 3 个棋子开始 - 底行中的白色(最大)和顶行中的黑色(最小)。

棋子可以在国际象棋中正常移动(即,白兵可以向上移动一格或沿对角线向上一格俘获黑兵,而黑兵可向下移动一格或沿对角线向下一格俘获白兵)。每个玩家的目标是要么让他们的一个棋子到达棋盘的另一端,要么让他们的对手被困在他们的下一步行动中。图 1 显示了游戏的初始状态。

伪代码:

rows = 3;
cols = 3;
scale = 1;

for row in range(rows):
    for col in range(cols):
        createSquare(origin=(row*scale, col*scale), end=((row+1)*scale, (col+1)*scale))
        if row == 0:
            createBlackPawn(origin=(row*scale, col*scale), end=((row+1)*scale, (col+1)*scale))
        elif row == 2:
            createWhitePawn(origin=(row*scale, col*scale), end=((row+1)*scale, (col+1)*scale))

使用 Alpha-Beta 修剪从状态显示游戏的价值。标记任何将被修剪的分支,并显示每个未修剪状态下每个玩家的收益界限是多少。

从这个游戏状态

标签: artificial-intelligenceminimaxalpha-beta-pruningminmax

解决方案


推荐阅读