趣味博弈论——斐波那契博弈

来源:互联网 发布:矩阵的范数 编辑:程序博客网 时间:2024/05/29 18:03

简述

题目大意:

有一堆个数为n的石子,游戏双方轮流取石子,满足:

1)先手不能在第一次把所有的石子取完;

2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。

约定取走最后一个石子的人为赢家,求必败态。

结论:当石子为斐波那契数的时候, 先手必败. 反之, 先手必胜.

证明

这是一个跟SG函数无关的博弈, 但却充分的利用了斐波那契数列的性质, 并且我们可以由很多博弈的证明看出,数学归纳法是是十分重要的, 这里的斐波那契数列结论证明也用到了数学归纳法.
1.先看看石子数为斐波那契数的时候, 为何先手必败.
我们先讨论小部分, 当 石子数 = F(1), F(2), F(3)的时候, 命题成立(先手必败)(可以自己手推出来).
当石子数大于3的时候, 我们设石子数为n, 并且由数学归纳法步骤,先假设石子数小于n的时候, 结论即命题成立.
给出一个小性质: F(n-1) = F(n-2) + F(n-3) < F(n-2) * 2
这样我们就可以知道, 当我们将F(n) 分成 F(n-1) + F(n-2)两堆石子时是成立的. 因为上面那个小性质可得,
先手如果先取的石子数>=F(n-2)的话, 后手可以直接取完剩下的所有石子( <=F(n-1) ), 先手败.
所以先手只能先在F(n-2)里面取. 那么由于n-2 < n, 那么根据我们的假设, 后手一定能最后取完F(n-2)这一
堆, 那么又根据定义n-1 < n , F(n-1)也是先手必败. 那么当后手取完F(n-2)的时候, 先手如果不能一下子将F(n-1)取完的话, 那么就转化为F(n-1)的游戏, 先手必败.
那么先手只能眼睁睁的看着F(n-2)被后手取完, 想尽设法的让自己一次性取完剩下的F(n-1). 那么先手想让自己一次性取完, 也就要求了前面后手最后一次取完的时候取的尽量多, 这样自己取的空间才大. 那么很容易可以得到, 后手只能最多取 2/3F(n-2) , 因为先手第一次取 F(n-2)/3 的话, 后手可以用 2/3F(n-2) 结束F(n-2)堆. 如果说, 先手第一次取的比F(n-2)/3 小, 那么后手无法第一次就取完, 最后由后手取完的时候拿的石子数目一定没有 2/3F(n-2) 多(多续了几回合, 石子数目只会变少). 若大于F(n-1)/3的话, 后手虽然能马上取完F(n-2)这一堆, 先手取了大于F(n-2)/3, 那么后手取的就比 2/3F(n-2) 更少了.
所以综上先手只能最多取到 2/3F(n-2) * 2 = 4/3 F(n-2). 但是事实上,这个数字比F(n-1)要小.为什么要小呢? 4/3 F(n-2) < F(n-1) 等价于 4F(n-2) < 3F(n-1) . 把 F(n-1) 替换成 F(n-2) + F(n-3), 把F(n-2)消掉,就可以得到 F(n-2) < 3F(n-3). 由之前那个小性质可以得到这个成立. 那么先手仍然无法第一次就取完F(n-1) ,那么就转化为F(n-1)的独立游戏, n-1 < n, 由假设可得先手必败.
综上所有, F(n)时, 先手仍然必败. 因为讨论了小情况作为递推,并且讨论了任意斐波那契数F(n), 由数学
归纳法得出, 当石子为斐波那契数的时候, 先手必败.

2.怎么得出若不是斐波那契数, 先手必胜.
齐肯多夫定理:点这里.
这个定理告诉我们任何正整数都可以表示为若干个不连续的斐波那契数之和.
那么设某非斐波那契数 n = F(N1) + F(N2) + F(N3)…(设N1 < N2 < N3…). 先手如何获胜? 先手只需要 先取F(N1)个,因 为N2 > N1 且N1, N2不连续, 那么F(N2) > 2 * F(N1) ( F(N2) = F(N2 - 1) + F(N2 - 2), 因为N1N2不连续, 所以F(N1)<= F(N2-2) ). 所以后手无法马上取完F(N2), 这个时候就相当于后手变成了拿F(N2)的先手, 那么由之前的证明可得,F(N2)最后一定是被原来的先手(在这里已经转换为后手了)取完,
因为后手又拿不完F(N3), 如此往复,最后一定是被原来的先手(在这里已经转换为后手了)取完.

所以综上, 斐波那契数先手必败, 反之先手必胜.

原创粉丝点击