任务描述
本关任务:学习人工智能博弈算法中的 AlphaBeta 剪枝技巧,并基于 MinMax 算法编程实现如下图博弈树最优值问题的求解。

博弈树的输入形式为字符串:[A, [B, (E, 3), (F, 12), (G, 8)], [C, (H, 2), (I, 4), (J, 6)], [D, (K, 14), (L, 5), (M, 2)]],其中 [] 里的第一项为结点名称,后面的 [] 或 () 为子结点,而 () 里边则为叶子结点名称及其值。通过 Python 中的 ast.literal_eval 模块可以将该字符串数据解析为数据在 Python 数据类型里本应该存在的形式,在本例子中即为列表和元组,使用方法可见文件目录中的 testAlphaBeta.py 文件。
学员需要将列表和元组组成的数据构建成一棵如上图所示的博弈树,然后求解最优值,该博弈树的根结点为 Max 层,上图所示的最优结点为 B ,最优值为 3 。
相关知识
为了完成本关任务,你需要掌握:1. alpha-beta 剪枝原理,2.问题求解思路。
alpha-beta 剪枝原理
极小极大值算法必须检查博弈树的全部结点,也就是游戏的全部状态,显然,搜索时间是指数级增长的。虽然我们无法消除指数级的运算规模,但是可以通过一些剪枝策略有效地将其减半,换言之,可能不需要遍历博弈树中每一个结点就
本文介绍如何运用AlphaBeta剪枝算法解决博弈树的最优值问题。通过理解博弈树的输入数据格式,建立博弈树并利用递归实现AlphaBeta剪枝算法,以最小化最大值或最大化最小值的方式找到最优决策。文章提供了算法原理、问题求解思路以及编程要求,包括相关函数的实现细节。
订阅专栏 解锁全文
1416

被折叠的 条评论
为什么被折叠?



