- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机算法设计与分析 算法渐近复杂性 设T(N)是算法A的复杂性函数,一般满足:当 N?+? , T(N) ?+?,即 对于T(N),若存在t(N),使得当N?+?, [T(N) - t(N) ]/T(N) ?0 ,那么就说t(N)是T(N)的渐近性态,或称为算法A的渐近复杂性。 在数学上, t(N)是T(N)的渐近表达式,是T(N)略去低阶项留下的主项。例如, t(N)比T(N) 简单。 * * 1.2.2 渐近符号 算法复杂性在渐近意义下的阶: 渐近意义下的记号:O、Ω、θ、o 设f(N)和g(N)是定义在正数集上的正函数。 O的定义:如果存在正的常数C和自然数N0,使得当N?N0时有f(N)?Cg(N),则称函数f(N)当N充分大时有上界,且g(N)是它的一个上界,记为f(N)=O(g(N))。即f(N)的阶不高于g(N)的阶。 例如: (1)由于对所有的N?1有3N?4N,则3N=O(N) (2)由于对所有的N?1有N+1024?1025N,则N+1024=O(N) (3)由于对所有的N?1有N2? N3 ,则N2=O(N3) (4)由于对所有的N?10有2N2+11N-10?3N2,则2N2+11N-10 =O(N2) * 1.2.2 渐近符号 根据O的定义,容易证明它有如下运算规则: (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.2 渐近符号 Ω的定义:如果存在正的常数C和自然数N0,使得当N?N0时有f(N)?Cg(N),则称函数f(N)当N充分大时下有界,且g(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)同阶。 o的定义:对于任意给定的ε>0,都存在正整数N0,使得当N?N0时有f(N)/g(N)?ε,则称函数f(N)当N充分大时的阶比g(N)低,记为f(N)=o(g(N))。 例如,4NlogN+7=o(3N2+4NlogN+7)。 计算机算法设计与分析 主讲人:袁运浩 E-mail: yhyuan@jiangnan.edu.cn 计算机科学与技术系 江南大学物联网工程学院 课时数:48节 上课:1-16周 成绩:卷面成绩(70%)+平时成绩(30%) 教材:计算机算法设计与分析, 王晓东,电子工业出版社, 2012 参考书: (1) 算法设计与分析, 郑宗汉, 郑晓明, 清华大学出版社 (2) 算法导论, Thomas H. Cormen编著. 潘金贵等译, 机械工业出版社 * 主要内容介绍 第1章 算法概述 第2章 递归与分治策略 第3章 动态规划 第4章 贪心算法 第5章 回溯法 第6章 分支限界法 * 意念与现实(1): 一个例子 给你一个无限容积的罐子和无限个球,球从1开始连续编号 ★ 在差1分钟到零点时:将标号为1~10的10个球放进罐子,然后将10号球从罐子里拿出。 ★ 在差1/2分钟到零点时:将标号为11~20的10个球放进罐子,然后将20号球从罐子里拿出。 ★ 在差1/4分钟到零点时:将标号为21~30的10个球放进罐子,然后将30号球从罐子里拿出。 ★ …… 就这样将游戏进行下去。假定放球和取球不占时间,请问,当时钟指向零点时,罐子里还剩多少个球? * 意念与现实(2): 一个例子 这个答案很直接:无穷多个球!所有编号不是10n(n≥1)的球在放进罐子里后就不会再拿出来;而在到达零点之前这种放球、取球的次数是无限的。因此,罐子里面的球在零点时将是无数个。 你很确信这个答案吗? 现在来让我们改变拿球的方式,将每次拿10、20、30…号球分别变为拿1、2、3…号球,即第x次拿球,所拿出来的球的编号是x。结果又会怎样呢? 这个时候,神奇的事情发生了。这个罐子里面的球数将为0。 对于任意一个球,设其编号为n,则在差(1/2)n-1分钟到零点时该球将被取出。也就是说,对于任意球n,在零点时它都不在罐子里。因此,零点时罐子里球的个数为0。 * 意念与现实(3): 一个例子 对于有些人来说,这个答案似乎不可接受。但又确实找不到驳斥的办
文档评论(0)