巴什博弈:
只有一堆n个物品,两个人轮流从这堆物品中取物,
规定每次至少取一个,最多取m个,最后取光者得胜。
思路:
当n=m+1,由于一次最多取m个,无论先手取多少个,
后手都能一次拿走剩余物品。因此我们发现了如何取胜的
法则:如果n=(m+1)r+s,(r为任意自然数,1 ≤ s≤m)
那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,
那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,
以后保持这样的取法,那么先取者肯定获胜。
总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
而当n和m满足:n%(m+1)==0. 先手必败。
威佐夫博弈:
有两堆各若干个物品,两个人轮流从某一堆取任意个或
同时从两堆中取同样多个物品,规定每次至少取一个,
多者不限,最后取光者得胜。
思路:
分析:我们用(ai,bi)(ai ≤ bi ,i=0,1,2,...,n)表示
两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲
就输了,这种局势我们称为奇异局势,用(ak,bk)表示
我们例举一下前几个奇异局势:
(0,0) (1,2) (3,5) (4,7) (6,10) (8,13)(9,15) (11,18) (12,20)
例如(1,2):
1)取 1 中一个,那么后手取第二堆中两个。
2)取 2 中一个,那么后手在两堆中各取一个。
3)在 2 中取两个,那么后手在第一堆中取一个。
4)两堆中各取一个,那么后手在第二堆中取一个。
可以看出,不论先手怎么取后手都能赢,所以为奇异局势
我们来分析一下前几个奇异局势:
(0,0)(1,2) (3,5) (4,7) (6,10) (8,13) (9,15) (11,18) (12,20)
我们会发现他们的差值是递增的,从 0,1,2,3,4,5.....依次递增,而用
数学方法分析发现局面中第一个值为前面局面中没有出现过的数字
中的第一个值,比如第三个局面,前面出现了 0,1,2,那么第三个
局面的第一个值为 3 ,比如第五个局面,前面出现了 0,1,2,3,4,5,那么
第五个局面第一个值为6。再找规律的话我们会发现
第一个值 = (int)(差值 * 1.618) ,而1.618 = (sqrt(5)+ 1) / 2
所以,只要满足(int)((b-a)*(sqrt(5)+ 1) / 2 )==a,此时(a,b)就
是先手必输局势,否则先手必胜!