3
高校数学解説
文献あり

とあるゲームの必勝法を考えてみたらフィボナッチ数が現れた話

818
0

概要

先日,私の通う学校の期末テストで,次のような問題が出されました.

一部表現を変更

先手と後手が,次のようなゲームを行う.
n2以上の整数とする.はじめにn個の石がある.
・まず先手はn1個以下の好きな数の石を取る.
・以降は,直前に相手が取った石の数の2倍以下の好きな数の石を取ることを繰り返す.
・最後の石を取った方が勝ちとなる.
(1) n=5のとき,先手と後手のどちらに必勝法があるか.
(2) n=10のとき,先手と後手のどちらに必勝法があるか.

しらみつぶしに書き出していけば,n=5のとき後手必勝.n=10のとき先手必勝であることは分かるでしょう.一般にnがどのような条件を満たせば先手必勝となるのかがやはり気になるところです.そこでn=21まで順番に試していったところ,次の興味深い事実に気づきました.

nがフィボナッチ数のとき後手必勝.フィボナッチ数でない時先手必勝となる

さらに,このゲームの必勝法は,次のように表現できる事にも気がつきました

必勝法

nから始めて,「それ以下の最大のフィボナッチ数を引いていく」という操作を繰り返すことで,nをフィボナッチ数の和として表す.
たとえばn=30なら30=21+8+1n=100なら100=89+8+3
このとき最後に現れるフィボナッチ数をf(n)と表すとする.
(上の例なら,f(30)=1,f(100)=3)
n個の石があればf(n)個の石を取る」がこのゲームの必勝法になる.

これらについて興味深い証明を考えついたので,紹介します.

証明

n番目のフィボナッチ数をFnで表すとする.
準備として,正の整数nに対して,有限数列{ki}i=1g(n)および{ai}i=0g(n)を次のように定義する.

a0=nとし,ai以下の最大のフィボナッチ数をFki+1(ただしki+12),
ai+1=aiFki+1とする.ai=0となったら終了で,このときのiの値をg(n)で表す.また,f(n)=Fkg(n)とする.すなわちこの{ki}i=1g(n)は,以下のようにnを異なるフィボナッチ数の和で表現する方法の一つに対応する.
n=Fk1+Fk2+Fk3++Fkg(n)

次に,数列{ki}i=1g(n)およびf(n)について,次の2つの補題を用意する.

1i<g(n)に対して,Fki>2Fki+1が成立する.

Fki2Fki+1であるようなiが存在すると仮定する.
定義より明らかにki>ki+1である.ki+12より,2Fki+1<Fki+1+Fki+1+1=Fki+1+2
であるから,ki+1+1=kiでなければならない.
ai1=Fki+Fki+1++Fkg(n)Fki+1+Fkiであり,ki+1=ki1より,
Fki+1+Fki=Fki1+Fki=Fki+1であるから,ai1Fki+1となる.しかしこれはFkiai1を超えない最大のフィボナッチ数であることに矛盾.よって示された.

nを正の整数とし,mFn>mを満たす整数とする.
f(Fnm)2m
が成立する.

m以下の最大のフィボナッチ数をFsとする.すなわちFsm<Fs+1が成り立つ.
n=s+1のとき,
Fsm,  Fs+12FsよりFs+12mであるから,
f(Fs+1m)=Fkg(Fs+1m)Fk1++Fkg(Fs+1m)=Fs+1m2mm=m<2m
より成立.

n=s+2のときも同様に,
f(Fs+2m)Fs+2m=Fs+Fs+1mm+2mm=2m
より成立.

次に,任意のns+3に対して,f(Fnm)=f(Fn2m)が成り立つことを示す.Fnmを超えない最大のフィボナッチ数はFn1である.なぜなら,Fnm<Fnであり,Fnm>FnFs+1FnFn2=Fn1だからである.
よって,a0=Fnmとすると, a1=FnFn1m=Fn2mである.
また,a0に対する数列ki+1と,a1に対する数列kiが一致することから,
f(a0)=f(a1)が成立するので,f(Fnm)=f(Fn2m)は成立する.

f(Fnm)=f(Fn2m), f(Fs+1m)<2m, f(Fs+2m)2mから,数学的帰納法により,任意のns+1に対しf(Fnm)2mが成立する事がわかる.よって補題は示された.

次に, nがフィボナッチ数でないとき,先手必勝であることを証明する.
はじめに置かれていた石の個数をn0(=n)とし,両者合わせてがi回操作を行ったあとの石の個数をniで表すとする.また,gi=g(ni)とする.
先手が次の操作に従ってゲームを行ったとする.

n個の石が置かれていれば,f(n)個の石を取り除く.

n0がフィボナッチ数でないとき,次の2つの命題が成立することを数学的帰納法で示す.

  • 先手はゲームが終了するまでこの操作を継続できる.
  • 各段階において後手がすべての石を取れることはない.つまり先手必勝である.
  1. i=0のとき
    まず,n0はフィボナッチ数ではないのでf(n0)n01であり,先手は操作を行える.
  2. i=2jのとき成立すると仮定して,i=2j+1,2j+2のとき
    n2j=Fk1+Fk2++Fkg2j1+Fkg2jとすれば
    n2j+1=n2jf(n2j)=Fk1+Fk2++Fkg2j1である.
    g2j=1のときはn2j+1=0より先手が勝つから,g2j2の時を考える.
    ここで後手がとった石の個数をmとする.m2Fkg2jである必要がある.
    補題1よりFkg2j1>2Fkg2jなので,m<Fkg2j1であるから,
    後手はすべての石を取ることはできない.また,このとき
    n2j+2=Fk1+Fk2++Fkg2j2+(Fkg2j1m)
    で,補題2からf(n2j+2)=f(Fkg2j1m)2mなので先手は操作を行える.

以上より,n0がフィボナッチ数でないときは先手必勝である.

次に, nがフィボナッチ数でないとき,後手必勝であることを証明する.

n=FNとする.先手がm個の石をとったとき,FNm2mすなわちFN3mであれば,後手はすべての石を取る事ができるので勝てる.FN>3mの時を考える.
FNmがフィボナッチ数でないとき,補題2より,f(FNm)2mなので,後手はf(FNm)の石を取り除くことで先手必勝の場合に帰着する.
また,FN>3mであって,FNmがフィボナッチ数となるものは存在しない.このことを証明する.FNmがフィボナッチ数であると仮定して,FM=FNmとおく.このとき,
m=FNFMFNFN1=FN2となる.しかし,FN=FN1+FN2=2FN2+FN33FN2より,3m3FN2FNとなって,FN>3mに矛盾する.
よってnがフィボナッチ数であるとき,後手必勝である.

おまけ

証明でははじめに,「最大のフィボナッチ数を引いていく」操作によって自然数をフィボナッチ数の和として表現することを考えました.
これに関連して,「ゼッケンドルフの定理」という次の興味深い事実が知られています.

ゼッケンドルフの定理

任意の正の整数は,連続しないフィボナッチ数の和として一意に表すことができる

このような表現は「ゼッケンドルフ表現」と呼ばれています.補題1で示したように,最大のフィボナッチ数を引いていくことで得られる数列には連続するフィボナッチ数が現れなません.つまりこれはゼッケンドルフ表現となっています.
連続しないフィボナッチ数の和で表す方法がこれ以外に存在しないというのが驚きですね.

参考文献

投稿日:2022321
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

dragoemon
dragoemon
144
31667
大学3年生です

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中