算法效率评价的指标:
算法对计算机资源的使用:
1.计算资源(时间)
2.存储资源(内存)
计算机资源的计量方法:
设输入数据/问题规模为n。假设算法要用到:
(1)m种元运算;
(2)每种元运算执行的时间为t1,t2,…,tm;
(3)每种元运算执行的次数为e1,e2,…,em;
(4)元运算与问题规模的关系:∀ ei (n),1≤i≤m。
若用T(n)表示时间复杂度,则有
元运算的提取及时间复杂度的计算:
【例 2-1 】编程输出具有下述特点的 n × n 阶三角矩阵,试分
析该算法的时间复杂度。
数学基础:
函数的渐近的界
问题规模:T(n)
渐近态:T'(n)
定义2.1 设 f 和 g 是定义域为自然数集N上的函数。
(1) 若 ∃ c>0 和 n 0 >0 使得所有 n ≥ n0 , 有 0 ≤ f(n) ≤ c*g (n )成立, 则称 f(n) 的渐近上界是 g(n), 记作 : f(n)=Ο(g(n)) 。
(2) 若 ∃ c>0 和 n 0 >0 使得所有的n ≥ n0 , 有 0 ≤ c*g(n) ≤ f(n) ,则 称 f(n) 的渐近下界是 g(n), 记作 : f(n)=Ω(g(n)) 。
(3) 若对于 ∀ c>0 都存在非负整数 n 0 , 使得当 n≥ n 0 时有0 ≤ f(n) < c*g (n) 成立,则称函数 f(n) 当 n 充分大时,比 g(n)低阶,记为 f(n)=o(g(n)) 。
(4) 若 ∀ c>0 都存在 n 0 >0 ,使得当n≥ n0时有0 ≤ c*g (n ) ≤ f(n) 成立,则称函数f(n) 比 g(n) 高阶,记为 f(n)=ω(g(n))。
(5) 若 f(n)=Ο(g(n)) 且 f(n)=Ω(g(n))时,则记 f(n) = Θ(g (n )), 称g(n)是 f(n) 的渐近的紧的界。 f(n) 与 g(n)同阶。 c 2 g(n)≤f(n)≤c 1 g(n)
【例 2-2】设有函数 f(n)=n** 2 +3n+1,当n足够大时,试证明下述内容:
(1) f(n)=O(n 2 ) 和 f(n)=O(n 3 ) 成立;
(2) f(n)=o(n 2 ) 不成立。
证明:
(1) f(n)=n** 2 +3n+1< n** 2 +3n** 2 +n** 2 =5n** 2 , 则存在 c=5 使得当 n≥1时, f(n)=O(n** 2 ) 成立。
又因为 5n** 2 ≤5n** 3 ,所以,存在 c=5 使得当 n≥1 时, f(n)=O(n** 3 ) 成立。
(2) 要使 n** 2 +3n+1<n** 2 , 就要使 1+3/n+1/n 2 <1 ,显然这不成立。
也就是说,找不到一个 n 0 ,当 n≥n 0 且 c为任意小时,使得 f(n)=o(n 2 ) 成立。
定理 2.1( 传递性 ) 设 f 、 g 、 h 是定义域为自然数集合,
如果 f=O(g) 且 g=O(h) ,那么 f=O(h) ;
如果 f=Ω(g) 且 g=Ω(h) ,那么 f=Ω(h) ;
如果 f=Θ(g) 且 g=Θ(h) ,那么 f=Θ(h) 。
定理 2.2 有f=O(h) 和 g=O(h) ,那么 f+g=O(h) 。
利用极限求函数渐近的界
有用的求和级数及推导方法: