围棋 :完美信息的拓展性博弈
Tic-Tac-Toe的树形描述
M
a
x
代
表
玩
家
自
己
,
M
i
n
代
表
你
的
对
手
,
游
戏
简
单
但
是
仍
约
有
36
万
种
结
果
Max代表玩家自己,Min代表你的对手,游戏简单但是仍约有36万种结果
Max代表玩家自己,Min代表你的对手,游戏简单但是仍约有36万种结果
极小极大算法(Minimax)
深
度
优
先
搜
索
+
逆
向
归
纳
法
深度优先搜索+逆向归纳法
深度优先搜索+逆向归纳法
二叉树的先序遍历
图的深度优先遍历
算
法
,
做
深
度
优
先
搜
索
(
树
的
先
序
遍
历
)
,
第
一
个
到
10
,
第
4
排
第
1
个
M
I
N
做
决
策
,
保
存
数
据
为
10
,
(
因
为
右
侧
没
有
搜
索
到
数
据
,
所
以
父
节
点
保
存
当
前
的
值
,
搜
索
到
之
后
在
比
较
更
新
)
然
后
搜
索
到
11
,
第
4
排
第
1
个
M
I
N
做
决
策
,
保
存
数
据
为
10
,
第
3
排
第
1
个
M
A
X
做
决
策
,
保
存
数
据
为
10
,
然
后
右
子
树
开
始
搜
索
,
M
I
N
保
存
左
右
叶
子
节
点
的
最
小
值
9
…
…
依
次
搜
索
然
后
保
存
算法,做深度优先搜索(树的先序遍历),\\ 第一个到10,第4排第1个MIN做决策,保存数据为10,\\ (\color{red}因为右侧没有搜索到数据,所以父节点保存当前的值,搜索到之后在比较更新\color{black})\\ 然后搜索到11,第4排第1个MIN做决策,保存数据为10,\\ 第3排第1个MAX做决策,保存数据为10,\\ 然后右子树开始搜索,MIN保存左右叶子节点的最小值9……\\ 依次搜索然后保存
算法,做深度优先搜索(树的先序遍历),第一个到10,第4排第1个MIN做决策,保存数据为10,(因为右侧没有搜索到数据,所以父节点保存当前的值,搜索到之后在比较更新)然后搜索到11,第4排第1个MIN做决策,保存数据为10,第3排第1个MAX做决策,保存数据为10,然后右子树开始搜索,MIN保存左右叶子节点的最小值9……依次搜索然后保存
减枝(α-β剪枝(Alpha-Beta Pruning))
$$$$
a
记
录
最
大
值
,
b
记
录
最
小
值
根
据
两
者
的
值
判
断
何
时
减
枝
:
a
≥
b
a
,
b
首
先
为
最
差
值
:
a
=
−
∞
,
b
=
+
∞
a记录最大值,b记录最小值\\ 根据两者的值判断何时减枝:a\geq b\\ a,b首先为最差值:a=-\infty ,b =+\infty \\
a记录最大值,b记录最小值根据两者的值判断何时减枝:a≥ba,b首先为最差值:a=−∞,b=+∞
下
边
的
情
况
需
要
减
枝
,
有
一
点
、
像
“
维
克
里
拍
卖
”
下边的情况需要减枝,有一点、像“维克里拍卖”\\
下边的情况需要减枝,有一点、像“维克里拍卖”
圆
m
i
n
只
要
找
到
一
个
比
当
前
数
还
小
的
数
就
停
止
(
剪
枝
)
,
方
块
m
a
x
只
要
找
到
比
当
前
大
的
数
就
停
止
(
剪
枝
)
圆min只要找到一个比当前数还小的数就停止(剪枝),方块max只要找到比当前大的数就停止(剪枝)
圆min只要找到一个比当前数还小的数就停止(剪枝),方块max只要找到比当前大的数就停止(剪枝)