アジマティクス

ここをこうするとおもしろい

フィボナッチ数列とは、ソリティアである

フィボナッチ数列

1,1から始めて、「前2つの項を足したものが次の項」という構造をしている数列が「フィボナッチ数列」です。具体的に書き下すとこういうものです。

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...

確かに「前2つの項を足したものが次の項」になっていますね。言うまでもないですが、ここに現れている一つ一つの数が「フィボナッチ数」です。

n番目のフィボナッチ数を「F_n」と表すことにすると、フィボナッチ数列は以下の式で定義されます。

 F_n+F_{n+1}=F_{n+2} (前二つの和が次の数)

 F_1=1,F_2=1 (1,1から始める)

これだけで十分です。これだけ指定してさえあれば、F_3以降の数値は一意に定まります。

そしてこれは「0,1」から始めて足していっても結局同じ数列が現れるので、「0番目のフィボナッチ数」つまりF_0として0をおくこともあります。

さて、このフィボナッチ数の間にはさまざまな不思議な関係式が成り立ちます。例として、以下のようにF_1から順にフィボナッチ数をどんどん足していく、ということを考えましょう。

 1+1 = 2

 1+1+2 = 4

 1+1+2+3 = 7

 1+1+2+3+5 = 12

 1+1+2+3+5+8 = 20

 1+1+2+3+5+8+13 = 33

 1+1+2+3+5+8+13+21 = 54

 1+1+2+3+5+8+13+21+34 = 88

2,4,7,12,20,33,54,88,...という数列が出てきて、なんかこいつら見たことある数だな〜と思うわけですが、それもそのはず、これらの数はフィボナッチ数から1引いたものになっています。

もう少し具体的に言うなら、「足される最後のフィボナッチ数の2つ後のフィボナッチ数から1引いたもの」となってますね。

このことを式で書くと以下のように表現できるでしょう。

 F_1+F_2+F_3+\cdots +F_n =F_{n+2}-1

このほかにも、フィボナッチ数の間に成り立つ関係式には以下のようなものがあります。

 F_1+F_3+F_5+\cdots+F_{2n-1}=F_{2n} (奇数番目の総和)

 F_2+F_4+F_6+\cdots+F_{2n} =F_{2n+1}-1 (偶数番目の総和)

 F_1^2+F_2^2+F_3^2+\cdots+F_n^2=F_nF_{n+1} (二乗の総和)

 F_n^2+F_{n+1}^2=F_{2n+1}

 F_n^2-F_{n-2}^2=F_{2n-2}

 F_{n-1}F_{n+1}-F_n^2=\left(-1\right)^n

 F_{m+n}=F_{m-1}F_n+F_mF_{n+1}

もちろん、これらはちゃんと証明された事実ですので、「不思議な関係式」というのは大言壮語です。

例えば一番最初に出した例である「F_1+F_2+F_3+\cdots +F_n =F_{n+2}-1」なんかは、以下のように証明できます。

フィボナッチ数の定義式であるF_n+F_{n+1}=F_{n+2}を使う。

F_{n+1}を移項して、

F_n=F_{n+2}-F_{n+1}

これは単なる項の間の関係式にすぎないので、nを一つずらして以下のようにも書ける。

F_{n-1}=F_{n+1}-F_{n}

これを繰り返す。

F_{n-2}=F_{n}-F_{n-1}

F_{n-3}=F_{n-1}-F_{n-2}

F_{n-4}=F_{n-2}-F_{n-3}

\vdots

F_2=F_4-F_3

F_1=F_3-F_2

これらはすべてnをずらして書いただけですべて正しい式なので、両辺をそれぞれ足すことができる。

両辺をそれぞれ足すと、左辺はF_1からF_nまでの総和となり、右辺は

F_n=F_{n+2}\color{red}{-F_{n+1}}

F_{n-1}=\color{red}{F_{n+1}}\color{blue}{-F_{n}}

F_{n-2}=\color{blue}{F_{n}} \color{green}{-F_{n-1}}

\vdots

F_2=\color{cyan}{F_4}\color{magenta}{-F_3}

F_1=\color{magenta}{F_3}-F_2

上記の同じ色の部分がすべて打ち消し合うため、結局F_{n+2}-F_2だけが残る。

よって、以下の式が得られる。

F_1+F_2+F_3+\cdots +F_n =F_{n+2}-F_2

F_2=1なので、

F_1+F_2+F_3+\cdots +F_n =F_{n+2}-1

証明終わり。

 

ソリティア

「ソリティア」という言葉はもともと「一人遊び」を意味するフランス語で、一人遊び全般のことを指します。

「ソリティア」と言って多くの人が思い浮かべるあのトランプゲームは正確には「クロンダイク」と言います。つまりクロンダイクは「ソリティア」そのものではなく「ソリティアの中の一種」にすぎないというわけです。「花」と言うだけで「桜」のことを指す、みたいな話ですね。ちょっと違うか。

f:id:motcho:20190605165615j:plain
クロンダイク

さて、ソリティアがただの一人遊びという意味だということは、他にもたくさん「ソリティア」は存在するということですが、ソリティアの中でも代表的なものとして「ペグ・ソリティア」というものがあります。

特定の世代には「マリオRPGのクッパ城のやつ」で通じるのですが、このブログはアラサーだけに向けて書かれているわけではないのでちゃんと説明します。

以下のようなマス目に、駒が置かれています。駒を黒丸で表現しています。

f:id:motcho:20190528181506p:plain

駒は、上下左右いずれかの方向の「2つ隣」のマスに移動させることができます。

その際、2つ隣のマスは空いている(駒が置かれていない)必要があります。

逆に、一つ隣には必ず別の駒が存在しなくてはなりません。つまり、移動させる駒は必ず別の駒を飛び越さなくてはなりません。

f:id:motcho:20190528181540p:plain

飛び越された駒は消えます。

f:id:motcho:20190528181606p:plain

一手につき一個駒が減るわけで、これを繰り返しながら最終的に駒を一個だけにするのが目標のゲームです。

f:id:motcho:20190528181624g:plain

ペグ・ソリティアは「一個飛び越えて、飛び越えられた駒は消える」という駒の動き方で特徴づけられるゲームといえますね。

この先、ソリティアと言えばこのペグ・ソリティアを指すものとします。

さて、フィボナッチ数列とは、ソリティアです。

は?

落ち着いてください。説明します。

以下のような、一次元のマス目とフィボナッチ数列が対応づいているようなものを考えます。図ではF_0からF_{12}までが現れています。

f:id:motcho:20190610005318p:plain

この上に駒を置くことは、その数が「ある」ことを意味することにします。例えば以下のように駒を置くと、1+8+21で30を表現しています。

f:id:motcho:20190610005552p:plain

そして、このマス目の上でソリティアとして可能な方法で駒を動かしても、全体の合計を変化させません。

つまりこういうことです。

f:id:motcho:20190610005617p:plain

3と5のところに駒が置いてあって、全体としては3+5で8を表しています。

この駒に対して、ソリティアとして可能な動きをさせます。つまり、こうです。

f:id:motcho:20190610005629p:plain

3を二つ隣の8に移動させて、飛び越された5を消します。結局、マス目には8だけが残って、全体としての合計は8。操作前と操作後とで値が変化していませんよ、ということです。

とてもよくできていると思うのです。つまり、フィボナッチ数列の「前二つの項の合計が次の項」という性質と、ソリティアの「飛び越した駒を消して二つ隣へ」というルールとがうまいこと合致しているわけです。

ただし一点注意があります。駒を動かすときは必ず正の方向に動かさなくてはなりません。3と2から1を得るような操作は認められません。

f:id:motcho:20190610064912p:plain

逆に言えば、正の方向に限定しさえすれば、フィボナッチ数列とソリティアは見事に合致しているのだ、とも言えます。

 

何が嬉しいのか

はい。「だから?」ってなわけです。

フィボナッチ数列とソリティアが合致している。なるほど。へぇ〜すごいね。それが何? という声はごもっともです。

このソリティアによる表現は「動かす前の値」と「動かした後の値」とが一致している、ということを言っているわけで、つまりこれが上記の関係式の証明にも使えるのです。うひょー! うれしい!

でははじめに「F_1+F_3+F_5+\cdots+F_{2n-1}=F_{2n}」を証明してみましょう。奇数番目の総和です。

とりあえずF_1+F_3+F_5+F_7くらいで考えます。これをソリティアで示すと以下です。

f:id:motcho:20190610064930p:plain

1+2+5+13ってことですね。これは計算すると21です。「この盤面は21を表している」ということでもあります。

ここで、F_0のところに勝手に駒を置きます。全体に0を足しても値には影響しないため、こういうことができます。

f:id:motcho:20190610064947p:plain

そうするとあとは……。

f:id:motcho:20190610065008p:plain

f:id:motcho:20190610065018p:plain

f:id:motcho:20190610065027p:plain

f:id:motcho:20190610065035p:plain

結局、F_8である21だけが残りました。確かに動かす前の値と一致していて、F_1+F_3+F_5+F_7=F_8が示されたことになります。

そしてこれができるのは別にF_1+F_3+F_5+F_7に限った話ではありません。「どの奇数番目のフィボナッチ数まで足すか」を変えてもまったく同じ操作ができ、そして必ず「最後の一個後」が得られます。

証明の文脈に則って言うならば「図より自明」ってところですかね。あまり厳密な話ではないですが。

かくして、奇数番目のフィボナッチ数の総和「F_1+F_3+F_5+\cdots+F_{2n-1}=F_{2n}」の証明ができました。やったね!

偶数番目のフィボナッチ数の総和

偶数番目の総和の例でも見てみましょう。

f:id:motcho:20190610072108p:plain

F_2+F_4+F_6+F_8、つまり1+3+8+21です。値としては33ですね。

さっきは「0を足しても影響しない」ということで勝手にF_0のところに駒を置きましたが、こんどは「どうせ最後に勝手に足した分を引けばいい」という発想で「最初の一個前」であるF_1=1のところに駒を置いてしまいます。

f:id:motcho:20190610072119p:plain

そしてソリティア。

f:id:motcho:20190610082313g:plain

「最後の一個後」であるF_9=34が残りました。ここから、勝手に足した分の「最初の一個前」を引けばいいわけです。つまりF_9-F_1ということ。34-1は、33です。動かす前の値と一致しています。

結局、F_2+F_4+F_6+F_8=F_9-F_1であることが示されました。

奇数の総和のときと同じ論法(図より自明)で、これでF_2+F_4+F_6+\cdots+F_{2n} =F_{2n+1}-1が言えているというわけです。

さらに、「どうせ最後に引けばいいので勝手に足す」という操作が認められることを思うと、別に「1からnまでの和」じゃなくてもいいわけです。スタート地点を変更した「mからnまでの和※」でも同じ考え方でいける。つまりより一般的なことが言えるということです。※この記事では全体に渡ってm\leq nとします。

例えばこんな例。

f:id:motcho:20190610075024p:plain

F_4から始まる一つ飛ばしの和です。

「最初の一個前」に駒を勝手に置いてしまって、

f:id:motcho:20190610075043p:plain

ソリティアソリティア。

f:id:motcho:20190610084023g:plain

得られた「最後の一つ後」から勝手に足した「最初の一つ前」を引いて、F_4+F_6+F_8=F_9-F_3が示されました。

もっと一般的に言うならこんな感じでしょうか。

F_m+F_{m+2}+F_{m+4}+...+F_{m+2k}=F_{m+2k+1}-F_{m-1}

これは上記の「奇数番目の総和」と「偶数番目の総和」両方を包含する、より一般的な式となっています。

個人的な話ですが、おそらく自分ひとりでフィボナッチ数の関係式をいじっていただけでは、この式は得られなかったと思います。ソリティア表示を使ってはじめて、新たな式を導くことができました。

フィボナッチ数の総和

「奇数番目」「偶数番目」に限定しない、F_1からF_nまでの連続したフィボナッチ数の総和も、この方法で求めることができます。

f:id:motcho:20190610075110p:plain

F_1からF_6までの総和を見てみましょう。値としては1+1+2+3+5+8で20です。

とりあえず左端の駒を使ってソリティアしていきます。この際、「一つのマス目に二つ以上駒が置かれている」という状況も認めることにします。これは単にその部分を2倍することにあたるわけで、数学的にも問題ありません。

f:id:motcho:20190609235629g:plain

一つのマスに二つ以上駒があることを、黒丸を縦に重ねて表現しています。

結局、「最初の二つ後」から「最後の一つ後」までの一個飛ばしが手に入りました。

一個飛ばしということはさっきのテクが使えるというわけで、F_2=1のところに勝手に一個駒を置いてしまいます。

f:id:motcho:20190610075129p:plain

もはや動画は省略しますが、あとはここからソリソリすることでF_8=21が得られ、これは最初の状態からすれば「最後の二つ後」にあたります。

そしてここから、勝手に置いた分のF_2=1を引けばよいというわけです。それは確かに20であって、動かす前の値と一致しています。

式で言うとこうなります。

 F_1+F_2+\cdots +F_6=F_8-F_2

今は偶数個の和でしたが、この上奇数個の和についても言えれば、上掲の式

 F_1+F_2+F_3+\cdots +F_n =F_{n+2}-1

は、証明終了です。さらにそこから一般化して「F_mからF_nまでの和」の式についても証明可能です。

この二つについては、ソリティアを使えばあっという間に言えてしまうので、まぁ読者の演習問題とする、ということにしておきましょう。

フィボナッチ数の2乗の総和

フィボナッチソリティアの真価はまだまだこんなものではありません。次のようなものを考えてみます。

f:id:motcho:20190607082317p:plain

さっきまでの一次元フィボナッチ格子に加え、それを「フィボナッチ数倍」したものを縦に重ねています。

つまり、F_3の行には2倍のフィボナッチ数列が、F_7の行には13倍のフィボナッチ数列が書かれているわけです。

こうすることで、例えばF_5=5の列とF_7=13の行の交差地点にはF_5 \times F_7=65が書かれることになり、いわば「フィボナッチ九九」とでもいうべきものが発生します。

そして、以下の位置に駒を置きます。

f:id:motcho:20190607082340p:plain

これは、

 F_1^2+F_2^2+F_3^2+\cdots+F_6^2

というF_6までの2乗の総和を表すことになります。1+1+4+9+25+64で、値としては104ですね。

そしてF_0に勝手に駒を置いてソリっていくと……。

f:id:motcho:20190609183424g:plain

確かに104になった!!!

これは表としてはF_6\times F_7の位置にあり、F_6=8F_7=13の積は確かに104です。

ソリティアにより、F_1^2からF_6^2まで足したらF_6\cdot F_7になる、という結果が出てきたわけです。

これはどこまで足していっても同じことで、結局次の式が得られます。

 F_1^2+F_2^2+F_3^2+\cdots+F_n^2=F_nF_{n+1}

さらに「どこから」どこまで足しても同じ、というのもソリティアよりわかり、次の式が得られます。

 F_m^2+F_{m+1}^2+F_{m+2}^2+\cdots +F_n^2=F_nF_{n+1}-F_mF_{m-1}

フィボナッチ数の2乗の総和に関するまったく非自明な式が出てきて、とっても嬉しいというわけです。

ここまで見てきたように、フィボナッチ数に関する定理が、頭を使うことなく手を動かすだけで証明できてしまう、というのはなかなかのものだと思います。これはもうほとんど自動証明機械です。それは言いすぎです。

自動証明機械が言いすぎなのは、ソリティアを使ったこの方法では、一番最初に挙げたいくつかのフィボナッチ数に関する関係式のうちのごく一部しか証明を与えられていないからです。

そのあたりは今後の課題です。この方法で、例えば「F_n^2+F_{n+1}^2=F_{2n+1}」を表すような駒の動かし方を発見された方はぜひご一報いただければと思います。

おわりに

まとめておきましょう。

・フィボナッチ数の間には、さまざまな関係式が成り立つ。

・ペグ・ソリティアの駒の動かし方とフィボナッチ数の定義式とが、うまいこと合致している。

・なので、ソリティアを使って証明できるフィボナッチ数の関係式がいくつかある。

今回はそういうお話でした。

「証明できる」というだけで十分すごいのですが、フィボナッチソリティアの真骨頂は、「いくらでも新しい定理が作れる」ことにあるように思います。

適当な位置に駒を置いて、ソリティアをすればそれだけでもう定理の完成なわけです。とはいえ、そのほとんどは自明なものなのかもしれません。しかしこれは今までとはまったく異なるアプローチなわけで、ここから新しく特筆すべき定理が生まれたりしたら、それはそれで素晴らしいことだと思います。

例によってこの話題は、数学好きが集まって駄弁ってるイベント「数学デー」で生まれたものです。その時の動画がこちら(サイコロは駒として使っているだけで目の数字に意味はありません)。

えーとまあ、こんな感じで毎週やってます。ご興味ありましたら一度どうぞ。(Twitter:@sugaku_day

それでは今回はこのへんで!