問題24 (boojam さん)
【ハノイの塔】
先にも書いたように、この問題に対する一般解については未解決問題なので、私の力の範囲を超えている。そこで、私の知っていることを
簡単に補足しておく。
棒が4本の時の最少手順数の求め方は、1907年から未解決問題とされている。また、今回の問題を、円盤n枚、棒p本に拡張した場合における
最少手順数 S(n,p)については、1941年に J. S. Frame と B. M. Stewart
が、以下のようにして求められるという予想を発表している。
S(n,p) = min { 2 * S(m,p) + S(n-m,p-1) | n > m
>= 0, p > 3 }
上で解説した円盤の移動方法は、実質的に Frame と Stewart の予想と同じである。つまり、本当の最少手順数ではない可能性があるということだ。
しかしながら、今回の問題を含めて、棒の数と円盤の数が少ない場合は、総当りによる方法によって求めた最少手順数と、Frame と Stewart の方法で
求めた手順数が一致することは既に確認されている。
一般に、Frame と Stewart の予想は正しいと広く信じられている。つい最近この予想が正しいとする有力な証拠が得られたとする論文が
発表されているものの、完全な証明や反証は、この解説を書いている2004年9月の時点では得られていない。
皆さんお馴染みの数列サイトにも、棒4本と5本の場合の最少手順数が、それぞれ
A007664と A007665 として掲載されている。
また、インターネット検索において、「hanoi multi peg」あるいは「Frame Stewart
conjecture」などをキーワードにすれば、一般化されたこの問題に
関する論文や説明を多数見つけることができる。
《あとがき(のようなもの)》
問題6の解説に対するお詫びのため、「ハノイの塔」に関する蘊蓄を少し。「ハノイの塔」は、1883年にフランスの数学者
Edouard Lucas
(日本では、リュカとして知られている)が、インドに伝わる神話の「梵天の塔」を元に発明したとされている。
この「梵天の塔」の神話の要旨は次の通り。神様である「梵天」が宇宙創成の際、ベナレスというところに、奥の院を持つ大寺院を建てた。
奥の院の中には、ダイヤモンドで出来た3本の柱があり、その内の1本の柱には、金で出来た穴の空いた大きさの異なる64枚の円盤が
重ねられている。それらの円盤を「ハノイの塔」と同じ移動規則に従って(というか、こちらの方が先)、64枚の円盤すべてを別の柱に移すことを、
僧侶たちに命じた。そして、すべての円盤を移し終えたとき、大寺院は崩壊し、宇宙も消滅すると伝えられている。
ちなみに、1秒に1枚ずつ円盤を移動できたとして、64枚をすべて移し終えるには、約5850億年かかる。
Lucas の発表以来、「ハノイの塔」の数学的考察は、200件以上も論文の形で発表されている。最近でも年に数件コンスタントに発表されている。
問題6を一般化したものだけでなく、問題2や3のように移動方法に制約を設けたもの、問題4や5のように円盤の重ね方に制約を設けたものなど、
多数の変種も存在する。「ハノイの塔」は、単純な割には奥が深いと言えるだろう。
また、数列サイトで、「Tower of Hanoi」として、word 検索すれば、「ハノイの塔」およびその変種に関する数列の一部が検索できる。
その他の変種については、インターネットで検索するなり、新たに考案するなり、皆さん自身で楽しんでいただきたい。
最後に。これら一連の問題は、Graham、Knuth、Patashnik 3人の共著である「Concrete Mathematics」(翻訳では「コンピュータの数学」)の
第1章の問題を参考にしたこと(というか、ほとんど、そのまま)を断っておく。
問題
大きさの異なる8枚の円盤と垂直に立った3本の棒、A、B、Cがある。各円盤の中心には棒の太さと同じ大きさの穴が
空いていて、それぞれの棒に突き刺すようにして積みあげることができるようになっている。
最初、8枚の円盤は、一番大きい円盤が一番下、一番小さな円盤が一番上になるように、大きさの順に棒Aに積まれている。
この時、すべての円盤を棒Aから棒Bに移すことを考える。ただし、円盤の移動は、次の規則にしたがうこと。
規則1 円盤は1度に1枚ずつしか移動できない。
規則2 大きな円盤は小さな円盤の上には積むことができない。
規則3 円盤は任意の棒から棒へ移動できるだけで、その他の場所には移動できない。
《問題1》
最初に棒Aに積まれた8枚の円盤すべてを棒Bに移すには、最低でも何回の円盤の移動が必要か?
《問題2》
円盤の移動規則3を、次のように変更する。
規則3′ 円盤は、棒Aと棒Bの間で直接移動できないこととする。つまり、すべての移動は必ず棒Cに移すか、棒Cから移す。
棒以外の場所にも移動できない。
この時、最初に棒Aに積まれた8枚の円盤すべてを棒Bに移すためには、最低でも何回の円盤の移動が必要か?
《問題3》
最初の円盤の移動規則3を、次のように変更する。
規則3″ 円盤は、棒Aから棒B、棒Bから棒C、または、棒Cから棒Aにしか直接移動できない(棒から棒への移動は一方通行)。
当然のことながら、棒以外の場所には移動できない。
この時、最初に棒Aに積まれた8枚の円盤すべてを棒Bに移すためには、最低でも何回の円盤の移動が必要か?
《問題4》
大きさが異なる8枚の円盤に、同じ大きさのものを1枚ずつ加える。つまり、同じ大きさの円盤が2枚ずつ計16枚ある。
この16枚の円盤が、大きさの順に棒Aに積まれている。
最初に示した3つの移動規則を使って、棒Aに大きさの順に積まれたすべての円盤を棒Bに移すことを考える。
なお、円盤の移動は1枚ずつ。同じ大きさの円盤は重ねることができる。
この時、大きさが同じ円盤の積まれ方の順序を区別しなくても良いとすれば、最低でも何回の円盤の移動が必要か?
《問題5》
問題4と同様に、棒Aに大きさの順に積まれた大きさの異なる8枚の円盤2組計16枚の円盤すべてを、最初の3つの移動規則を使って、
棒Bに移すことを考える。
この時、棒Bにすべての円盤が移動できた際に、大きさの同じ円盤の順序が最初棒Aに積まれていた順序となるようにするには、
最低でも何回の円盤の移動が必要か?
なお、順序を保証するのはすべての円盤が棒Bに移動し終わった時で良く、移動の手順の途中で順序を保証する必要はない。
《問題6》
移動の際に使用できる棒(これを棒Dとする)を、もう1本追加する。つまり、合計4本の棒がある。
この時、棒Aに積まれた8枚の円盤すべてを最初の3つの移動規則を使用して、棒Bに移動するためには、最低でも何回の円盤の移動が必要か?
解答編
《詳細解答1》 255回
円盤を小さいものから順に、円盤1、円盤2、・・・、円盤8と名前を付ける。
最初棒Aの一番下に詰まれている一番大きな円盤8を、棒Bに移動するためには、上の7枚の円盤すべてを棒Cに移動する必要がある。
その後、棒Cにある7枚の円盤を棒Bへ移せば良い。次に、上の7枚を考える。この中の一番大きな円盤7を棒Cに移動するには、
上の6枚の円盤を棒Bに移動させる必要がある。
つまり、A1(n) を、n枚の円盤をある棒からある棒へ移動させる最少手順の数とすると、
A1(8) = A1(7) + 1 + A1(7)
: : :
: : → 棒Cにある7枚の円盤を棒Bに移動する
: → 棒Aにある円盤8を棒Bに移動する
→ 棒Aにある上の円盤7枚を棒Cに移動する
同様に、
A1(7) = A1(6) + 1 + A1(6)
A1(6) = A1(5) + 1 + A1(5)
A1(5) = A1(4) + 1 + A1(4)
A1(4) = A1(3) + 1 + A1(3)
A1(3) = A1(2) + 1 + A1(2)
A1(2) = A1(1) + 1 + A1(1)
A1(1) = 1
∵ 円盤が1枚だけなら、直接、元の棒から目的の棒へ移動すれば良いから。
それぞれ、逆順に計算していくと次のようになる。
A1(1) = 1
A1(2) = A1(1) + 1 + A1(1)
= 1 + 1 + 1 = 3
A1(3) = A1(2) + 1 + A1(2)
= 3 + 1 + 3 = 7
A1(4) = A1(3) + 1 + A1(3)
= 7 + 1 + 7 = 15
A1(5) = A1(4) + 1 + A1(4)
= 15 + 1 + 15 = 31
A1(6) = A1(5) + 1 + A1(5)
= 31 + 1 + 31 = 63
A1(7) = A1(6) + 1 + A1(6)
= 63 + 1 + 63 = 127
A1(8) = A1(7) + 1 + A1(7)
= 127 + 1 + 127 = 255
これが答え。
ちなみに、一般化すると、次のようになる。
A1(1) = 1
A1(n) = 2 * A1(n-1) + 1 [n > 1] … 【式 1-1】
これを解くには、2番目の式の両辺に1を足して、
A1(n) + 1 = 2 * A1(n-1) + 1 + 1
これを変形して、
A1(n) + 1 = 2 * A1(n-1) + 2
A1(n) + 1 = 2 * (A1(n-1) + 1) … 【式 1-2】
ここで、
B1(n) = A1(n) + 1
とおくと、上の【式 1-2】は、次のように表わされる。
B1(n) = 2 * B1(n-1)
また、
B1(1) = A1(1) + 1 = 1 + 1 = 2
だから、B1(n) は、初項 2、公比 2 の単純な等比数列。
B1(n) = 2^n = A(n) + 1 [n > 0]
∴ A1(n) = 2^n - 1 [n > 0]
《詳細解答2》 6560回。
問題1の時と同様に、円盤8を棒Bへ移すには、まず、棒Cに移動してから、棒Bに移動しなければいけない。ここで、棒Cに移動する時には、
上の7枚の円盤が棒Bに移動しなけばならない。次にこの状態で円盤8を、棒Cから棒Bに移動するためには、棒Bにあった7枚の円盤を棒Aに
移動さなければならない。7枚の円盤を棒Aに移動した後、棒Cにある円盤8を棒Bに移し、棒Aにある7枚を棒Bに移動すれば良い。
n枚の円盤を、棒Aから棒Bへ移動する最少手順の数を、A2(n) と表わすことにすると、上の手順は以下のようになる。
A2(8) = A2(7) + 1 + A2(7) + 1 + A2(7)
: : : : :
: : : : → 棒Aにある7枚の円盤を棒Bに移動
: : : → 棒Cにある円盤8を棒Bに移動
: : → 棒Bにある7枚の円盤を棒Aに移動
: → 棒Aにある円盤8を棒Cに移動
→ 上の7枚の円盤を棒Cに移動
ここで、棒Bから棒Aへの円盤の移動手順は、棒Aから棒Bの手順と同じである(対称)。
このようにして、
A2(7) = A2(6) + 1 + A2(6) + 1 + A2(6)
A2(6) = A2(5) + 1 + A2(5) + 1 + A2(5)
A2(5) = A2(4) + 1 + A2(4) + 1 + A2(4)
A2(4) = A2(3) + 1 + A2(3) + 1 + A2(3)
A2(3) = A2(2) + 1 + A2(2) + 1 + A2(2)
A2(2) = A2(1) + 1 + A2(1) + 1 + A2(1)
A2(1) = 1 + 1
∵ 1枚の円盤を棒Aから棒Bに移すには、棒Aから棒C、棒Cから棒Bへの2回の移動が必要。
これを、A2(1) から逆順に計算すると次のようになる。
A2(1) = 1 + 1 = 2
A2(2) = A2(1) + 1 + A2(1) + 1 + A2(1)
= 2 + 1 + 2 + 1 + 2 = 8
A2(3) = A2(2) + 1 + A2(2) + 1 + A2(2)
= 8 + 1 + 8 + 1 + 8 = 26
A2(4) = A2(3) + 1 + A2(3) + 1 + A2(3)
= 26 + 1 + 26 + 1 + 26 = 80
A2(5) = A2(4) + 1 + A2(4) + 1 + A2(4)
= 80 + 1 + 80 + 1 + 80 = 242
A2(6) = A2(5) + 1 + A2(5) + 1 + A2(5)
= 242 + 1 + 242 + 1 + 242 = 728
A2(7) = A2(6) + 1 + A2(6) + 1 + A2(6)
= 728 + 1 + 728 + 1 + 728 = 2186
A2(8) = A2(7) + 1 + A2(7) + 1 + A2(7)
= 2186 + 1 + 2186 + 1 + 2186 = 6560
これが答え。
ちなみに、A2(n) の一般項は、次のようにして求まる。
A2(1) = 2
A2(n) = A2(n-1) + 1 + A2(n-1) + 1 + A2(n-1)
= 3 * A2(n-1) + 2 [n > 1] … 【式 2-1】
ここで、【式 2-1】の両辺に1を足して変形する。
A2(n) + 1 = 3 * A2(n-1) + 2 + 1
A2(n) + 1 = 3 * A2(n-1) + 3
A2(n) + 1 = 3 * (A2(n-1) + 1)
さらに、
B2(n) = A2(n) + 1 とおくと、B2(n) は次のようになる。
B2(1) = A2(1) + 1 = 3
B2(n) = 3 * B2(n-1) [n > 1]
つまり、B2(n) は、初項 3、公比 3 の単純な等比数列だから、
B2(n) = 3^n = A2(n) + 1
∴ A2(n) = 3^n - 1 [n > 0]
《詳細解答3》 2447回
これまでと同様な考え方をする。棒Aにある円盤8を棒Bに移動するには、まず、上の7枚の円盤を棒Cに移動させる必要がある。そして、
円盤8を棒Bに移動後、棒Cにある7枚の円盤を棒Bに移動する。
ここで、A3(n) を、n枚の円盤を棒Aから棒Bに移す最少手順数。B3(n)、棒Bから棒Aへ移す最少手順数とする。ここで、順方向の移動である。
棒B→Cへの移動と棒C→Aへ移動の最少手順数は A3(n) に同じ。同様に、逆方向の移動、棒A→C、棒C→Bの最少手順数は
B3(n) に同じ。
すると、上の手順は以下のようになる。
A3(8) = B3(7) + 1 + B3(7)
: : :
: : → 棒Cにある7枚の円盤を棒Bに移動
: → 棒Aにある円盤8を棒Bに移動
→ 棒Aにある上の7枚の円盤を棒Cに移動
次に、B3(7)、つまり、7枚の円盤を棒Aから棒Cに移すことをで考えてみる。
7枚の円盤のうち一番大きな円盤7を、棒Aから棒Cに移すとすると、移動規則により直接棒Aから棒Cへ移動できないので、
棒A→B、棒B→Cの二段階の移動の手順が必要。最初の棒Aから棒Bへの移動では、小さい6枚を棒Cに移動しなければならない。
この移動には、B3(6) の手順が必要。この後、円盤7を、棒Bに移動する。次に、棒Cには、小さい6枚の円盤があるので、
これを棒Aに移動した後でないと、棒Bにある円盤7を棒Cに移動できない。つまり、小さな6枚の円盤を棒Aへ移さなければなければならない。
この手順は、順方向への移動だから A3(6) の手順が必要。この後、円盤7を棒Cに移動。
そして、棒Aにある小さな6枚の円盤を棒Cに移動。この手順は、B3(6)。
この手順は、以下のようになる。
B3(7) = B3(6) + 1 + A3(6) + 1 + B3(6)
: : : : :
: : : : → 棒Aにある6枚の小さな円盤を
: : : : 棒Cに移動
: : : → 棒Bにある円盤7を棒Cに移動
: : → 棒Cにある6枚の小さな円盤を棒Aに移動
: → 棒Aにある円盤7を棒Bに移動
→ 棒Aにある6枚の小さな円盤を棒Cに移動
これらのことから、以下のようなる。
A3(8) = B3(7) + 1 + B3(7)
B3(7) = B3(6) + 1 + A3(6) + 1 + B3(6)
A3(6) = B3(5) + 1 + B3(5)
B3(6) = B3(5) + 1 + A3(5) + 1 + B3(5)
A3(5) = B3(4) + 1 + B3(4)
B3(5) = B3(4) + 1 + A3(4) + 1 + B3(4)
A3(4) = B3(3) + 1 + B3(3)
B3(4) = B3(3) + 1 + A3(3) + 1 + B3(3)
A3(3) = B3(2) + 1 + B3(2)
B3(3) = B3(2) + 1 + A3(2) + 1 + B3(2)
A3(2) = B3(1) + 1 + B3(1)
B3(2) = B3(1) + 1 + A3(1) + 1 + B3(1)
A3(1) = 1
B3(1) = 1 + 1
これを逆順に計算する。
B3(1) = 1 + 1 = 2
A3(1) = 1 = 1
B3(2) = B3(1) + 1 + A3(1) + 1 + B3(1)
= 2 + 1 1 + 1 2 = 7
A3(2) = B3(1) + 1 + B3(1)
= 2 + 1 + 2 = 5
B3(3) = B3(2) + 1 + A3(2) + 1 + B3(2)
= 7 + 1 + 5 + 1 + 7 = 21
A3(3) = B3(2) + 1 + B3(2)
= 7 + 1 + 7 = 15
B3(4) = B3(3) + 1 + A3(3) + 1 + B3(3)
= 21 + 1 + 15 + 1 + 21 = 59
A3(4) = B3(3) + 1 + B3(3)
= 21 + 1 + 21 = 43
B3(5) = B3(4) + 1 + A3(4) + 1 + B3(4)
= 59 + 1 + 43 + 1 + 59 = 163
A3(5) = B3(4) + 1 + B3(4)
= 59 + 1 + 59 = 119
B3(6) = B3(5) + 1 + A3(5) + 1 + B3(5)
= 163 + 1 119 + 1 + 163 = 447
A3(6) = B3(5) + 1 + B3(5)
= 163 + 1 + 163 = 327
B3(7) = B3(6) + 1 + A3(6) + 1 + B3(6)
= 447 + 1 + 327 + 1 + 447 = 1223
A3(8) = B3(7) + 1 + B3(7)
1223 + 1 + 1223 = 2447
これが答え。
一般化すると、A3(n) と B3(n) は、以下のように表わすことができる。
A3(1) = 1
A3(n) = 2 * B3(n-1) + 1 [n > 1]
B3(1) = 2
B3(n) = B3(n-1) + 1 + A3(n-1) + 1 + B3(n-1)
= (B3(n-1) + 1 + B3(n-1)) + A3(n-1) + 1
= A3(n) + A3(n-1) + 1 [n > 1]
これから、A3(n) は、次のように表わせる。
A3(1) = 1
A3(2) = 2 * B3(1) + 1 = 2 * 2 + 1 = 5
A3(n) = 2 * B3(n-1) + 1
= 2 * (A3(n-1) + A3(n-2) + 1) + 1
= 2 * A3(n-1) + 2 * A3(n-2) + 3 [n > 2]
∴ A3(n) = ((1+sqrt(3))^(n+1) - (1-sqrt(3))^(n+1)) / (2 * sqrt(3)) - 1
[n > 0]
解き方は省略。
数列サイトに、A005665 として掲載されている。
《詳細解答4》 510回。
基本的に、《問題1》と同じ。まず、(n−1)の2倍の数の円盤を棒Cに移す。残りの2枚を棒Bに移した後、棒Cにあるすべての円盤を
棒Bに移せば良い。この手順は、一番下にある円盤を動かすための最少手順をとっているので、結果として順序を保存しないで移動
するための最少手順であることが判る。
ここで、n種類の円盤(計n×2枚)を移す最少手順数を A4(n) と表わせば、以下のようになる。
A4(1) = 2
A4(n) = A4(n-1) + 2 + A4(n-1)
= 2 * A4(n-1) + 2 [n > 1]
∴ A4(n) = 2^(n+1) - 2 [n > 0]
= 2 * (2^n - 1)
= 2 * A1(n)
解き方は省略。
《詳細解答5》 1019回。
まず、《問題4》を振り返って、棒Bに円盤をすべて移動し終わった時の円盤の重なる順序を考えてみる。まず、一番下にある2枚の円盤の
順番が入れ替わっていることは直ぐに判る。それ以外の円盤については、必ず偶数回移動したことになるので、順番が保存されていることが判る。
つまり、一番下にある2枚の円盤の順序は入れ替わっているが、残りの円盤の重なる順序は保存されている。
この結果から、単純に考えてみる。まず、すべての円盤を一旦棒Cに移する。その後、それらを棒Bに移動する。すると、すべての円盤の
重なる順序は保存されることになる。
この手順だと、円盤が2枚、つまり、同じ大きさの円盤が2枚の時、上の手順だと計4回の移動が必要になる。しかしながら、実際には、3回の移動で済む。
2枚の円盤を、円盤uと円盤vとする。最初、円盤uが上にあるものとする。まず、円盤uを棒Cに移す。次に、円盤vを棒Bに移す。最後に、棒Cにある
円盤uを棒Bに移す。重なる順番を保存したまま、3回の移動できたことになる。
そこで、本当の最少手順を考える。
まず、(n−1)の2倍の数の円盤を順番を関係なく棒Bに移す。次に、棒Aに残っている2枚を、順番に関係なく棒Cに移す。さらに、棒Bにあるすべて
の円盤を順番に関係なく棒Aに移す。この時、棒Aでは元の順番が保存されているはず。そして、棒Cにある2枚の円盤を順番に関係なく棒Bに移す。
この時、棒Bでは元の順番が保存されているはず。そこで、棒Aにある円盤すべてを、順番を保存して棒Bに移す。
ここで、n種類2組みの円盤を元の順番を保存して移動する手順の最少手順数を
A5(n) として、問題4の結果を利用すれば、この手順は次のように表わせる。
A5(n) = A4(n-1) + 2 + A4(n-1) + 2 + A5(n-1)
= A5(n-1) + 2 * A4(n-1) + 4
= A5(n-1) + 2 * (2^n - 2) + 4
= A5(n-1) + 2^(n+1)
これを、
A5(1) = 3
として一般項を求めると(解き方省略)、
A5(n) = 2^(n+2) - 5
となる。
念のため、もう1つ別の手順を考えてみる。
最初の手順は同じく、(n−1)の2倍の数の円盤を順番を関係なく棒Bに移す。次に、棒Aの残り2枚のうち1枚を棒Cに移す。さらに、棒Bにあるすべての
円盤を順番に関係なく棒Cに移す。この時、棒Cでは元の順序が保存されいるはず。その後、棒Aに残っている最後の1枚の円盤を棒Bに移す。
そして、棒Cにある(n−1)の2倍の数の円盤を順番を関係なく棒Aに移す。その後、棒Cに残った最大の円盤の残りの1枚を棒Bに移す。
最後に、棒Aにあるすべての円盤を棒Bに移す。これで順番を保存したまま、すべての円盤を移せたことになる。
この手順を、B5(n) とすると、
B5(n) = A4(n-1) + 1 + A4(n-1) + 1 + A4(n-1) + 1 + A4(n-1)
= 4 * A4(n-1) + 3
= 4 * (2^n - 2) + 3
= 4 * 2^n - 4 * 2 + 3
= 2^(n+2) - 8 + 3
= 2^(n+2) - 5 [n > 0]
となり、先に求めた A5(n) と同じ。
ちなみに、この B5(n) の手順で、順序を保存して移動を行なうと、手順が増えることは明らか。また、これらの手順 A5(n) と B5(n) も、一番下にある
円盤を動かすための最少手順をとっているので、これらが順序を保存して移動するための最小手順であることが判る。
蛇足ながら、
A5(n) = 2^(n+2) - 5
= 2^(n+2) - 4 - 1
= 2 * 2^(n+1) - 2 * 2 - 1
= 2 * (2^(n+1) - 2) - 1
= 2 * A4(n) - 1
となっている。
《詳細解答6》 33回
この問題は、一筋縄ではいかない。n枚の円盤に対して、棒が4本あるときの最少手順を
A6(n) と表わす。円盤の数が、4枚より少ないときの
最少手順はほぼ明らか(最初に、一番大きな円盤以外を、棒B以外に移せば良い)。
A6(1) = 1
A6(2) = 3
A6(3) = 5
実際のところ、この問題を一般化したn枚の円盤の時の最少手順数の求め方については、この問題が提起されてから100年あまり経った現在においても、
未だ未解決問題となっている。
これでは余りにも不親切なので、円盤の動かした方を少し考えてみる。直感的には、次のようにすれば、最少の手順ですべての円盤を移すことができそう
だと判る。
まず最初に、4本の棒のすべてを使って、何枚かの円盤を棒Dに移す。残った円盤を、棒Dを除いた3本を使って棒Bに移す。その後、棒Dにあるすべての
円盤を、4本の棒すべてを使って棒Bに移せば良い。あるいは、初めから3本の棒だけを使って、すべての円盤を移動する。これらのなかで、最少のものが
答えになりそうだ。
これが正しいとすれば、最少手順数 A6(n) は、A6(0) = 0 として(動かす円盤がないから、移動の手順もゼロ回)、次のように表わせる。
A6(n) = min { A6(m) + A1(n-m) + A6(m) | n > m >= 0 }
= min { 2 * A6(m) + A1(n-m) | n > m >= 0 }
ここで、「min { ... }」は、集合要素「{ ... }」の中の最小値を表すものとする。
これを元に、4枚の円盤で考えてみる。すると、A6(4) の値は、次のいずれかの最少のもの。
2 * A6(3) + A1(1) = 2 * 5 + 1 = 11
2 * A6(2) + A1(2) = 2 * 3 + 3 = 9
2 * A6(1) + A1(3) = 2 * 1 + 7 = 9
2 * A6(0) + A1(4) = 2 * 0 + 15 = 15
ということで、
A6(4) = 9
となることが判る。
同様にして、円盤が、5枚、6枚、7枚、8枚で計算する。
A6(5) = min {
2 * A6(4) + A1(1) = 2 * 9 + 1 = 19
2 * A6(3) + A1(2) = 2 * 5 + 3 = 13
2 * A6(2) + A1(3) = 2 * 3 + 7 = 13
2 * A6(1) + A1(4) = 2 * 1 + 15 = 17
2 * A6(0) + A1(5) = 2 * 0 + 31 = 31
}
= 13
A6(6) = min {
2 * A6(5) + A1(1) = 2 * 13 + 1 = 27
2 * A6(4) + A1(2) = 2 * 9 + 3 = 21
2 * A6(3) + A1(3) = 2 * 5 + 7 = 17
2 * A6(2) + A1(4) = 2 * 3 + 15 = 21
2 * A6(1) + A1(5) = 2 * 1 + 31 = 33
2 * A6(0) + A1(6) = 2 * 0 + 63 = 63
}
= 17
A6(7) = min {
2 * A6(6) + A1(1) = 2 * 17 + 1 = 35
2 * A6(5) + A1(2) = 2 * 13 + 3 = 29
2 * A6(4) + A1(3) = 2 * 9 + 7 = 25
2 * A6(3) + A1(4) = 2 * 5 + 15 = 25
2 * A6(2) + A1(5) = 2 * 3 + 31 = 37
2 * A6(1) + A1(6) = 2 * 1 + 63 = 65
2 * A6(0) + A1(7) = 2 * 0 + 127 = 127
}
= 25
A6(8) = min {
2 * A6(7) + A1(1) = 2 * 25 + 1 = 51
2 * A6(6) + A1(2) = 2 * 17 + 3 = 37
2 * A6(5) + A1(3) = 2 * 13 + 7 = 33
2 * A6(4) + A1(4) = 2 * 9 + 15 = 33
2 * A6(3) + A1(5) = 2 * 5 + 31 = 41
2 * A6(2) + A1(6) = 2 * 3 + 63 = 69
2 * A6(1) + A1(7) = 2 * 1 + 127 = 129
2 * A6(0) + A1(8) = 2 * 0 + 255 = 255
}
= 33
これが答え。