最新信息学奥林匹克竞赛辅导课件-归纳策略
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分析:设hn为n个盘子从a柱移到c柱所需移动的盘次。 显然,
( 2 ) Hanoi 塔问题
Hanoi塔由n个大小不同的圆盘和三根木柱a, b, c 组成。 开始时,这n个圆盘由大到小依次套在 a柱上,如图所 示。
要求把a柱上n个圆盘按下述规则移到c柱上: 1.一次只能移一个圆盘; 2.圆盘只能在三个柱上存放; 3.在移动过程中,不允许大盘压小盘。
问将这n个盘子从a柱移动到c柱上,总计需要移动多少 个盘次?
所以 Fx=Fx-1+Fx-2 边界条件: F0=0, F1=1 由上面的递推关系可依次得到:
F2=F1+F0=1,F3= F2+F1=2,F4=F3+F2=3 ,…, Fibonacci 数列常出现在比较简单的组合计数问题中,例
如【例9】极值问题、【例10】取石子问题、【例13】 蜜蜂爬行等问题都可以用这种方法来解决。
2.递推关系的建立
递推关系中存在着三大基本问题: 如何建立递推关系, 已给出的递推关系有何性质, 以及如何求解递推关系。 其中核心问题是如何建立递推关系。
建立递推关系的关键在于寻找第n项与前面 (或后面)几项的关系式,以及初始项的值(或最 终结果值)。它不是一种抽象的概念,而是针对某 一具体题目或一类题目而言的。
信息学奥林匹克竞赛辅导课件归纳策略
归纳法要比搜索的方法(例如以后将讲解 的枚举法、回溯法等)更能反映问题的本质。 但是并不是所有实际问题都可以总结归纳出 一般规律,即便是可以,归纳也不是一件容 易的事情,尤其要归纳出一个数学模型更为 困难。而且归纳过程通常没有一定的规则可 供遵循。从本质上讲,归纳就是通过观察一 些简单而特殊的情况,最后总结出有用的结 论或解决问题的有效途径。
有雌雄一对兔子,假定过两个月便可繁殖雌雄各一 的一对小兔子。问过n个月后共有多少对兔子? 分析:设满X月共有兔子Fx对,其中当月新生的兔子数目 为Nx对。第x-1个月留下的兔子数设为Ox 对。则:
Fx=Nx+Ox 而Ox=Fx-1
Nx=Ox-1=Fx-2(即第x-2个月的所有兔子到第x个月都有 繁殖能力了)
1.递推关系的定义和求解方法
有一类试题,每相邻两项数之间的变化有一定的规律 性,我们可将这种规律归纳成如下简捷的递推关系式:
fn=g(fn-1)或者fn-1=g’(fn) 这样就在数的序列中,建立起后项和前项之间的关 系。然后从初始条件(或最终结果)入手,一步步地按递 推关系式递推,直至求出最终结果(或初始值)。很多程 序就是按这样的方法逐步求解的。如果对一个试题,我 们要是能找到后一项数与前一项数的关系并清楚其起始 条件(或最终结果),问题就比较容易解决,让计算机 一步步计算就是了。让高速的计算机从事这种重复运算, 可真正起到“物尽其用”的效果。
for(i=2; i<=n;i++) fi=g(fi-1); //从边界条件f1出发进行顺推 推出顺推结果fn; }
由此可见,递推算法的时间复杂度一般为W(n)。 我们之所以将递推法划入归纳策略,是因为初始条件 (或最终结果)除试题己明确给定外,都是通过对问 题的整理与化简而确定的,其递推式也是对实际问题 的分析与归纳而得到的,因此递推本质上属于归纳。
一、递推法
瞬息变幻的世界,每一件事物都在随时间的流逝 发生着微妙的变化。而在这纷繁的变幻中,许多现象 的变化是有规律的,这种规律往往呈现出前因和后果 的关系。即某种现象的变化结果与紧靠它前面变化的 一个或一些结果紧密关联。所谓“三岁看老”,说的 就是这个道理。这一道理也正体现了递推的思想。递 推关系几乎在所有的数学分支中都有重要作用,在联 赛中更因其简捷高效而显示出独特的魅力。
下面,我们对五种典型的递推关系的建立作比 较深入具体的讨论。递推程序一般是将递推公式 “直译”成一重循环,模式性很强。
( 1 ) Fibonacci 数列
Fibonacci数列的代表问题是由意大利著名数学家 Fibonacci于1202年提出的“兔子繁殖问题”(又称 “Fibonacci问题”):
一般分析思路:
if (求解初始条件f1)
//倒推
{ 由题意(或递推关系)确定最终结果fn;
求出倒推关系式fi-1=g’(fi);
for(i=n; i>=2;i--) fi-1=g’(fi);
//从最终结果fn进行倒推
推出倒推结果f1;
}
else
//顺推
{ 由题意(或递推关系)确定初始值f1(边界条件); 求出顺推关系式 fi=g(fi-1);
递推分倒推法和顺推法两种形式:
顺推法就是由边界条件出发,通过递推关系式推 出后项值,再由后项值按递推关系式推出再后项值, 依次递推,直到从问题初始陈述向前推进到这个问题 的解为止。
倒推法就是在不知初始值的情况下,经推理而获 知问题的最终解或目标,再倒过来,推知它的初始条 件。因为这种问题的运算过程是一一映射的,故可分 析其倒推公式。然后再从最终解或目标出发,采用倒 推手段,一步步地倒推到这个问题的初始陈述。
问题经过分析归纳后,一般产生 四种结果:
(1) 递推式 (2) 递归式 (3) 制定目标 (4) 贪心方案
当然,经过分析直接概括出高度抽象的数学公式 亦是一种归纳过程、一种解题的途径。但是怎样进行这 种归纳,这个问题太宽泛,与其说它是计算机算法的策 略,还不如说它是一种数学知识和数学能力,取决于解 题者本身的数学功底。我们已经在“对应策略”一节中, 对如何将试题与数学公式对应的问题作了一些讨论,这 里不再赘述。
通常,归纳的过程分四个步骤:
(1) 细心的观察 (2) 丰富的联想 (3) 继续尝试 (4) 总结归纳出结论
归纳是一种抽象,即从特殊现象中找出一般关 系。但在归纳过程中不可能列举所有情况,因而最后 得出的结论还只是一种猜测(即归纳假设)。通过精 心观察而提出的归纳假设得不到证实或最后证明是错 的,也是常有的事。因此要尽可能对归纳假设加以严 格的证明,证明的方法通常使用数学归纳法。即便找 不到证明方法,也必须尽可能多地提出那些容易出错 和疏漏的边界情况加以验证,使ቤተ መጻሕፍቲ ባይዱ纳出的结论和解决 问题的途径经得起各种测试数据的检验。