3 函数的增长概念(中英对照)

2023-11-03 22:21

本文主要是介绍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,c2n0,使nn0,0c1g(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):c2n0,使nn0,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):c1n0,使nn0,0c1g(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=c1an1+c2an2+...+ckank+f(n)
特点:
   等号右侧为:

  1. 多项式 polynimial 从 a n − 1 , . . . , a n − k a_{n-1},...,a_{n-k} an1,...,ank
  2. c i c_{i} ci常数系数 Constant coefficients
  3. f ( n ) = 0 f(n)=0 f(n)=0为齐次方程 homogeneous equation
  4. 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=c1an1+c2an2+...+ckank
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 rkc1rk1c2rk2...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} rimi
   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+...+α1m11nm11)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+...+α2m21nm21)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+...+αtmt1nmt1)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=an1+2an2n2

Step1: 建立特征多项式/Set the Characteristic equation
 由 a n = a n − 1 + 2 a n − 2 a_{n} = a_{n-1}+2a_{n-2} an=an1+2an2 得到 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 (r2)(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=2an12an3+an4线n4 已 知 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=2r32r+1
 可写成 ⇒ ( r − 1 ) 3 ( r + 1 ) = 0 \Rightarrow (r-1)^3(r+1)=0 (r1)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+...+α1m11nm11)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+...+α2m21nm21)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+...+αtmt1nmt1)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=an1an2+an3n4
建立特征多项式 r 3 = r 2 − r + 1 r^3=r^2-r+1 r3=r2r+1
 可写成 ⇒ ( r − 1 ) ( r + i ) ( r − i ) = 0 \Rightarrow (r-1)(r+i)(r-i)=0 (r1)(r+i)(ri)=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=c1an1+c2an2+...+ckank+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)=c1an1+c2an2+...+ckank
  不能用初始条件代入公式
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时,有四种情况:

  1. 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
  2. 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
  3. 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)
  4. 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 函数的增长概念(中英对照)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/341272

相关文章

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

MySQL 字符串截取函数及用法详解

《MySQL字符串截取函数及用法详解》在MySQL中,字符串截取是常见的操作,主要用于从字符串中提取特定部分,MySQL提供了多种函数来实现这一功能,包括LEFT()、RIGHT()、SUBST... 目录mysql 字符串截取函数详解RIGHT(str, length):从右侧截取指定长度的字符SUBST