算法分析总结讲述.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法分析总结讲述

递归与分治策略 2 1. 递归 2 2. 递归函数 2 3.阶乘函数 3 4. 斐波那契数列 3 5. 整数划分 3 6. 分治法 4 7. 大整数的乘法 5 8. 矩阵乘 6 9.合并排序 7 10. 棋盘覆盖 8 11.循环赛日程表 8 12.快速排序 9 13. 贪心算法 9 14. 贪心算法基本要素 9 15.活动安排问题 10 16.0-1背包问题与背包问题 11 0-1背包问题 11 0-1背包问题改进算法 11 17. 最优装载 11 18.单源最短路径 12 19. Dijkstra算法 13 20. 最小生成树 13 21.多机调度算法 17 22. 备忘录方法 17 24. 凸多边形最优三角剖分 18 25.长公共子序列 19 26.多边性游戏 20 27.二分搜索技术 21 递归与分治策略 递归 递归,就是在运行的过程中调用自己。 构成递归需具备的条件: 函数嵌套调用过程示例 1. 子问题须与原始问题为同样的事,且更为简单; 2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。 在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。 例如,下列为某人祖先的递归定义: 某人的双亲是他的祖先(基本情况)。某人祖先的双亲同样是某人的祖先(递归步骤)。斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21..... I[1]? 斐波纳契数列是典型的递归案例: 递归函数 递归方法——汉诺塔 3.阶乘函数 下面是求10的阶乘,你参考下: void main { int fn =1,i=1; int n = 10; //下面就是求10的阶乘 for(i=1;i=n;i++) { fn = fn * i; } printf(10的阶乘 是 %d,fn); } 斐波那契数列 即定义两个数字,后面的数字是前两个数字之和a1 = 1,a2 = 1,a3 = 2,...... an = an-1 +an-2(n=3) 斐波那契数列很有趣,每一个数都是整型数,可是它的通项公式却由无理数进行表达。斐波那契数列的通用表达是:第一个数和第二个数是1,从第三个数开始,每一个数都是它的前两个数的和。a1 = 1,a2 = 1,a3 = 2,...... an = an-1 +an-2(n=3),用C言代码可以实现第几个斐波那契数。 整数划分 ◎根据n和m的关系,考虑以下几种情况其中n为要划分的正整数,m是划分中的最大加数 1. 当n=1时,不论m的值为多少(m0),只有一种划分即{1}; 2. 当m=1时,不论n的值为多少,只有一种划分即n个1,{1,1,1,...,1}; 3. 当n=m时,根据划分中是否包含n,可以分为两种情况: ??? (1) 划分中包含n的情况,只有一个即{n}; ??? (2) 划分中不包含n的情况,这时划分中最大的数字也一定比n小,即n的所有(n-1)划分。因此 f(n,n) =1 + f(n,n-1); 4. 当nm时,由于划分中不可能出现负数,因此就相当于f(n,n); 5. 但nm时,根据划分中是否包含最大值m,可以分为两种情况: ??? (1) 划分中包含m的情况,即{m, {x1,x2,...xi}}, 其中{x1,x2,... xi} 的和为n-m,可能再次出现m,因此是(n-m)的m划分,因此这种划分个数为f(n-m, m); ??? (2) 划分中不包含m的情况,则划分中所有值都比m小,即n的(m-1)划分,个数为f(n,m-1);因此 f(n, m) = f(n-m, m)+f(n,m-1); ? 综合以上情况,我们可以看出,上面的结论具有递归定义特征,其中(1)和(2)属于回归条件,(3)和(4)属于特殊情况,将会转换为情况(5)。而情况(5)为通用情况,属于递推的方法,其本质主要是通过减小m以达到回归条件,从而解决问题。其递推表达式如下: f(n, m)= 1; (n=1 or m=1) f(n, m)=f(n, n); (nm) 1+ f(n, m-1); (n=m) f(n-m,m)+f(n,m-1); (nm) 分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性。 矩阵乘 分治策略将2个二阶矩阵采用下列方式来计算: 其中: 数一下,这样来计算2个二阶矩阵的乘法用了7次乘法,18次加法。而蛮力法用了8次乘法和4次加法。当然,这还不能体现出它的优越性,它的优越性表现在当矩阵的阶趋于无穷大时的渐进效率。 由上面的式子,根据矩阵的相关知识,对于分块矩阵,也可以写成上述形式

文档评论(0)

jiayou10 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档