斐波那契博弈证明

关于斐波那契博弈,百度上有很多陈述,下面我直接证明定理:

先手胜当且仅当石子数为斐波那契数列.

事实上对于任意一个石子堆数n,先手取的石子数目b必然满足 b<1/3 n ,否则后手可以在下一步一次性取完,先手输,这是一个基本的不等关系,下面的所有不等式等式以此为核心的。

且有如下不等式:

我们称先手为a,后手为b。
首先当2个和3个石子时,我们已经知道为先手必败的情况,那么对于以后的等于斐波那契数目的石子数a_(n+2),我们总可以把他们分成两堆a_(n+1)和a_(n),根据⑵式,我们知道了a第一次无法拿完全部的a_(n),于是基于前面的归纳,a_(n)也是必败局,所以b可以控制他自己的取石子路劲,使b恰好拿完了全部的a_(n)。接下来就剩下了a_(n+1)个石子,基于(3)式(4),我们可以知道a不可能一次拿完所有的a_(n+1),所以问题又一次得到了转化,b有一次在最后拿完了所有石子,所以依据数学归纳,任何斐波那契数列数目的石子,总是先手必败的!
那么当石子数目不是斐波那契数列时,n的数目总可以分解成互不相邻的斐波那契数列(5),既然是互不相临,那么依据(1),总会有a先拿掉那个最小的数,然后b就会陷入有限的先手必败的循环中,永远无法跳出来(6)!所以a胜了!



(1)(2)(3)式都可以用数学归纳法或斐波那契数列的递推公式直接得出,再此不再证明;

(4):

这个不等式告诉我们a_(n)堆的内部架构不允许当b恰好拿完a_(n)堆的时候,a直接拿完全部的a_(n+1),为我们接下来的归纳创造了条件。

(5):这个规律全部用字母表示太麻烦,我直接举个例子。我们在每两个相邻的斐波那契数构成的区间上进行数学归纳,比如进行到(13,21)闭区间时,其中的任一个数A,我们总可以表示为13+x的形式,而由归纳,x又一定可以表示为斐波那契数的和,且其中最大的一定不超过5,因为如果可以等于8的话,那么13+8的值就成了21,固引理成立。

(6):当a先拿完最小的一堆石子后,以后任一堆都必然可以由a恰好拿完,且不存在b恰好拿完任意堆的情况,因为我们有(1)不等式,所以特意分解成不相邻的斐波那契堆。

你可能感兴趣的:(算法)