极小极大算法
在竞争环境中,不同的agent的目标是有冲突的,这就引出了对抗搜索问题,也就是博弈问题。
首先考虑最简单的两人参与的游戏:MAX和MIN。MAX先行,两人轮流行动,直至游戏结束。游戏由以下部分组成:
- S0:初始状态。
- PLAYERS(S):定义此时该谁行动。
- ACTIONS(S):此状态下的合法移动的集合。
- RESULT(S,A):转移模型,定义行动的结果。
- TERMINAL-TEST(S):终止测试,判断游戏是否结束。游戏结束的状态为终止状态。
- UTILITY(S,P):效用函数,定义游戏者P在终止状态S下的数值。
博弈树:由S0、ACTIONS和RESULT组成。其结点为状态,边是移动。
下面介绍极小极大算法。
给定一颗博弈树,最优策略可以通过检查每个结点的极小极大值来确定,记为MINMAX(S)。
在选择时,MAX喜欢移动到有极大值的状态,MIN喜欢移动到有极小值的状态。所以有如下公式:
MINMAX(S)={
=UTILITY(S)S为终止状态=maxa∈ACTIONS(S)(MINMAX(RESULT(S,A)))S为MAX结点=mina∈ACTIONS(S)(MINMAX(RESULT(S,A)))S为MIN结点 MINMAX(S)=\left\{ \begin{aligned} &= UTILITY(S) &S为终止状态 \\ &= max_{a\in ACTIONS(S)}(MINMAX(RESULT(S,A))) &S为MAX结点 \\ &= min_{a\in ACTIONS(S)}(MINMAX(RESULT(S,A))) &S为MIN结点 \end{aligned} \right. MINMAX(S)=⎩⎪⎨