首页 > 其他分享 >主定理

主定理

时间:2023-12-19 12:24:52浏览次数:44  
标签:frac log 定理 times 公比 复杂度

参考文章:时间复杂度及主定理详解托比欧:主定理 Master Theorem

简介

在算法分析中,主定理(英语:master theorem)提供了用渐近符号表示许多由分治法得到的递推关系式的方法。

在初赛题目中,主定理可以用来计算形如 \(T(n)=a\times T(n/b) + O(n^{d})\) 的时间复杂度,其中 \(T(n)\) 是我们要求的时间复杂度。

定理

首先我们假设 \(x=\log_{b}a\),那么有以下结论:

\(T(n)=\begin{cases}O(n^{d}) (d > x) \\O(n^{d} \log_{b} n)(d=x) \\O(n^{x})(d<x) \end{cases}\)

上式的意思如下:

我们可以将 \(d\) 看做代表了主公式中的第二项,即将原问题分解成子问题和将子问题的解合并成原问题的解的时间。

推导与证明

如图,首先递推求出这个函数的每一层的时间复杂度,每一层的数量乘上 \(a\),长度除以 \(b\)。于是可以得到第 \(i\) 层的时间复杂度为:\(O(n^{d})(\frac{a}{b^{d}})^{i}\)。而总层数则应该是 \(\log_{b}n\) 层,因为当长度减到 \(0\) 过后就结束了。所以我们可以得出总时间复杂度为:

\(T(n) = \sum_{i=0}^{\log_{b}n} O(n^{d})(\frac{a}{b^{d}})^{i}\)。

仔细观察之后会发现这是一个等比数列,公比为 \(a/b^{d}\)。

然后我们可以分类讨论公比和 \(1\) 之间的大小关系(三种情况:大于 \(1\),等于 \(1\),小于 \(1\)),对于每一种情况再用特殊的方法计算即可。

  • \(a/b^{d} > 1\),即 \(d>\log_{b}a\)

如果等比数列的公比大于 \(1\) 的话,那么总时间复杂度应该由第一项来决定。所以直接可以得出:\(T(n)=O(n^{d})\)。

  • \(a/b^{d} < 1\),即 \(d<\log_{b}a\)

同理,如果等比数列的公比小于 \(1\) 的话,那么总时间复杂度应该由最后一项来决定。所以:\(T(n)=O(n^{\log_{b}a})\),具体推导过程如下:

首先我们这道这个等比数列的最后一项为:\(O(n^{d})\times (\frac{a}{b^{d}})^{\log_{b}n}\)。于是我们就可以化简原式:

\(O(n^{d})\times (\frac{a}{b^{d}})^{\log_{b}n}=O(n^{d})\times (\frac{a^{log_{b}n}}{b^{d\log_{b}n}})=O(n^{d}\times (\frac{a^{log_{b}n}}{n^{d}}))=O(a^{\log_{b}n})\)。

\(\because \frac{\log_{a}n}{\log_{a}b}=\log_{b}n\)

\(\therefore a^{\log_{b}n}=a^{\frac{\log_{a}n}{\log_{a}b}}=(a^{\log_{a}n})^{\frac{1}{\log_{a}b}}=n^{\frac{1}{\log_{a}b}}\)

又 \(\because \frac{1}{\log_{a}b}=\log_{b}a\)

\(\therefore O(n^{\frac{1}{\log_{a}b}})=O(n^{\log_{b}a})\)

于是得证。

  • \(a/b^{d} = 1\),即 \(d=\log_{b}a\)

这个时候就必须求和了,因为每一项的大小都一样大(因为公比为 \(1\)),所以直接用第一项乘以项数就行了,即:\(T(n)=O(n^{d})*(\log_{b}a+1)=O(n^{d}\log_{b}a)\)。

证毕。

具体详见这篇文章

标签:frac,log,定理,times,公比,复杂度
From: https://www.cnblogs.com/Creeperl/p/17913431.html

相关文章

  • Newton-Leibniz公式、可积的充分必要条件、积分中值定理、微积分基本定理
    ......
  • 实数完备性基本定理
    ......
  • 贡献法+经典背包+费马小定理
    SDUT校赛题目Description给定正整数\(n\),计算\(n\)个元素的集合\(\{1,2,\cdots,n\}\),所有非空子集和的乘积取模\(998\,244\,353\)后的结果。Input一个正整数\(n\)\((1\len\le200)\),代表集合大小。例如\(3\)个元素的集合有\(7\)个非空子集,分别为\(\{1\},\{......
  • 鞅与停时定理 例题记录
    鞅与停时定理,一个很厉害的东西,感觉像是一种势能分析。关于它具体是什么,笔者的数学水平还不足以讲述,所以在这里推广一下:概率论科技:鞅与停时定理-littleZ_meow的小窝。下面的写法可能很不专业,请自行避雷。给出一种很OI的解释:你需要设计一个函数\(f(x)\),有次能够得到每一个......
  • 亲情的欧拉定理
    欧拉定理指出产量分配净尽定理,指在完全竞争的条件下,假设长期中规模收益不变,则全部产品正好足够分配给各个要素。白话版如果总量不变的前提下产出的产品正好足够分配给各个要素增加了要素每个要素就会减少生产硬件不更新,本质不变化,分配不是无限的亲情人的的爱总量是......
  • 微分中值定理
    微分中值定理一、罗尔定理内容如果函数\(f(x)\)满足:在\([a,b]\)上连续;在\((a,b)\)内可导;在区间端点处的函数值相等,即\(f(a)=f(b)\)。那么在\((a,b)\)内至少有一点\(\xi(a<\xi<b)\)使得函数\(f(x)\)在该点处的导数零,即\(f'(\xi)=0\)。证明由于函数\(f(x)......
  • 微分中值定理
    微分中值定理罗尔定理观察下图设曲线\(AB\)是函数\(y=f(x)(x\in[a,b])\)的图形.图中两端点的纵坐标相等,即\(f(a)=f(b)\)可以发现在曲弧线的最高点\(C\)处或最低点\(D\)处,曲线有水平的切线.记\(C\)点的横坐标为\(\xi\)那么就有\(f'(\xi)=0\).那么可以......
  • 中心极限定理
    我们在证明弱大数定理的时候运用了Markov不等式\(\Pr[\left|\dfrac{S_n}{n}\right|^2>\varepsilon^2]\leq\dfrac{E\left[\left(\frac{S_n}{n}\right)^2\right]}{\varepsilon^2}\)。现在我们考虑更一般的把\(n\)替换成\(f(n)\),我们发现只有当\(f(n)=\sqrt{n}\cdoth(n)\)时\(\dfrac......
  • SG定理证明
    前置知识有向图游戏概念。单个有向图游戏中\(\textrm{SG}\)函数的求值(\(\textrm{mex}\)运算)。以上内容请自行查阅,这里不会多说。前言本文受启发于OIWiki,采用相同的数学归纳法进行证明,但对计算的原理进行了补充,也补足了一些细节。网上许多\(\textrm{SG}\)定理的证明只......
  • 算数基本定理
    算数基本定理定理对于整数\(a>1\),必有\(a=p_1^{a_1}p_2^{a_2}\dotsp_s^{a_s}\),其中\(p_j(1\leqj\leqs)\)是两两不相等的质数,\(a_j(1\leqj\leqs)\)表示对应质数的幂次。在不计次序的意义下,该分解式是唯一的。运用于质因数分解:intDecomposition(intx,inta[]){......