算法的五个重要的特征:确定性、能行性、输入、输出、有穷性/有限性。
表示算法的语言主要有:自然语言、流程图、盒图、PAD图、伪代码、计算机程序设计语言
算法分析有两个阶段:事前分析和时候测试。
衡量算法有几个方面:时间和空间。。。
渐进意义下的符号的意义: 记:算法的计算时间为f(n), 数量级限界函数为g(n),其中, n是输入或输出规模的某种测度。 f(n)表示算法的“实际”执行时间—与机器及语言有关。 g(n)是形式简单的函数,如nm,logn,2n,n!等。是事前分析中通过对计算时间或频率计数统计分析所得的与机器及语言无关的函数。
以下给出算法执行时间:上界(О)、下界(Ω)、“平均”( )的定义。
如果存在两个正常数c和N0,对于所有的N≥N0,有|f(N)|≤C|g(N)|,则记作:f(N)= O(g(N))。
1)当说一个算法具有O(g(n))的计算时间时,指的就是如果此算法用n值不变的同一类数据在某台机器上运行时,所用的时间总是小于g(n)的一个常数倍。
2)g(n)是计算时间f(n)的一个上界函数,f(n)的数量级就是g(n)。
Eg : 因为对所有的N≥1有3N≤4N,所以有3N=O(N);
因为当N≥1时有N+1024≤1025N,所以有N+1024=O(N);
因为当N≥10时有2N2+11N-10≤3N2,所以有
2N2+11N-10=O(N2)
因为对所有N≥1有N2≤N3,我们有N2=O(N3)
作为一个反例N3≠O(N2),因为若不然,则存在正的常数C和自然数N0,使得当N≥N0,有N3≤CN2,即N≤C。显然,当取N=max{N0,C+1}时这个不等式不成立,所以N3≠O(N2)
多项式定理:
若A(n) = amnm+…+a1n+a0是一个m次多项式,则有A(n)=Ο(nm) 即:变量n的固定阶数为m的任一多项式,与此多项式的最高阶nm同阶。
证明:取n0=1,当n≥n0时,有 |A(n)|≤|am|nm+…+|a1|n+|a0| ≤(|am|+|am-1|/n+…+|a0|/nm) nm
≤(|am|+|am-1|+…+|a0|) nm
令c= |am|+|am-1|+…+|a0|
定理得证。
符号O运算性质:(f,g为定义在正数集上的正函数)
(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)
如果f(n) =am nm+.+a1n+a0 且am > 0,则f(n)=Ω(nm )。
该定义的优点是与O的定义对称,缺点是f(N)对自然数的不同无穷子集有不同的表达式,且有不同的阶时,不能很好地刻画出f(N)的下界。比如当
100 N为正偶数
f(N)=
6N2 N为正奇数
按照定义,得到f(N)=Ω(1),这是个平凡的下界,对算法分析没有什么价值。
“平均情况”限界函数
如果存在正常数c1,c2和n0,对于所有的n≥n0,有c1|g(N)| ≤|f(N)| ≤ c2|g(N)|
则记作 f(N)= (g,(N))
含义:
算法在最好和最坏情况下的计算时间就一个常数因子范围内而言是相同的。可看作:既有f(N)=Ω(g(N)),又有f(N)=Ο(g(N))
【】循环次数直接依赖规模n-变量计数之一。
(1) x=0;y=0; (2) for(k=1;k<=n;k++) (3) x++; (4) for(i=1;i<=n;i++)
(5) for(j=1;j<=n;j++) (6) y++;
该算法段的时间复杂度为T(n)=Ο(n2)。
当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。
【例1.9】循环次数间接依赖规模n-变量计数之二。
(1) x=1;(2) for(i=1;i<=n;i++) (3) fo
算法的五个重要的特征 来自淘豆网m.daumloan.com转载请标明出处.