- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
普及层次第三讲递归递推分治研讨
[算法分析] 利用递推公式进行求解,因为N 不大于100,因此定义数组时10个下标变量就足够了。 为了避免反复过程调用,我们采用以下主要步骤: 1、先利用双重循环将10以内的方案数计算后,存放在数组A中; 2、输入N; 3、在一重循环中,利用公式直接求和。 4、输出方案数K。 [程序清单] 略 [运行数据及测试结果] 递归与分治基本原理 递推与递归 递归与递推表面看来是相逆的过程,其实也是相似的,最终的计算都是从小算到大。 递推的使用环境要求高导致了递推的高效性,递推没有重复计算什么数据,保持了高效。 递归大多数会重复计算子问题,导致时间浪费,所以一般不要使用过深的递归,甚至会空间溢出。 棋盘覆盖问题 还可以将棋盘覆盖推广到一般情况: 大数的运算 加法 减法 乘法 100! 93 326215 443944 152681 699263 856266 700490 715968 264381 621468 592963 895217 599993 229915 608914 463976 156578 286253 697920 827223 758251 185210 916864 000000 000000 000000 000000 除法 …… 大整数的乘法 问题描述: 设X和Y都是n位的二进制整数,请设计一个有效的算法,可以进行两个n位大整数的乘法运算。 分析: 1.小学的方法:O n2 效率太低 大整数的乘法 2.可以用分治法的原理设计一个更有效的算法。 将n位的二进制整数分为2段: 大整数的乘法 效率: 4次n/2位整数乘法 AC, AD,BC, BD ; 3次不超过n位整数加法; 2次移位 分别对应乘以2n和2n/2 所有加法和移位共用O n 步计算。 改进:把 1 式稍作修改: XY AC2n + A-B D-C +AC+BD 2n/2 + BD 2 效率: 3次n/2位整数乘法 AC, BD, A-B D-C ; 6次不超过n位整数加、减法和2次移位; begin //两个n位整数相乘 伪代码 X abs X ; Y abs Y ; if n 1 return S*X*Y ; else begin A: X的左边n/2位; B: X的右边n/2位; C: Y的左边n/2位; D: Y的右边n/2位; m1: Mult A, C, n/2 ; m2: Mult A-B, D-C, n/2 ; m3: Mult B, D, n/2 ; S: S* m1* 2n + m1+m2+m3 *2n/2+m3 ; return S; end;End; 大整数的乘法 分析 传统的方法:O n2 ?效率太低 分治法: O n1.59 ü较大的改进 更快的方法? 对于大整数乘法,它能在O nlogn 时间内解决。 是否能找到线性时间的算法? 目前为止还没有结果 。 循环赛日程表 例如: 循环赛日程表 分析: 法1:分治策略 按分治策略,将所有的选手分为两半,n个选手的比赛日程表就可以通过为n/2个选手设计的比赛日程表来决定。 递归地用对选手进行分割,直到只剩下2个选手时,比赛日程表的制定就变得很简单。这时只要让这2个选手进行比赛就可以了。 循环赛日程表 分析 法2:递推法 迭代法 循环赛日程表 递推法 迭代法 即2k个选手的比赛日程在2k-1个选手的比赛日程基础上通过迭代完成,每次迭代,将问题分为4个部分: 左上角: 2k-1个选手前半程的比赛日程 左下角:另2k-1个选手前半程的比赛日程,由左上角加2k-1得到 右上角:将左下角抄到右上角,得到另2k-1个选手后半程的比赛日程。 右下角:将左上角抄到右下角,得到2k-1个选手后半程的比赛日程。 谢 谢! 8 8 7 7 8 6 6 7 5 4 4 6 5 5 4 3 2 1 1 3 3 2 2 1 12 11 11 10 9 9 12 12 11 10 10 9 8 7 7 6 5 5 8 8 7 6 6 5 4 3 3 2 1 1 4 4 3 2 2 1 1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 × 1 1 0 1 A n/2位 B n/2位 C n/2位 D n/2位 X Y 则: X A2n/2+B(乘2n/2,相当于左移n/2位) Y C2n/2+D 于是: XY A2n/2+B C2n/2+D AC2n + AD+BC 2n/2 + BD 1 时间复杂性分析 T n O n2 ?没有改进 时间复杂性分析 T n O nlog3 O n1.59 ü较
您可能关注的文档
最近下载
- 反渗透系统操作维护技术手册1.pdf VIP
- 智慧物流园区可视化综合管控平台建设方案.pptx VIP
- 4.3 去括号(课件)青岛版(2024)数学七年级上册.pptx VIP
- DB3502Z 5009-2018-海绵城市建设技术标准图集.pdf VIP
- 上海市闵行区2024年六年级《语文》上册期中试题与参考答案.docx VIP
- 风力发电机组电气安装作业指导书.docx VIP
- 安全文明施工承诺书.docx VIP
- 构建和谐的亲子关系主题班会PPT课件.pptx VIP
- 国际人才流动与治理报告——以美国为枢纽的分析2024.docx VIP
- 勿忘国耻,珍爱和平--国家公祭日主题班会课件.pptx
文档评论(0)