词条 | 斐波那契尼姆 |
释义 | 斐波那契尼姆游戏介绍有一种两人游戏,名叫“尼姆”。游戏方法是由两个人轮流取一堆粒数不限的砂子。先取的一方可以取任意粒,但不能把这堆砂子全部取走。后取的一方,取数也多少不拘,但最多不能超过对方所取砂子数的一倍。然后又轮到先取的一方来取,但也不能超过对方最后一次所取砂子的一倍。这样交替地进行下去,直到全部砂子被取光为止,谁能拿到最后一粒砂子,谁就算胜利者。在这个游戏中,若所有砂子的粒数是个斐波那契数的话,那么后取的一方稳操胜券,但所有的砂子不是一个斐波那契数的话,那么先取的一方稳胜。 经典游戏之大师拿火柴 美国计算机大师唐纳特·E·克努特先生在其名著《计算机程序设计技巧》一书提到“斐波那契·尼姆”。 由两个人轮流取一堆粒数不限的火柴。先取的一方可以取任意根,但不能把这火柴全部取走。后取的一方,取数也多少不拘,但最多不能超过对方所取火柴数的一倍。然后又轮到先取的一方来取,但也不能超过对方最后一次所取火柴的一倍。这样交替地进行下去,直到全部火柴被取光为止,谁能拿到最后一根火柴,谁就算胜利者。在这个游戏中,若所有火柴的根数是个斐波那契数的话,那么后取的一方稳操胜券,但所有的火柴不是一个斐波那契数的话,那么先取的一方稳胜。 克努特先生在其书中问到:假使开局时有1000根火柴。那有没有什么窍门可以使先走的人稳操胜券? 具体分析如果游戏双方不是对等的话,那么懂得诀窍的一方不论先走还是后走,都可以制服对方。如果都懂得诀窍,那么就取决于双方开局时的状态。 所谓的“斐波那契数”是: 1,1,2,3,5,8,13,21,34,55... 这个数列的组成规则是,从第三项起,第一项等于它前面两项之和。 举个例子:假定开局时堆中有8根火柴(8是个斐波那契数),按照游戏规则,先走者不能把8根一次取尽,他最多可以取7根,6根,5根...,显然这些取法将让他立即失败。譬如说,他如果拿5根的话,那么后者可以把剩下的3根全部拿走。由于最后一根包括在内,所以后者马上就赢了。 于是先走者考虑了一个比较好的办法,第一次先取2根,这时后者不能一下子就取胜。那么,他的最优对策又将如何? 后走者的正确对策是取掉1根,使得留下来的火柴数是5根。请注意5是一个比8小一号的斐波那契数,也就是说下了一层楼。通过这种“层层下楼”的办法后者可以稳操胜券。 由于1000不是一个斐波那契数,但是按照数列的构成规则,不难算出55后面的数字: 55,89,144,233,377,610,987... 按照上面的分析,先走者只要拿掉13根火柴,使得剩下的火柴根数为987根(987是一个斐波那契数),然后步步为营的小心对待,他就可以稳赢无疑。 许多游戏的取胜之道是斗智,而非斗力,这就是一个好例子。 参考文献实用智力训练测试宝典之智力测试 2004年版 甘肃文化出版社 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。