福西です。
2/22の記録です。
U君が先週(2/15)、帰り際にハノイの塔の歴史に興味を持ってくれたので、今週は『ブラフマンの塔』というプロトタイプの問題を実際に解いてみることをしました。
ガンジス川のほとりのベナレスに、世界の中心を表すという聖堂がある。そこには3本の金剛石の柱が立てられており、そのうち1本には、当初64枚の黄金の円盤が大きい円盤から順に重ねられていたという。バラモン僧たちはそこで、一日中、円盤を別の柱に移しかえる作業を行っている。そして、全ての円盤の移しかえが終わったときに、この世は崩壊し終焉を迎えると言われている。
さて、バラモン僧が1秒で1個の円盤を移動させることができるとすると、世界の終焉は作業のはじまりから最短で何年後ということになるか?
これはリュカ数(フィボナッチ数の仲間)で有名なフランスの数学者リュカが、1883年に『ハノイの塔』をおもちゃとして売り出す時に、そのパッケージに書いた創作問題だそうです(実は意外と新しいことに驚きます)。
さて答は、先週考えた結果の「n枚のハノイの塔の最短手数は、2^n-1回である」を使って電卓を叩けば一発で出てきます…と思いきや、ここで落とし穴があります。周知のように、電卓は桁数が多い計算ではエラーが出てしまいます。そこで、電卓の使い方なり、計算の手順を工夫しなければなりません。
授業ではいつも関数電卓を使っていますが、これなら大きい数の計算でもエラーは出ません。ところが、これにも問題があって、実際2^64-1を計算してみたところ…
1.844674407×10^19
と、「10桁の近似値」が出てきてしまいました。この近似された答が、小学生にはすごく気持ち悪いようでした。そして二人とも「正確な答を出したい!」と言うので、それを新たな問題として付き合いました(これがまたなかなかの難問でした)。
#近似といっても機械の中では正確な答があり、ただ11桁以降の数字が隠されてしまうという現象です(なぜそんなことをするのか、理由は後で分かります)。
* * *
まずは電卓でぎりぎり正確に表示される計算を探しました。
それは、2^32=4294967296(10桁)でした。(2^33もありますが、それは後で使えないので却下)
さて、2^32×2^32=2^64なので、上の答をもう1回かければ2^64が出るわけです。しかし当然そうしても、1.844674407×10^19と近似で出てしまいます。
4294967296(=2^32)
×4294967296(=2^32)
———————-
?
ここで近似されるのは分かっていながら、わざと4294967296×6を電卓で叩いてみます。すると、
2.576980378×10^10
と出てきました。一方手計算でしてみると、
25769803776 です。
ということは、最後の2桁だけは四捨五入のためずれていると考えて、そこだけ調整できれば、前の9桁については電卓の答を使えることが分かります。そして、最後の2桁の調整は実はそれほど難しくありません。
4294967296×6 の1の位の6に、×6をしてみると、36です。この36の「6」が真の1の位の答です。そして6は四捨五入すると、次の位を繰り上げるので、
2.576980378×10^10
を省略せずに書くと、本当は
2.576980377●
になるはずです。そして●が、今6だと分かっているので、
25769803776
というのが真の答です。
このように一個ずつ考えると、
4294967296
×4294967296
は、電卓でまず上の4294967296に下の数の1つをかけて、それを1の位についてだけ手計算して修正したものを筆算で足していけばよいわけです。さらにアイデアとしては、4294967296のうち、実際これにかけて計算するのは4,2,9,6,7の5つだけです。そしてそのうち繰り返し出てくる4,2,9,6については、1回計算すればあとは結果をコピーできます。
4294967296
×4294967296
——————————————
25769803776
38654705664
8589934592
30064771072
25769803776
38654705664
17179869184
38654705664
8589934592
17179869184
——————————————
1844674407370551616
これが答です! よって、ブラフマンの塔をうつしかえるのに必要な時間は、
2^64-1=1844674407370551616-1
=1844674407370551615秒
一方1年は、60秒×60×24×365=31536000秒なので、これで割ると、
約58494241735年≒584億年(合ってる?)
となります(笑)(せっかっく厳密に求めたのに結局「約」になっているのはご愛嬌)。これでは、世界はまだまだ滅びそうにないですね。
* * *
最後に、なぜ関数電卓がわざわざ「近似」して表示するかについての疑問ですが、実際に2^64=1.844674407×10^19の省略されている部分がもし間違っていたとして、それがどれだけの誤差になるかを考えてみました。
そこで、U君が次のような分数で考えることを提案しました。
100000000
——————————–
1844674407000000000(=1.844674407×10^19)
1
=————————-
18446674407
=0.000000000054…
これをもしパーセントで表せば(100倍することになるので)、
0.0000000054パーセント(1パーセントどころか1億分の5パーセント)
の誤差しかない、と言えます。0.1パーセントぐらいあれば、確かにいつでも無視できるとは限らない誤差ですが、これだけ微小であればいつでも無視できます。これが、関数電卓が近似表示することの根拠です。
たかが計算問題といえど、このように6年生まで習ったことを総動員しなければならない意義深い問題でした。
毎回すごい!中学生が参加しても楽しめるのでは?とふと思いました。