(二)数学基础——算法设计与分析

114 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情


一、复杂度函数的阶

我们可以用函数的阶数来形象地描绘函数之间增长快慢的关系。


1.1 同阶函数集合

定义函数f(n)f(n)的同阶函数集合Θ(f(n))\Theta (f(n))为:

Θ(f(n))={g(n)c1,c2>0,n0,n>n0,c1f(n)g(n)c2f(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)f(n)的线性范围内的函数的集合。 请添加图片描述

注意:

  • g(n)Θ(f(n))g(n)\in \Theta (f(n))常记为g(n)=Θ(f(n))g(n)=\Theta (f(n)),称g(n)g(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))

1.2 低阶函数集合

定义函数f(n)f(n)的低阶函数集合O(f(n))O(f(n))为:

O(f(n))={g(n)c>0,n0,n>n0,0g(n)cf(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 \}

即:从某一项起,始终小于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)),称f(n)f(n)g(n)g(n)的上界

1.3 高阶函数集合

定义函数f(n)f(n)的高阶函数集合Ω(f(n))\Omega (f(n))为:

Ω(f(n))={g(n)c>0,n0,n>n0,0cf(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)f(n)的线性倍数的函数的集合。

请添加图片描述

注意:

  • g(n)Ω(f(n))g(n)\in \Omega(f(n))常记为g(n)=Ω(f(n))g(n)=\Omega(f(n)),称f(n)f(n)g(n)g(n)的下界

1.4 严格低阶函数集合

定义函数f(n)f(n)的严格低阶函数集合o(f(n))o(f(n))为:

o(f(n))={g(n)c>0,n0,0g(n)<cf(n)nn0恒成立}o(f(n))=\left \{ g(n) \mid \forall c>0, \exists n_0 ,0\leq g(n) < cf(n) 对n\ge n_0恒成立\right \}

即:对于任意的正实数倍数的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)),称f(n)f(n)g(n)g(n)的严格上界

定理:

f(n)=o(g(n))limnf(n)g(n)=0f(n)=o(g(n))\Leftrightarrow \lim_{n \to \infty} \frac{f(n)}{g(n)}=0

1.5 严格高阶函数集合

定义函数f(n)f(n)的严格高阶函数集合ω(f(n))\omega (f(n))为:

ω(f(n))={g(n)c>0,n0,0cf(n)<g(n)nn0恒成立}\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)f(n),从某一项开始,该函数总在其上方。

注意:

  • g(n)ω(f(n))g(n)\in \omega (f(n))常记为g(n)=ω(f(n))g(n)=\omega (f(n)),称f(n)f(n)g(n)g(n)的严格下界

定理:

f(n)=ω(g(n))limnf(n)g(n)=f(n)=\omega (g(n))\Leftrightarrow \lim_{n \to \infty} \frac{f(n)}{g(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}

(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}

(3)对称性

f(n)=Θ(g(n))g(n)=Θ(f(n))f(n)=\Theta(g(n)) \Leftrightarrow g(n)=\Theta(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}

三、标准符号和通用函数

3.1 Flour和Ceiling

(1)定义

x\lfloor x\rfloor表示小于等于x的最大整数,x\lceil x \rceil表示大于等于x的最小整数。

(2)定理

x1<xxx<x+1x-1 <\left \lfloor x \right \rfloor \leq x \leq \left \lceil x \right \rceil <x+1

n2+n2=n,nZ\left \lfloor \frac{n}{2} \right \rfloor + \left \lceil \frac{n}{2} \right \rceil =n,\forall n \in Z

nab=nabnab=nab,a,b,nZ,a0,b0\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


3.2 线性和

给出两个定理:

k=1n(cak+bk)=ck=1nak+k=1nbk\sum_{k=1}^{n}(ca_k+b_k) = c\sum_{k=1}^{n} a_k + \sum_{k=1}^{n} b_k

k=1nθ(f(k))=θ(k=1nf(k))\sum_{k=1}^{n}\theta (f(k))= \theta (\sum_{k=1}^{n}f(k))