一、定义
我们考虑的对抗搜索是指有完整信息的、确定性的、轮流行动的、两个游戏者的零和游戏。解释是,在确定的、完全可观察的环境中的两个Agent必须轮流行动,在游戏结束时效用值总是相等并且符号相反。零和博弈:同一游戏中所有选手的总收益都一样的情况。如:0+1,1+0,1/2+1/2。
:初始状态。
:定义此时轮到谁行动。
:返回此状态下的合法移动集合。
:转移模型,定义行动的结果。
:终止测试。
:效用函数(目标函数或收益函数)。
博弈树:
二、博弈中的优化策略
给定一棵博弈树,最优策略可以通过检查每个结点的极小极大值来决定,记为。假设两个游戏者始终按照最优策略行棋,则结点的极小极大值就是对应状态的效用值(对于MAX而言)。MAX喜欢移动到有极大值的状态,而MIN喜欢移动到有极小值的状态。
1、极小极大算法
通过以上介绍的策略,我们介绍一个基本的对抗算法——极小极大算法。该算法的基本假设是:对手每次都能做出最优的选择。
使用递归算法自上而下一直前进到树的叶结点,然后随着递归回溯通过搜索树把极小极大值回传。该算法的框架即深度优先搜索模型,过程即游戏树的后序遍历(postorder traversal),总是先访问孩子结点后确定父结点的状态值。
分析: (1)完备性:如果搜索树是有限的,则算法是完备的;(2)最优性:在对手是最优的假设下,算法是最优的;(3)时间复杂度:;空间复杂度:;(与深度优先搜索相同)。
2、多人博弈
若多于二人对抗时,则首先需要将每个结点上的单一效用值替换为向量