人工智能:博弈树与极小极大算法实现
1. 博弈树概述
在博弈中,连接格子中的任意两个相邻点,代表当前博弈时刻的真实博弈树会有许多分支,每个玩家的每一种可能走法对应一个分支。在树的每一层都是如此,不仅自己有很多走法可供选择,对手也一样,并且在树中每个可走的节点,每种走法都会有其对应的分支。只有在游戏接近尾声,几乎所有线段都已画出时,可能的走法数量才会缩减到两个和一个。
由于页面空间有限,我们无法画出博弈树的每一个分支,通常只展示几个走法来阐释博弈树的概念和思考过程。我们可以想象博弈树能延伸到任意深度,不仅要考虑自己的走法和对手的回应,还要考虑对对手回应的回应,以及对手对这个回应的回应,以此类推,不断构建博弈树。
2. 构建博弈树
博弈树与决策树有重要区别。决策树基于特征进行分类和预测,而博弈树只是描述每一种可能的未来。由于目标不同,构建方式也不同。在构建博弈树时,我们只需生成游戏中每一种可能走法的列表。以下是使用嵌套循环生成所有可能走法的代码:
allpossible = []
gamesize = 5
for i in range(1,gamesize + 1):
for j in range(2,gamesize + 1):
allpossible.append([(i,j),(i,j - 1)])
for i in range(1,gamesize):
for j in range(1,gamesize + 1):
allpossible.append([(i,j),(i + 1,j)])
超级会员免费看
订阅专栏 解锁全文

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



