Proof of Fibonacci Nim

    技术2022-05-19  22

    Rules of Fibonacci Game:

     

    最开始可以取1-n-1个石子

    以后开始,范围限制在1-opponent取的石子数的两倍

    无法按规则取石子则输

     

    结论:

    初始状态为Fibonacci数为P状态,否则为N状态.

     

    证明:

     

    证明Fibonacci数为P状态:

    1(无法取子,因为取子范围为[1,0],P态)

    2(取子范围为[1,1],只能取一个,P态)

    3(取子状态为[1,2],不管取子如何,P态)

    利用第二类数学归纳法:

    设i<n时成立(即,初始态为第i项Fibonacci数:F[i]时成立,i<n)

    我们证明i=n(初始态为F[n])时也成立

     

    初始个数F[n]=F[n-1]+F[n-2]

     

    若先手取子数x>=F[n-2]

    那么剩下的个数F[n]-F[n-2] <= F[n-1] = F[n-2]+F[n-3]  <2*F[n-2] ,但是后手能取的个数范围却是[1,2*F[n-2]],取完,先手败

     

    若先手取子数x<F[n-2],那么剩下的个数 F[n]-F[n-2]>F[n-1], 现在需要证明一种策略把先手导向之前的P态

    策略是这样的:

    例如对于 Fibonacci数列 1,2,3,5,8,13...        中的13,先手去的个数会小于5,那么剩下的个数会大于8,后手为了赢应该取多少呢? 其实现在的策略跟刚开始有5个石子的时候的策略是一致的(我们对于1,2,3,5,8这样的P态,由归纳法很清楚如果先手取的是x个,我们应该取多少),即总策略是:如何把F[i]的P态导向F[i-1]的P态的策略跟把F[i]-F[i-1]的P态导向一个P态的策略是一致的(看起来是一种递归的策略).

    这样我们证明了初始态为自然数中的Fibonacci数是P态.

     

    证明其他初始态为N态,只需要有一种方式导向P太,那就是取石子的个数=初始个数-F[i] , F[i]为与初始态最接近的Fibonacci数.


    最新回复(0)