ハノイの塔の最少移動回数

 投稿者:しばっち  投稿日:2020年 6月28日(日)19時23分48秒
  ハノイの塔の最少移動回数を求める

! Frame-Stewart algorithm
PUBLIC NUMERIC S(64,15) !'表引き
FOR PEG=3 TO 10
   PRINT "棒";PEG;"本"
   FOR N=1 TO 10
      PRINT N;"枚";HANOI(N,PEG);"回"
   NEXT N
   PRINT
NEXT PEG
!'''PRINT HANOI(64,4)
END

EXTERNAL  FUNCTION LMIN(ABC(),N)
LET AMIN = ABC(0)
FOR I=1 TO N-1
   IF ABC(I)<AMIN THEN
      LET AMIN = ABC(I)
   END IF
NEXT I
LET LMIN=AMIN
END FUNCTION

EXTERNAL  FUNCTION HANOI(N,PEG)
DIM MOVES(0 TO N-1)
IF PEG<3 OR N=0 THEN
   LET HANOI=0
   EXIT FUNCTION
END IF
IF N=1 THEN
   LET HANOI=1
   EXIT FUNCTION
END IF
IF PEG=3 THEN
   LET HANOI=2^N-1
   EXIT FUNCTION
END IF
IF PEG>3 THEN
   FOR I=1 TO N-1
      IF S(N-I,PEG)=0 THEN LET L=HANOI(N-I,PEG) ELSE LET L=S(N-I,PEG)
      IF S(I,PEG-1)=0 THEN LET P=HANOI(I,PEG-1) ELSE LET P=S(I,PEG-1)
      LET MOVES(I-1)=2 * L + P
   NEXT I
   LET K=LMIN(MOVES, N-1)
   LET S(N,PEG)=K
   LET HANOI=K
   EXIT FUNCTION
END IF
END FUNCTION


インドのガンジス河の畔のヴァラナシ(ベナレス)に、世界の中心を表すという巨大な寺院がある。そこには青銅の板の上に、3本のダイヤモンドの柱が立てられている。
そのうちの1本には、天地創造のときに神が64枚の純金の円盤を大きい円盤から順に重ねて置いた。司祭たちはそこで、昼夜を通して円盤を別の柱に移し替えている。
そして、全ての円盤の移し替えが終わったときに、世界は崩壊し終焉を迎える。


以上はフランスの数学者エドゥアール・リュカによる作り話です。
https://ja.wikipedia.org/wiki/ハノイの塔


64枚の円盤を移動させるには、最低でも

2^64-1回 = 18446744073709551615回
かかり、1枚移動させるのに1秒かかったとすると、約5845億年かかる



もし、これが棒4本だったら?

円盤64枚でも4本だと移動回数は18433回となり、世界はわずか5時間程で終焉を迎えてしまう。



※英語圏ではハノイの塔は棒ではなく、peg(杭)というようだ。
 

戻る