网站大量收购独家精品文档,联系QQ:2885784924

计算复杂性和算法分析.PPT

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算复杂性和算法分析

* * * * * * * * * * * * * * * * * * * * * * * 复杂性的渐近行为及其阶 例:估计下面二重循环的最坏时间复杂性的阶 for(i = 1; i N; i++) for(j = 1; j i; j++) s1; s2; s3; s4; 其中sk(k =1, 2, 3, 4)都是赋值语句 外循环执行N次,需时间 (5a +t) ? N(N+1)/2 + (a +t) ? N 因此上界为O(N2) 这是规模充分大时的上界 这个上界的阶越低,则评估就越精确,结果就越有价值 * 复杂性的渐近行为及其阶 关于记号O(g(N))的讨论 当讨论复杂算法上界时,很希望上界记号O(g(N)) 能参与到复杂性计算中 例如,上例内循环的上界O(i),则累加起来便是外循环的时间复杂性 T(N) = ?O(i) = O(?i) = O(N(N+1)/2) = O(N2) 若希望如此,则需要有一些演算规则,并证明其正确性 i=1 n i=1 n * 复杂性的渐近行为及其阶 关于记号O(g(N))的讨论 记号O的运算规则(某书给出) O(f(N)) + O(g(N)) = O(max(f(N), g(N))) O(f(N)) + O(g(N)) = O(f(N) + g(N)) O(f(N)) ? O(g(N)) = O(f(N) ? g(N)) … … 问题:在O(…)未定义时,等号左边+和?的含义? f(N), 若f(N) ? g(N) 其中max(f(N) , g(N)) = g(N), 若f(N) g(N) * 复杂性的渐近行为及其阶 关于记号O(g(N))的讨论 一种解释(另一本书给出):O(g(N)) = { f(N) | ?C 0.?N0 0.?N ?N0. 0 ? f(N) ? Cg(N) } 符号O(g(N)) 在此给出了明确的数学意义 写f(N) ? O(g(N))容易理解( 而不是f(N) = O(g(N)) ) 但解释O(f(N)) + O(g(N)) 和O(f(N)) ? O(g(N))中的+和?(尤其是 ?)仍然有困难 导致各书仍继续使用f(N) = O(g(N))记号,使得读者难理解 * 复杂性的渐近行为及其阶 其他渐近意义下的记号 下界记号? 若f 和g是正整数集上的正函数,若存在大于0的常 数C和自然数N0,使得N ? N0时有f(N) ? Cg(N), 则 称:在N充分大时,Cg(N)是函数f(N)的一个下界,记为f(N) =? (g(N)),并简称f(N)不小于g(N)的阶 记号? f(N) =?(g(N)) ? f(N) = O(g(N)) ? f(N) =?(g(N)) 此时称f(N)和g(N)同阶 还有其他记号 * 复杂性的渐近行为及其阶 算法与渐近时间复杂性的关系 算法 渐近复杂 在C1上可 在C2上可 N1和N2的关系 性T(N) 解规模N1 解规模N2 ? 方程Ti(N2i)=10Ti(N1i)是求解N2i和N1i之间的关系 ? 等式Ti(N2i)=10Ti(N1i)的含义是:第i个算法在C1上运行10倍于C2上运行的时间,则等号两边效果一样 同一问题六个算法, 在C1和C2上运行, C2的速度是C1 10倍. 从Ti(N2i)=10Ti(N1i)(i =1, …, 6)解出关系式 * 复杂性的渐近行为及其阶 算法与渐近时间复杂性的关系 算法 渐近复杂 在C1上可 在C2上可 N1和N2的关系 性T(N) 解规模N1 解规模N2 A1 N N11 N21 N21 = 10N11 A2 NlogN N12 N22 N22 ? 10N12 A3 N2 N13 N23 N23 = 10N13 A4 N3 N14 N24 N24 = 10N14 A5 2N N15 N25 N25 = N15+ log10 A6 N! N16 N26 N26=N16+小的常数 同一问题六个算法, 在C1和C2上运行, C2的速度是C1 10倍. 从Ti(N2i)=10Ti(N1i)(i =1, …, 6)解出关系式见上表 3 * 复杂性的渐近行为及其阶 复杂性渐近分析的重要

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档