算法的五个重要特征.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文档。上传文档
查看更多
算法的五个重要特征

算法的五个重要的特征:确定性、能行性、输入、输出、有穷性/有限性。 表示算法的语言主要有:自然语言、流程图、盒图、PAD图、伪代码、计算机程序设计语言 算法分析有两个阶段:事前分析和时候测试。 衡量算法有几个方面:时间和空间。。。 渐进意义下的符号的意义: 记:算法的计算时间为f n , 数量级限界函数为g n ,其中, n是输入或输出规模的某种测度。 f n 表示算法的“实际”执行时间—与机器及语言有关。 g n 是形式简单的函数,如nm,logn,2n,n!等。是事前分析中通过对计算时间或频率计数统计分析所得的与机器及语言无关的函数。 以下给出算法执行时间:上界(О)、下界(Ω)、“平均”( )的定义。 定义1.1 如果存在两个正常数c和N0,对于所有的N≥N0,有|f N |≤C|g N |,则记作:f N O g N 。 1 当说一个算法具有O g n 的计算时间时,指的就是如果此算法用n值不变的同一类数据在某台机器上运行时,所用的时间总是小于g n 的一个常数倍。 2 g n 是计算时间f n 的一个上界函数,f n 的数量级就是g n 。 Eg : 因为对所有的N≥1有3N≤4N,所以有3N O N ; 因为当N≥1时有N+1024≤1025N,所以有N+1024 O N ; 因为当N≥10时有2N2+11N-10≤3N2,所以有 2N2+11N-10 O N2 因为对所有N≥1有N2≤N3,我们有N2 O N3 作为一个反例N3≠O N2 ,因为若不然,则存在正的常数C和自然数N0,使得当N≥N0,有N3≤CN2,即N≤C。显然,当取N max N0,C+1 时这个不等式不成立,所以N3≠O N2 多项式定理: 定理1.1 若A n amnm+…+a1n+a0是一个m次多项式,则有A n Ο nm 即:变量n的固定阶数为m的任一多项式,与此多项式的最高阶nm同阶。 证明:取n0 1,当n≥n0时,有 |A n |≤|am|nm+…+|a1|n+|a0| ≤ |am|+|am-1|/n+…+|a0|/nm nm ≤ |am|+|am-1|+…+|a0| nm 令c |am|+|am-1|+…+|a0| 定理得证。 符号O运算性质: f,g为定义在正数集上的正函数 (1)O f +O g O max f,g (2)O f +O g O f+g (3)O f O g O fg (4)如果g N O f N ,则O f +O g O f (5)O Cf N O f N ,其中C是一正常数。 (6)f O f 定理1.2 如果f n am nm+.+a1n+a0 且am 0,则f n ? nm 。 该定义的优点是与O的定义对称,缺点是f N 对自然数的不同无穷子集有不同的表达式,且有不同的阶时,不能很好地刻画出f N 的下界。比如当 100 N为正偶数 f N 6N2 N为正奇数 按照定义,得到f N ? 1 ,这是个平凡的下界,对算法分析没有什么价值。 “平均情况”限界函数 定义1.3 如果存在正常数c1,c2和n0,对于所有的n≥n0,有c1|g N | ≤|f N | ≤ c2|g N | 则记作 f N g, N 含义: 算法在最好和最坏情况下的计算时间就一个常数因子范围内而言是相同的。可看作:既有f N Ω g N ,又有f N Ο g N 【例1.8】循环次数直接依赖规模n-变量计数之一。 1 x 0;y 0; 2 for k 1;k n;k++ 3 x++; 4 for i 1;i n;i++ 5 for j 1;j n;j++ 6 y++; 该算法段的时间复杂度为T n Ο n2 。 当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f n 决定的。 【例1.9】循环次数间接依赖规模n-变量计数之二。 1 x 1; 2 for i 1;i n;i++ 3 for j 1;j i;j++ 4 for k 1;k j;k++ 5 x++; 该算法段中频度最大的语句是 5 ,从内层循环向外层分析语句 5 的执行次数:算法段的时间复杂度为:T n O n3/6+低次项 O n 。 b.算法的时间复杂度与输入实例的初始状态有关。 这类算法的时间复杂度的分析比较复杂,一般分最好情况(处理最少的情况 ,最坏情况 处理最多的情况 和平均情况分别进行讨论。 【例1.10】在数值A[0..n-1]中查找给定值K: 1 i n-1; 2 while i 0 and A[i] k 3 i i-1; 4

文档评论(0)

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

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

1亿VIP精品文档

相关文档