📜  渐近符号的性质

📅  最后修改于: 2021-04-24 15:56:12             🧑  作者: Mango

先决条件:渐近符号
假设f(n),g(n)和h(n)是渐近函数,则数学定义为:

  1. 如果f(n)=Θ(g(n)) ,则存在正常数c1,c2,n0,使得对于所有n, 0≤c1.g(n)≤f(n)≤c2.g(n) ≥n0
  2. 如果f(n)= O(g(n)) ,那么对于所有n≥n0,存在正常数c,n0使得0≤f(n)≤cg(n)
  3. 如果f(n)=Ω(g(n)) ,那么对于所有n≥n0,存在正常数c,n0使得0≤cg(n)≤f(n)。
  4. 如果f(n)= o(g(n)) ,则存在正常数c,n0,对于所有n≥n0,0≤f(n)
  5. 如果f(n)=ω(g(n)) ,则存在正常数c,n0,对于所有n≥n0,0≤cg(n)

特性:

  1. 反身性:
    如果给定f(n)
    f(n) = O(f(n))

    例子:
    如果F(N)= N 3⇒为O(n 3)
    相似地,

    f(n) = Ω(f(n)) 
    f(n) = Θ(f(n)) 
  2. 对称:
    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))
  3. 伸缩性:
    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))
  4. 转置对称:
    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)) 
  5. 由于这些性质适用于渐近符号,因此可以在函数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
  6. 观察结果:
    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))

  7. 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)))

笔记:

  1. 如果lim n→∞f (n)/ g(n)= c ,则c∈ R +然后f(n)=Θ(g(n))
  2. 如果lim n→∞f (n)/ g(n)≤c ,则c∈ R(c可以为0)然后f(n)= O(g(n))
  3. 如果lim n→∞f (n)/ g(n)= 0 ,则f(n)= O(g(n))g(n)= O(f(n))
  4. 如果lim n→∞f (n)/ g(n)≥c ,则c∈ R(c可以是∞)然后f(n)=Ω(g(n))
  5. 如果lim n→∞f (n)/ g(n)=∞ ,则f(n)=Ω(g(n))g(n)=Ω(f(n))