問題24-2 (boojam さん)  

 【ハノイの塔】

大きさの異なる8枚の円盤と垂直に立った3本の棒、A、B、Cがある。各円盤の中心には棒の太さと同じ大きさの穴が
空いていて、それぞれの棒に突き刺すようにして積みあげることができるようになっている。

最初、8枚の円盤は、一番大きい円盤が一番下、一番小さな円盤が一番上になるように、大きさの順に棒Aに積まれている。

この時、すべての円盤を棒Aから棒Bに移すことを考える。ただし、円盤の移動は、次の規則にしたがうこと。
        規則1 円盤は1度に1枚ずつしか移動できない。
        規則2 大きな円盤は小さな円盤の上には積むことができない。
        規則3 円盤は任意の棒から棒へ移動できるだけで、その他の場所には移動できない。
《問題2》
  円盤の移動規則3を、次のように変更する。
     規則3′ 円盤は、棒Aと棒Bの間で直接移動できないこととする。つまり、すべての移動は必ず棒Cに移すか、棒Cから移す。
            棒以外の場所にも移動できない。
  この時、最初に棒Aに積まれた8枚の円盤すべてを棒Bに移すためには、最低でも何回の円盤の移動が必要か?

《詳細解答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]