主定理(简化版)

主定理(Master Theorem)是用于分析递归算法时间复杂度的一个重要工具。它适用于形式化定义的一类递归关系,通常采用分治策略解决问题的情况。

假设我们有一个递归算法,它将问题分解成 aaa 个子问题,每个子问题的规模是原问题的 1b\frac{1}{b}b1,解决每个子问题的代价是 T(nb)T(\cfrac{n}{b})T(bn),而将子问题的解合并成原问题的解的代价是 f(n)f(n)f(n)。那么该递归算法的时间复杂度可以表示为:
T(n)=a⋅T(nb)+f(n)T(n)=a·T(\frac{n}{b})+f(n)T(n)=aT(bn)+f(n)
其中,a≥1,b>1a ≥ 1,b > 1a1b>1 是常数,T(n)T(n)T(n) 是解决一个规模为 nnn 的问题所需的工作量,f(n)f(n)f(n) 是合并子问题的解的工作量。

主定理的三种情况:

  1. IFIFIF f(n)=O(nlogb(a−ε))f(n) = O(n^ {log_b(a - ε)})f(n)=O(nlogb(aε)),and ε>0ε > 0ε>0,Then T(n)=Θ(nlogb(a))T(n) = Θ(n^{log_b(a)})T(n)=Θ(nlogb(a))
  2. IFIFIF f(n)=Θ(nlogb(a)⋅logkn)f(n) = Θ(n^{log_b(a)} ·log^k n)f(n)=Θ(nlogb(a)logkn),and k≥0k ≥ 0k0,Then T(n)=Θ(nlogb(a)⋅logk+1n)T(n) = Θ(n^{log_b(a)} · log^{k+1} n)T(n)=Θ(nlogb(a)logk+1n)
  3. IFIFIF f(n)=Ω(nlogb(a+ε))f(n) = Ω(n^{log_b(a + ε)})f(n)=Ω(nlogb(a+ε)),and ε>0ε > 0ε>0a⋅f(nb)≤c⋅f(n)a · f(\frac{n}{b}) ≤ c · f(n)af(bn)cf(n) 对于某个常数 c<1c < 1c<1 和所有足够大的 nnn 成立,Then T(n)=Θ(f(n))T(n) = Θ(f(n))T(n)=Θ(f(n))

情况一:

T(n)=4T(n2)+nT(n)=4T(\frac{n}{2})+nT(n)=4T(2n)+n

其中 a=4≥1,b=2>1,f(n)=n,log24=2>1a = 4\ge1,b = 2>1,f(n) = n,log_{2}4=2>1a=41b=2>1f(n)=nlog24=2>1

根据主定理的第一种情况:f(n)=O(nlogb(a−ε))f(n) = O(n^ {log_b(a - ε)})f(n)=O(nlogb(aε))

可得 n=O(nlog2​4−ε)=O(n2)n=O(n^{log_{2}​4−ε})=O(n^{2})n=O(nlog2​4ε)=O(n2)

∴T(n)=Θ(n2)\therefore T(n)=Θ(n^{2})T(n)=Θ(n2)


情况二:

T(n)=4T(n2)+n2T(n)=4T(\frac{n}{2})+n^{2}T(n)=4T(2n)+n2

其中 a=4≥1,b=2>1,f(n)=n2,log24=2a = 4\ge1,b = 2>1,f(n) = n^{2},log_{2}4=2a=41b=2>1f(n)=n2log24=2

根据主定理的第二种情况:f(n)=O(nlogb(a)logkn)f(n) = O(n^ {log_b(a )}log^{k}n)f(n)=O(nlogb(a)logkn)

可得 n2=Θ(nlog2​4log0n)=Θ(n2)n^{2}=Θ(n^{log_{2}​4}log^{0}n)=Θ(n^{2})n2=Θ(nlog2​4log0n)=Θ(n2)

∴T(n)=Θ(n2logn)\therefore T(n)=Θ(n^{2}logn)T(n)=Θ(n2logn)


情况三:

T(n)=2T(n2)+n2T(n)=2T(\frac{n}{2})+n^{2}T(n)=2T(2n)+n2

其中 a=2≥1,b=2>1,f(n)=n2,log22=1<2a = 2\ge1,b = 2>1,f(n) = n^{2},log_{2}2=1<2a=21b=2>1f(n)=n2log22=1<2

根据主定理的第三种情况:f(n)=Ω(nlogb(a)+ε)f(n) = Ω(n^ {log_b(a )+ε })f(n)=Ω(nlogb(a)+ε)

可得 n2=Ω(nlog2​2+ε)=Ω(n1+ε)n^{2}=Ω(n^{log_{2}​2+ε})=Ω(n^{1+ε})n2=Ω(nlog2​2+ε)=Ω(n1+ε)

但我们还需要检查是否满足 a⋅f(nb)≤c⋅f(n)a · f(\frac{n}{b}) ≤ c · f(n)af(bn)cf(n) 的条件:

2⋅(n/2)2≤c⋅n2n2/2≤c⋅n21/2≤c 2·(n/2)^{2}≤c·n^{2}\\ n^{2}/{2}≤c·n^{2}\\ 1/2≤c 2(n/2)2cn2n2/2cn21/2c

对于任何小于 1/2 的常数 ccc,上述不等式都成立

∴T(n)=Θ(n2)\therefore T(n)=Θ(n^{2})T(n)=Θ(n2)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恭仔さん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值