经过几天的学习和刷题,总算对博弈论的基础懂了一些,学习过程中参考了以下两位的总结:
下面列出一些基础博弈的结论定理(证明过程略):
(一)巴什博弈(Bash):
一个堆中有n个物体,两人轮流取,每次至少取1个,至多取m个,最后取完者胜。
取胜法则:令n=(m+1)*r+s (s<=m,r为任意自然数),先取者要想取胜,则要求第一次取时必须取s个。
(二)威佐夫博弈(Wythoff):
两个堆中各有若干个物品,两人轮流从某一堆或从两堆中同时取同样多个物品(每次至少1个,可任意多个),最后取完者胜。
定义:当甲面对局势(ak,bk)时,甲必定输,则称(ak,bk)为奇异局势。(奇异局势有bk=ak+k)
性质:
1.任何自然数都包含在一个且仅有一个奇异局势中;
2.奇异局势可通过任意操作变为非奇异局势;
3.非奇异局势可通过适当的方法变为奇异局势。
Q:如何判断局势(a,b)是否为奇异局势?
A:若为奇异局势,则有
(1) ak=floor(k*(sqrt(5.0)+1)/2); (2) bk=ak+k
可将k=b-a代入(1)式中,得到ak,比较ak是否等于a,若等于,则为奇异局势,否则为非奇异局势。
(三)尼姆博弈(Nimm):
三个堆中各有若干个物品,两人轮流从某堆中取任意多个物品(每次至少1个,可任意多个),最后取完者胜。
用(a,b,c)表示某种局势,将a,b,c 以二进制形式进行异或(^)运算,若异或结果为0,则是奇异局势,否则是非奇异局势(非奇异局势可通过适当的方法变为奇异局势)。
(四)取火柴游戏的两种问题:
有若干堆火柴,两人依次从中取出,每次只能从一堆中取若干根(>=1),
问:(Ⅰ) 最后取完者胜,求必胜方法? (Ⅱ) 最后取完者负,求必胜方法?
定义1:若所有堆的火柴数异或为0,则该状态为利他态(T态),否则为利己态(S);
对于问题(Ⅰ):
定理1:任意S态,总能从一堆火柴中取出若干个,从而变为T态;
定理2:任意T态,只需取任何一堆中的若干个,就能变为S态;
取胜法则:S态必胜,T态必败。
定义2:若某堆仅有1根火柴,则称之为孤单堆,否则为充裕堆;
定义3:T态中,若充裕堆的堆数为0,则称之为部分利他态(T0);
若充裕堆的堆数>=2,则称之为完全利他态(T2);
定义4:S态中,若充裕堆的堆数为0,且有奇数堆孤单堆,则称之为S0;
若充裕堆仅有1堆,则称之为S1;若充裕堆的堆数>=2,则称之为S2。
对于问题(Ⅱ):
定理3:S2态不可一次变为T0态,但S2态可一次变为T2态;
定理4:T2态只能转为S2态/S1态。
取胜法则:[ 必胜态:T0,S1,S2 ] [ 必败态:T2,S0 ]