双人零和博弈是两个玩家进行的零和博弈。零和博弈即
博弈双方可以采用同一效用值,一方使得效用最大,一方使得效用最小
可以给予双人零和博弈一个形式化的描述。将两个参与者分别称为MIN和MAX,MAX先移动,然后MIN移动,直到博弈结束
一个博弈中的状态需要有以下必要的属性:将要移动的玩家,可以采取的动作,是否终止。不妨给予定义
极小极大算法适用于确定性的零和博弈,一方最小化结果,另一方最大化结果。假定所有参与者都最佳移动,极小极大算法期望中构造一棵状态空间搜索树,博弈双方轮流行动,如图

在博弈中,双方都选择对自己最有利的行为,即MAX选择效用最大的状态进行转移,MIN选择效用最小的状态进行转移。但是对于非终止状态无法定义效用,因而对于状态s定义极小极大值
即
Note
MIN节点的MINMAX是MIN玩家能确保获得的最小效用,MAX阶段的MINMAX是MAX玩家能确保获得的最大效用
对于MIN玩家而言,最佳的行动策略就是选取拥有最小MINMAX的状态;对于MAX玩家而言,最佳的行动策略就是选取拥有最大MINMAX的状态
极小极大搜索是对博弈树进行完整的深度优先搜索。记博弈树的最大深度为m,每个节点的合法行动数为b,那么它的时间复杂度是指数级的
由于是深度优先搜索,空间复杂度倒不大,为。虽然它是完备的,但是需要的资源是非常难以满足的
剪枝是对博弈树进行修剪,剪去了对结果没有影响的部分。剪枝是针对MAX玩家而言的,剪枝是针对MIN玩家而言的
定义
定义
是到目前为止所有路径上所有MAX选择点的MINMAX最大值
如果在执行极大极小搜素时发现某个MAX将行动的节点其MINMAX小于,那么该节点以及它所有的兄弟节点都不需要考虑。这是因为MAX玩家应该尽可能选择高MINMAX值的节点所在分支,而不会允许MIN玩家逼自己选择较低MINMAX值的分支
再清晰一些的说法是,记该节点为n,它的父节点是MIN玩家做选择,MAX玩家是处于n还是n的兄弟是由MIN玩家决定的。MIN玩家一定会选择最小的MINMAX,轮到MAX玩家选择时,能确保的效用一定小于等于n节点的MINMAX,因而MAX玩家不会给MIN玩家选择的机会,即不会选择n所在的分支
Note
剪枝:若某一个MAX节点的MINMAX小于,则将其兄弟全部剪枝
这对于MIN玩家也是同理,定义值
定义
是到目前为止所有路径上所有MIN选择点的MINMAX最小值
剪枝策略是
Note
剪枝:若某一个MIN节点的MINMAX大于,则将其兄弟全部剪枝
剪枝的有效性依赖于节点的检查顺序。最坏的顺序是每次都考察最大的MAX和最小的MIN,无法减去任何的兄弟节点,最好顺序是考察最小的MAX和最大的MIN,可以剪去尽可能多的兄弟节点。在完美顺序下的时间复杂度为
在资源受限的情形下应使用深度受限搜索,即
评价函数评估非终止节点的分值,理想中应尽可能接近实际的MINMAX。由于深度受限,评价函数不可能完全与效用函数等同,会出现视野效应,即无法考虑搜索深度以外的情形
蒙特卡洛树搜索是基于概率模拟的结果构建启发式评价函数,一种常用的选择是Upper Confidence Bounder
其中
前一项代表“经验”,即该节点的平均效用;后一项是考虑到其父节点的效用对它效用的修正,代表“探索”
随机博弈即一方选择动作后状态的转移并不确定,即存在“机会节点”
此时极小极大搜索中的MINMAX就可以变为期望MINMAX
本文作者:GBwater
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!