zeckendorf定理與Fibonacci博弈
zeckendorf定理:任何正整數可以表示為若干個不連續的Fibonacci數之和
證明:首先,設n為一自然數,m為不大於n的最大Fib數,易知m>n/2。因此將一個數減去不大於其的最大Fib數後,這個數小於原先的1/2。因此可以直接遞降法。
至於不連續,是因為若分出的和有一段連續的Fib數,則可將最大的兩個換為他們的和。
非常naive嗯。。。zeckendorf不愧是業餘初等數論家。。。
PS:明天補與之相關的Fibonacci博弈。。。
———————————————分割線——————————————————————
下面介紹與之相關的Fibonacci博弈
描述:
A,B兩人遊戲:有一堆石子有n個,兩個人輪流從其中取走一定的石子,取走最後所有石子的人為贏家,遵循如下規則:
1.第一次取不能取完,至少取1顆。
2.從第二次開始,每個人取的石子數至少為1,至多為對手剛取的石子數的兩倍。
請問給定n,A是否有必勝策略?(每次A先手)
這是一個組合博弈,組合博弈的具體定義就不細講了,重要的一點是它滿足以下性質:
1.對於接下來行動的玩家,任一局面或為必勝態,或為必敗態。
2.若一個局面其所有後繼局面均為必敗態,則其為必勝態,反之則為必敗態。
對於Fibonacci博弈,先說結論,n為Fib數時A必敗,否則A必勝。
先對較小的n進行驗證,再做歸納假設。
以下為證明:
若n不是Fib數,則n可被分解為多個不連續Fib數,設其可分為a,b,c三堆(a>b>c)
A在第一步先拿走堆c。
考慮誰能先拿完倒數第二堆:設倒數第二堆個數為Fib(n),首先,因為Fib(n)>2*Fib(n-2),B不可能一次拿完倒數第二堆。若B拿走的石子數大於等於Fib(n-2),則剩餘石子必然可被A一次拿完。若B拿走的石子數為x<Fib(n-2),則有Fib(n)-x必然不是Fib數,將(Fib(n)-x)視作一個子遊戲,由歸納假設知,A必在子遊戲中獲勝。因此無論如何,拿完倒數第二堆的都是A。如此遞推,知A必勝。
證得若n不是Fib數,則A必勝。
在上方對於子遊戲的考慮中,實際已蘊含了證明若n為Fib數,則A必敗。
Q.E.D.
此問題還有進階版本,即K階動態減法問題(把2換做K),做法大致相同。
推薦閱讀:
TAG:初等數論 |