《具体数学》第一章习题 12 bonus:
有柱子 A,B,C, 有 \(m_i\) 个半径为 \(i\) 的碟子,规定时刻大碟子不能在小的碟子上方,初始碟子都在柱 A,每次操作将一个柱子最上面碟子挪到另一个柱子最上面,末态柱子按原顺序(相同大小碟子也是)在柱 C。求最小操作次数。
解答:设答案为 \(B(m_1,...,m_n)=B_n\),不强调按原顺序的答案为 \(A(m_1,...,m_n)=A_n\),则有:
- \(A_n=(m_1\cdots m_n)_2:=m_1\cdot 2^{n-1}+\cdots+m_n\cdot 2^0\).
- 当 \(n=1\) 时,\(B_n=2m_1-1\).
- 当 \(m_n=1\) 时,\(B_n=A_n\).
- 其他情况:\(B_n=2m_n+2A_{n-1}+B_{n-1}\).
证明:类似普通汉诺塔问题得到 \(A\) 的递推式,且发现进行 \(A\) 操作后 \(m_1,...,m_{n-1}\) 组的盘子按原顺序。此部分较容易(\(m_k\) 部分无论在 \(A_{n-1}\) 中正序/反序,\(A_n\) 中重复两次都会正序)。下面只证明最后一种情况。
由归纳法,我们只需证明当 \(n>1, m_n>1\) 时,\(B_n=\min(2m_n+2A_{n-1}+B_{n-1},2m_n-1+4A_{n-1})\) (原递推式代入此式成立,且递推式确定的数列是唯一的)(这对应两种方案:\(A_{n-1}+m_n+A_{n-1}+m_n+B{n-1}\) 和 \(A_{n-1}+(m_n-1)+A_{n-1}+1+A_{n-1}+(m_n-1)+A_{n-1}\)),\(\leq\) 自然成立。下证 \(\geq\):
- 若 \(m_n\) 移动 \(2m_n-1\) 次(至少如此),则 \(m_1,\cdots,m_{n-1}\) 只能整体移动至少 4 次,所以 \(B_n\) 大于等于第二项。
- 若 \(m_n\) 移动 \(\geq 2m_n\) 次,则可推知 \(m_1,\cdots,m_{n-1}\) 至少整体移动 3 次,设这部分步数至少为 \(C_{n-1}\)。
只需证明:\(C_n\geq 2A_n+B_n\)(并且 \(\leq\) 也自然成立)(注意 \(n\geq 1\) 与前不同)
若 \(m_n=1\),\(B_n=A_n\),由 \(A_n\) 定义知成立。
否则:\(m_1,\cdots,m_{n-1}\) 整体至少移动 \(4\) 次(用 \(A\) 的操作可自动按原顺序)要证式右边此部分相同,只看 \(m_n\) 有关部分即可。即只需证明 \(n=1\) 的情况,只需证明 \(C_1\geq 4m_1-1\).继续分类讨论:
给 \(M=m_1\) 个盘子编号 \(1,2,...,M\)(从上到下)。设答案为 \(X_M\)。\(X_1=3\).
若 \(m\) 号盘子挪动至少 \(4\) 次,则可知 \(X_M\geq X_{M-1}+4\).
若 \(m\) 号盘子挪动 \(3\) 次(至少如此),则由局面 \((ALL,O,O)\rightarrow (M,*,*)\rightarrow (O,M*,*)\rightarrow (O,*M*,O)\rightarrow (O,M*,*)\rightarrow (O,*,M*)\rightarrow (O,O,*M*)\rightarrow (O,*,M*)\rightarrow (M,*,*)\rightarrow(ALL,O,O)\) 可以发现除了 \(M\) 以外的至少要挪动 \(4(M-1)\) 次,所以总共至少 \(4(M-1)+3=4M-1\) 次,原式成立。
综上证毕。
过程写的比较粗糙,大佬轻喷(