【算法 | 板子】博弈

一、巴什博弈

情景:两人轮流取:总数=n,可取范围[1,m]。

推导:n==k*(m+1)+s; ①取s,②①分别取m+1。①一定胜出

结论:若n为(n+1)的倍数:②胜出 else ①胜出

P/N分析

1.终结点必败 2.一步到P为N 3.一步只能到N的为P

二、斐波那契博弈

情景:两人轮流取:1)不能在第一次取完。2)之后取的范围[1,2*对手刚刚取的数目]。

结论:若此数为fib,则②胜出。

三、威佐夫博弈

情景:两堆物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

结论:奇异局势(必败)判断:
a k = [ k ( 1 + √ 5 ) / 2 ] , b k = a k + k ( k = 0 , 1 , 2 , … , n 方括号表示取整函数)。 ak =[k(1+√5)/2],bk= ak + k (k=0,1,2,…,n 方括号表示取整函数)。 ak=[k1+√5/2]bk=ak+kk=012,n方括号表示取整函数)。

四、尼姆博弈

情景:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

结论:搞定这个问题需要把必败态的规律找出:(a,b,c)是必败态等价于abc=0(^表示异或运算)。

推广一:如果我们面对的是一个非奇异局势(a,b,c),要如何变为奇异局势呢?假设 a < b< c,我们只要将 c 变为 a^b,即可,因为有如下的运算结果: a^b^(a^b)=(a^a)^(b^b)=0^0=0。要将c 变为a^b,只从 c中减去 c-(a^b)

推广二:当石子堆数为n堆时,则推广为当对每堆的数目进行亦或之后值为零是必败态

你可能感兴趣的:(算法板子,算法)