码迷,mamicode.com
首页 > 其他好文 > 详细

博弈问题分析与数学归纳

时间:2015-01-14 06:13:29      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

一、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必胜。

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

博弈问题分析与数学归纳

标签:

原文地址:http://www.cnblogs.com/reasno/p/4222945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!