- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法课件(二)归纳法
数学归纳法 5.1 引言 递归法 设A[1..n]是一个整数序列,如果A中的整数a出现的次数多于,那么a称为多数元素。 寻找多数元素的方法之一是蛮力测试,就是把每个元素和其他元素比较,并且对每个元素计数,如果某个元素的计数大于?n/2?,就可以判断它是多数元素;否则,序列中没有多数元素。这种方法比较次数是Θ(n2)。另一种比较有效的算法是对这些元素排序,并且计算每个元素在序列中出现多少次,这种方法最坏情况下代价是Θ (nlogn)。还有一种方法是寻找中间元素,并测试中间元素是否是多数元素。由于中间元素可以在Θ(n)时间内找到,这个方法要花费Θ(n)时间。这个算法的时间复杂性中隐藏的参数太大,且算法相当复杂。 用归纳法可以导出另外一个算法,这个算法的实质是基于下面的观察结论:在原序列中去除两个不同的元素后,在原序列中的多数元素在新序列中还是多数元素。 故在观察结论“如果知道如何求解规模为n-1的问题,那么任务就化为如何把解法扩展到规模为n的问题”的支持下,能得到多数元素的候选者。 过程:candidate(m) 1. j ← m; c=A[m]; count ← 1; 2. while jn and count0 3. j ←j+1 4. if(A[j]==c) then count ←count+1 5. else count ←count-1 6. end while 7. if(j==n)return c; 8. else return canditate(j+1); if((n1) || (m0)) return 0; if((n==1) ||(m==1)) return 1; if(nm) return q(n,n); if(n==m)?? return q(n,m-1)+1; return q(n,m-1)+q(n-m,m); * 就是先控制一个不动,让剩余的排列好,然后再移动第一个,再排列好剩余的 * else return canditate(j+1); //去掉两个不等的值,在后面区间寻找候选者 该问题的递归模型可用如下方式描述:已知a[m+1..k]中多数元素求解方法,则a[1..m]中多数元素的求解方法是:去掉若干个(2,4,6)不一样元素后,再组合a[m..k]中多数元素求解的结果。如果m=n,则为全部元素都是同一元素。 * 6??? 5 + 1??? 4 + 2, 4 + 1 + 1??? 3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1??? 2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1 + 1??? 1 + 1 + 1 + 1 + 1 + 1 (1) m n??? 在整数划分中实际上最大加数不能大于n,因此在这种情况可以等价为split(n, n);??? 可用程序表示为if(m n) return split(n, n);??? ??? (2) m = n??? 这种情况可用递归表示为split(n, m - 1) + 1,从以上例子中可以看出,就是最大加??? 数为6和小于6的划分之和??? 用程序表示为if(m == n) return (split(n, m - 1) + 1);??? (3) m n??? 这是最一般的情况,在划分的大多数时都是这种情况。??? 从上例可以看出,设m = 4,那split(6, 4)的值是最大加数小于4划分数和整数2的划分数的和。(这句话这么理解:小于4的划分数是所有最大加数为3、2、1的划分总数+最大加数为4(只能对2进行划分)的划分总数)??? 因此,split(n, m)可表示为split(n, m - 1) + split(n - m, m)??? * 5.17 用5.5节中叙述的Horner规则求下列多项式的值。 (a) 3x5+2x4+4x3+x2+2x+5 解: 3x5+2x4+4x3+x2+2x+5 =x(3x4+2x3+4x2+x+2)+5 =x(x(3x3+2x2+4x+1)+2)+5 =x(x(x(3x2+2x+4)+1)+2)+5 =x(x(x(x(3x+2)+4)+1)+2)+5 或 3x5+2x4+4x3+x2+2x+5 =(3x4+2x3+4x2+x+2)x+5 =((3x3+2x2+4x+1)x+2)x+5 =(x(x(3x2+2x+4)x+1)x+2)x+5 =((((3x+2)x+4)x+1)x+2)x+5 * 5.6 生成排列 5.6.1 第一种算法 我们可以用归纳法来生成n个数的排列,它基于这样的一个假设:可以生成n-1个数的所有排列。 生成数2,3,4, …,n的
您可能关注的文档
- 第四章根及根茎类生药22.ppt
- 第四章根及根茎类生药00.ppt
- 第四章沉淀法 - 2015年最新《生物物质分离与纯化技术》ppt课件.ppt
- 第四章_回复与再结晶1.ppt
- 第四章水环境影响评价1023选修2.ppt
- 第四章目标管理(MBO).ppt
- 第四章辐射式测温仪表、温度计的现场安装及使用(PPT-18).ppt
- 第四章钢尺量距与直线定向(PPT-44).ppt
- 第四章女装装饰设计及应用1课件.ppt
- 第四章根及根茎类生药11.ppt
- 历史的巨响 奋进的力量纪念我国第一颗原子弹爆炸成功60周年-热点速递“内容简介+素材集锦+时评+作文链接+范文”.docx
- 历史的巨响 奋进的力量:纪念我国第一颗原子弹爆炸成功60周年-热点速递“内容简介+素材集锦+时评+作文链接+范文”.docx
- 吉林省2016年中考文综试卷(解析版).doc
- 吉林省2016年中考文综试卷(解析版).doc
- 吉林省2016年度中考政 治试题(word版,含答案).doc
- 吉林省2016年中考政治试卷及答案【word版】.doc
- 2016年吉林省中考政治试题及答案解析.doc
- 吉林2016年初中毕业生学业考试.doc
- 竞聘技校数学老师演讲.docx
- 2016年吉林省中考政治试题解析.doc
文档评论(0)