最近看了一本书叫《消失的凶手》,里面的侦探邓教授在某一次探案中与未实施犯罪的凶手玩了读数游戏运用到博弈论,阻止了一场悲剧的发生,借此我了解了一些关于博弈论的知识。
博弈论有许多种,如:
零和博弈&非零和博弈:博弈双方的收益总和为零,一方的利益的增加就意味着另一方利益的减少;博弈双方的收益总和不为零,可以存在双赢的情况。
顺序博弈&同时博弈:博弈双方的行动是依次进行的,每个人的行动都受之前人的行动所影响;博弈双方的行动是同时进行的,彼此之间无法观察到对方的行动。
完全信息博弈&不完全信息博弈:博弈双方都清楚对方的信息和策略;博弈双方对对方的信息和策略存在不完全的了解。
静态博弈&动态博弈:博弈双方的决策同时进行,无法调整策略;博弈双方的决策可以根据对方的行动进行调整
我们要知道博弈问题通常有的两种状态:必胜态和必败态。
所谓必胜态,就是在当前的局面下,先手必胜
必败态,就是在当前的局面下,先手必败。
那么,这个游戏的必败态我们显然知道,就是所有石子堆都为0时。
我们可以用一个n元组(A1,A2,…An)来表示每一个局面,
例如,(3,3,1)(3,3,1)表示一共三堆石子,第一二堆有三个,第三堆有一个。
显然(3,3,1)(3,3,1)和(1,3,3)(1,3,3)是同一种局面,即交换每堆顺序不影响答案。
如果初始局面只有一堆石子,则甲有必胜策略。
甲可以一次把这一堆石子全部取完,这样乙就无石子可取了。
如果初始局面有两堆石子,而且这两堆石子的数目相等,则乙有必胜策略。
因为有两堆石子,所以甲无法一次取完;
如果甲在一堆中取若干石子,乙便在另一堆中取同样数目的石子;
根据对称性,在甲取了石子之后,乙总有石子可取;
石子总数一直在减少,最后必定是甲无石子可取。
对于初始局面(1),甲有必胜策略,而初始局面(3, 3),乙有必胜策略。
所以(3)+(3)+(1)=(3,3)+(1)=(3,3,1)(3)+(3)+(1)=(3,3)+(1)=(3,3,1)。
对于局面A,B,S,若S=A+B,则称局面S可以分解为“子局面”A和B。
局面(3,3,1)(3,3,1)可以分解为(3,3)(3,3)和(1)(1)。
如果初始局面可以分成两个相同的“子局面”,则乙有必胜策略。
设初始局面S=A+A,想象有两个桌子,每个桌子上放一个A局面;
若甲在一个桌子中取石子,则乙在另一个桌子中对称的取石子;
根据对称性,在甲取了石子之后,乙总有石子可取;
石子总数一直在减少,最后必定是甲无石子可取。
对于局面S,若先行者有必胜策略,则称“S胜”。
对于局面S,若后行者有必胜策略,则称“S负”。
若A=(1),B=(3,3),C=(2,2,5,5,5,5,7,7),则A胜,B负,C负。 我们要做的,就是如何判断局面的胜负。
如果局面S胜,则必存在取子的方法S→T,且T负。
如果局面S负,则对于任意取子方法S→T,有T胜。
设初始局面S可以分解成两个子局面A和B(分解理论)。 若A和B一胜一负,则S胜。
不妨设A胜B负;
想象有两个桌子A和B,桌子上分别放着A局面和B局面;
因为A胜,所以甲可以保证取桌子A上的最后一个石子;
与此同时,甲还可以保证在桌子B中走第一步的是乙;
因为B负,所以甲还可以保证取桌子B中的最后一个石子;
综上,甲可以保证两个桌子上的最后一个石子都由自己取得。 若A负B负,则S负。
无论甲先从A中取,还是先从B中取,都会变成一胜一负的局面;
因此,乙面临的局面总是“胜”局面,故甲面临的S是“负”局面。
即:若B负,则S的胜负情况与A的胜负情况相同。
若A胜B胜,则有时S胜,有时S负。
如果S=A+C+C,则S的胜负情况与A相同。
令B=C+C,则S=A+B且B负,故S的胜负情况与A相同。
初始局面(3,3,1)=(3)+(3)+(1),(3,3,1)=(3)+(3)+(1),与局面(1)(1)的胜负情况相同。
初始局面(3,3,1)(3,3,1)是“胜”局面,甲有必胜策略。
如果局面S中,存在两堆石子,它们的数目相等,
那么这堆石子可以被拿掉,且新局面与原来局面的胜负相同。
这叫做局面的简化,当一个局面不能被简化后,这个局面就被称做最简局面。
最简局面中不会有两堆相同的石子,故可以用一个集合来表示最简局面
如果只关心局面的胜负,则一个局面可以用一个集合来描述,而这正是我们需要的。
如:局面(3,3,1)(3,3,1),可以用集合{1}{1}来描述。
设大写字母AB表示局面,小写字母ab表示二进制
若A和B相同,则A+B负 →→ 若a和b相等,则a+b=0
若A胜B负,则A+B胜 →→ 若a=1且b=0,则a+b=1
若B胜A负,则A+B胜 →→ 若b=1且a=0,则a+b=1
若A负B负,则A+B负 →→ 若a=0且b=0,则a+b=0
有没有发现什么?
若a和b相等,则a^=0,b=0
若a=1且b=0,则a^=1b=1
若b=1且a=0,则a^=1,b=1
若a=0且b=0,则a^=0,b=0
局面的加法与异或运算的性质完全相同。
能否用一个二进制数,来表示一个局面呢?
用符号S,表示局面S所对应的二进制数。
如果局面S只有一堆石子,则用这一堆石子数目所对应的二进制数来表示S。
#(5)=5=101(5)=5=101。
若局面S=A+B,则S=A+B。
局面(3,3)=(3)+(3)(3,3)=(3)+(3),所以(3,3)=(3,3)=(3)+(3)+(3)=11+11=0(3)=11+11=0。
局面(3,3,1)=(3,3)+(1)(3,3,1)=(3,3)+(1),所以(3,3,1)=(3,3,1)=(3,3)+(3,3)+(1)=0+1=1(1)=0+1=1。
注:如果这里不理解,把'+'换成'^'再试一下
对于局面S,若S=0,则S负;若S≠0,则S胜。
证出这个,就相当于我们得到结论了。
如果局面加法(异或和)的最高位为i,则有一堆石子第i位为1
设A就为那堆石子,其他堆石子局面(异或和)设为s,总局面(异或和)设为S,
则A+s=S,如果让A等于A+S,那么后手面对的则是A+S+=0,s=0,
或者说 A ^=S,如果让A等于A ^ S,那么后手面对的则是A ^ S ^ =0,s=0,
若S=0,则无论先行者如何取子S→→T,都有T≠0。
若S≠0,则先行者必然存在一种取子方法S→→T,且T=0
想必说到这里,大家应该都懂了,
这句话与若S=0,则S负;若S≠0,则S胜。 是等价的。
总结:数学老师布置的寒假作业,本犇犇七上,第一次写小论文,如有纰漏请各位大佬指正(要交.....)