artificial-intelligence - 什么是 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 修剪从状态显示游戏的价值。标记任何将被修剪的分支,并显示每个未修剪状态下每个玩家的收益界限是多少。
解决方案
推荐阅读
- c# - 如何从另一个 ListView 绑定 ListView 中的对象属性
- python - python:如何监控变量?变量变化时执行命令
- xamarin.forms - 未找到“HeightRequest”的属性、BindableProperty 或事件,或者 Xamarin.Forms 中的值和属性错误之间的类型不匹配
- javascript - 模拟默认导出失败,但命名导出没有
- flutter - 颤振发送带有 url_launcher uri 的电子邮件
- javascript - Puppeteer .click 悬停而不是单击
- javascript - 如何使用 JS 在 Office Web 插件的 mailItem 内联响应中生成文本
- android - RecyclerView中的android RecyclerView
- python - binascii.Error:django 中的填充不正确?- 重定向到 django 管理页面时
- ansible - 如何将拱形的 yml 文件作为额外的变量传递?