引言
在拜读《算法导论》的时候,发现若要将所有课后题做完的话会花掉太多时间,所以以后不更新作业的博客了,而是写关于算法导论上某一部分内容总结性的记录。这篇博客先大概的说一下渐进标记,有什么补充的想起了在补充吧。
渐进标记
渐进非负函数: 若
f
(
n
)
f(n)
f(n)为一个渐进非负函数,则有,当
n
≥
0
n\geq 0
n≥0时,总有
f
(
n
)
≥
0
f(n)\geq 0
f(n)≥0,也就是函数值在自变量取值为
[
0
,
+
∞
)
[0, +\infty)
[0,+∞)时总大于0,在渐进标记的介绍中,所有函数均为渐进非负函数。
定义:
标记符号 | 使用形式 | 定义 |
---|---|---|
Θ \Theta Θ | f ( n ) = Θ ( g ( n ) ) f(n)=\Theta(g(n)) f(n)=Θ(g(n)) | Θ ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , c 1 , c 2 , 使 得 不 等 式 c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) 成 立 } \Theta(g(n))=\{f(n):\exist n \geq n_0,c_1,c_2,使得不等式c_1g(n)\leq f(n) \leq c_2g(n)成立\} Θ(g(n))={f(n):∃n≥n0,c1,c2,使得不等式c1g(n)≤f(n)≤c2g(n)成立} |
O O O | f ( n ) = O ( g ( n ) ) f(n)=O(g(n)) f(n)=O(g(n)) | O ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , c , 使 得 不 等 式 0 ≤ f ( n ) ≤ c g ( n ) 成 立 } O(g(n))=\{f(n):\exist n \geq n_0, c,使得不等式0\leq f(n) \leq cg(n)成立\} O(g(n))={f(n):∃n≥n0,c,使得不等式0≤f(n)≤cg(n)成立} |
o o o | f ( n ) = o ( g ( n ) ) f(n)=o(g(n)) f(n)=o(g(n)) | o ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , ∀ c > 0 , 使 得 不 等 式 0 ≤ f ( n ) < c g ( n ) 成 立 } o(g(n))=\{f(n):\exist n \geq n_0,\forall c>0,使得不等式0\leq f(n) < cg(n)成立\} o(g(n))={f(n):∃n≥n0,∀c>0,使得不等式0≤f(n)<cg(n)成立} |
Ω \Omega Ω | f ( n ) = Ω ( g ( n ) ) f(n)=\Omega(g(n)) f(n)=Ω(g(n)) | Ω ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , c , 使 得 不 等 式 0 ≤ c g ( n ) ≤ f ( n ) 成 立 } \Omega(g(n))=\{f(n):\exist n \geq n_0,c,使得不等式0\leq cg(n) \leq f(n)成立\} Ω(g(n))={f(n):∃n≥n0,c,使得不等式0≤cg(n)≤f(n)成立} |
ω \omega ω | f ( n ) = ω ( g ( n ) ) f(n)=\omega(g(n)) f(n)=ω(g(n)) | ω ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , ∀ c > 0 , 使 得 不 等 式 0 ≤ c g ( n ) < f ( n ) 成 立 } \omega(g(n))=\{f(n):\exist n \geq n_0,\forall c>0,使得不等式0\leq cg(n) < f(n)成立\} ω(g(n))={f(n):∃n≥n0,∀c>0,使得不等式0≤cg(n)<f(n)成立}$ |
注意事项:
对于标记
Θ
,
O
,
Ω
\Theta,O,\Omega
Θ,O,Ω,他们的定义中的常量
c
c
c是存在就行,标记
o
,
ω
o,\omega
o,ω中的常量
c
c
c是任意大于零的值。
极限:
书上给出了渐进标记
o
,
ω
o,\omega
o,ω可以等价于极限。
f
(
n
)
=
o
(
g
(
n
)
)
f(n)=o(g(n))
f(n)=o(g(n))等价于极限:
l
i
m
n
→
∞
f
(
n
)
g
(
0
)
=
0
lim_{n\rightarrow\infty}\frac{f(n)}{g(0)}=0
limn→∞g(0)f(n)=0
f
(
n
)
=
ω
(
g
(
n
)
)
f(n)=\omega(g(n))
f(n)=ω(g(n))等价于极限:
l
i
m
n
→
∞
f
(
n
)
g
(
0
)
=
∞
lim_{n\rightarrow\infty}\frac{f(n)}{g(0)}=\infty
limn→∞g(0)f(n)=∞
但是,个人认为渐进标记
Θ
\Theta
Θ可以等价于极限
l
i
m
n
→
∞
f
(
n
)
g
(
n
)
=
c
lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c
limn→∞g(n)f(n)=c,其中c为常数。书上未给出这个定义。
证明过程:
充分性:若
f
(
n
)
=
Θ
(
g
(
n
)
)
f(n)=\Theta(g(n))
f(n)=Θ(g(n)),则有
l
i
m
n
→
∞
f
(
n
)
g
(
n
)
=
c
lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c
limn→∞g(n)f(n)=c成立。
必要性证明:
若
f
(
n
)
=
Θ
(
g
(
n
)
)
f(n)=\Theta(g(n))
f(n)=Θ(g(n)),根据定义有:
f
(
n
)
:
∃
n
≥
n
0
,
c
1
,
c
2
,
使
得
不
等
式
c
1
g
(
n
)
≤
f
(
n
)
≤
c
2
g
(
n
)
成
立
f(n):\exist n \geq n_0,c_1,c_2,使得不等式c_1g(n)\leq f(n) \leq c_2g(n)成立
f(n):∃n≥n0,c1,c2,使得不等式c1g(n)≤f(n)≤c2g(n)成立
则有:
c
1
≤
f
(
n
)
g
(
n
)
≤
c
2
c
1
≤
l
i
m
n
→
∞
f
(
n
)
g
(
n
)
≤
c
2
c_1\leq \frac{f(n)}{g(n)} \leq c_2 \\ c_1\leq lim_{n\rightarrow\infty}\frac{f(n)}{g(n)} \leq c_2
c1≤g(n)f(n)≤c2c1≤limn→∞g(n)f(n)≤c2
因此必定存在一个常数c,使得
l
i
m
n
→
∞
f
(
n
)
g
(
n
)
=
c
lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c
limn→∞g(n)f(n)=c成立。(这里的必要性证明有点牵强。。。)
充分性:若
l
i
m
n
→
∞
f
(
n
)
g
(
n
)
=
c
lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c
limn→∞g(n)f(n)=c成立,则有
f
(
n
)
=
Θ
(
g
(
n
)
)
f(n)=\Theta(g(n))
f(n)=Θ(g(n))。
充分性证明:
由
l
i
m
n
→
∞
f
(
n
)
g
(
n
)
=
c
lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c
limn→∞g(n)f(n)=c可得:
f
(
n
)
g
(
n
)
=
c
+
α
\frac{f(n)}{g(n)}=c+\alpha
g(n)f(n)=c+α,其中
α
\alpha
α为无穷小量。
f
(
n
)
=
c
g
(
n
)
+
α
f(n)=cg(n)+\alpha
f(n)=cg(n)+α,因为
g
(
n
)
g(n)
g(n)线性非负,必然存在
0
<
ε
≤
1
0<\varepsilon \leq1
0<ε≤1,以及
η
≥
1
\eta \geq1
η≥1
使得不等式:
ε
c
g
(
n
)
+
α
≤
f
(
n
)
≤
η
c
g
(
n
)
+
α
\varepsilon cg(n)+\alpha \leq f(n)\leq \eta cg(n)+\alpha
εcg(n)+α≤f(n)≤ηcg(n)+α成立。
得证。