Aritalab:Lecture/Algorithm/Towers of Hanoi

From Metabolomics.JP
< Aritalab:Lecture | Algorithm
Revision as of 11:23, 18 October 2010 by Adm (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

ハノイの塔

(E. リュカ, 1883) 台の上に3本の棒が固定されており、一番左の棒をA、真ん中の棒をB、一番右の棒をCとする。Aにはn枚の円盤がはまっており、円盤は下へいくほど半径が大きくなっている。次のルールに従い、棒Bを利用して全ての円盤をAからCに移すとき、何回の移動が必要になるか。

  1. 一回に一枚の円盤しか動かしてはいけない。
  2. 常に大きい方の円盤が下になるようにする。(移動の途中で円盤の大小を逆に積んではいけない。)

n (>0) 枚の円盤�を移動する手数を��Tnと書く。上からn-1枚の円盤をまずBの棒に移し、一番大きい円盤をCに移してから、Bにあるn-1枚をもう一度全てCに移せばよいので、以下の漸化式を得る。

  • T0 = 0
  • Tn = 2 Tn-1 + 1

ここでSn = Tn/2nとおく。

  • S0 = 0
  • Sn = Sn-1 + 2-n (n > 0)

この漸化式を解くと

Sn = 2-1 + 2-2 + ... 2-n = 1 - 2-n

従って Tn = 2nSn = 2n-1となる。

Personal tools
Namespaces

Variants
Actions
Navigation
metabolites
Toolbox