博弈游戏的实质是一个有向无环图,从一个顶点出发,两个选手交替从一个节点到另一个节点,最终无点可走的选手失败。
下图可见,y1,y2,y3是顶点的子问题,不能同时达到。y4,y5是y1的子问题,G1,G2……Gm是y4的子问题。
首先定义一个mex{a1,a2……,an}取的是不属于mex集合的最小非负整数,比如mex{1,2,3}=0,mex{0,1,4,6}=2.
再定义一个SG函数,SG(x)表示节点X处的可选节点个数
每个局面都有一个SG值,当SG值为0时,为必败局面。
SG[y1]的值为 mex{SG[y4],SG[y5]},即取不属于{SG[y4],SG[y5]}这个集合的最小非负整数。
如果y1可达状态中有必败态,即SG值为0的状态,则SG[y1]必定不为0。
若y1可达状态中均为必胜态,即SG值均大于0,则SG[y1]必定为0。
mex用来处理后继局面,而异或处理同时存在的子游戏。如局面y4由G1,G2
…等子游戏组成,这些子游戏同时存在,因此SG[y4]= SG[G1] xor SG[G2] xor SG[G3]…,此处的证明与NIM游戏证明一致
未完待续……
【博弈论】2、SG函数
最新推荐文章于 2024-10-16 00:00:43 发布