博弈问题分析与数学归纳

一、A和B玩游戏,有n个硬币排成一个环,A先来,每人每次只能拿1~2个"相邻"硬币,拿走最后1枚的获胜,给定n,判定谁获胜?

     首先可以转换一下思路,A第一次拿硬币之后势必将一个环变为一个链,因此问题转化为,给定一条硬币排成的链B先拿;

     (接下来是对链的讨论):

    n=3时,链为"000"(用0表示硬币)B可以拿中间1个变为"0_0",显然B赢;

    n=4时,链为"0000",B拿中间2个,同理又会赢;

    n=5时,链为"00000",B拿中间一个,变为"00_00",那么又会赢;

   到这里,可以发现1个结论,只要b拿完1个使剩下的为"000..._000..."即'_'左右两边硬币个数相同B就会赢,因为两遍对称,无论A怎么拿,B只要在另一边重复A的动作即可,最后一个总被B拿到,因此对于一个环,只要A不能一次拿完,那么他拿完后给B剩下一个链,B总有办法(拿奇数或偶数个)使剩下的左右对称从而取得胜利。

   故本题解法为if(n<3) A赢,否则B赢;

   (关于对称还有一个游戏,就是给定一个圆桌,A,B依次往上放硬币,A先放,每次放的个数不限,硬币之间不能相邻或重叠,直到一方不能再放就输,问谁获胜?

    答案是A获胜,因为他只要放一枚在圆桌正中间就可以营造一个"对称"局面,无论B接下来怎么放,A只要在圆桌另一边重复B的动作总有地方可以放,这样直到B输。)

 

 

    二、A和B玩游戏,有n个牌,每人每次只能拿单个质数的幂次(如1,2,3,4,5可以而6不行因为6=2*3,不是单个质数的幂次)个,A先来,然后轮流拿,然后拿走最后一根的就赢,现给定n张牌,判断在最佳策略下谁赢。

    先从最简单的情况出发,找规律:

    1.当n=1,2,3,4,5时,显然A赢,因为此时A可以一次拿光,在这里把1,2,3,4,5这样必胜的n叫做"必胜态"。

    2.当n=6时,A输,此时A不能全部拿光,且无论A拿多少个,剩下的B可以全部拿光,把6这样的情况叫做"必输态",显然必输态时无法一次拿完。

    3.由此可推知,当n=6+1,2,3,4,5=7,8,9,10,11时A必胜,因为A只要分别拿1,2,3,4,5个就可以把必输态6抛给B,这时B输;同样,n=12时,A无法拿一定数目(在这里"一定数目指6")产生必输态6给B,相反他只能抛给B一个必胜态。

    4.到这里我们已经可以发现规律了,当n是6的倍数时,A输,否则A赢,接下来用第二数学归纳法证明必输态"是且仅是"6的倍数:

         1)n<=6时,经计算可得必输态是且仅是6的倍数;

         2)假设n<=6k时已证必输态是且仅是6的倍数;

         3)那么当n=6(k+1)时,若n不是必输态,那么它必须要减掉一个数得到6的的倍数(由假设已得6k是必输态),既然n本身是6的倍数,那么它一定要减掉一个<=6k的6的倍数,由假设知,<=6k的6的倍数的数是一个必输态,而6(k+1)无法拿走必输态张牌,即无法做到,因而n=6(k+1)也是必输态,当6k<n<6(k+1)时,A只要拿掉1~5张便可把必输态n=6k这个必输态抛给B,使B输,由3)可知,当n<=6(k+1)时,必输态是且仅是6的倍数。

         由1),2),3)得证。

        故本题解法为:若n为6的倍数,A胜,否则B胜(本题其实并未重点放在单个质数的幂次这个条件上,且6k包含6这个因子,必然不符合条件);

 

 

三、A和B玩游戏,共有n张牌,两人轮流拿,A先来,要求A第一次拿的张数>=1且<=n-1(即第一次拿不能一张不拿也不能一下全拿),此后两人轮流拿,每人至少拿一张且至多是前一个人张数的两倍(可以等于),拿走最后一张牌的人获胜,现给定n张牌,判断在最佳策略下谁赢?

     首先要明确轮到某个人时,他拿牌的下限为1,而上限由两个因素决定:a.显式的上限是前一个人拿牌的2倍,b.隐式的上限是必须小于现有牌数的1/3,否则下一次对方一次便拿完。

     同样先从最简单出发,找规律:

     1.n=1,2,3时,A输;

        n=4时,A拿1个,B无论哪1个还是2个(最多)都输;

     2.n=5时,A输,因为A要满足b上限要求,只能拿<5/3=1.3张,即A只能拿1张(才会暂时不输),而此时相当于他把4张抛给B,B赢;

     3.n=6时,A赢,因为b上限要求是n<6/3=2,A只能拿1张,A拿1张就会把5这个必输态抛给B让B输;

        n=7时,A赢,A的b上限n<7/3=2.3,A拿2张就又把5这个必输态抛给B,A又赢了;

        n=8时,A输,此时A的b上限为<8/2=2.7,A无论拿2张还是1张,都会给B一个必胜态,B胜;

     4.现在我们把已得到的A的必输态列出来:1,2,3,5,8可以发现正好是斐波那契数列的一部分,由此我们推想当n为斐波那契数时,A输(不确定的话可以再按以上方法多列几项),接下来用第二数学归纳法证明:

      首先要了解斐波那契数里的两个性质:1.任何斐波那契数(从第三项开始)可以表示为前两个斐波那契数之和(定义)

         http://baike.baidu.com/link?url=ia1is1HjHC_dLnVV8gxW4e6lJcAh_PHVFeRbK0sshP-q2BEDOscgbq-DRPBtjGXR7fzGCdUiQYfbPzLc1EWGuK

       2.齐肯多夫定理:任何正整数都可以表示成若干个不连续的斐波那契数(不包括第一个斐波那契数)之和。

         http://baike.baidu.com/link?url=L8Z022v3MVV7Ba0N13ghO9geTjmCsueAHgLFqG0Igw5TH3SraQG7smVuAkuC0fqWj1_dlBC_0OSRlnbJG6qq0K

       证明:

       1)n<=8时,经计算得必输态是且仅是斐波那契数;

       2)假设n<=P(k)( P(k)是第k个斐波那契数)时,已证必输态是且仅是斐波那契数;

       3)那么n=P(k+1)时,由于P(k+1)为斐波那契数,可以表示为前两个斐波那契数P(k-1),P(k)之和,易证P(k-1)>P(k)/3,即A第1次拿的个数必然小于

P(k)个,由假设可知P(k-1)为必输态,这个必输态其实有一个含义,也就是说B肯定可以拿到第P(k-1)个,此时剩下P(k)个也是必输态(假设)留给A,A就输了。

          当P(k)<n<P(k+1)时,n不是斐波那契数,但由齐肯多夫定理知,n肯定可以分解为不相邻的斐波那契数之和(注意,是"不相邻"!) 

假设n=P(a)......+P(b)+P(c)+P(d)(按降序排,即P(d)最小),那么由不相邻易知P(d)<n/3,此时A只要拿P(d)张,注意,在这里由“不相邻”有两层重要结论,一是P(d)<n/3(其实拿走P(d)后剩下的最小项也满足,这里不讨论),二是P(c)>2*P(d),即A拿走P(d)之后B无法效仿A再拿走P(c)个,因而B又“陷入”P(c)这个必输态,接下来只要A一直引导B进入接下来的必输态一直到P(a),A就赢了。(在此过程中B无法做出任何反抗),由4)知,当n<=P(k+1)时,斐波那契数是必输态,非斐波那契数是必胜态。

       由1),2),3)得证。

     故本题解法为:若n为斐波那契数,A必输,否则A必胜。

 

 

    (目前收录这些道题,后续收集到其他类似题会陆续添加到本博客)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值