先决条件:渐近符号
假设f(n),g(n)和h(n)是渐近函数,则数学定义为:
- 如果f(n)=Θ(g(n)) ,则存在正常数c1,c2,n0,使得对于所有n, 0≤c1.g(n)≤f(n)≤c2.g(n) ≥n0
- 如果f(n)= O(g(n)) ,那么对于所有n≥n0,存在正常数c,n0使得0≤f(n)≤cg(n)
- 如果f(n)=Ω(g(n)) ,那么对于所有n≥n0,存在正常数c,n0使得0≤cg(n)≤f(n)。
- 如果f(n)= o(g(n)) ,则存在正常数c,n0,对于所有n≥n0,0≤f(n)
- 如果f(n)=ω(g(n)) ,则存在正常数c,n0,对于所有n≥n0,0≤cg(n)
特性:
- 反身性:
如果给定f(n)f(n) = O(f(n))
例子:
如果F(N)= N 3⇒为O(n 3)
相似地,f(n) = Ω(f(n)) f(n) = Θ(f(n))
- 对称:
f(n) = Θ(g(n)) if and only if g(n) = Θ(f(n))
例子:
如果f(n)= n 2且g(n)= n 2,则f(n)=Θ(n 2 )和g(n)=Θ(n 2 )
证明:- 必要部分:
f(n)=Θ(g(n))⇒g(n)=Θ(f(n))
根据Θ的定义,存在正常数c1,c2,no,使得对于所有n≥no的c1.g(n)≤f(n)≤c2.g(n)
⇒g(n)≤(1 / c1).f(n)和g(n)≥(1 / c2).f(n)
⇒(1 / c2).f(n)≤g(n)≤(1 / c1).f(n)
由于c1和c2为正常数,因此很好地定义了1 / c1和1 / c2。因此,根据Θ的定义,g(n)=Θ(f(n)) - 充实部分:
g(n)=Θ(f(n))⇒f(n)=Θ(g(n))
根据Θ的定义,存在正常数c1,c2,no,使得对于所有n≥no的c1.f(n)≤g(n)≤c2.f(n)
⇒f(n)≤(1 / c1).g(n)和f(n)≥(1 / c2).g(n)
⇒(1 / c2).g(n)≤f(n)≤(1 / c1).g(n)
根据Theta(Θ)的定义,f(n)=Θ(g(n))
- 必要部分:
- 伸缩性:
f(n) = O(g(n)) and g(n) = O(h(n)) ⇒ f(n) = O(h(n))
例子:
如果f(n)= n,则g(n)= n 2和h(n)= n 3
⇒n为O(n 2 )且n 2为O(n 3 )则n为O(n 3 )
证明:
f(n)= O(g(n))和g(n)= O(h(n))⇒f(n)= O(h(n))
根据Big-Oh(O)的定义,存在正常数c,no使得对于所有n≥no的f(n)≤cg(n)
⇒f(n)≤c1.g(n)
⇒g(n)≤c2.h(n)
⇒f(n)≤c1.c2h(n)
⇒f(n)≤ch(n),其中c = c1.c2根据定义,f(n)= O(h(n))
相似地,f(n) = Θ(g(n)) and g(n) = Θ(h(n)) ⇒ f(n) = Θ(h(n)) f(n) = Ω(g(n)) and g(n) = Ω(h(n)) ⇒ f(n) = Ω(h(n)) f(n) = o(g(n)) and g(n) = o(h(n)) ⇒ f(n) = o(h(n)) f(n) = ω(g(n)) and g(n) = ω(h(n)) ⇒ f(n) = ω(h(n))
- 转置对称:
f(n) = O(g(n)) if and only if g(n) = Ω(f(n))
例子:
如果f(n)= n且g(n)= n 2,则n为O(n 2 )且n 2为Ω(n)
证明:- 必要部分:
f(n)= O(g(n))⇒g(n)=Ω(f(n))
根据Big-Oh(O)⇒f(n)≤cg(n)的定义,对于某些正常数c⇒g(n)≥(1 / c).f(n)
根据Omega(Ω)的定义,g(n)=Ω(f(n)) - 充实部分:
g(n)=Ω(f(n))⇒f(n)= O(g(n))
根据欧米茄(Ω)的定义,对于某些正常数c⇒g(n)≥cf(n)⇒f(n)≤(1 / c).g(n)
根据Big-Oh(O)的定义,f(n)= O(g(n))
相似地,
f(n) = o(g(n)) if and only if g(n) = ω(f(n))
- 必要部分:
- 由于这些性质适用于渐近符号,因此可以在函数f(n)和g(n)以及两个实数a和b之间得出类比。
- g(n)= O(f(n))类似于a≤b
- g(n)=Ω(f(n))类似于a≥b
- g(n)=Θ(f(n))类似于a = b
- g(n)= o(f(n))类似于a
- g(n)=ω(f(n))类似于a> b
- 观察结果:
max(f(n), g(n)) = Θ(f(n) + g(n))
证明:
不失一般性,假设f(n)≤g(n),⇒max(f(n),g(n))= g(n)
考虑,g(n)≤max(f(n),g(n))≤g(n)
⇒g(n)≤max(f(n),g(n))≤f(n)+ g(n)
⇒g(n)/ 2 + g(n)/ 2≤max(f(n),g(n))≤f(n)+ g(n)
根据我们的假设,我们可以写
⇒f(n)/ 2 + g(n)/ 2≤max(f(n),g(n))≤f(n)+ g(n)
⇒(f(n)+ g(n))/ 2≤max(f(n),g(n))≤f(n)+ g(n)
通过Θ的定义,max(f(n),g(n))=Θ(f(n)+ g(n)) -
O(f(n)) + O(g(n)) = O(max(f(n), g(n)))
证明:
不失一般性,假设f(n)≤g(n)
⇒O(f(n))+ O(g(n))= c1.f(n)+ c2.g(n)
根据我们的假设,我们可以写
O(f(n))+ O(g(n))≤c1.g(n)+ c2.g(n)
≤(c1 + c2)g(n)
≤cg(n)
≤c.max(f(n),g(n))
根据Big-Oh(O)的定义,
O(f(n))+ O(g(n))= O(max(f(n),g(n)))
笔记:
- 如果lim n→∞f (n)/ g(n)= c ,则c∈ R +然后f(n)=Θ(g(n))
- 如果lim n→∞f (n)/ g(n)≤c ,则c∈ R(c可以为0)然后f(n)= O(g(n))
- 如果lim n→∞f (n)/ g(n)= 0 ,则f(n)= O(g(n))和g(n)= O(f(n))
- 如果lim n→∞f (n)/ g(n)≥c ,则c∈ R(c可以是∞)然后f(n)=Ω(g(n))
- 如果lim n→∞f (n)/ g(n)=∞ ,则f(n)=Ω(g(n))和g(n)=Ω(f(n))