本文主要是介绍3 函数的增长概念(中英对照),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
3.1 渐近记号
通过分析算法的时间复杂度 (Time complexity) 和空间复杂度 (space complexity) 来分析算法的效率。由此,引入了三种渐近记号 Θ , O , Ω \Theta ,O ,\Omega Θ,O,Ω 其定义域为自然数集 N = { 0 , 1 , 2 , . . . } N=\left\{ 0,1,2,... \right\} N={0,1,2,...} 运行时间函数用T(n)来表示。
Θ ( g ( n ) ) \Theta (g(n)) Θ(g(n)) Θ \Theta Θ可简单记忆为 " = " "=" "="
对于一个给定的函数g(n), 用 Θ ( g ( n ) ) \Theta (g(n)) Θ(g(n))来表示以下函数的集合:
Θ ( g ( n ) ) = { f ( n ) : 存 在 正 常 量 c 1 , c 2 和 n 0 , 使 得 对 所 有 n ≥ n 0 , 有 0 ≤ c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) } \Theta (g(n))=\left\{ f(n): 存在正常量c_{1}, c_{2}和n_{0},使得对所有n\geq n_{0},有0\leq c_{1}g(n)\leq f(n)\leq c_{2}g(n) \right\} Θ(g(n))={f(n):存在正常量c1,c2和n0,使得对所有n≥n0,有0≤c1g(n)≤f(n)≤c2g(n)}
f ( n ) = O ( g ( n ) ) f(n) = O (g(n)) f(n)=O(g(n)) O O O 可简单记忆为 ≤ \leq ≤
O ( g ( n ) ) = { f ( n ) : 存 在 正 常 量 c 2 和 n 0 , 使 得 对 所 有 n ≥ n 0 , 有 f ( n ) ≤ c 2 g ( n ) } O(g(n))=\left\{ f(n): 存在正常量c_{2}和n_{0},使得对所有n\geq n_{0},有 f(n)\leq c_{2}g(n) \right\} O(g(n))={f(n):存在正常量c2和n0,使得对所有n≥n0,有f(n)≤c2g(n)}
f ( n ) = Ω ( g ( n ) ) f(n)=\Omega (g(n)) f(n)=Ω(g(n)) Ω \Omega Ω 可简单记忆为 ≥ \geq ≥
Ω ( g ( n ) ) = { f ( n ) : 存 在 正 常 量 c 1 和 n 0 , 使 得 对 所 有 n ≥ n 0 , 有 0 ≤ c 1 g ( n ) ≤ f ( n ) ) } \Omega (g(n))=\left\{ f(n): 存在正常量c_{1}和n_{0},使得对所有n\geq n_{0},有0\leq c_{1}g(n)\leq f(n)) \right\} Ω(g(n))={f(n):存在正常量c1和n0,使得对所有n≥n0,有0≤c1g(n)≤f(n))}
以上三种函数的图例如下:
3.1.1 用极限的方式理解三种渐近记号:
若 lim n → + ∞ f ( n ) g ( n ) = ∞ \lim_{n\to+\infty} \frac{f(n)}{g(n)} =\infty n→+∞limg(n)f(n)=∞
此时 f ( n ) f(n) f(n) 无限大 => f ( n ) ≥ c g ( n ) , f ( n ) = Ω ( g ( n ) ) f(n)\geq cg(n) , f(n)=\Omega(g(n)) f(n)≥cg(n),f(n)=Ω(g(n))
若 lim n → + ∞ f ( n ) g ( n ) = 0 \lim_{n\to+\infty} \frac{f(n)}{g(n)} =0 n→+∞limg(n)f(n)=0
此时 g ( n ) g(n) g(n) 无限大 => f ( n ) ≤ c g ( n ) , f ( n ) = O ( g ( n ) ) f(n)\leq cg(n), f(n)=O(g(n)) f(n)≤cg(n),f(n)=O(g(n))
若 lim n → + ∞ f ( n ) g ( n ) = C ( C 为 非 零 常 数 ) \lim_{n\to+\infty} \frac{f(n)}{g(n)} =C (C 为非零常数) n→+∞limg(n)f(n)=C(C为非零常数)
此时 g ( n ) g(n) g(n) 无线接近f(n) => f ( n ) = c g ( n ) , f ( n ) = Θ ( g ( n ) ) f(n)= cg(n) , f(n)=\Theta(g(n)) f(n)=cg(n),f(n)=Θ(g(n))
3.1.2 时间复杂度的分析方法:
3.1.2.1、线性递归关系式 – Linear Recurrence Relations
表达式:
a n = c 1 a n − 1 + c 2 a n − 2 + . . . + c k a n − k + f ( n ) a_{n} = c_{1}a_{n-1}+c_{2}a_{n-2}+...+c_{k}a_{n-k}+f(n) an=c1an−1+c2an−2+...+ckan−k+f(n)
特点:
等号右侧为:
- 多项式 polynimial 从 a n − 1 , . . . , a n − k a_{n-1},...,a_{n-k} an−1,...,an−k
- c i c_{i} ci常数系数 Constant coefficients
- 若 f ( n ) = 0 f(n)=0 f(n)=0为齐次方程 homogeneous equation
- 若 f ( n ) ≠ 0 f(n)\neq 0 f(n)=0 为非齐次方程 Inhomogeneous equation
3.1.2.2、齐次 常数系数 r阶方程的解题方法 linear homogeneous, constant coefficients, order k equations
a n = c 1 a n − 1 + c 2 a n − 2 + . . . + c k a n − k a_{n} = c_{1}a_{n-1}+c_{2}a_{n-2}+...+c_{k}a_{n-k} an=c1an−1+c2an−2+...+ckan−k
Step1: 建立特征多项式/Set the Characteristic equation
r k − c 1 r k − 1 − c 2 r k − 2 − . . . − c k = 0 r^k - c_{1}r^{k-1}-c_{2}r^{k-2}-...-c_{k}=0 rk−c1rk−1−c2rk−2−...−ck=0
注: r 代表线性方程的根
Step2:计算此特征多项式的解 得到多项式的根 r
Step3: 若 所有根 r 是独特的(unique)
那么
a n = α 1 r 1 n + α 2 r 1 n + . . . + α m r m n a_{n} = \alpha _{1}r_{1}^n +\alpha _{2}r_{1}^n +...+\alpha_{m}r_{m}^n an=α1r1n+α2r1n+...+αmrmn, 且 r 1 , r 2 , . . . , r m r_{1},r_{2},...,r_{m} r1,r2,...,rm为不同的根(distinct roots)
若 根 r 不是unique 的
那么我们有 t 个不同的根:每个根 r i 重 复 度 为 m i r_{i} 重复度为 m_{i} ri重复度为mi 且
a n = ( α 10 + α 11 n + α 12 n 2 + . . . + α 1 m 1 − 1 n m 1 − 1 ) r 1 n a_{n} = (\alpha _{10}+\alpha_{11}n+\alpha_{12}n^2+...+\alpha_{1m_{1}-1}n^{m_{1}-1})\color{red} r_{1}^{n} an=(α10+α11n+α12n2+...+α1m1−1nm1−1)r1n
+ ( α 20 + α 21 n + α 22 n 2 + . . . + α 2 m 2 − 1 n m 2 − 1 ) r 2 n +(\alpha _{20}+\alpha_{21}n+\alpha_{22}n^2+...+\alpha_{2m_{2}-1}n^{m_{2}-1})\color{red} r_{2}^{n} +(α20+α21n+α22n2+...+α2m2−1nm2−1)r2n
+ . . . + ( α t 0 + α t 1 n + α t 2 n 2 + . . . + α t m t − 1 n m t − 1 ) r t n +...+(\alpha _{t0}+\alpha_{t1}n+\alpha_{t2}n^2+...+\alpha_{tm_{t}-1}n^{m_{t}-1})\color{red} r_{t}^{n} +...+(αt0+αt1n+αt2n2+...+αtmt−1nmt−1)rtn
Step4:使用初始条件计算 α i \alpha_{i} αi or α i j \alpha_{ij} αij
齐次线性方程的例题
Example 1:
已知: a 0 = 2 , a 1 = 7 , a n = a n − 1 + 2 a n − 2 且 n ≥ 2 a_{0}=2,a_{1}=7, a_{n} = a_{n-1}+2a_{n-2} 且n\geq2 a0=2,a1=7,an=an−1+2an−2且n≥2
Step1: 建立特征多项式/Set the Characteristic equation
由 a n = a n − 1 + 2 a n − 2 a_{n} = a_{n-1}+2a_{n-2} an=an−1+2an−2 得到 k=2
Characteristic equation: r 2 = r + 2 r^2 = r+2 r2=r+2
Step2: 解特征多项式
( r − 2 ) ( r + 1 ) = 0 (r-2)(r+1) = 0 (r−2)(r+1)=0
根 root 重复度multiplicity:
r 1 = 2 r_{1} =2 r1=2 m 1 = 1 m_{1}=1 m1=1
r 2 = − 1 r_{2}= -1 r2=−1 m 2 = 1 m_{2}=1 m2=1
注: 由于所有根重复度为1 因此根都是unique的采用 a n = α 1 r 1 n + α 2 r 1 n + . . . + α m r m n a_{n} = \alpha _{1}r_{1}^n +\alpha _{2}r_{1}^n +...+\alpha_{m}r_{m}^n an=α1r1n+α2r1n+...+αmrmn形式
Step3:
a n = α 1 2 n + α 2 ( − 1 ) n a_{n} = \alpha_{1}2^n+\alpha_{2}(-1)^n an=α12n+α2(−1)n①
Step4:使用初始条件代入公式:
已知 a 0 = 2 , a 1 = 7 a_{0}=2,a_{1}=7 a0=2,a1=7代入上述公式
α 1 和 α 2 \alpha_{1}和\alpha_{2} α1和α2满足:
f ( x ) = { α 1 × 2 0 + α 2 × ( − 1 ) 0 = 2 α 1 × 2 1 + α 2 × ( − 1 ) 1 = 7 f(x)=\left\{ \begin{aligned} \alpha_{1}\times2^0 +\alpha_{2}\times(-1)^0& = & 2\\ \alpha_{1}\times2^1 +\alpha_{2}\times(-1)^1 & = & 7& \end{aligned} \right. f(x)={α1×20+α2×(−1)0α1×21+α2×(−1)1==27
⇔ \Leftrightarrow ⇔
f ( x ) = { α 1 + α 2 = 2 ( n = 0 ) 2 α 1 − α 2 = 7 ( n = 1 ) f(x)=\left\{ \begin{aligned} \alpha_{1}+\alpha_{2}& = & 2 (n=0)\\ 2\alpha_{1} -\alpha_{2} & = & 7(n=1)& \end{aligned} \right. f(x)={α1+α22α1−α2==2(n=0)7(n=1)
⇒ 得 到 α 1 = 3 α 2 = − 1 \Rightarrow 得到\;\alpha_{1}=3\qquad\alpha_{2}=-1 ⇒得到α1=3α2=−1 代入到 ①
得到最终解为
a n = 3 × 2 n − ( − 1 ) n a_{n}=3\times2^n-(-1)^n an=3×2n−(−1)n
Example2:
已知: a n = 2 a n − 1 − 2 a n − 3 + a n − 4 删 除 线 格 式 且 n ≥ 4 a_{n} = 2a_{n-1}-2a_{n-3}+a_{n-4} 删除线格式 且n\geq4 an=2an−1−2an−3+an−4删除线格式且n≥4 且 已 知 a 0 , a 1 , a 2 , a 3 已知a_{0},a_{1},a_{2},a_{3} 已知a0,a1,a2,a3
解: k=4
建立特征多项式characteristc equation: r 4 = 2 r 3 − 2 r + 1 r^4=2r^3-2r+1 r4=2r3−2r+1
可写成 ⇒ ( r − 1 ) 3 ( r + 1 ) = 0 \Rightarrow (r-1)^3(r+1)=0 ⇒(r−1)3(r+1)=0
根 root 重复度multiplicity:
r 1 = − 1 r_{1} =-1 r1=−1 m 1 = 1 m_{1}=1 m1=1
r 2 = 1 r_{2}= 1 r2=1 m 2 = 3 m_{2}=3 m2=3
注: 由于存在根重复度为3 因此根不是unique的,采用
a n = ( α 10 + α 11 n + α 12 n 2 + . . . + α 1 m 1 − 1 n m 1 − 1 ) r 1 n a_{n} = (\alpha _{10}+\alpha_{11}n+\alpha_{12}n^2+...+\alpha_{1m_{1}-1}n^{m_{1}-1})\color{red} r_{1}^{n} an=(α10+α11n+α12n2+...+α1m1−1nm1−1)r1n
+ ( α 20 + α 21 n + α 22 n 2 + . . . + α 2 m 2 − 1 n m 2 − 1 ) r 2 n +(\alpha _{20}+\alpha_{21}n+\alpha_{22}n^2+...+\alpha_{2m_{2}-1}n^{m_{2}-1})\color{red} r_{2}^{n} +(α20+α21n+α22n2+...+α2m2−1nm2−1)r2n
+ . . . + ( α t 0 + α t 1 n + α t 2 n 2 + . . . + α t m t − 1 n m t − 1 ) r t n +...+(\alpha _{t0}+\alpha_{t1}n+\alpha_{t2}n^2+...+\alpha_{tm_{t}-1}n^{m_{t}-1})\color{red} r_{t}^{n} +...+(αt0+αt1n+αt2n2+...+αtmt−1nmt−1)rtn
Step4:使用初始条件计算 α i \alpha_{i} αi$形式
General form of the solution:
a n = 1 n × ( α 0 + α 1 n + α 2 n 2 ) + α 3 ( − 1 ) n a_{n}=1^n\times(\alpha_{0}+\alpha_{1}n+\alpha_{2}n^2)+\alpha_{3}(-1)^n an=1n×(α0+α1n+α2n2)+α3(−1)n
= α 0 + α 1 n + α 2 n 2 + α 3 ( − 1 ) n =\alpha_{0}+\alpha_{1}n+\alpha_{2}n^2+\alpha_{3}(-1)^n =α0+α1n+α2n2+α3(−1)n
利用已知的 a 0 , a 1 , a 2 , a 3 a_{0},a_{1},a_{2},a_{3} a0,a1,a2,a3解方程
Example3:初始条件已知 a 1 , a 2 , a 3 a_{1},a_{2},a_{3} a1,a2,a3
a n = a n − 1 − a n − 2 + a n − 3 且 n ≥ 4 a_{n}=a_{n-1}-a_{n-2}+a_{n-3}\;且n\geq4 an=an−1−an−2+an−3且n≥4
建立特征多项式 r 3 = r 2 − r + 1 r^3=r^2-r+1 r3=r2−r+1
可写成 ⇒ ( r − 1 ) ( r + i ) ( r − i ) = 0 \Rightarrow (r-1)(r+i)(r-i)=0 ⇒(r−1)(r+i)(r−i)=0
根 root 重复度multiplicity:
r 1 = 1 r_{1} =1 r1=1 m 1 = 1 m_{1}=1 m1=1
r 2 = i r_{2}= i r2=i m 2 = 1 m_{2}=1 m2=1
r 3 = − i r_{3}= -i r3=−i m 2 = 1 m_{2}=1 m2=1
由于所有根重复度都为1,所以
a n = α 0 ( i ) n + α 1 ( − i ) n + α 2 1 n a_{n}=\alpha_{0}(i)^n+\alpha_{1}(-i)^n+\alpha_{2}1^n an=α0(i)n+α1(−i)n+α21n
通过已知条件 a 1 , a 2 , a 3 a_{1},a_{2},a_{3} a1,a2,a3得到 α 0 , α 1 , α 2 的 值 \alpha_{0},\alpha_{1},\alpha_{2}的值 α0,α1,α2的值
从而得到 a n a_{n} an的最终形式
3.1.2.3、非齐次 常数系数 r 阶方程
表达式:
a n = c 1 a n − 1 + c 2 a n − 2 + . . . + c k a n − k + f ( n ) 且 有 k 个 初 始 条 件 a_{n}=c_{1}a_{n-1}+c_{2}a_{n-2}+...+c_{k}a_{n-k}+f(n) 且有k个初始条件 an=c1an−1+c2an−2+...+ckan−k+f(n)且有k个初始条件
Step1:利用3.1.2.2中的方法解决齐次方程部分 得到 a n ( h ) a_{n}^{(h)} an(h)
假设
a n ( h ) = c 1 a n − 1 + c 2 a n − 2 + . . . + c k a n − k a_{n}^{(h)}=c_{1}a_{n-1}+c_{2}a_{n-2}+...+c_{k}a_{n-k} an(h)=c1an−1+c2an−2+...+ckan−k
不能用初始条件代入公式
Step2:找到f(n)的解 find a particular solution { a n ( p ) } \left\{ a_{n}^{(p)} \right\} {an(p)}
Step3:得到 a n a_{n} an的表达式: a n = a n ( h ) + a n ( p ) a_{n}=a_{n}^{(h)}+a_{n}^{(p)} an=an(h)+an(p) ①
Step4:利用初始条件代入① 得到 a n a_{n} an的最终形式
在Step2找f(n)的particular solution时,有四种情况:
- f(n)是多项式p(n) – C n i Cn^i Cni常数C乘 n 的 i 次方形式,i 为大于等于0的数
p(n)的次数等于f(n)的次数加 t
d e g r e e ( p ( n ) ) = d e g r e e ( f ( n ) ) + t degree(p(n))= degree(f(n))+t degree(p(n))=degree(f(n))+t
且 如果在step1中存在根为1, t 等于 根为1 的重复度。
否则 t=0 相当于在charactertistic equation 没有根的值等于 1 - f ( n ) = β n 且 β 为 常 数 f(n)=\beta^n且\beta为常数 f(n)=βn且β为常数
a n ( p ) a_{n}^{(p)} an(p)为 C n k β n Cn^k\beta^n Cnkβn的形式
且C是常数
若 β \beta β是characteristc equation 的根,那么k是 β \beta β的重复度
否则k=0 - f ( n ) = p ( n ) + β n f(n)=p(n)+\beta^n f(n)=p(n)+βn,且 p ( n ) p(n) p(n)为多项式
将f(n)拆分为 f 1 ( n ) + f 2 ( n ) f_{1}(n)+f_{2}(n) f1(n)+f2(n)形式, f 1 ( n ) f_{1}(n) f1(n)用多项式方法解, f 2 ( n ) f_{2}(n) f2(n)用 β n \beta^n βn方法解,得到两个解后相加 ⇒ a n ( p 1 ) + a n ( p 2 ) \Rightarrow a_{n}^{(p_{1})}+a_{n}^{(p_{2})} ⇒an(p1)+an(p2) - f ( n ) = p ( n ) β n f(n)=p(n)\beta^n f(n)=p(n)βn且 p ( n ) p(n) p(n)为 r 次方的多项式,且 β \beta β为常数
若 β \beta β不是characteristc equation的根,那么 a n ( p ) = q ( n ) β n a_{n}^{(p)}=q(n)\beta^n an(p)=q(n)βn且 q 是至多为 r 次方的多项式
若 β \beta β是characteristc equation的根,且根 β \beta β的重复度为 t ,
那么 a n ( p ) = q ( n ) n t β n a_{n}^{(p)}=q(n)n^t\beta^n an(p)=q(n)ntβn
有问题请留言,例题详见文章《3 函数的增长例题》
这篇关于3 函数的增长概念(中英对照)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!