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

相关文章

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>