汉诺塔

有三根细柱 \(A\)\(B\)\(C\),其中 \(A\) 柱上套着 \(3\) 个圆盘。这些圆盘大小各异,按从大到小的顺序自下而上摆放。现在要把套在 \(A\) 柱上的 \(3\) 个圆盘全部移到 \(C\) 柱上,并且在移动圆盘时须遵守下述规则:

  • 每次移动只能将柱子最上端的一个圆盘移到另一根柱子;
  • 小圆盘上不能放大圆盘。

那么,将这 \(3\) 个圆盘全部从 \(A\) 柱移到 \(C\) 柱最少需要移动几次呢?

经过尝试,不难发现解法如下图:

3 个圆盘的解法

现在考虑更一般的问题: \(A\) 柱上套着 \(n\) 个圆盘,将这 \(n\) 个圆盘全部从 \(A\) 柱移到 \(C\) 柱最少需要移动几次?

在处理 \(n=3\) 时,你可能已经注意到,可以将 \(7\) 步拆解成 \(3\) 个大步骤:

  • Step 1 ~ Step 3:将 \(1,2\) 号圆盘从 \(A\) 柱按要求移到 \(B\)
  • Step 4:将 \(3\) 圆盘移到 \(C\)
  • Step 5 ~ Step 7:将 \(1,2\) 号圆盘从 \(B\) 柱按要求移到 \(C\)

这提示我们移动的步骤是以某种“嵌套”的方式进行的,事实上,可以利用数列的递推解决问题。

\(n\) 个圆盘对应次数为 \(h_n\),显然 \(h_1=1\),对于 \(n\geq 2\)

  • \(1,2,\ldots,n-1\) 号圆盘从 \(A\) 柱按要求移到 \(B\) 柱,共移动 \(h_{n-1}\)
  • \(n\) 圆盘移到 \(C\) 柱,共移动 \(1\)
  • \(1,2,\ldots,n-1\) 号圆盘从 \(B\) 柱按要求移到 \(C\) 柱,共移动 \(h_{n-1}\)

于是得到 \[h_n = 2h_{n-1} + 1, \quad (n \geq 2)\] 结合 \(h_1=1\),不难解出 \[h_n = 2^n - 1\]

圆形叠放

\(n\) 个大小不限的圆随意叠放,最多把平面分成多少个区域?

我们知道:

  • \(1\) 个圆把平面分成 \(2\) 个区域——里面和外面
  • \(2\) 个相交的圆把平面分成 \(4\) 个区域
  • \(3\) 个圆最多把平面分成 \(8\) 个区域

3 个圆把平面分成 8 个区域

更多圆时会怎样呢?解决此类计数问题的一种方法是:研究从 \(n-1\) 个圆 \(\gamma_1, \ldots, \gamma_{n-1}\) 增加到 \(n\) 个圆 \(\gamma_1, \ldots, \gamma_n\) 时,平面区域数量的变化规律。

为了让划分的区域最多,这些圆形的排布应当是一般的,即任意两圆相交于两点,且不存在三个圆共点。

\(n\) 个圆最多把平面划分成 \(h_n\) 个区域,显然 \(h_1=2\)。考虑 \(n \geq 2\) 的情况,假设平面上已有 \(n-1\) 个处于一般位置的相互重叠的圆 \(\gamma_1, \ldots, \gamma_{n-1}\),它们将平面划分为 \(h_{n-1}\) 个区域。此时加入第 \(n\) 个圆 \(\gamma_n\),使得:

  • \(n-1\) 个圆中的每一个都与 \(\gamma_n\) 相交于两点
  • 共产生 \(2(n-1)\) 个不同的交点 \(P_1, P_2, \ldots, P_{2(n-1)}\)

新增一个圆

这些交点将 \(\gamma_n\) 分割为 \(2(n-1)\) 段弧: \[P_1P_2,\ P_2P_3,\ \ldots,\ P_{2(n-1)-1}P_{2(n-1)},\ P_{2(n-1)}P_1\] 每一段弧会将某个由前 \(n-1\) 个圆构成的区域一分为二,从而净增加 \(2(n-1)\) 个新区域。因此递推关系为: \[h_n = h_{n-1} + 2(n-1), \quad (n \geq 2)\] 结合 \(h_1=2\),通过累加,可得到 \[h_n = n^2 - n + 2\]

\(h_1=2,\ h_2=4,\ h_3=8,\ h_4=14\)
\(n>3\)\(h_n<2^n\),所以用圆形代表集合的韦恩图最多只能完整表示 \(3\) 个集合之间的关系。


这篇文章原本的计划是讨论多种可以用数列递推解决的问题,在完成以上内容后剩余部分迟迟没有动笔,于是干脆只写这么多发出来了。

以下是原本为这篇文章搜集的部分题目。

  1. 欲登上第 \(10\) 级楼梯,如果规定每步只能跨上一级或两级,则不同的走法共有多少种?
  2. 某人计划给 \(8\) 块牌子涂色,每块牌子可选用红、蓝中的一种颜色喷涂。若要求相邻两块牌子不都为红色,试求所有的染色方案数。
  3. Find a recurrence relation and initial conditions for the sequence \(\{a_n\}\), where \(a_n\) is the number of strings of \(n\) digits (that is, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) that do not contain consecutive even digits (where 0 counts as an even digit).
  4. 设满足下列条件的 \(n\) 位数有 \(a_n\) 个,写出 \(a_n\) 的表达式。
    • 不出现 \(1, 2, 3, 4\) 以外的数字
    • \(1\) 出现奇数次
  5. \(A\)\(G\) 七个字符中部分或全部字符组成 \(n\) 位字符串,希望任意相邻的两个字母不同时为 \(A\)、不同时为 \(B\)、不同时为 \(C\),请问满足条件的字符串共有多少个?(写出递推式)

思考:

  • 什么样的问题能用递推解决?
  • 什么时候应该想到用递推解决?