算法分析(简介)

来源:互联网 发布:钉钉绑定阿里云邮箱 编辑:程序博客网 时间:2024/06/01 08:31

   算法分析即指对一个算法所需要的资源进行预测,内存,通信带宽或计算机硬件等资源偶尔是我们主要关心的,一个算法所需要的资源越多,该算法的复杂性越高,反之,所需要的资源越少,该算法的复杂性越低,在计算机的资源中,最重要的是时间和空间(即存储器)资源,因此算法复杂性有时间复杂性和空间复杂性之分,不言而喻,在对给定问题设计算法时,设计出复杂性尽可能低的算法是设计算法时追求的目标,如果给的问题已有多种算法时,选择复杂性最低者,是在选用算法时遵循的重要准则,更确切的说,算法的复杂性是算法运行时所需要的计算机资源的量,需要时间资源称为时间复杂性,需要的空间资源称为空间复杂性,如果分别用N,I,A,表示算法要解问题的规模,算法的输入和算法本身的函数,而且用C表示复杂性,那么应该有C=F(N,I,A)。其中F(N,I,A)是N,I,A的确定的三元函数,如果把时间复杂性和空间复杂性分开,并分别用T和S来表示,那么应该有T=T(N,I,A),S=S(N,I,A)。通常让A隐含在复杂性函数名当中,因而将T和S分别简写为T=T(N,I),S=S(N,I)。

  由于时间复杂性与空间复杂性概念相同,计量方法相似,且空间复杂性的分析相对简单,所以现在主要讨论时间复杂性。

   复杂性分析的常用符号:若存在两个正常数c,n0,对于任意n>n0,都有|T(n)|<=c|F(n)|,则称,T(n)集合在集合O(F(n))中。记作T(n)=O(F(n)),O读作“大欧”。他的直观含义是:T(n)的增长速度不会比F(n)差,大O表示法(big-Oh notation)表示的是时间运行的上限,同理可以定义下限Ω,如果上下限相等,还可以用Θ表示。

    最坏情况和平均情况:1一个算法的最坏情况运行时间是在任何输入下运行时间的一个上界。知道了这一点,就能确保算法的运行时间不会比这一时间长。2对于某些算法,最坏情况还是出现的相当频繁的。3大致上看来,“平均情况”和最坏情况一样差。

    增长的量级:运行时间的增长率,或称增长的量级,这样,我们就只考虑公式中的最高项,因为当n很大时,低阶项相当来说不太重要,,另外,还忽略最高次项的常数系数,,因为在考虑较大规模上的输入下,对于增长率来说,系数是次要的。

    按照符号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);