组合博弈探秘
组合博弈探秘
简介:对组合博弈的一些探究,不一定准确。
基本介绍
2人进行游戏对局,分先后手,求先手必胜还是必败。如取石子等。
限制1:无平局。
限制2:有限性,操作数量有限,操作方式有限。
基本定义
定义1:设状态集合为\(G=\{g_i|g_i,i\in N^+\}\)
定义2:设当前状态为\(g_i\),其操作集合为\(F_i=\{f_{ij}|f_{ij},j\in N^+\}\)
定义3:设当前状态为\(g_i\),其后继状态集合为\(H_i=\{h_{p}|h_{p}=f_{ij}(g_i),j\in N^+\}\)。
定义4:必胜状态记为\(P\),必败状态记为\(N\)。
博弈基本推论1:若\(\forall h_p\in H_i,h_p=P\)或\(H_i=\emptyset\),则\(g_i=N\);若\(\exists h_p\in H_i,h_p=N\),则\(g_i=P\)。
SG函数
mex函数定义:\(mex(A)=\)非负整数集合A之外的最小非负整数。
SG函数定义:\(SG(g_i)=mex(SG(H_i))\),\(SG(H_i)=\{SG(h_{p})|h_{p}\in H_i\}\),\(SG(\emptyset)=0\)。
SG性质1:\(SG(g_i)\in N^0\),且\(SG(g_i)=0\),得\(g_i=N\),\(SG(g_i)\neq 0\),得\(g_i=P\)。反之也成立。
SG推论1:由SG函数定义可知,集合\(\{0,1,2,...,SG(g_i)-1\}\subseteq SG(H_i)\),\(SG(g_i)\notin SG(H_i)\)。
SG推论2:由SG推论1可知,若\(SG(f_{ij}(g_i))>SG(g_i)\),则\(\exists f_{pq},SG(f_{pq}(f_{ij}(g_i)))=SG(g_i)\)。
异或变换引理
简介:大致为异或和减法的相互转换,异或的一般表达。
引理1:若\(a\in N^0\),则对于\(\forall x\in\{z|z\le a,z\in Z\}\),一定\(\exists b\in N^0\),使得\(a-x=a\oplus b\)
引理2:若\(a\in N^+\),则对于\(\forall x\in\{n|n\le a,n\in N^+\}\),一定\(\exists b\in N^+\),使得\(a-x=a\oplus b\),并且\(a\)二进制第\(u\)位一定为1。其中\(u\)为\(b\)二进制最高位所在位数。
引理2证明:易证\(\exists b\)。由\(x\in\{n|n\le a,n\in N^+\}\),知\(x>0\),得\(a>a-x\),即\(a>a\oplus b\)。记\(a\oplus b=a\prime\),由\(u\)为\(b\)二进制最高位所在位数,得\(b_u=1,a\prime=a+\sum_{v=1}^{u}{((-1)^{a_v}* b_v* 2^{v-1})}\),其中\(a_v,b_v\)为\(a,b\)二进制第\(v\)位。假设\(a_u=0\),得\(a\prime=a+2^{u-1}+\sum_{v=1}^{u-1}{((-1)^{a_v}* b_v* 2^{v-1})}\ge a+2^{u-1}+\sum_{v=1}^{u-1}{(- 2^{v-1})}=a+2^{u-1}-(2^{u-1}-1)=a+1>a\),与\(a>a\prime\)矛盾,所以假设不成立,即\(a_u=1\)。
引理3:同引理2可证,若\(a\in N^+\),\(b\in N^+\),并且\(a\)二进制第\(u\)位为1,其中\(u\)为\(b\)二进制最高位所在位数,则\(a>a\oplus b\)。
SG和运算
SG性质2:\(SG(<g_{k_1},g_{k_2},...,g_{k_n}>)=\oplus_{i=1}^n SG(g_{k_i})\),其中\(g_{k_i}\)是\(n\)个相互独立的子游戏\(k_1,k_2,...,k_n\)的状态。\(SG(<g_{k_1},g_{k_2},...,g_{k_n}>)\)表示\(n\)个子游戏整体状态的SG值。
SG和运算证明
证明SG性质2:
1)记\(SG(g_{k_i})=s_i\),\(SG(f(g_{k_i}))=s_i\prime\),\((\oplus_{i=1}^n s_i)\prime=\)进行操作\(f\)后的\((\oplus_{i=1}^n s_i)\),\(S=SG(<g_{k_1},g_{k_2},...,g_{k_n}>)\),\(gk=<g_{k_1},g_{k_2},...,g_{k_n}>\)。
2)由SG性质1易知,\(S\in N^0\),若\(S=0\),则\(gk=N\);若\(S\neq 0\),则\(gk=P\)。反之也成立。
3)要证\(S=\oplus_{i=1}^n s_i\),需要先证:证明1,再证:证明2。
4)由证明1得,若\(gk=P\),则\(\oplus_{i=1}^n s_i\neq 0\)。直接定义\(S=\oplus_{i=1}^{n} s_i\)(此时两者是否相等应该无所谓)。可得,若\(gk=P\),则\(S=\oplus_{i=1}^n s_i\neq 0\)。
5)由证明2得,若\(gk=N\),则\(\oplus_{i=1}^n s_i=0\)。又,若\(gk=N\),则\(S=0\)。可得,若\(gk=N\),则\(S=\oplus_{i=1}^n s_i=0\)。
6)综上得证。
证明1:若\(\oplus_{i=1}^n s_i= 0\),则\(gk=N\)。
1)先手进行操作,不妨设其操作的是子游戏\(k_n\),进行操作\(f\)后状态为\(f(g_{k_n})\)。
2)\(\oplus_{i=1}^n s_i= 0\)等价变换得\(\oplus_{i=1} ^{n}{s_i}=(\oplus_{i=1} ^{n-1}{s_i})\oplus s_{n}=0\)。
3)\((\oplus_{i=1} ^{n-1}{s_i})\oplus s_{n}=0\)等价变换得\((\oplus_{i=1} ^{n-1}{s_i})=s_{n}\)。
4i)若\(s_n\prime=SG(f(g_{k_n}))>SG(g_{k_n})=s_n\),由SG推论2可得,\(\exists f_{2},SG(f_{2}(f(g_{k_n})))=SG(g_{k_n})=s_n\)。此时后手操作为\(f2\)。
4ii)若\(s_n\prime=SG(f(g_{k_n}))<SG(g_{k_n})=s_n\),有\(s_n\prime=s_n-x,x\in\{n|n\le s_n,n\in N^+\}\)。由引理2可得一定\(\exists b\in N^+\),使得\(s_n-x=s_n\oplus b\),并且\(s_n\)二进制第\(u\)位一定为1。其中\(u\)为\(b\)二进制最高位所在位数。
5ii)由\(s_n\)二进制第\(u\)位为1,\((\oplus_{i=1} ^{n-1}{s_i})=s_{n}\),可得,\(\exists m,1\le m\le n-1\),\(s_m\)的第\(u\)位为1。
6ii)\((\oplus_{i=1} ^{n-1}{s_i})=s_{n}\)等价变换得\((\oplus_{i=1} ^{n-1}{s_i})\oplus b=s_{n}\oplus b\)。
7ii)等价变换得\((\oplus_{i=1}^{m-1}{s_i})\oplus(\oplus_{i=m+1}^{n-1}{s_i})\oplus(s_m\oplus b)=s_{n}\oplus b\),其中\(1\le m\le n-1\)。
8ii)由引理3可得,\(s_m>(s_m\oplus b)\)。
9ii)由SG推论1可得,\(\exists f2,s_m\prime=SG(f_2(g_{k_m}))=(s_m\oplus b)\)。
10ii)综上ii,若\(s_n\prime=SG(f(g_{k_n}))<SG(g_{k_n})=s_n\),对于\(\forall f\),即\(\forall x\),即\(\forall s_n\prime\),\(\exists f2\),使得\((\oplus_{i=1}^{m-1}{s_i})\oplus(\oplus_{i=m+1}^{n-1}{s_i})\oplus(s_m\prime)=s_n\prime\)。
5)综上i、ii,对于\(\forall f,\exists f2\),使得\((\oplus_{i=1}^n s_i)\prime\prime=0\)
6)易知,若\(\forall i,1\le i\le n,s_i=0\),即\(\oplus_{i=1}^n s_i= 0\),则\(gk=N\)。
7)若\(\oplus_{i=1}^n s_i= 0,s_i\in N^0\),当后手始终按照上述方法进行操作,\(\sum_{i=1}^{n}{s_i}\)严格递减,又由有限性可得:在有限操作次数后,一定会出现\(\forall i,1\le i\le n,s_i=0\),并易证此时是先手操作。得\(gk=N\)。
8)综上得证。
证明2:若\(\oplus_{i=1}^n s_i\neq 0\),则\(gk=P\)。
1)若\(\oplus_{i=1}^n s_i\neq 0\),由引理和证明1易证\(\exists f,(\oplus_{i=1}^n s_i)\prime=0\),由博弈基本推论1可得,\(gk=P\)。
2)综上得证。
NIM问题
题目:有\(n\)堆石头,每堆\(a_i\)个,两人轮流取石头,每次从一堆中取任意个但不能不取,无石头可取的人失败。问先手必胜还是必败。
解法:
设\(p_n=\oplus_{i=1} ^{n}{a_i}\)
\(p_n=0\)必败
\(p_n\neq0\)必胜。
解法解释:
设\(g_{k_i}\)为第\(i\)堆石头数,易证\(SG(g_{k_i})=a_i\),从而易得解法。