Weekend Mathematics/問題/問題90
90.ハノイの塔
バラモン教のある寺院に、次のような伝説があった。
「この寺院の中に3本の大理石の柱がある。その1本Aに、すべて大きさの違う 64枚の黄金の円盤が、大きいものから順に刺してある。これを1回に1枚ずつ動かし、 全部を別の柱Bに移し終えたとき、この世は終わる」というものである。
1枚を動かすのに1秒かかるとすると、この世が終わるのはいつか? ただし、移動するとき、小さい円盤はつねに大きい円盤の上になければならない。 そのためには、もう1本の柱Cを補助柱として使ってよい。
数楽プレイランド
仲田紀夫
学習研究社
答えと解説
解答・その1
(ペンネ−ム:杖のおじさん)
答え
5845億4177万1864年14時間20分15秒後にこの世は終わります。
計算式は264−1ですが
エクセルのヘルプにも書いてありますが、エクセルの仕様では数値は「15桁の有効数字まで」 とのことなので数値が15桁以上になると10(N桁―15桁)未満が丸められて 264の計算が1位まで出来ません、従って次のようにいたしました。
264−1=232*232−1
232=4294967296
4294967296×4294967296−1
264−1の計算を次の通りエクセルのセルの文字列結合を利用して行いました。
264−1=18446744073709551615秒
Aは64枚を移動完了に要する秒数
A=18446744073709551615秒
Bは一年の秒数
60*60*24*365=31536000秒
B=31536000秒
Cは年数
C=A/B
C=18446744073709551615/31536000=584942417355年
584942417355*31536000=18446744073709500000……・D
A- D=51615秒余り、 これを時間に換算すると14時間20分15秒になります。
うるう年の計算(4年に一度、一年の日が一日多くなります。)
C/4=146235604339年…・146235604339日 …・・E
年に換算します。
E/365=400645491年…・F になりますので、先に計算した年数から引きます。
C−F=584541771864年
ちなみに地球の誕生は46億年前と言われています。
解答・その2
(ペンネ−ム:anik)
1枚の時・・・1回
2枚の時・・・3回
3枚の時・・・7回
4枚の時・・・15回
…………………………
n枚の時・・・2n−1
64枚の時・・・264−1=18446744073709551615
18446744073709551615秒(約五千八百億年)
この問題は中学校の時がんばって解きましたね。
264を求めるのに
216=65536
655362=4294967296
42949672962=(42949+67296)2
=429492+2×42949×67296+672962
=18446744073709551616
と2,4,8,16,32,64...と2倍していく方法と二種類やって確かめたものです。大変でしたね。
楽に求める方法はあるんですか。
解答・その3
(ペンネ−ム:kirkland)
A君 早速ですが、ヒントを下さい。 先生 何を急いでるんだ? A君 だって、早くしないとこの世が滅んでしまいますよ! こんな問題はさっさと片づけて、残された時間を存分に楽しまなきゃ! ゲームもしないといけないし、マンガも読みたいし…、とにかく時間が ないんですよ!最後の晩餐は何にしようか?お寿司も食べたいし、 ハンバーグもカレーも食べたいし、お菓子だけっていうのもいいなあ〜。 先生 ……。まぁ、例によって、簡単なところで実験してみれば? A君 円盤が1枚のときは1秒後、円盤が2枚のときは、3秒後ですね。(右表) 先生 では、円盤が3枚のときは?ちょっと頭を使って考えてみなさい。 A君 円盤3(以下、単に3)をBに動かす為には、1,2がCにないといけません。 1, 2をAからCに移動させるのは、さきほどと同様に3秒かかります。 そして、4秒後に3をBに動かします。Cにある1,2をBに移動させる のにまたまた3秒かかるので、合計で7秒かかります。(右表) 先生 そんなんでいいんじゃないかい。円盤が4枚のときもすぐに出せるだろ。 A君 楽勝ですな!1〜3をCに移動させるのに7秒、4をBに移動させるのに 1秒、1〜3をBに移動させるのに7秒で、合計7×2+1=15秒です! 先生 そうそう。円盤5枚だと、15×2+1=31秒だね。 A君 2倍して1を足すっていうのをどんどん計算していけばいいわけですね。 先生 面倒くさくないかい?数字に並びに着目しなさい。 A君 1,3,7,15,31,63,127,……??? 何ですか、この数字の並びは? うーん、焦るなあ!早くしないと、この世が滅んでしまう〜! 先生 それぞれに1足してみなさい 先生 はぁ、2,4,8,16,32,64,128,…。 分かりましたよ、ちょうど2倍ずつになっていますね! 1,3,7,15,31,63,127,……っていうのは、 2−1、22−1、23−1、24−1、25−1、26−1、……ですね! A君 インチキ臭いけど、まぁそんなんでいいんじゃないの。 先生 円盤が64枚のときは、264−1秒後です。 A君 正解! 先生 でもこれって、どれぐらいの大きさなのか見当も付きませんね。というわけで、電卓で計算すると、 18446744073709551615秒後。っていうことは、18446744073709551615÷60÷60÷24÷365≒584942417355年後っ! なあんだ、当分の間は大丈夫なんですね。では、さっそく余裕をかまして遊びに行ってきま〜す!
円盤2枚 A B C スタート 1
21秒後
2
12秒後
2
13秒後 1
2
円盤3枚 A B C スタート 1
2
31秒後
31
22秒後
31
23秒後 1
2
3
解答・その4
(ペンネ−ム:蜘蛛の巣城)
「円盤が刺してある」という表現から想像されたのは、 柱Aから任意の円盤を抜き取り柱Bの所定の位置に差し込む図でした。 これなら64秒でこの世は終わります。現在、円盤の移動作業中なのでしょうが、 どう考えてもこの世は65秒以上続いています。 文意をとるのに苦しみましたが、以下のように問題を解釈し直して解答します。
「3つのサークルA,B,CがあってサークルA内にすべて大きさの異なる 皿がピラミッド型に積み重ねてある。この皿の塔をそっくりサークルBに 移す。皿は1枚ずつ3つのサークル間だけを移動し皿の大小の順序を逆転 させてはならない。完成に何手かかるか。」
初期状態P0から第1手はサークルBかCへ最小の皿を移す。 これが状態P1である。第2手は空のサークルに2番目に小さい皿を移し、 3手目に最小の皿を2番目の皿の上に移す。状態P2である。 4手目に3番目に小さい皿を空のサークルに移動する事ができる。 皿の大小の順序は逆転させてはならないから、 上の手順のように空のサークルを用意して新しい皿をA塔の1番上から移動するのである。 さて、次の定義を設ければ直ちに次の推定ができるであろう。
定義「サークルBかCに、上より順に最小の皿1から皿nまでが 重なってあり、A塔は上より順に皿n+1以下が重なって いる状態をPnという」この推定はn=0、1、2、3、4程度の実際例で確認される。 また一般には、上の推定をそのまま仮定とし、次の命題を証明すればよい。
推定「状態Pnから状態Pn+1へ移行するのに2n 手かかる」命題「状態Pn+1から状態Pn+2へ移行するのに2n+1手かかる」以下、証明。 A塔の上から皿n+2を空サークルに移すのを第1手として、 他の塔の1番下の皿を残して皿n以上をA塔の上に移す。これは移動場所などの相違はあるものの、 仮定した手順に準ずるとみなしてよい。 次に、皿n+1を皿n+2の上に移すのを第1手としてA塔の皿n以上を皿n+1の上に移す。 これも仮定の手順に準ずる。手数の合計は
2n+2n=2n+1
結論。初期状態から状態Pnを完成するのに要する手数は
1+2+22+・・・+2nー1=2n-1
従って、64枚の皿の塔を移動させるのに、次の手数を必要とする。
264−1手
1手1秒で何年かかるか。この世の終わらぬ理由がわかりました。
尚、64枚の皿でB塔をつくるためには第1手をサークルCに施さなければなりません。 また、上記の解答が最短の手数であることは、 実際例での確認と一般の証明の中に盛り込むことが出来ます。
解答・その5
(ペンネ−ム:aa)
こういうのは数を少なくして実際にやってみよー、が基本ですね。
1)黄金の円盤が1枚の場合
これは明らかにA->Bの1回
2)黄金の円盤が2枚の場合
この場合は、
A->C
A->B
C->B
の3回
3)黄金の円盤が3枚の場合
この場合は、
A->B
A->C
B->C
A->B
C->A
C->B
A->B
の7回。
4)黄金の円盤が4枚の場合
そろそろ何か考えないと、面倒になってくる。
一番下の大きな円盤を動かすためには、その上の3枚をCに移しておく必要がある。
3)よりこれには7回掛かる。
次に、一番大きな円盤をBに移し(1回)、Cの3枚をBに移すのに7回必要。
よって7+1+7=15回
5)黄金の円盤が5枚の場合
15+1+15=31回
6)黄金の円盤が6枚の場合
31+1+31=63回
ふー、この調子で64まで行けばいいのだが、64は遠い(!)ので、いままでの回数を振り返ってみると、
1,3,7,15,63
う〜ん、これは2n-1って形じゃん。
7)ちなみに黄金の円盤が7枚の場合
63+1+63=127・・・おー、まさに27-1だぁ。
よって64枚の場合は、264-1回必要。
Windowsの関数電卓でこの値を求めると、
264-1=18446744073709551615
というととてつもなく大きな値。
1年は、60*60*24*365=31536000秒なので、これで割って、 およそ584942417355。 5850億年かかるというもの。
解答・その6
(ペンネ−ム:teki)
今月は、超有名な「ハノイの塔」ですか。
最短手数は、円盤の枚数が、2枚の時3手、3枚で7手、4枚で15手・・・で、n 枚では2n-1手になります。
円盤の枚数が1枚のときは、明らかに1手です。 これに1枚加われば、どうなるでしょう?
上の小さな円盤を移すのに1手、2枚目の円盤を移すのに1手、最初の円盤を積み上 げるのに1手の合計3手かかります。
次に、もう1枚加われば、2枚のときの状態にするのに3手、それを戻すのに3手、 残った1枚を移すのに1手の合計7手です。
同様にn枚の円盤を移すのに要する手数は、n-1枚の時に必要な手数×2+1手とな ります。
つまり、n枚のときの手数をH(n)とすると、
H(n)=2×H(n-1)+1
という漸化式が成立します。これを変形すると、
H(n)+1=2×(H(n-1)+1)
となります。 つまり、H(n)+1は初項2、公比2の等比数列ですので、その一般項は、2nです。 よって、H(n)=2n-1が成立することになります。
で、64枚では、264-1手ですから、18,446,744,073,709,551,615手、1手1 秒ですから、約584,942,417,355年 かかることになります。(なんと、5800億年以上かかっちゃうんですね。) 地球が誕生してから約50億年ですので、この世の終わりは「当分こない」ってこと になりますね。 もっとも、昨今のコンピュータの発達によって、1手が10-10秒くらいでできるよ うになれば、あと60年ほどで終わっちゃいますけど・・・。(それまで、私は生きてないって)
解答・その7
(ペンネ−ム:巷の夢)
一般的にN個の円盤を移し換えるための最小回数をMnとすると、 M1は明らかに1である。 ここでN>1とし、N個目の一番大きな円盤を2本目の大理石の柱に移動するためにはN−1個の円盤を 3本目の大理石の柱に移動しておく必要がある。 即ち、Mn−1回移動する必要がある。 この作業が完了後、最大のN番目の円盤を2本目の大理石の柱に移動するには1回の移し換えが必要。 ここまで完了したら3本目の大理石の柱にあるN−1個の円盤を2本目の大理石の柱に移動すればよく、 この回数はMn−1であるから、
Mn=2Mn−1+1
が成立する。この漸化式を解いて、
Mn=2n−1
となる。
ここでn=64を代入すると、264−1≒ 5.849×1011 年となる。
解答・その8
(ペンネ−ム:Toru)
N枚の円盤を移すのにF(N)秒かかるとする。(N+1)枚移すには、条件よりまずN枚 を柱C移して、一番大きな円盤を柱Bへ移し、その後柱CのN枚を柱Bへ移すことになる から、
F(N+1)=F(N)+1+F(N)=2F(N)+1、F(1)=1
より、
F(N)=2N―1
N=64として、
264-1 (秒)≒1.8×1019(秒)≒2.1×1014(日)≒5.8×1011(年)
とまあ大分先のようでちょっと安心しました。
解答・その9
(ペンネ−ム:三角定規)
n枚の円板を柱Aから柱Bに移すのにan回の移動手数がかかるとすると,それは右図のように
an−1+1+an−1
と分解できるから
an=2an−1+1 ……(1)
初期条件 a1=1 のもとで(1)を解いて
an=2n −1
n=64のとき
264−1 =18,446,744,073,709,551,615(秒)
≒584554529391 (年)
≒ 5800 (億年)
この5800億年後が,この問題がいうところの「この世の終わり」です。
しかし,「この世の終わり」を『地球の終わり』と捉えるなら,それはもっともっと最近(?)です。 太陽は現在50億歳,あと50億年で自身の水素エネルギーを消費し尽くし赤色巨星への道を辿ります。 その後地球がどうなるかですが,すべての源の太陽を失うと…… 「この世の終わり」を『人類の終わり』と捉えるなら……あと200年もつかどうか
解答・その10
(ペンネ−ム:夜ふかしのつらいおじさん)
n枚の円盤をAの柱からCの柱に移すとき、右の図のような段階があります。
@は始めの状態です。
AはAの柱にあった上のn−1枚の円盤をBの柱に移した状態です。
BはAの柱にあった一番下の1枚の円盤をCに移した状態です。
CはAからBに移したn−1枚の円盤をCに移して完成した状態です。
f(n)をn枚の円盤を違う柱に移すのに必要な手数とします。
@からAへは f(n−1)、
AからBへは f(1)(= 1)、
BからCへは f(n−1)
の手数がかかります。つまり、
f(n)=2f(n−1 )+1
となります。両辺に1を加えて変形すると、
f(n)+1=2{f(n−1)+1}
すると、f(n)+1は、初項f(1)+1=2、公比2の等差数列になるので、
f(n)+1=2・2nー1=2n
f(n)=2n−1
ここで、n=64とすると、f(64)=264−1=18446744073709551615となります。
さて、
1844,6744,0737,0955,1615 秒は、
(千八百四十四京、六千七百四十四兆、七百三十七億、九百五十五万、千六百十五 秒)
これを 60(秒)×60(分)×24(時間)×365(日)で割ると、
約 5849,4241,7355 年 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・@
(五千八百四十九億、四千二百四十一万、七千三百五十五 年)
@を 45,5000,0000 年(地球の年齢といわれている)で割ると、
約 128.6 倍 (地球が出来て今までの時間の約129倍)
@を 137,0000,0000 年(宇宙の年齢、WMAP衛星プロジェクトチーム)で割ると、
約 42.7 倍 (宇宙が出来て今までの時間の約43倍)
ともかく気が遠くなるような先にこの世がなくなります。
解答・その11
(ペンネ−ム:SOU)
n枚の移動にかかる最短の手数をf(n)とすると、
f(1)=1
がわかります。あとは、f(n+1)とf(n)の関係を求め、漸化式に持ち込みます。
まず、f(n+1)とf(n)との関係を調べてみます。
3つの柱をそれぞれ左、真ん中、右という名前をつけます。
右の柱にn+1枚の皿が刺さっていて、真中の柱に移動させることにします。
@まず上からn枚だけ左に動かします。
n枚動かすのに必要な手数をf(n)としましたので、この時に必要な手数は f(n)回です。
いま、右にはまだ1枚残ってます。
A右にある最後の一個を真中に移動させます。ここでかかる手数は1回です。
B更に左にあるn枚を真中に移動させます。この時かかる手数はさっきと同じf(n)回です。これで、
f(n+1)=f(n)+1+f(n)
=2f(n)+1
という関係があることが分かりました。これと、
f(1)=1
という条件を使えば帰納的に f(n) が定義されます。
f(n+1)=f(n)+1+f(n)
⇔ f(n+1)+1=2(f(n)+1) と変形できる。これは等比数列なので
⇔ f(n)+1=(f(1)+1)*{2n-1} と変形できる。
⇔ f(n)+1=2*{2n-1}
⇔ f(n)=(2n)-1
となるので
f(64)=264-1
となります。すなわち世界が終わるのはその作業を始めたときから考えて
264-1秒後
となります。
解答・その12
(ペンネ−ム:小学名探偵)
(答え)264−1秒後
nを円盤の総数とします。
円盤に番号を、小さい順に1〜nまで振ります。
n枚の円盤を柱Aから柱Bに移すのに:
n−1枚の円盤をAからCに移します。これにより、番号nの円盤だけが柱Aに残ります。
次に、番号nの円盤をAからBに移します。
最後に、n−1枚の円盤をCからBに移します(番号nの円盤の上に載せます)。 これから、
A(n)=A(n-1)+ 1+A(n-1)、初項A(1)=1
これを解いて、
A(n)=2n -1
になります。2n-1=2n−1+1+2n−1 から帰納的に確認できます。
具体的な手順:柱A、B、Cが3角形の頂点の位置に立っていて、A→B→C→Aが 反時計回りだとします。 円盤の枚数nが奇数枚のときは、1番小さい円盤を一回置きに(奇数手目のときに) 「反時計回り」で隣の柱に移します。偶数手目では、残り2つの柱 (1番小さい円盤が載っていない2つの柱)の1番上に載っている円盤を比べ (2つの柱の一方が空のときはどんな円盤でも載せることが出来るので空の柱には 無限大の円盤が載っていると考えて)、小さい方を大きい方の上に移します。 円盤の枚数nが偶数枚のときは、1番小さい円盤を一回置きに(奇数手目のときに) 「時計回り」で隣の柱に移します。
2進数で考えると、1枚のとき、1
2枚のとき、1+1+1=10+1=11
3枚のとき、11+1+11=110+1=111
となり、n枚のとき、1がn個、続く2進数になります。
トーナメント(または、2分枝)で考えると、
| 1 | | 3 | | | | 7(|の総数)
したがって、n段あれば、1 + 2 +22 +...+2nー1 =2n -1 です。
円板の数は64枚なので、世界が終わるまでの時間は、(264−1)秒です。
264-1=18,446,744,073,709,551,615(秒)
この間、1年が365日であり続け(?)、一日の長さが60×60×24秒であり続け る(?)のであれば、
5849億4241万7355年 26日 7時間 0分 15秒です。
どう考えても、現実の世界の話ではないですね。
上でみたように、柱の数が3本のとき、円盤を移し終えるまでの最小手数は 簡単に求められます。ところが、柱の数が4本以上になると突然、難しくなり、未解 決のようです。
正解者
teki Toru 巷の夢 小学名探偵 杖のおじさん SOU 夜ふかしのつらいおじさん anik 三角定規 aa 蜘蛛の巣城 kirkland
換算の仕方はともかくとして、「264-1」秒というのが答えになります。 約5800億年という途方もない時間になります。
お寄せいただいた解答の多くは、漸化式「an=2×an-1+1」を見いだし、 それを用いて、一般項である「an=264-1」を導いていただきました。
小学名探偵さんの解答の中に2進数に関する記述があり、 これはとても興味を持ちましたので、もう少し詳しく伺いました。
小学名探偵さんより
ハノイの塔に関わる僧侶たちは、2進数の世界の住人でした。 かれらにとって、数が2回繰り返されることは、数の桁が1つ繰り上がることです。
かれらには分っていました、ハノイの塔の最小の手順の数が・・・ その数は、移さないといけない円盤がN枚あるとき、 いったん、(N-1)枚を別の塔に移し、そこで、 一番でかい円盤を目的の塔にセットし、それから、 別の塔に移してあった(N-1)枚をもう一度、移せばよいと。
(N-1)枚を移す手順は2回繰り返されるのです、その手順の数は一桁上がるです。 かれらは2進数の言葉で話し始めました。
”1”枚なら、1、
”10”枚なら、1が繰り返されて”10”回、これに一番でかい円盤を目的の塔に セットする1回が加わり、
10+1=11、
”11”枚なら、110+1=111、
そして、・・・・・・・・・・・・・・・・、
そこへ、コンピュータの世界の人がやってきて、つぎのようなものを記しました。
枚数
状態
左シフト
プラス1
1
0
0
1
2
1
10
11
3
11
110
111
4
111
1110
1111
さらに、別の人がやってきて、最小手順の数と、2のべき乗の数を比べました。 ハノイの塔では、円盤が一枚のとき手順の数は1で2より1少ない。つまり、差は 2-1=1 ハノイの塔では、円盤が一枚増えるたびに、手順の数は(元の)2倍+1になります。 (円盤が2枚のとき、手順の数は1×2+1になるが、これを22つまり2×2と比べる と、) 元の差が1なので、2倍した段階(計算の途中)で、差は2になりますが、少ない方 がプラス1されるので、結局、差は1になり、変わりません。 したがって、円盤がN枚のとき、最小手順の数は264より、1少ない数です。
漸化式「an=2×an-1+1」を2進数で考えると、「左シフト+1」 、目から鱗状態です。つまり、64枚なら、「11111・・・1」と、2が64個並ぶわけですよね。 それを10進数に直すと、蜘蛛の巣城さんの解答にあるように
264+263+・・・+22+2+1
となるわけですね。つまり、264-1というわけです。