Alterna · учебный материал

游戏树

游戏树:由两个玩家各自为政的游戏,他们拥有完整的信息、策略、迷你马力。

Что в этом материале

Содержание и основные понятия

返回目录
第25章 第25.3页
游戏树
如何描述象棋、棋子、“排行5的野餐”的策略,
游戏树
这是棵树, 脊椎是位置, 肋骨是玩家移动。 叶子被评分( 双赢/ 无赢) , 并正在寻找最佳策略 。
全球环境基金,全环基金
PIF 太平洋岛屿论坛
EEG 第23号、26.27号
01
最小算法
在树的每一层,玩家选择以不同的方式移动:
MAX 游戏
他们欲取胜,却欲取迷途,
最大
评价。
中场游戏
(机会主义)选择
最低最低
评价。
估计值从叶子上升为根:在每一层次上,MAX取最大,MIN取最低的后代。
02
实例:向前2步
树:MAX 3选项:MIN 叶子(评估)
MAX
A
=3
B
=4
A1
3
A2
5
B1
2
B2
8
MAX选择MAX(3.4) = 4 * 中风 B
MIN=3
MIN=4
MAX
(主任) -- -- 寻找
最大
MIN
(反对者) - 看
最低
休假时间 :
A1=3, A2=5 → A = min(3,5) =
3
B1=2, B2=8 → B = min(2,8) =
4
决定:
MAX 选择最大值( 3, 4) =
4
最佳移动 -
B
.
def minimax(node, depth, is_max):
if node.is_leaf():
return node.value # оценка позиции
if is_max:
best = float('-inf')
for child in node.children:
best = max(best, minimax(child, depth+1, False))
return best
else:
best = float('inf')
for child in node.children:
best = min(best, minimax(child, depth+1, True))
return best
def alpha_beta(node, depth, is_max, alpha, beta):
if node.is_leaf():
return node.value
if is_max:
for child in node.children:
alpha = max(alpha, alpha_beta(child, depth+1, False, alpha, beta))
if beta <= alpha:
break # отсечение — beta не улучшится
return alpha
else:
for child in node.children:
beta = min(beta, alpha_beta(child, depth+1, True, alpha, beta))
if beta <= alpha:
break # отсечение
return beta
# Пример: глубина 2, ветвление 2 → без отсечения 4 листа,
# с альфа-бета: до 3 листов (в лучшем случае)
🎮
最小值:树 + Alpha-beta 的动画
03
阿尔法比目截止期
在不失去结果的情况下快速超时运行
我们的想法是,如果我们已经找到了一个好办法, 并且我们看到对手可以做我们以前做的那么多事, 我们可以指望它。
α
(阿尔法)是通往根部的路上 找到的最好的MAX估计值
β
(Beta)是MIN最好的评分。
如果αβ不再相关,我们就切断它。
充其量,甲型贝塔加速超过GN时间(而不是O(N)o(GN))。
🎯
小型试验:5个问题
XP: 0
🧩
主题的快速测试
五个问题,每个正确答案20XP

教科书结构图