Fibonacci Nim的证明

地区码空白 2010-09-08 04:40:00
Fibonacci Nim是如下一种游戏
有一堆石子,两个人轮流从其中取走一定的石子,取走最后所有石子的人为赢家,不过得遵循如下规则:
1.第一次取不能取完,至少取1颗.
2.从第二次开始,每个人取的石子数至少为1,至多为对手刚取的石子数的两倍。

现知道对于n = F[n](F[n]是Fibonacci数列)时,先手必输(我们假定两个人都按照最优策略取石子)
对于n != F[n]时 先手必胜。

不过不知道该怎么证明,哪位大哥给帮帮忙,提示下也行。
...全文
159 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
michael122 2010-09-09
  • 打赏
  • 举报
回复
第二数学归纳法啊,当前如果归纳n的话,就假设对小于n的所有数,都有结论: 是Fibonacci数就先手败,否则先手胜
当n=83=55+21+5+2时,先手拿走2颗,扔给对方的问题就是n=5,且对方先走,那么根据归纳假设,先走的那个人无论如何都可以取到这5颗里面的最后一颗,然后又变成n=21,先手的又可以拿走最后一颗,依次退下去,先手的就赢了……
地区码空白 2010-09-09
  • 打赏
  • 举报
回复
楼上的,你给的链接我看过,我在Google搜过,好像中文的也就这篇文章吧,不过看的时候有些东西还是不懂,所以才来这里问的。
对于你给的那个链接中的文章,我有如下疑问:
"而这个我们可以通过第二类归纳法来绕过",这句话不是很懂,为什么可以跳过?取5颗的时候怎么弄的呢?(虽然我自己知道该怎么走,可是不会证明)
insanehui 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 michael122 的回复:]
主要思想就是任意一个非Fibonacci数都可以表示成若干个不连续的Fibonacci数的和
[/Quote]

micheal你是我偶像啊!哈哈~
insanehui 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 michael122 的回复:]
这种问题,google就行了
http://yjq24.blogbus.com/logs/46150651.html

这里写的很不错
不过最后一句推导有笔误,应该是
f[k]=x+y<f[k-1]+f[i]+…+f[j]+f[j-1]<=f[k-1]+f[i]+f[i-1]<=f[k-1]+f[k-2]=f[k]
[/Quote]

万分感谢!!!
michael122 2010-09-09
  • 打赏
  • 举报
回复
主要思想就是任意一个非Fibonacci数都可以表示成若干个不连续的Fibonacci数的和
michael122 2010-09-09
  • 打赏
  • 举报
回复
这种问题,google就行了
http://yjq24.blogbus.com/logs/46150651.html

这里写的很不错
不过最后一句推导有笔误,应该是
f[k]=x+y<f[k-1]+f[i]+…+f[j]+f[j-1]<=f[k-1]+f[i]+f[i-1]<=f[k-1]+f[k-2]=f[k]
insanehui 2010-09-09
  • 打赏
  • 举报
回复
楼上说Fibonacci进制大概能体会是个什么概念,但能不能具体讲一下如何拿?还有保证能取胜或者必输的原因,或者给一个有详细讲解的链接也行啊,谢谢啦!
地区码空白 2010-09-09
  • 打赏
  • 举报
回复
哦 我懂了,谢谢了.现在就给分
绿色夹克衫 2010-09-08
  • 打赏
  • 举报
回复
就是一个斐波那契进制的问题,已知斐波那契数列F(n) <= F(n-1) * 2,因此任何一个数都可以转化为一个斐波那契进制的数,并且每一位只有0或1,然后按照这个进制来拿,就可以了。

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧