01 THE TOWER OF HANOI

开门见山,对于个圆盘的汉诺塔[https://zh.wikipedia.org/wiki/%E6%B1%89%E8%AF%BA%E5%A1%94]是什么情况呢?怎么移动?需要多少步?
我们用记号表示个圆盘的情况下需要移动的次数。

我们先考虑很小的情况。时,显然。如果呢?明显地,,一次也不用。
思考一个很大的问题,从很小情况开始是非常有帮助的!同时,考虑极端情况,比如这里的也是很有必要的。
我们会怎么移动呢?利用已有的知识把上面两个移动到某一个柱子上,把最大的移动到第三个柱子上,再把两个小一点的移动到最大的上面。这个过程很容易扩展到的情况。需要步把个小一点的圆盘移动到某个柱子上,然后移动最大的一个,最后再用步把个小一点的圆盘移动到嘴上的圆盘上面。所以 这里使用小于等于而不是等于的原因很简单,因为我们只是找到了一种方法,说不定有更聪明的方法呢。下面说明是必须的。

我们迟早需要移动最大的圆盘,那么必须将个小圆盘移动到某个柱子上,那么必须至少需要步,同时,移动大圆盘至少需要一步(当然可以移动好几次),必须要移动个小圆盘到大圆盘上,那么必须至少需要步。所以 综上,得到 上面的公式和已知的是一致的。这也是考虑很小的情况的好处,可以用于核查以免犯低级的错误。
公式是递推式(recurrence)。往往需要一个式子给出边界值,然后用前面结果给出一般值的式子。

利用递推式可以计算出,不过很大的时候,计算会很慢,也没人真的会这么做。递归式给出的是优雅的、局部的信息,我们希望有一个封闭形式,给定一个,快速得到
怎么求解递归式呢?一个方法是猜测。还是从很小的数开始。,看起来有 至少,对于是成立的。

数学归纳法(mathematical induction)是证明某个命题对于所有满足都成立的一般方法。首先证明最小值时命题成立,这一步称为基础(basis)然后然后对,假设命题对之间的所有值都成立,再证明该命题对成立,这一步称为归纳(induction)。用有限的两步就得到了无限多的结果。
递归式仿佛就是为了数学归纳法而建立的。很容易证明公式是从而来的。基础很明显,。对于 所以公式也成立。

寻求的封闭表达式的过程可以分为以下三阶段:
(1)研究小问题。有助于观察问题,同时对第二阶段和第三阶段很有帮助;
(2)对有意义的量求出数学表达式并证明;对于汉诺塔问题结果就是,可以对任意计算
(3)对数学表达式求出封闭形式并证明;对于汉诺塔问题就是求出公式
后面会集中讨论第三阶段。会频繁的跳过第一阶段和第二阶段,从给出数学表达式作为起点。即便如此,还是会深入各个子问题,寻求解会贯穿三个阶段。

对于汉诺塔问题,我们很幸运的猜测出了答案,这需要一定的洞察力。这本书的一个目的就是说明如果不具备超人洞察力如何求解递归表达式。比如,我们把两边加1可以使之更简单 ,那么 那么很容易发现解是,进而
这里有趣的点是我们通过对两边加一而不是减一消去了等式右边的