复杂度分析及五种记号详解(O、Ω、θ、o、ω)

一、各种渐近记号的概念和区别

我们常用的记号有: O , Ω , Θ ( θ ) , o , ω O,\Omega,\Theta(\theta),o,\omega O,Ω,Θ(θ),o,ω。其中, Θ \Theta Θ θ \theta θ是一回事。

O O O Ω \Omega Ω

O ( g ( n ) ) = { f ( n ) : 存在正常量 c 和 n 0 , 使得对所有 n ≥ n 0 , 有 0 ≤ f ( n ) ≤ c g ( n ) ) } O(g(n)) = \{f(n):存在正常量c和n_0,使得对所有n\geq n_0 ,有 0\leq f(n) \leq cg(n))\} O(g(n))={f(n):存在正常量cn0,使得对所有nn0,0f(n)cg(n))}

Ω ( g ( n ) ) = { f ( n ) : 存在正常量 c 和 n 0 , 使得对所有 n ≥ n 0 , 有 0 ≤ c g ( n ) ≤ f ( n ) ) } \Omega(g(n)) = \{f(n):存在正常量c和n_0,使得对所有n\geq n_0 ,有 0\leq cg(n) \leq f(n))\} Ω(g(n))={f(n):存在正常量cn0,使得对所有nn0,0cg(n)f(n))}

图示:
在这里插入图片描述
举例说明:

(1) 因为对所有的 N ⩾ 1 时有 3 N ⩽ 4 N , 有 3 N = O ( N ) 。 因为对所有的 N \geqslant 1 时有 3 N \leqslant 4 N , 有 3 N = O(N) 。 因为对所有的N1时有3N4N,3N=O(N)

(2) 因为当 N ⩾ 1 时有 N + 1024 ⩽ 1025 N , 有 N + 1024 = O ( N ) 。 因为当 N \geqslant 1 时有 N+1024 \leqslant 1025 N , 有 N+1024 = O(N) 。 因为当N1时有N+10241025N,N+1024=O(N)

(3) 因为当 N ⩾ 10 时有 2 N 2 + 11 N − 10 ⩽ 3 N 2 , 有 2 N 2 + 11 N − 10 = O ( N 2 ) 。 因为当N \geqslant 10 时有 2 N^{2}+11 N-10 \leqslant 3 N^{2} , 有 2 N^{2}+11 N-10 = O\left(N^{2}\right) 。 因为当N10时有2N2+11N103N2,2N2+11N10=O(N2)

(4) 因为对所有 N ⩾ 1 时有 N 2 ⩽ N 3 , 有 N 2 = O ( N 3 ) 。 因为对所有 N \geqslant 1 时有 N^{2} \leqslant N^{3} , 有 N^{2} = O\left(N^{3}\right) 。 因为对所有N1时有N2N3,N2=O(N3)

(5) 作为一个反例 , N 3 ≠ O ( N 2 ) 。因为若不然 , 则存在正的常数 C 和自然数 N 0 , 使得当 N ⩾ N 0 时有 N 3 ⩽ C N 2 , 即 N ⩽ C 。显然 , 当取 N = max ⁡ { N 0 , ⌊ C ⌋ + 1 } 时这个不等式不成立 , 所以 N 3 ≠ O ( N 2 ) 。 作为一个反例, N^{3} \neq O\left(N^{2}\right) 。因为若不然, 则存在正的常数 C 和自然数 N_{0} , 使得当 N \geqslant N_{0} 时有 N^{3} \leqslant C N^{2} , 即 N \leqslant C 。显然, 当取 N = \max \left\{N_{0},\lfloor C\rfloor+1\right\} 时这个不等式不成立, 所以 N^{3} \neq O\left(N^{2}\right) 。 作为一个反例,N3=O(N2)。因为若不然,则存在正的常数C和自然数N0,使得当NN0时有N3CN2,NC。显然,当取N=max{N0,C+1}时这个不等式不成立,所以N3=O(N2)

定理 : f ( n ) = O ( g ( n ) )  当且仅当  g ( n ) = Ω ( f ( n ) ) f(n)=O(g(n)) \text { 当且仅当 } g(n)=\Omega(f(n)) f(n)=O(g(n)) 当且仅当 g(n)=Ω(f(n))

不难发现,定义中的两队概念一个可以理解为上界,一个是下界,可以颠倒。
比如a比b大,那自然b比a小。所以关于 Ω \Omega Ω的理解直接把 O O O反过来就好。

理解:
1.当我们说“运行时间为 O ( n 2 ) O\left(n^{2}\right) O(n2)”时,意指存在一个 O ( n 2 ) O\left(n^{2}\right) O(n2) 的函数 f ( n ) f(n) f(n) , 使得对 n n n 的任意值, 不管选择什么特定的规模为 n n n 的输人,其运行时间的上界都是 f ( n ) f(n) f(n) 。这也就是说最坏情况运行时间为 O ( n 2 ) O\left(n^{2}\right) O(n2)
2.当我们说 f ( n ) = O ( n ) f(n)=O(n) f(n)=O(n),这里的等号不是数学意义上的数值相等,而是集合意义上的 ∈ \in 符号的意义,表示 f ( n ) f(n) f(n)属于 O ( n ) O(n) O(n)这个函数集合。所以 f ( n ) = O ( n ) f(n) = O(n) f(n)=O(n)就是 f ( n ) ∈ O ( n ) f(n) \in O(n) f(n)O(n)

Θ 或 θ \Theta或\theta Θθ

数学定义如下:
Θ ( g ( n ) ) = { f ( n ) : \Theta(g(n)) = \{f(n): Θ(g(n))={f(n):存在正常数 c 1 , c 2 c_1,c_2 c1,c2,和 n 0 n_0 n0,使对于所有的 n ≥ n 0 n \geq n_0 nn0,有 0 ≤ c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) } 0 \leq c_1g(n) \leq f(n) \leq c_2g(n)\} 0c1g(n)f(n)c2g(n)}
定理
f ( N ) = θ ( g ( N ) ) f(N)=\theta(g(N)) f(N)=θ(g(N))当且仅当 f ( N ) = O ( g ( n ) ) f(N)=O(g(n)) f(N)=O(g(n)) f ( N ) = Ω ( g ( N ) ) f(N)=\Omega(g(N)) f(N)=Ω(g(N))。并且这时称 f ( N ) f(N) f(N) g ( N ) g(N) g(N)同阶。(有些教科书也把这个定理作为定义)
图示:
在这里插入图片描述
n n n充分大时, f ( n ) f(n) f(n)能够被被夹在 c 1 g ( n ) c_1g(n) c1g(n) c 2 g ( n ) c_2g(n) c2g(n)之间。我们说 g ( n ) g(n) g(n) f ( n ) f(n) f(n)的渐进确界。

o o o ω \omega ω

o o o记号
在这里插入图片描述

o ( g ( n ) ) = { f ( n ) : 对任意正常数 c ,存在常数 n 0 > 0 , 使得对所有 n ≥ n 0 , 有 0 ≤ f ( n ) < c g ( n ) ) } o(g(n)) = \{f(n):对任意正常数c,存在常数n_0>0,使得对所有n \geq n_0 ,有 0\leq f(n) < cg(n))\} o(g(n))={f(n):对任意正常数c,存在常数n0>0,使得对所有nn0,0f(n)<cg(n))}(有的书这里是 ≤ \leq ,有的是 < < <,不如从极限和无穷小的概念去理解)
参考 O ( g ( n ) ) O(g(n)) O(g(n))的定义:
O ( g ( n ) ) = { f ( n ) : 存在正常量 c 和 n 0 , 使得对所有 n ≥ n 0 , 有 0 ≤ f ( n ) ≤ c g ( n ) ) } O(g(n)) = \{f(n):存在正常量c和n_0,使得对所有n\geq n_0 ,有 0\leq f(n) \leq cg(n))\} O(g(n))={f(n):存在正常量cn0,使得对所有nn0,0f(n)cg(n))}
理解:
两者的区别是 O O O提供了渐进上界,但这个界不一定是渐进紧确界。例如 2 n 2 = O ( n 2 ) 2n^2=O(n^2) 2n2=O(n2)是渐进紧确的,但是 2 n = O ( n 2 ) 2n=O(n^2) 2n=O(n2)就不是渐进紧确的,所以我们引入了 o o o记号来专门描述这一部分非渐进紧确的上界集合。

ω \omega ω记号
在这里插入图片描述

二、函数比较和运算性质

内容部分来自算法导论。
在这里插入图片描述在这里插入图片描述

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值