斐波拉契博弈的证明

结论:当n为Fibonacci数时,先手必败。即存在先手的必败态当且仅当石头个数为Fibonacci数。            反之必胜。

为什么?

网上有些博客情况根本就没考虑全面。

网上一些花里胡哨的证明自己又看不懂,花了一个多小时的时间自己证明了一下。

1.我们先来证明如果这个数是斐波拉契数,那么先手就败的情况

我们假设一个数为斐波拉契数,显然,它总可以分成两个连续的斐波拉契数之和。

比如  有21个石子 (21=13+8) 连续两个斐波拉契数13+8的和

首先有21个石子,我们肯定是不能让对手取最后一个石子的。(显而易见,不然这样我们就输了。)那么21可以划分成21=13+8这两个数之和,我们肯定不能取>=8的石子,因为这样后手一下子会取完,那么对于8这堆来说,我们也要不让对手取最后一颗石子,那么8又可以划分成8=5+3 连续斐波拉契数之和 那么我们肯定是不能取>=3的石子,因为那样后手一下子会取完,那么对于3这一堆来说,我们也不要让对手取最后一颗石子,那么3又可以划分为3=2+1连续的斐波拉契数之和.....

不知道大家有没有注意到,这慢慢的竟然变成了一个递归的情形!

那么我们递归到终点处看一下,继续刚才的内容,那么3又可以划分为3=2+1连续的斐波拉契数之和.,那么我们肯定不能取>=1的石子....

等等!!!!递归到这里,显而易见,和题目发生了冲突,我们不能取大于等于1的石头才能有获胜的可能,那么这样的话,可能吗?显然不可能啊。所以我用反证法可以证明斐波拉契数先手必败这个结论。

虽然用反证法证明了,可能大家心中会不服?凭什么我怎么取都是输?

那来举个例子吧。我们把数量弄小一点,假设是13个石子,聪明的你肯定会在5之内取   13=8+5=2+3+3+5;

假设你就取了1个,  聪明的对手就取了1个。(2)

假设你再取1个,聪明的对手取2个 (3)

你再取2个    那么聪明的对手取1个   (3)

你再取1个?我取1个  (2)          5=2+3

你再取一个试试?马上取2个让你gg。

我不服我悔棋我不要这样取!

行啊。再来。

假设你开头猛一点,取了4个!(显然不能取5个不然你就凉了)  聪明的对手取了1个。  13=5+3+3+2

这.....

那你取最多的,假设你取2个,那么聪明的对手取了1个。

这....                   5=3+2

你再取2个试试?马上取2个让你gg。

那假设你取1个,聪明的对手取了1个

最后还剩3个怎么取都是输。

2.我们再来证明如果这个数不是斐波拉契数,那么先手就赢的情况

证明:根据“Zeckendorf定理”(齐肯多夫定理):任何正整数可以表示为若干个不连续的Fibonacci数之和。如n=83 = 55+21+5+2。

如果我们先手取掉最小的那堆2的话,那么对手怎么也不能把倒数第二堆取完,(因为它们不是连续的斐波拉契!

那么就转化成了5个石头对手先取,5是斐波拉契数怎么取都是后手拿掉最后一个(这就转化成了第一种情况!

同理21 55 你总能拿掉最后一颗。

所以证明完毕。

这样理解是不是很简单呢。

猜你喜欢

转载自blog.csdn.net/k_koris/article/details/81743999