1 / 10 ブロック10%

上下にスクロールするかキーボードの上下キーを使うと、次の学習カードへ進めます。

イントロ

大きい問題を同じ小問題へ分ける

ハノイの塔で再帰を体験する

一見複雑なn枚の円盤移動も、最大の円盤を動かす前後にn−1枚の移動が必要だと見抜けば、同じ形の小さな問題二つと一手へ分解できます。手順と手数の理由を同時に説明できる分解です。

定義

再帰的な分解

教科書では
ある大きさの問題を、同じ種類で一段小さい問題を使って表し、最も小さい場合までたどる考え方です。
言いかえると
最大円盤を出発棒から目的棒へ動かすには、上のn−1枚を補助棒へよける必要があります。最大円盤を一手で動かした後、同じn−1枚の問題をもう一度解いて目的棒へ重ねます。n=1なら一手で終わるという基準があるので、分解をいつ止めるかも決まります。
公式

最小手数の関係

n枚の最小手数をT(n)とすると、n−1枚の移動が前後に一回ずつ必要です。

再帰関係

n−1枚を二回動かす手数に、最大円盤を動かす中央の一手を加えます。二回とも最小である必要があります。

  • n枚を移す最小手数
  • 円盤の枚数
使うときのコツ

最初の値はT(1)=1です。ここから順にT(2)、T(3)を作れます。

最小手数

枚数が1増えるたびに、手数は前の2倍より1多くなります。指数のnは円盤枚数です。

使うときのコツ

n=1、2、3で1、3、7になるか確かめます。

解くコツ

式だけを覚えず、「上をよける・最大を動かす・上を戻す」の三段階へ対応させます。小問題を一手と数えないことも重要です。

図解n枚のハノイの塔をnマイナス1枚、最大円盤1枚、nマイナス1枚の三段階へ分ける図
最大円盤を動かす一手を中央に置くと、その前後がどちらもn−1枚の同じ移動問題になります。塊の下のT(n−1)は一手ではなく、小問題全体の最小手数です。
手順

n枚を移す三段階

  1. 1

    上のn−1枚を、目的棒を一時利用して補助棒へ移す

  2. 2

    空いた最大円盤を出発棒から目的棒へ1回動かす

  3. 3

    n−1枚を、出発棒を一時利用して目的棒へ移す

  4. 4

    n=1なら円盤を直接1回動かして分解を終える

場面
3枚の円盤を最小何手で移せるか。
順に考えると
まず上の2枚を補助棒へ移すのにT(2)=3手、最大円盤を目的棒へ1手、2枚を目的棒へ重ねるのに再び3手です。合計3+1+3=7手です。式でもT(3)=2×T(2)+1=2×3+1=7となります。前半か後半を3手未満にできないため、全体も7手未満にはできません。
ここが結論
3枚の最小手数は7手です。三段階は実行方法だけでなく、それより短くできない理由にもなっています。
比較
枚数n分解最小手数
1直接1手1
21手分を二回+13
33手分を二回+17
47手分を二回+115

枚数n1

分解
直接1手
最小手数
1

枚数n2

分解
1手分を二回+1
最小手数
3

枚数n3

分解
3手分を二回+1
最小手数
7

枚数n4

分解
7手分を二回+1
最小手数
15

1、3、7、15と、前の値を2倍して1を加える規則が続きます。差ではなく、問題の分解から規則が導かれます。

注意

円盤をまとめて一手にしない

確認

確認テスト

Q1

4枚の最小手数T(4)をT(3)=7から求める式はどれですか。

まとめ

まとめ

  1. 1

    n枚の問題はn−1枚の同じ問題二つへ分かれる

  2. 2

    最大円盤の一手を二つの小問題の間に置く

  3. 3

    最小手数はT(n)=2T(n−1)+1で表せる

  4. 4

    T(n−1)は一手でなく小問題全体の手数である

  5. 5

    基準T(1)=1から2ⁿ−1へつながる

What's New

新しいカテゴリが追加されました

  1. 日商簿記3級
  2. FP3級
  3. AWS Certified Solutions Architect - Associate
更新履歴をすべて見る