文章目录
一、复杂度函数的阶
我们可以用函数的阶数来形象地描绘函数之间增长快慢的关系。
1.1 同阶函数集合
定义函数
f
(
n
)
f(n)
f(n)的同阶函数集合
Θ
(
f
(
n
)
)
\Theta (f(n))
Θ(f(n))为:
Θ
(
f
(
n
)
)
=
{
g
(
n
)
∣
∃
c
1
,
c
2
>
0
,
n
0
,
∀
n
>
n
0
,
c
1
f
(
n
)
≤
g
(
n
)
≤
c
2
f
(
n
)
}
\Theta (f(n))=\left \{ g(n) \mid \exists c_1,c_2>0,n_0,\forall n>n_0,c_1f(n)\leq g(n)\leq c_2f(n) \right \}
Θ(f(n))={g(n)∣∃c1,c2>0,n0,∀n>n0,c1f(n)≤g(n)≤c2f(n)}
即:从某一项起,
f
(
n
)
f(n)
f(n)的线性范围内的函数的集合。
注意:
- g ( n ) ∈ Θ ( f ( n ) ) g(n)\in \Theta (f(n)) g(n)∈Θ(f(n))常记为 g ( n ) = Θ ( f ( n ) ) g(n)=\Theta (f(n)) g(n)=Θ(f(n)),称 g ( n ) g(n) g(n)与 f ( n ) f(n) f(n)同阶
定理:
f
(
n
)
=
Θ
(
g
(
n
)
)
⇔
f
(
n
)
=
O
(
g
(
n
)
)
且
f
(
n
)
=
Ω
(
g
(
n
)
)
f(n)=\Theta (g(n)) \Leftrightarrow f(n)=O(g(n)) 且f(n) = \Omega (g(n))
f(n)=Θ(g(n))⇔f(n)=O(g(n))且f(n)=Ω(g(n))
1.2 低阶函数集合
定义函数
f
(
n
)
f(n)
f(n)的低阶函数集合
O
(
f
(
n
)
)
O(f(n))
O(f(n))为:
O
(
f
(
n
)
)
=
{
g
(
n
)
∣
∃
c
>
0
,
n
0
,
∀
n
>
n
0
,
0
≤
g
(
n
)
≤
c
f
(
n
)
}
O(f(n))=\left \{ g(n) \mid \exists c>0,n_0,\forall n>n_0,0\leq g(n)\leq cf(n) \right \}
O(f(n))={g(n)∣∃c>0,n0,∀n>n0,0≤g(n)≤cf(n)}
即:从某一项起,始终小于
f
(
n
)
f(n)
f(n)的线性倍数的函数的集合。
注意:
- g ( n ) ∈ O ( f ( n ) ) g(n)\in O(f(n)) g(n)∈O(f(n))常记为 g ( n ) = O ( f ( n ) ) g(n)=O(f(n)) g(n)=O(f(n)),称 f ( n ) f(n) f(n)是 g ( n ) g(n) g(n)的上界
1.3 高阶函数集合
定义函数
f
(
n
)
f(n)
f(n)的高阶函数集合
Ω
(
f
(
n
)
)
\Omega (f(n))
Ω(f(n))为:
Ω
(
f
(
n
)
)
=
{
g
(
n
)
∣
∃
c
>
0
,
n
0
,
∀
n
>
n
0
,
0
≤
c
f
(
n
)
≤
g
(
n
)
}
\Omega (f(n))=\left \{ g(n) \mid \exists c>0,n_0,\forall n>n_0,0\leq cf(n) \leq g(n) \right \}
Ω(f(n))={g(n)∣∃c>0,n0,∀n>n0,0≤cf(n)≤g(n)}
即:从某一项起,始终大于
f
(
n
)
f(n)
f(n)的线性倍数的函数的集合。
注意:
- g ( n ) ∈ Ω ( f ( n ) ) g(n)\in \Omega(f(n)) g(n)∈Ω(f(n))常记为 g ( n ) = Ω ( f ( n ) ) g(n)=\Omega(f(n)) g(n)=Ω(f(n)),称 f ( n ) f(n) f(n)是 g ( n ) g(n) g(n)的下界
1.4 严格低阶函数集合
定义函数
f
(
n
)
f(n)
f(n)的严格低阶函数集合
o
(
f
(
n
)
)
o(f(n))
o(f(n))为:
o
(
f
(
n
)
)
=
{
g
(
n
)
∣
∀
c
>
0
,
∃
n
0
,
0
≤
g
(
n
)
<
c
f
(
n
)
对
n
≥
n
0
恒
成
立
}
o(f(n))=\left \{ g(n) \mid \forall c>0, \exists n_0 ,0\leq g(n) < cf(n) 对n\ge n_0恒成立\right \}
o(f(n))={g(n)∣∀c>0,∃n0,0≤g(n)<cf(n)对n≥n0恒成立}
即:对于任意的正实数倍数的
f
(
n
)
f(n)
f(n),从某一项开始,该函数总在其下方。
注意:
- g ( n ) ∈ o ( f ( n ) ) g(n)\in o (f(n)) g(n)∈o(f(n))常记为 g ( n ) = o ( f ( n ) ) g(n)=o (f(n)) g(n)=o(f(n)),称 f ( n ) f(n) f(n)是 g ( n ) g(n) g(n)的严格上界
定理:
f
(
n
)
=
o
(
g
(
n
)
)
⇔
lim
n
→
∞
f
(
n
)
g
(
n
)
=
0
f(n)=o(g(n))\Leftrightarrow \lim_{n \to \infty} \frac{f(n)}{g(n)}=0
f(n)=o(g(n))⇔n→∞limg(n)f(n)=0
1.5 严格高阶函数集合
定义函数
f
(
n
)
f(n)
f(n)的严格高阶函数集合
ω
(
f
(
n
)
)
\omega (f(n))
ω(f(n))为:
ω
(
f
(
n
)
)
=
{
g
(
n
)
∣
∀
c
>
0
,
∃
n
0
,
0
≤
c
f
(
n
)
<
g
(
n
)
对
n
≥
n
0
恒
成
立
}
\omega (f(n))=\left \{ g(n) \mid \forall c>0, \exists n_0 ,0\leq cf(n) < g(n) 对n\ge n_0恒成立\right \}
ω(f(n))={g(n)∣∀c>0,∃n0,0≤cf(n)<g(n)对n≥n0恒成立}
即:对于任意的正实数倍数的
f
(
n
)
f(n)
f(n),从某一项开始,该函数总在其上方。
注意:
- g ( n ) ∈ ω ( f ( n ) ) g(n)\in \omega (f(n)) g(n)∈ω(f(n))常记为 g ( n ) = ω ( f ( n ) ) g(n)=\omega (f(n)) g(n)=ω(f(n)),称 f ( n ) f(n) f(n)是 g ( n ) g(n) g(n)的严格下界
定理:
f
(
n
)
=
ω
(
g
(
n
)
)
⇔
lim
n
→
∞
f
(
n
)
g
(
n
)
=
∞
f(n)=\omega (g(n))\Leftrightarrow \lim_{n \to \infty} \frac{f(n)}{g(n)}=∞
f(n)=ω(g(n))⇔n→∞limg(n)f(n)=∞
二、函数阶的性质
(1)传递性
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
)
)
\begin{array}{l} f(n)=\Theta(g(n)) \wedge g(n)=\Theta(h(n)) \Rightarrow f(n)=\Theta(h(n)) \\ f(n)=O(g(n)) \wedge g(n)=O(h(n)) \Rightarrow f(n)=O(h(n)) \\ f(n)=\Omega(g(n)) \wedge g(n)=\Omega(h(n)) \Rightarrow f(n)=\Omega(h(n)) \\ f(n)=o(g(n)) \wedge g(n)=o(h(n)) \Rightarrow f(n)=o(h(n)) \\ f(n)=\omega(g(n)) \wedge g(n)=\omega(h(n)) \Rightarrow f(n)=\omega(h(n)) \end{array}
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))
(2)自反性
f
(
n
)
=
Θ
(
f
(
n
)
)
f
(
n
)
=
O
(
f
(
n
)
)
f
(
n
)
=
Ω
(
f
(
n
)
)
\begin{aligned} f(n) &=\Theta(f(n)) \\ f(n) &=O(f(n)) \\ f(n) &=\Omega(f(n)) \end{aligned}
f(n)f(n)f(n)=Θ(f(n))=O(f(n))=Ω(f(n))
(3)对称性
f
(
n
)
=
Θ
(
g
(
n
)
)
⇔
g
(
n
)
=
Θ
(
f
(
n
)
)
f(n)=\Theta(g(n)) \Leftrightarrow g(n)=\Theta(f(n))
f(n)=Θ(g(n))⇔g(n)=Θ(f(n))
(4)反对称性
f
(
n
)
=
O
(
g
(
n
)
)
⇔
g
(
n
)
=
Ω
(
f
(
n
)
)
f
(
n
)
=
o
(
g
(
n
)
)
⇔
g
(
n
)
=
ω
(
f
(
n
)
)
\begin{array}{l} f(n)=O(g(n)) \Leftrightarrow g(n)=\Omega(f(n)) \\ f(n)=o(g(n)) \Leftrightarrow g(n)=\omega(f(n)) \end{array}
f(n)=O(g(n))⇔g(n)=Ω(f(n))f(n)=o(g(n))⇔g(n)=ω(f(n))
三、标准符号和通用函数
3.1 Flour和Ceiling
(1)定义
⌊ x ⌋ \lfloor x\rfloor ⌊x⌋表示小于等于x的最大整数, ⌈ x ⌉ \lceil x \rceil ⌈x⌉表示大于等于x的最小整数。
(2)定理
① x − 1 < ⌊ x ⌋ ≤ x ≤ ⌈ x ⌉ < x + 1 x-1 <\left \lfloor x \right \rfloor \leq x \leq \left \lceil x \right \rceil <x+1 x−1<⌊x⌋≤x≤⌈x⌉<x+1
② ⌊ n 2 ⌋ + ⌈ n 2 ⌉ = n , ∀ n ∈ Z \left \lfloor \frac{n}{2} \right \rfloor + \left \lceil \frac{n}{2} \right \rceil =n,\forall n \in Z ⌊2n⌋+⌈2n⌉=n,∀n∈Z
③ ⌈ ⌈ n a ⌉ b ⌉ = ⌈ n a b ⌉ ⌊ ⌊ n a ⌋ b ⌋ = ⌊ n a b ⌋ , ∀ a , b , n ∈ Z , a ≠ 0 , b ≠ 0 \begin{matrix}\left \lceil \frac{ \left \lceil \frac{n}{a} \right \rceil}{b} \right \rceil = \left \lceil \frac{n}{ab} \right \rceil \\\left \lfloor \frac{\left \lfloor \frac{n}{a} \right \rfloor}{b} \right \rfloor=\left \lfloor \frac{n}{ab} \right \rfloor \end{matrix} ,\forall a,b,n \in Z, a\ne 0,b \ne 0 ⌈b⌈an⌉⌉=⌈abn⌉⌊b⌊an⌋⌋=⌊abn⌋,∀a,b,n∈Z,a=0,b=0
3.2 线性和
给出两个定理:
① ∑ k = 1 n ( c a k + b k ) = c ∑ k = 1 n a k + ∑ k = 1 n b k \sum_{k=1}^{n}(ca_k+b_k) = c\sum_{k=1}^{n} a_k + \sum_{k=1}^{n} b_k ∑k=1n(cak+bk)=c∑k=1nak+∑k=1nbk
② ∑ k = 1 n θ ( f ( k ) ) = θ ( ∑ k = 1 n f ( k ) ) \sum_{k=1}^{n}\theta (f(k))= \theta (\sum_{k=1}^{n}f(k)) ∑k=1nθ(f(k))=θ(∑k=1nf(k))