zoukankan      html  css  js  c++  java
  • 多柱汉诺塔问题

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

      设$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} ight  floor$时$f_4(n)$时能够取到最小值$$f_4(n)=left(n-frac{p_2-p+2}{2} ight)×2^p+1$$

      柱子再多一些……留坑

  • 相关阅读:
    我的WCF之旅(1):创建一个简单的WCF程序
    网页设计中颜色的搭配
    CSS HACK:全面兼容IE6/IE7/IE8/FF的CSS HACK
    UVa 1326 Jurassic Remains
    UVa 10340 All in All
    UVa 673 Parentheses Balance
    UVa 442 Matrix Chain Multiplication
    UVa 10970 Big Chocolate
    UVa 679 Dropping Balls
    UVa 133 The Dole Queue
  • 原文地址:https://www.cnblogs.com/wawcac-blog/p/10303865.html
Copyright © 2011-2022 走看看