这一节借助汉诺塔问题引入了"Reccurent Problems"。

(Reccurence, 在这里解释为“the solution to each problem depends on the solutions to smaller instances of the same problem”. 即由相同的规模更小的问题的到原问题的解)

Hanoi问题描述:

  "given a tower of eight disks, initially stacked in decreasing size on peg A.

  Our task: transfer the entire tower to tower C, moving only one disk at a time and never mobing a larger one onto a smaller.

  Question: How many moves are necessary and sufficient to perform the task?"

作者按照如下步骤分析求出n层汉诺塔的最少移动次数的通项公式:

1. generalize:最初是法国数学家Edouard Lucas提出的8层汉诺塔玩具,后来Lucas又创造了一个64层汉诺塔的故事。这里我们把汉诺塔的层数泛化为n

2. introduce appropriate notation, name and conquer:引入记号Tn表示n层的汉诺塔问题的最少移动次数

3. look at small cases:易知T1=1, T2=3, T3 = 7

4. find and prove a reccurence relation:找到并证明递推关系

(1) find a sufficient solution: 找到一个充分(可行)的解;

  具体地,将求解small cases的方法推广,把除最底层以外的前n-1层看成一个整体,得到一个可行的方案Tn-1 + 1 + Tn-1,由此可得Tn <= 2*Tn-1 + 1

(2) prove it necessary: 证明它的必要性;

  具体地,分析移动过程,移动最底层盘子之前,至少已花费Tn-1步将前n-1层移至辅助桩;最底层盘子就位后,同样至少要花费Tn-1将前n-1层从辅助桩移到目标桩,由此可得Tn >= 2*Tn-1 + 1

(3) yeild recurrence relation:v由(1)(2)得到等式,加上对平凡(trivial)情况的约定,构成如下递推关系

  T0 = 0  

  Tn = 2*Tn-1 + 1

注:递推关系给出的是"indirect, local information",已知局部的一个值可以方便地求出邻近的值,好比链表

5. find and prove a closed form expression: 找到并证明通项式

(1) 方法一:列出small cases观察 -> 猜一个式子 -> 用数学归纳法(mathematical induction)验证

(2) 方法二:直接从递推式推导:

1) add 1 to both sides of the equations:把右侧化成和左侧类似的形式

   T0 + 1= 1

   Tn + 1= 2*Tn-1 + 2 = 2*(Tn-1 + 1)

2) let Un = Tn + 1, we have 引入另一个记号,换元

  U0 = 1

  Un = 2*Un

由此构造出等比数列Un, 首项为1,公比为2,所以通项Un = U0*2^n = 2^n

3) 带回T, 得到通项公式Tn = Un - 1 = 2^n - 1

作者说这本书主要关注讨论的就是类似第5步方法二的方法,通过推导,而不是“猜测+验证”的方式来由递推式得到通项式

"to explain how a person can solve recurrences without being clairvoyant."

【具体数学--读书笔记】1.1 The Power of Hanoi相关推荐

  1. 3D数学读书笔记——3D中的方位与角位移

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25339595 方位和角位移 ...

  2. 3D数学读书笔记——笛卡尔坐标系统

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215 1.3D数学 ...

  3. 3D数学读书笔记——向量运算及在c++上的实现

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661 开始之前:接 ...

  4. 3D数学读书笔记——矩阵基础番外篇之线性变换

    本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...

  5. 程序员的数学读书笔记(全)

    https://www.jianshu.com/p/28a8e58f37aa 第1章 0的故事 计数法分为按位计数法和罗马计数法 按位计数法常用的有2进制.8进制.10进制.16进制等几种. 理论上多 ...

  6. 3D数学读书笔记——矩阵进阶

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25242725 最终要学习矩阵 ...

  7. Maltab在数学建模中的应用(第二版)——读书笔记上

    Maltab在数学建模中的应用(第二版)--读书笔记上 1.MATLAB与数据文件的交互 1.1数据拟合 1.2数据拟合实例 1.3数据可视化 1.4层次分析法 2.规划问题的MATLAB求解(多约束 ...

  8. 度量相似性数学建模_数学之美读书笔记

    2020年6月读,先通读一遍,随后为写读书笔记又重新读了一遍,收获颇丰,虽然没有很多数学或者编程方面的知识,但正如作者所说,这本书讲述的是道,而非术. 读这本书让我领略到了科学的趣味,并不是枯燥的敲代 ...

  9. 《数学之美》-吴军 读书笔记

    从吴军的<数学之美>找到了伽莫夫的<从一到无穷大>,前段时间先整理了<从一到无穷大>的笔记.现在整理下<数学之美>以巩固下. 近段时间AlfaGo 与人 ...

最新文章

  1. github上好的c语言项目,2019 github热门项目
  2. python 拾遗(一)
  3. Silverlight 里如何实现隐式样式,ImplicitStyleManager 的实现思想
  4. python注入点查找_sqlmap常用注入点检测爆破命令
  5. 串口与modem流量控制大全(2)
  6. 如何使用ListView实现一个带有网络请求,解析,分页,缓存的公共的List页面来大大的提高工作效率
  7. C/C++ SQLite 之基础篇
  8. java中Executor、ExecutorService、ThreadPoolExecutor介绍(转)
  9. WINDOWS下主机名找IP IP找主机名
  10. 递归算法经典实例python-Python递归算法详解
  11. 计算机毕业论文答辩教师评语,毕业论文答辩教师评语
  12. 3. Git与TortoiseGit基本操作
  13. GitHub 近两万 Star,无需编码,可一键生成前后端代码
  14. 外包两年,进了字节后才明白为什么所有人都想进字节,区别真的太大了
  15. 微信公众号发布svg排版文章
  16. python编写五子棋小游戏 (电脑自走棋)
  17. 人工智能芯片研究报告
  18. 2018宾汉姆顿大学计算机排名,2020年宾汉姆顿大学QS世界排名
  19. OneFlow 如何做静态图的算子对齐任务
  20. 百度人脸识别sdk图片转码的问题

热门文章

  1. Git Bash中npm配置,加速下载等作用
  2. linux sftp密码错误,linux个别用户sftp坏掉,验证密码后卡住, 大概是什么问题?...
  3. xcode开发html5工具,5个Xcode开发调试技巧
  4. 安卓开发 登录用户信息缓存_在Linux上使用finger命令查询登录用户信息
  5. PLSQL 循环游标 cursor loop fetch into
  6. 互联网晚报 | 04月05日 星期二 |​ ​​​考研调剂系统明日开通;微软Edge浏览器宣布10天后退出历史舞台...
  7. 关于产品经理,常见的这六个误区,你中招了几个?
  8. 2021快手短剧数据报告
  9. OKR和KPI的区别是啥?
  10. package和import