我正在阅读Algorithms by Robert Sedgewick
下面是第213页的一段摘录,内容涉及数字二进制表示中尾随零的个数。
对于河内的塔问题,通信的含义
使用n位数字是一个简单的任务算法。我们可以移动
按以下两个步骤将一个销钉向右堆放,直至完成:
如果n为奇数,则向右移动小盘(如果n为偶数,则向左移动)
做唯一不涉及小磁盘的合法移动。
也就是说,在我们移动小dsik之后,其他两个peg包含两个
磁盘,一个比另一个小唯一不涉及
小圆盘是把小圆盘移到大圆盘上。每
其他的移动涉及到较小的磁盘,同样的原因是
另一个数字是奇数,规则上的每一个标记都是
最短的。
上面的文字并没有进入我的脑海,即使在阅读了谷歌信息的各种参考资料之后。
请帮助我举一个简单的例子,例如磁盘n=3。Disk3最大,Disk1最小,它们需要从PegA移动到PegB。

Disk1
Disk2
Disk3
-------       ------------         ------------
Peg A            Peg B                 Peg C

最佳答案

这里首先要注意的是,在这个算法中,第一个peg被认为是最后一个peg的右边,最后一个peg被认为是第一个peg的左边。
重复应用列出的两个步骤将导致n磁盘塔向右移动一个peg。
n = 3的情况下,n是奇数,因此两个移动是:
向右移动一个销钉。
采取唯一不涉及Disk1的合法行动。
通过重复这些步骤给出以下解决方案:
Disk1(向右移动一个栓)
Disk1: PegA -> PegB(仅法律行动不涉及Disk1
Disk2: PegA -> PegC(向右移动一个栓)
Disk1(仅法律行动不涉及Disk1: PegB -> PegC
Disk1(向右移动一个栓)
Disk3: PegA -> PegB(仅法律行动不涉及Disk1
Disk1: PegC -> PegA(向右移动一个栓)
当他写“与n位数字的对应关系”时,sedgewick指的是这样一个事实:在解的步骤Disk1中移动的磁盘是对应于Disk2: PegC -> PegB二进制表示中最低有效Disk1位的磁盘。即对于Disk1: PegA -> PegB

step | bits | disk
------------------
  1  |  001 |  1
  2  |  010 |  2
  3  |  011 |  1
  4  |  100 |  3
  5  |  101 |  1
  6  |  110 |  2
  7  |  111 |  1

10-06 05:15