很有趣,看了许多资料,回忆起了好多。
博弈论
不妨想像成一个棋盘,只有一个人来玩。
(但是必胜/必败还是指的两人交替)
N-Position 当前state必胜。
P-Position 当前state必败。
因此,任意一种state只能是P/N两种局面。
N-Position == It have a chance into P-Position state at the next step, any chance is ok, very casual.
P-Position == Give up resistance, all places it reached at the next step are all N-Position.
Nim游戏的SG函数
补充SG函数的定义:
当前处于状态x,从状态x可以转移到y1,y2,y3...
这种情况下,定义SG(x) = mex{SG(y) | x->y}。翻译成白话就是,SG(X) = {y1,y2,y3...}这些数里面 缺的 最小的 自然数。
自然数:从0开始,0,1,2,3,4,5.....
显而易见的是
SG(state)==0 <--> P-Position
SG(state)!=0 <--> N-Position
We define 'state' such as : (A,B,C,D,E,...)
Each subItem {for example (A) or (B) or (C)...} are divided, they can't affect each other.
And (A,B,C), (B,D) or (E) also a valid state.
So...
SG(A,B) = SG(A) xor SG(B)
SG(A,B,C) = SG(A,C) xor SG(B)
写在最后
这里所说的Nim游戏,是指“子状态独立互不影响”的游戏,并不单单取石子。
某个state : (A,B) 独立,就是没了A只有B照样玩儿,没了B只有A也照样玩儿,A、B同时存在只影响Player决策。
比如取石子,只有A这一堆,和只有B这一堆是一样的玩儿,但是同时存在时,Player就得综合考虑。但同时存在时并没有新添加什么规定,比如AB不能同时xxx这种。
有的题比较简单,打表找规律哪些是N-Position 哪些是P-Position.
(对于子状态独立的游戏)而更深层次的原理是SG函数,所谓N位P位,都是SG函数算出来的。
从这个角度也很容易想到,state进行转移时,SG(state)也随着不同的state而跟着变化,而上文使用xor计算映衬了这种变化。
得证。