渐近符号杜元伟duyuanwei@*,对于足够大的输入,算法运行时间表达式里的那些低阶项以及高阶项的常数系数等,主要受高阶项的制约。为了表示算法的渐进有效性,引入渐进符号以便表示算法的运行时间与输入规模之间的主要关系,即渐进时间复杂性,来衡量算法的好坏。渐进符号:Θ、O、Ω*Θ符号Θ符号:对于给定的函数g(n),记Θ(g(n))={f(n):存在三个正常数c1,c2,n0,对于任给n≥n0,满足0≤c1g(n)≤f(n)≤c2g(n)}的函数集。并记f(n)=Θ(g(n)),它表示f(n)是Θ(g(n))中的一个元素。定理:如果存在,且则必有f(n)=Θ(g(n))。直观含义:f(n)与g(n)同阶。*注意:Θ(g(n))的定义要求任意f(n)=Θ(g(n))都是渐进非负的。*:已知f(n)=3n+3,证明f(n)=Θ(n).:已知f(n)=1/2n2-3n,证明f(n)=Θ(n2).:已知f(n)=6n3,证明f(n)!=Θ(n2).*几个结论渐近正函数的低阶项在估计其渐近界的时候可以被忽略掉;对于Θ符号定义中涉及的两个常数c1和c2,只要选取c1等于一个比高阶项系数稍小的数,选取c2等于一个比高阶项系数稍大的数,就可以满足Θ符号定义中的不等式;高阶项系数同样可以忽略,因为它的改变只会使高阶项的值发生常数系数倍的改变。例:f(n)=an2+bn+c,a,b,c是常数且a>0,则必有f(n)=Θ(n2)。*O符号O符号:对于给定的函数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))中的一个元素。定理:如果存在,且则必有f(n)=O(g(n))。直观含义:f(n)的阶不高于g(n)的阶。*注意:O(g(n))的定义要求任意f(n)=O(g(n))都是渐进非负的。*推论:如果f(n)=Θ(g(n)),则必有f(n)=O(g(n))。O符号描述了时间复杂度f(n)的上界,也就是描述算法运行的最坏运行时间。回顾:插入排序算法中主要有2重循环,for循环和while循环,他们最多各执行n次,所以最坏运行时间或者说时间复杂度上界为O(n2)。没有必要计算算法每一行执行的时间以及每行执行的次数,然后求和,只需要考虑算法中主要循环执行的次数即可。*Ω符号Ω符号:对于给定的函数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)=Ω(g(n))。直观含义:f(n)的阶不低于g(n)的阶。
渐近符号算法 来自淘豆网m.daumloan.com转载请标明出处.