【算法设计与分析】第二章 算法分析的数学基础

本文深入探讨了算法分析的数学基础,包括计算复杂性函数的阶,如θ、O、Ω、o和ω符号的定义及性质。介绍了如何通过这些符号来描述算法的时间复杂度,如渐进上界和下界,并讨论了和式的估计与界限。此外,还触及了递归方程的解决方法,如替代方法和Master定理的应用。
摘要由CSDN通过智能技术生成

第二章 算法分析的数学基础

2.1 计算复杂性函数的阶

2.1.0 增长的阶

  • 描述算法效率?增长率
  • 忽略低阶项,保留高阶项;忽略常系数
  • θ
  • 插入排序最坏运行时间θ( n 2 n^2 n2)

2.1.1 同阶函数集合-θ(g(n))-渐进紧界

在这里插入图片描述

注意: C 1 、 C 2 > 0 C_1、C_2>0 C1C20

  • p ( n ) = ∑ i = 1 d a i n i = θ ( n d ) , a i 为 常 数 且 a d > 0 p(n)=\sum_{i=1}^d a_in^i=θ(n^d),a_i为常数且a_d>0 p(n)=i=1daini=θ(nd)aiad0

2.1.2 低阶函数-O(g(n))-渐进上界(cg(n)作为f(n)的上界)

在这里插入图片描述

  • f(n)=θ(g(n)) => f(n)=O(g(n));θ(g(n))∈O(g(n));
  • θ标记(渐进紧界)强于O标记(渐进上界)
  • an+b = O( n 2 n^2 n2); n =O( n 2 n^2 n2) ;
  • f(n)=O( n k n^k nk) <=> f(n)是多项式界限的
  • O用来描述运行时间最坏情况,对所有输入都正确,但θ无法对所有输入都正确。

2.1.3 高阶函数-Ω(g(n))-渐进下界

在这里插入图片描述

  1. 关于高阶低阶容易混淆的情况,当f(n)是g(n)的高阶函数,即f(n)在某个结点之后一直在c*g(n)上方,记为f(n)=O(g(n))。
  2. 对于f(n)和g(n), f(n) = θ(g(n))当且仅当f(n) = O(g(n))且f(n) = Ω(g(n)).
  3. Ω用来描述运行时间最好情况,对所有输入都正确,∴最好运行时间=运行时间≠最坏运行时间

2.1.4 严格低阶-o(g(n))-不紧的上界

在这里插入图片描述

  • 某个正常数cO标记中, 但所有正常数co标记中(存在与任意)
  • f(n)=o(g(n)) => lim ⁡ n → + ∞ f ( n ) g ( n ) = 0 \lim_{n\to +\infty}\frac {f(n)}{g(n)}=0 limn+g(n)f(n)=0

2.1.5 严格高阶-ω(g(n))-不紧的下界

  • f(n)=w(g(n)) <=> g(n)=o(f(n))

2.1.6 渐近符号的性质

  • 传递性-所有符号
  • 自反性-O、θ、Ω
  • 对称性-θ
  • 反对称性-O&Ω、o&ω
  • 存在f(n)≠O(g(n)),f(n)≠Ω(g(n))同时成立的情况

2.2 和式的估计与界限

  • 可以通过上界和下界描述时间复杂度

  • 和式的估计

    1. 线性和

      • ∑ ( c a k + b k ) = c ∑ a k + ∑ b k ; ∑(ca_k+b_k)=c∑a_k+∑b_k; (cak+bk)=cak+bk
    2. 级数

      • ∑ i = 1 n i = θ ( n 2 ) \sum_{i=1}^ni=θ(n^2) i=1ni=θ(n2)
      • ∑ k = 0 n x k = x n + 1 − 1 x − 1 , ( x ≠ 1 ) \sum_{k=0}^{n}x^k=\frac{x^{n+1}-1}{x-1},(x≠1) k=0nxk=x1xn+11,(x=1)
      • ∑ k = 0 ∞ x k = 1 1 − x , ( ∣ x ∣ < 1 ) \sum_{k=0}^{\infty}x^k=\frac{1}{1-x},(|x|<1) k=0xk=1x1,(x<1)
      • ∑ k = 1 n 1 k = l n k + O ( 1 ) \sum_{k=1}^n\frac{1}{k}=lnk+O(1) k=1nk1=lnk+O(1)
      • ∑ k = 1 n − 1 1 k ( k + 1 ) = 1 − 1 n \sum_{k=1}^{n-1}\frac{1}{k(k+1)}=1-\frac{1}{n} k=1n1k(k+1)1=1n1
      • l o g ( ∏ k = 1 n a k ) = ∑ k = 1 n l g a k log(\prod_{k=1}^{n}a_k)=\sum_{k=1}^{n}lga_k log(k=1nak)=k=1nlgak
      • etc…
    3. 和的界限

  • 直接求和的界限

    • 放缩: ∑ k = 1 n a i ≤ n × m a x { a k } \sum_{k=1}^na_i≤n\times max\{a_k\} k=1nain×max{ak}

    • 比值: a k + 1 a k ≤ r , 则 a k ≤ a 0 r k \frac{a_k+1}{a_k}≤r,则a_k≤a_0r^k akak+1raka0rk

    • 分裂和: ∑ k = 1 n k ≥ ∑ k = 1 n / 2 0 + ∑ k = n / 2 + 1 n n 2 \sum_{k=1}^nk≥\sum_{k=1}^{n/2}0+\sum_{k=n/2+1}^n\frac{n}{2} k=1nkk=1n/20+k=n/2+1n2n

    • 分裂+比值:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • 积分的几何性质:
      在这里插入图片描述
      在这里插入图片描述在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

      • 单调递减则恰好相反。

在这里插入图片描述

2.3 递归方程

  1. 替代方法

    • 猜想:联想已知的T(n)或先证明较松的上下界,再缩小不确定性范围。

    • 数学归纳法

    • 可以在猜测值中减去低阶项进行处理
      在这里插入图片描述在这里插入图片描述
      在这里插入图片描述

  • 变量替换方法:

    对于 T ( n ) T(\sqrt{n}) T(n ):令 m = lg ⁡ n 则 n = 2 m , S ( m ) = T ( 2 m ) , 则 T ( 2 m 2 ) = S ( m 2 ) m=\lg{n}则n=2^m,S(m)=T(2^m),则T(2^{\frac {m}{2}})=S(\frac{m}{2}) m=lgnn=2mS(m)=T(2m),T(22m)=S(2m)

  1. 迭代(递归树)法

    • 递归树+和式估计

    • T = a T ( n b ) + O ( g ( n ) ) T=aT(\frac {n}{b})+O(g(n)) T=aT(bn)+O(g(n))

      • 树高: log ⁡ b n + 1 \log_bn+1 logbn+1, 叶子节点数: a log ⁡ b n = n log ⁡ b a a^{\log_bn}=n^{\log_ba} alogbn=nlogba

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 可以猜测: T ( n ) = O ( n 2 ) T(n)=O(n^2) T(n)=O(n2),然后用归纳法证明
  1. Master定理

    • 求解 T ( n ) = a T ( n b ) + f ( n ) , a ≥ 1 且 b > 1 T(n)=aT(\frac{n}{b})+f(n),a≥1且b>1 T(n)=aT(bn)+f(n),a1b1的递归方程:

    • a : 子问题数量

      b : 子问题从原问题缩小的比例

      f(n): 将子问题的解,整合的代价

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值