大二下-算法设计分析_第1页
大二下-算法设计分析_第2页
大二下-算法设计分析_第3页
大二下-算法设计分析_第4页
大二下-算法设计分析_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本讲内容2计算复杂性函数的阶和式的估计与界限递归方程3增长的阶如何描述算法的效率?–增长率忽略低阶项,保留最高阶项忽略常系数利用(n2)表示

排序的运行时间(1),

(lg

n),

(n),(n),

(nlg

n),

(n2),

(n3),(2n),

(n!)4增长函数渐进效率:输入规模非常大忽略低阶

系数只考虑最高阶(增长的阶)典型的增长阶:(1),

(lg

n),

(n),(n),

(nlg

n),

(n2),

(n3),(2n),

(n!)增长的记号:O,,,o,.同阶函数集合f(n)

=

(

g(n))nn0(g(n))={f(n)

|

c1,

c2>0, n0,

n>n0,

c1g(n)f(n)c2g(n)}称为与g(n)同阶的函数集合。如果f(n)∈(g(n)),g(n)与f(n)同阶f(n)∈(g(n)),记作f(n)=(g(n))c2g(n)f(n)c1g(n)6(g(n))函数的例子证明1/2n2

–3n

=(n2).–

c1n2

1/2n2

3n

c2

n2–

c1

1/2

3/n

c2–对于任意n

1,c2

½,且对于任意n

7,c1

1/14–因此c1

=1/14,c2

=½,n0

=7.证明6n3

(n2).如果存在c1、c2

>0,n0使得当nn0时,c1n26n3c2

n2。当n>c2

/6时,n

c2

/6,

。(g(n))函数的例子通常f(n)=an2+bn+c

=(n2),其中a,b,c是常数且a>0.p(n)=i

da

ni,

其中a

是常数且a

>0.=0

i

i

d–

p(n)

=(nd).(n0)或者(1),

常数时间复杂性.8低阶函数集合f(n)

=

O(

g(n))nn0对于给定的函数g(n),O(g(n))={f(n):存在正常数c和n0

满足对于所有n

n0,0

f(n)

cg(n)}记作f(n)

O(g(n)),或简记为f(n)=O(g(n)).cg(n)f(n)9(g(n))和O(g(n))的关系f(n)

=

(

g(n))

f(n)

=

O(

g(n))标记强于O标记.(

g(n))

O(

g(n))an2+bn+c

=(n2),且=O(n2)an+b

=O(n2).为什么?n

=O(n2)

!!!O标记,表示渐进上界标记,表示渐进紧界•一些:的输入,即使对于已经排序的输入也成立,因为O(n)

O(n2).–

然而

排序的

运行时间(n2)不能应用到每个输入,因为对于已经排序的输入,(n)

(n2).如果f(n)=O(nk),则称f(n)是多项式界限的。10高阶函数集合f(n)

=

(

g(n))nn0对于给定的函数g(n),(g(n))={f(n):存在正常数c和n0

,使得对于所有n

n0,0

cg(n)<f(n)}记作f(n)

(g(n)),或简记为f(n)=(g(n)).f(n)cg(n)11O,,标记的关系对于f(n)和g(n),f(n)=(g(n))当且仅当f(n)=O(g(n))且f(n)=(g(n)).O:

渐进上界

:

渐进紧界

:

渐进下界12关于

标记运行时间的最好情况对所有输入都正确比如,对于

排序最好运行时间是(n),或者说,运行时间是(n).运行时间是(n2)但是说运行时间是(n2)则有误可以

问题排序问题的时间复杂性是(n)13严格低阶函数f(n)

=

o(

g(n))n给定一个函数g(n),o(g(n))={f(n):对于任意正常数c,存在一个正数n0

,从而对所有n

n0,满足0

f(n)<cg(n)}记作f(n)

o(g(n)),或者简写为f(n)=o(g(n)).2g(n)g(n)1/2g(n)f(n)n0

n0

n015关于o标记O标记可能是紧的–2n2

=O(n2)是紧的,但2n

=O(n2)不是紧的.o标记用于标记上界但不是紧的情况–2n

=o(n2),但是2n2

o(n2).区别:某个正常数c在O标记中,但所有正常数c在o标记中.16严格高阶函数集合对于给定函数g(n),(g(n))={f(n):对于任意正常数c,存在正数n0

对于n

n0,0

cg(n)<f(n)}记作f(n)

(g(n)),或者简记为f(n)=(g(n)).标记,类似o标记,表示不紧的下界.n2/2=(n),但n2/2

(n2)=

f(n)=(g(n))当且仅当g(n)=o(f(n)).lim

f(n)n

g(n)17渐进符号的性质•传递性:所有五个标记–f(n)=(g(n))且g(n)=(h(n))

f(n)=(h(n))自反性:O,,

.–

f(n)=

(f(n))对称性:f(n)=(g(n))当且仅当g(n)=(f(n))称性:f(n)=O(g(n))当且仅当g(n)=(f(n)).f(n)=o(g(n))当且仅当g(n)=(f(n)).注意!本讲内容19计算复杂性函数的阶和式的估计与界限递归方程为什么需要和式的估计与界限FOR

l=2

TO

nFOR

i=1

TO

n-l+1

DOj=i+l-1;m[i,

j]=∞;FOR

ki

To

j-1

DOq=m[i,

k]+m[k+1,

j]+pi-1pkpjIF

q<m[i,

j]

THEN

m[i,j]=q;1.线性和和式的估计2.级数3.和的界限3/2直接求和的界限本讲内容32计算复杂性函数的阶和式的估计与界限递归方程递归方程递归方程:递归方程是使用小的输入值来描述一个函数的方程或不等式.递归方程例:Merge-sort排序算法的复杂性方程if

n=1if

n>1.T(n)=

(1)T(n)=2T(n/2)+

(n)T(n)的解是(nlogn)替换方法:首先猜想,然后用数学归纳法证明.迭代方法:把方程转化为一个和式然后用估计和的方法来求解.Master定理方法:求解型为T(n)=aT(n/b)+f(n)的递归方程求解递归方程的三个主要方法替换方法Ⅰ:联想已知的T(n)例1.求解2T(n/2+17)+n替换方法证明:用数学归纳法替换方法Ⅰ:猜测上下界,减少不确定性范围问题:猜测正确,数学归纳法的归纳步似乎证不出来解决方法:从guess中减去一个低阶项,可能work.细微差别的处理避免陷阱变量替换方法:经变量替换把递归方程变换为熟悉的方程.方法:循环地展开递归方程,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论