【具体数学--读书笔记】1.1 The Power of Hanoi
这一节借助汉诺塔问题引入了"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的更多相关文章
- 3D数学读书笔记——3D中的方位与角位移
本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25339595 方位和角位移 ...
- 3D数学读书笔记——矩阵基础
本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031 矩 ...
- 3D数学读书笔记——四元数
本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25400659 什么是四元数 ...
- 3D数学读书笔记——矩阵基础番外篇之线性变换
本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...
- 3D数学读书笔记——向量运算及在c++上的实现
本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661 ...
- 3D数学读书笔记——多坐标系和向量基础
本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24662453 第一个知识点 ...
- 【具体数学 读书笔记】1.2 Lines in the Plane
本节介绍平面划分问题,即n条直线最多把一个平面划分为几个区域(region). 问题描述: "What is the maximum number Ln of regions defined ...
- 3D数学读书笔记——矩阵进阶
本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25242725 最终要学习矩阵 ...
- Modern Algebra 读书笔记
Modern Algebra 读书笔记 Introduction 本文是Introduction to Modern Algebra(David Joyce, Clark University)的读书 ...
随机推荐
- 百度地图LV1.5实践项目开发工具类bmap.util.jsV1.2
/** * 百度地图使用工具类-v1.5 * * @author boonya * @date 2013-7-7 * @address Chengdu,Sichuan,China * @email b ...
- Elasticsearch 安装与集群配置
一.软件版本 操作系统:CentOS-6.5-x86_64 ES版本:5.0 主机:192.168.63.246 主机: 192.168.63.242 二.部署环境规划: 1. 需求:jdk版本: ...
- 【转】C/C++程序员应聘常见面试题深入剖析
1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵.文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见. 许多面试题看似简单,却需要深厚的基 ...
- Hive的UDF实现及注意事项
Hive自身查询语言HQL能完毕大部分的功能,但遇到特殊需求时,须要自己写UDF实现.下面是一个完整的案例. 1.eclipse中编写UDF ①项目中增加hive的lib下的全部jar包和Hadoop ...
- 提交App,请求Apple加急审核
转载自:http://blog.csdn.net/showhilllee/article/details/19541493 提交完毕后进入加急审核页面. 链接:https://developer.ap ...
- mysql1主多从配置
mysql一主多从的配置: 其实1主多从的配置与一主一从配置非常相似,现在主要讲讲一主多从的大概配置方法. 一, 1,master端开启binlog日志,并且设置server id=1. 2.重启服务 ...
- JS Encoding and Decoding
//charator Str to Hex function strToHex(str) { var rs = ""; for (var i = 0; i < str.len ...
- Android中进程生命周期的优先级
“我们不是生产者,我只是大自然的搬运工.” 学习Android最好的途径当然是强大的官方文档了,其中在Processes and Threads一节中对于进程生命周期淘汰优先级,有着详细的介绍.原文如 ...
- Android 自动更新 + IIS7 添加APK mime
如果APK文件放在IIS下面需要添加APK的mime,否则会出现下面错误 可以在IIS上添加mime映射 .apk application/vnd.android 下面内容转自:http://ww ...
- 使用Zbar实现简单的二维码扫描
导入ZBarSDK导入系统库 AVFoundation.framework,CoreMedia.framework,CoreVideo.framework,QuartzCore.framework,l ...