算法导论笔记之渐进记号
Posted scofscof
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法导论笔记之渐进记号相关的知识,希望对你有一定的参考价值。
渐进记号
Θ(theta):渐进紧确界。f(n) = Θ(g(n))表示:?c1>0,c2>0,n0>0,s.t.对? n>n0,0 ≤c1g(n) ≤ f(n) ≤ c2g(n)成立。用极限表示为limn->∞f(n)/g(n) = c.
O(大欧):渐进上界。 f(n) = O(g(n))表示 :?c>0,n0>0,s.t.对? n>n0,0≤ f(n) ≤ cg(n)成立。
Ω(大omega):渐进下界。f(n) = Ω(g(n))表示 :?c>0,n0>0,s.t.对? n>n0,0≤ cg(n)≤ f(n) 成立。
o(小欧):非渐进紧确上界。 f(n) = o(g(n))表示 :对?c>0,?n0>0,s.t.对? n>n0,0≤ f(n) <cg(n)成立。 f(n) = o(g(n))与 f(n) = O(g(n))的主要区别在于:前者是对任意c>0,0≤ f(n) ≤ cg(n)成立,而后者是对某个c>0,0≤ f(n) <cg(n)成立。也就是说,f(n) = o(g(n))可以表示为,当n->∞时,limf(n)/g(n) = 0.
ω(小omega):非渐进紧确下界。 f(n) = ω(g(n))表示 :对?c>0,?n0>0,s.t.对? n>n0,0≤ cg(n)<f(n)成立。可用极限表示为:当n->∞时,limf(n)/g(n) = ∞.
我们记 f(n) = O(g(n))以指出函数 f(n) 是集合 O(g(n))的成员,即f(n)∈ O(g(n))。注意,f(n) = Θ(g(n))蕴含着f(n) = O(g(n)),也就是说,O(g(n))? Θ(g(n))。同样地,Ω(g(n))? Θ(g(n))。由此可得如下重要定理:
对于任意两个函数f(n)和g(n),我们有f(n) = Θ(g(n)),当且仅当f(n) = O(g(n))且f(n) = Ω(g(n))。
渐进记号的性质
传递性:
f(n) = Θ(g(n))且g(n) = Θ(h(n)),则 f(n) = Θ(h(n))
f(n) = O(g(n))且g(n) = O(h(n)),则 f(n) = O(h(n))
f(n) = Ω(g(n))且g(n) = Ω(h(n)),则 f(n) = Ω(h(n))
f(n) = o(g(n))且g(n) = o(h(n)),则 f(n) = o(h(n))
f(n) = ω(g(n))且g(n) = ω(h(n)),则 f(n) = ω(h(n))
自反性:
f(n) = Θ(f(n))
f(n) = O(f(n))
f(n) = Ω(f(n))
对称性:
f(n) = Θ(g(n))当且仅当g(n) = Θ(f(n))
转置性:
f(n) = O(g(n))当且仅当g(n) = Ω(f(n))
f(n) = o(g(n))当且仅当g(n) = ω(f(n))
因为这些性质对渐进记号成立,所以,可以将两个函数f和g的渐进比较与实数a与b之间的比较做一种类比:
f(n) = Θ(g(n))类似于a = b
f(n) = O(g(n))类似于a ≤ b
f(n) = Ω(g(n))类似于a ≥b
f(n) = o(g(n))类似于a <b
f(n) = ω(g(n))类似于a >b
然而,实数的下列性质不能携带到渐进记号:
三分性:对于任意两个实数a和b,下列三种情况恰有一种必须成立:a<b,a>b或a=b。
虽然两个实数可以相互比较,但是不是所有的函数都可以渐进比较。也就是说,对于两个函数f(n)和g(n) 也许f(n) = O(g(n))和f(n) = Ω(g(n))都不成立。例如,我们无法使用渐进记号比较n和n1+sin n
以上是关于算法导论笔记之渐进记号的主要内容,如果未能解决你的问题,请参考以下文章