斐波那契博弈

可能更好的阅读体验

1. 问题

有一堆个数为 n ( n ≥ 2 ) n(n\ge 2) n(n2) 的石子,游戏双方轮流取石子,规则如下:

  • 先手不能在第一次把所有的石子取完,至少取 1 1 1 颗;
  • 在此之后每次可以取的石子数至少为 1 1 1,至多为对手 刚取的 石子数的 2 2 2 倍。

约定取走最后一个石子的人为胜利,求先手何时必胜、必败。

2. 结论与证明

结论: n n n Fibonacci \text{Fibonacci} Fibonacci 数的时候先手必败,否则先手必胜。

首先证明当 n n n Fibonacci \text{Fibonacci} Fibonacci 数的时候先手必败,不妨考虑数学归纳法:

对于 n = 2 n=2 n=2 的情况,显然此时先手必败。

接着不妨设 n = f k − 1 n=f_{k-1} n=fk1 之时结论成立,现在我们证明 n = f k n=f_k n=fk 的情况。此时可以将石子分成 f k − 2 , f k − 1 f_{k-2},f_{k-1} fk2,fk1 两堆,为啥捏?考虑 2 f k − 2 > f k 2f_{k-2}>f_k 2fk2>fk,所以一旦先手取石子数 ≥ f k − 2 \ge f_{k-2} fk2,后手就一定能一次取完所有石子。这个结论很重要,也是下文证明的根基。

  • 若先手取 > 1 3 f k − 2 > \frac{1}{3} f_{k-2} >31fk2 个石子。此时后手可以取完 f k − 2 f_{k-2} fk2 这个石子堆,并且由于后手取的石子数 < 2 3 f k − 2 <\frac{2}{3}f_{k-2} <32fk2,下一轮先手取的石子数也只能 < 4 3 f k − 2 = f k − 2 + 1 3 f k − 2 <\frac{4}{3}f_{k-2}=f_{k-2}+\frac{1}{3}f_{k-2} <34fk2=fk2+31fk2,而 f k − 1 = f k − 2 + f k − 3 f_{k-1}=f_{k-2}+f_{k-3} fk1=fk2+fk3,且 1 3 f k − 2 < f k − 4 < f k − 3 \frac{1}{3}f_{k-2}<f_{k-4}<f_{k-3} 31fk2<fk4<fk3,所以先手取不完 f k − 1 f_{k-1} fk1 这堆石子。由于 n = f k − 1 n=f_{k-1} n=fk1 时结论成立,而且此时先手的选择空间进一步缩小,所以归纳可得 n = f k n=f_k n=fk 时先手必败。

  • 若先手取 ≤ 1 3 f k − 2 \le \frac{1}{3} f_{k-2} 31fk2 个石子。此时可以将 f k − 2 f_{k-2} fk2 这个石子堆分成 f k − 4 , , f k − 3 f_{k-4,},f_{k-3} fk4,,fk3 两堆,这是考虑到 1 3 f k − 2 < f k − 4 \frac{1}{3} f_{k-2}<f_{k-4} 31fk2<fk4. 然后我们应用上文的结论,同样也可以归纳得到 n = f k n=f_k n=fk 时先手必败。需要注意的是,上文我们并没有证明后手取完 f k − 3 f_{k-3} fk3 这一堆时的取石子数的范围,但是,由于 f k − 3 f_{k-3} fk3 的下一堆是 f k − 1 f_{k-1} fk1中间一定间隔了编号,所以 2 f k − 3 < f k − 1 2f_{k-3}<f_{k-1} 2fk3<fk1,此时先手仍然无法取完 f k − 1 f_{k-1} fk1. 这也是下文证明先手必胜情况的依据。

现在证明当 n n n 不为 Fibonacci \text{Fibonacci} Fibonacci 数的时候先手必胜,需要用到 Zeckendorf Theorem \text{Zeckendorf Theorem} Zeckendorf Theorem:任意自然数均可以被分解为若干个 不连续的 Fibonacci \text{Fibonacci} Fibonacci 数之和。

我们先将 n n n 分解为若干个不连续的 Fibonacci \text{Fibonacci} Fibonacci 数之和,然后取走最小 Fibonacci \text{Fibonacci} Fibonacci 数的石子数。由于不连续,此时后手无法取完任何一个 Fibonacci \text{Fibonacci} Fibonacci 数,这就又回到了 “ n n n Fibonacci \text{Fibonacci} Fibonacci 数的时候先手必败” 的情况。所以此时先手必胜。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值