当前位置: 首页 > news >正文

汉诺塔问题详解

《具体数学》第一章习题 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\) 次,原式成立。

综上证毕。
过程写的比较粗糙,大佬轻喷(

http://www.jsqmd.com/news/45032/

相关文章:

  • 20232307 2025-2026-1 《网络与系统攻防技术》实验七实验报告
  • 《R语言医学数据分析实战》学习记录--第一章 R语言介绍
  • 251119明天就要去适应比赛场地了
  • 【数据结构】哈希表的理论与实现 - 教程
  • pip安装第三方包
  • 李克特量表(Likert scale)
  • java---maven
  • 新来的外包,在大群分享了它的限流算法的实现
  • 状语从句学案
  • 用 Rust 与 Tesseract 进行英文数字验证码识别
  • 详细介绍:开源AI大模型、AI智能名片与S2B2C商城系统:个体IP打造与价值赋能的新范式
  • ThreadLocal 源码解析
  • 黑马程序员SpringCloud微服务开发与实战- Docker项目部署-03
  • C# 和 Tesseract 实现英文数字验证码识别
  • contig 和 scaffold的区别和联系
  • linux ftp自动
  • linux ftp脚本
  • 实用指南:【案例实战】鸿蒙分布式智能办公应用的架构设计与性能优化
  • Yanhua Mini ACDP-2 BMW ECU Package: EUC Clone License with Modules 3/8/27 Bench Interface Board
  • Yanhua Mini ACDP-2 BMW ECU Package: EUC Clone License with Modules 3/8/27 Bench Interface Board
  • 根据图片路径将文件下载到本地
  • 2025雅思一对一提分攻略:5家靠谱机构适配不同基础学员
  • redis-RDB/AOF-主从复制整理 - 指南
  • A few basic changes in PyQt6 and PySide6 regarding shader-based OpenGL graphics
  • 身份认证与信息管理:简单实验模拟钓鱼网页
  • 深入解析:Android Studio新手开发第二十四天
  • LDO-实践篇(1)
  • IO 2024 Round 3(团体赛)Unofficial Mirror【游记】【题解】
  • linux ftp用户目录
  • 梦灯花op2 noctuary 歌词+翻译