多柱汉诺塔问题

  集训时遇到这种问题,觉得有点意思。

  设$f_m(x)$代表有$x$个盘子且可用$m$根柱子时,将$x$个盘子整体移动到另一根柱子的最小步数。

  首先是三柱的移动步数$f_3(n)$,先利用三根柱子把前$n-1$个盘子从$A$柱移动到$B$柱,消耗步数$f_3(n-1)$,然后把最大的一个从$A$柱移动到$C$柱,消耗步数$f_3(1)=1$,最后再把B柱上的$n-1$个盘子从$B$柱移动到$C$柱,消耗步数$f_3(n-1)$,于是有递推式$f_3(n)=2×f_3(n-1)+1$,再加上边界条件f_3(1)=1,可变换得$f_3(n)=2^n-1$.

  然后是四柱的,目标是将$n$个盘子从$A$柱移动到$D$柱,根据各种博客上的说法,步数最少的移动方式如下(手推感觉也差不多是这样,但好像还没人证明为什么能这样搞,通过调整$p$得到最小步数)——

    先利用$A$、$B$、$C$、$D$四根柱子,将$A$柱最上方的$p$个盘子$(0< p < n)$移动到$B$柱上(先移到$C$上也可以,都是暂时存放的作用),消耗步数$f_4(p)$;

    然后利用剩下的$A$、$C$、$D$三根柱子将$A$柱上的剩余$n-p$个盘子移动到$D$柱上,消耗步数$f_3(n-p)=2^{n-p}-1$;

    再利用$A$、$B$、$C$、$D$四根柱子,将$B$柱上的$p$个盘子移动到$D$柱上,消耗步数$f_4(p)$;

  于是$f_4(n)=2×f_4(p)+f_3(n-p)=2×f_4(p)+2^{n-p}-1$,然后这篇论文:   四柱汉诺塔之初步探究杨楷,徐川- 《北京大学学报(自然科学版)》2004年1期 证明了当$p=\left \lfloor \frac{\sqrt{8n+1}-1}{2} \right \rfloor$时$f_4(n)$时能够取到最小值$$f_4(n)=\left(n-\frac{p_2-p+2}{2}\right)×2^p+1$$

  柱子再多一些……留坑

猜你喜欢

转载自www.cnblogs.com/wawcac-blog/p/10303865.html
今日推荐