- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南开大学计算机算法设计以及和分析.ppt
W(n)称为算法A的最坏情形( Worst Case )时间复杂度。 类似的,还可以定义最好情形( Best Case)时间复杂度, B(n) = MIN { t(I) }---最好与最坏复杂度有何用,何时用? I∈Dn 平均复杂度何时用 1.4.5 平均情形和算法的期望复杂度 设算法A的输入为I∈Dn的概率为P(I),则 其中P(I)满足 为实例输入I出现的概率, t(I)为算法A完成实例I的耗费值(即基本操作次数)。 期望复杂度比最坏情形复杂度更好的刻画了算法的性能,但是,由于Dn一般很大,P(I)和t(I)较难计算,因此,平均情形的复杂度分析比较难。例如: 在数组L[1,…,n]中搜索,求使L[j] = X的位置j。 算法1.5 顺序搜索算法 SeqSearch 因为L[1,…,n]长度为n,不同的输入实例由X的值决定,实例集Dn由下列实例组成: (1) X在L中,共有n种情况:I1, …, In ,Ii表示X = L[i] ( i = 1,…,n ); (2) X不在L中,这时X有许多可能值,把它们统记为In+1 。 因为当 X = L[k] 时,t(Ik) = k,( k = 1,…,n),X不在L中时,t(In+1) = n。 这时W(n)容易计算: W(n) = MAX { t(Ik) | k = 1, 2, …, n, n+1 } = n 。 但计算A(n)则应首先设定I在Dn中的分布: 设X在L中的概率为q,故X不在L中的概率为 1 - q,假定X在L中,它等于L的n个元素是等可能的,即P(Ik) = Pk = q / n , ( k = 1,…,n ), P(In+1) = Pn+1 = 1 - q , 当q = 1,即已知X在L中,A(n) = (n+1)/2,q = 1/2,即X有一半可能在L中,A(n) = 3n/4 + 1/4。也就是说,在上面的假设条件下,我们的顺序搜索的平均代价大约是n/2次比较和3n/4次比较。 1.4.6 复杂度函数的表示 各种复杂度函数的表示方法大致可按表达的精确程度分为下面的三个等级: (何种情况下用相应的复杂度函数) 1.解析表达式。 用解析表达式刻画复杂度函数是最精确的表达方式。例如 ·求n元中之最大元算法MaxElement的复杂度为 T(n) = W(n) = A(n) = n – 1 。 ·顺序搜索算法的最坏情形时间复杂度为 W(n) = n ; 在指定分布条件及 q = 1情形下的期望时间复杂度为 A(n) = ( n + 1)/2 。 2.阶(Order)表达式。 为了简化算法复杂度分析的方法,往往只需计算当问题规模较大时算法的渐进复杂度的阶。 定义1.1 称(复杂度)函数T(n)是O(f(n))的,即 T(n) = O(f(n)),如果存在常数c 0与n0 ,当n n0 时有T(n)≤cf(n) 。例如: T1(n) = (n + 1) / 2 = O(n) , T2(n) = 3n2 + 4n + 5 = O(n2) 定义1.2 称(复杂度)函数T(n)是Ω(f(n))的,即 T(n) = Ω(f(n)),如果存在常数c 0与n0 ,当n n0 时有T(n) ≥cf(n) 。 例如: T1(n) = (n + 1) / 2 = Ω(n) , T2(n) = 3n2 + 4n + 5 = Ω(n2) 定义1.3 称(复杂度)函数T(n)是θ(f(n))的, 即T(n) = θ(f(n)),如果存在常数c1, c2 0与n0 ,当n n0 时有c1f(n)≥T(n)≥c2f(n) 。 例如: T1(n) = (n + 1) / 2 = θ(n) , T2(n) = 3n2 + 4n + 5 = θ(n2) 显然,如果T(n) = O(f(n))且T(n) = Ω(f(n)), 则T(n) = θ(f(n)) 。 3.多项式函数和指数函数。 多项式函数指T(n)为自变量n的多项式函数,例如T1(n)=n/2+1/2,T2(n)=3n2+4n+5等。 而指数函数如T3(n) = 2n + 5,T4(n) = 3n/2 – 8等等,自变量n出现在指数部分。这两类函数都是单增函数,但指数函数的增长速度要比多项式函数快得多。三种复杂度指标由细至粗, 对于一个新问题首先可用最后一种(是否为多项式) 1.5 算法的研究与Moore定律 摩尔(Moore)定律:计算机处理器的运算速度每十八个月要翻一番。
文档评论(0)