主定理

参考文章:时间复杂度及主定理详解托比欧:主定理 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)\)

证毕。

具体详见这篇文章

posted @ 2023-12-19 12:12  Creeper_l  阅读(59)  评论(0编辑  收藏  举报
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 世间美好与你环环相扣 柏松
  3. 3 True love tired
  4. 4 一笑江湖 (DJ弹鼓版) 闻人听書_
  5. 5 最好的安排 曲婉婷
  6. 6 星星在唱歌 司南
  7. 7 山川 李荣浩
  8. 8 On My Way Alan Walker
  9. 9 百战成诗 王者荣耀·100英雄官方群像献礼歌
  10. 10 雪 Distance Capper / 罗言
  11. 11 Edamame bbno$ / Rich Brian
  12. 12 半生雪 七叔-叶泽浩
  13. 13 Catch My Breath Kelly Clarkson
  14. 14 Love Is Gone SLANDER / Dylan Matthew
  15. 15 Endless Summer Alan Walker / Zak Abel
  16. 16 悬溺 葛东琪
  17. 17 风吹丹顶鹤 葛东琪
  18. 18 Normal No More TYSM
  19. 19 哪里都是你 队长
  20. 20 Stronger Kelly Clarkson
  21. 21 廖俊涛
  22. 22 消愁 毛不易
  23. 23 The Runner Yubik
  24. 24 踏山河 七叔-叶泽浩
  25. 25 Waiting For Love Avicii
  26. 26 在你的身边 盛哲
  27. 27 Dream It Possible Delacey
  28. 28 凄美地 郭顶
  29. 29 满天星辰不及你 ycc
  30. 30 侧脸 于果
  31. 31 阿拉斯加海湾 蓝心羽
  32. 32 虞兮叹 闻人听書_
  33. 33 离别开出花 就是南方凯
  34. 34 盗墓笔记·十年人间 李常超 (Lao乾妈)
凄美地 - 郭顶
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.