分治法主定理

主定理的证明

假设有递归式:
T(n)=aT(nb)+f(n)T(n) = aT(\frac{n}{b}) + f(n)T(n)=aT(bn​)+f(n)
证明:
T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n) T(n)=aT(n/b)+f(n)=a[aT(n/b2)+f(n/b)]+f(n)= a\big[aT(n/b^2)+f(n/b)\big] + f(n) =a[aT(n/b2)+f(n/b)]+f(n)=a2T(n/b2)+f(n)+af(n/b)= a^2T(n/b^2) + f(n) + af(n/b) ~\,=a2T(n/b2)+f(n)+af(n/b) =akT(n/bk)+∑j=0k−1ajf(n/bj)= a^{k}T(n/b^k) + \sum_{j=0}^{k-1} a^j f(n/b^j) ~~~~=akT(n/bk)+j=0∑k−1​ajf(n/bj)    =⋯(不妨设n是b的幂)= \cdots ~(不妨设n是b的幂)~~~~~~~~~~~~=⋯ (不妨设n是b的幂)            =alogbnT(1)+∑j=0logbn−1ajf(n/bj)= a^{log_b^n}T(1) + \sum_{j=0}^{log_b^n-1} a^j f(n/b^j) ~~ =alogbn​T(1)+j=0∑logbn​−1​ajf(n/bj)  
由对数的换底公式:alogbn=blogb(alogbn)=blogbalogbn=blogbnlogba=blogb(nlogba)=nlogbaa^{log_b^n} =b^{log_b^{(a^{log_b^n})}} =b^{log_b^a log_b^n} =b^{log_b^n log_b^a}= b^{log_b^{(n^{log_b^a})}}=n^{log_b^a}alogbn​=blogb(alogbn​)​=blogba​logbn​=blogbn​logba​=blogb(nlogba​)​=nlogba​

所以原递归式的渐进复杂度为O(nlogba)+∑j=0logbn−1ajf(n/bj)O(n^{log_b^a}) + \sum_{j=0}^{log_b^n-1} a^j f(n/b^j)O(nlogba​)+j=0∑logbn​−1​ajf(n/bj)

简单起见,下面只考虑 f(n)=nkf(n) = n^kf(n)=nk 的情形:
∑j=0logbn−1ajf(n/bj)\sum_{j=0}^{log_b^n-1} a^j f(n/b^j)j=0∑logbn​−1​ajf(n/bj)=∑j=0logbn−1aj(n/bj)k= \sum_{j=0}^{log_b^n-1} a^j (n/b^j)^k ~~~~~~~=j=0∑logbn​−1​aj(n/bj)k       =nk∑j=0logbn−1(a/bk)j= n^k\sum_{j=0}^{log_b^n-1} (a/b^k)^j ~~~~~~~=nkj=0∑logbn​−1​(a/bk)j       ={nk(1−(a/bk)logbn1−a/bk),如果a≠bknk(logbn−1),如果a=bk= \left\{ \begin{array}{lr} n^k \left(\frac{1-(a/b^k)^{log_b^n}}{1-a/b^k}\right), & \text{如果$a\neq b^k$}\\ &\\ n^k(log_b^n-1), & \text{如果$a = b^k$} \end{array} \right. =⎩⎪⎨⎪⎧​nk(1−a/bk1−(a/bk)logbn​​),nk(logbn​−1),​如果a​=bk如果a=bk​={O(nk),如果a<bk(k>logba)O(nlogba),如果a>bkO(nklogbn)=O(nlogbalogbn),如果a=bk= \left\{ \begin{array}{lr} O(n^k) , & \text{如果$a < b^k(k>log_b^a)$}\\ &\\ O(n^{log_b^a}), & \text{如果$a> b^k$}\\ &\\ O(n^klog_b^n)=O(n^{log_b^a}log_b^n), & \text{如果$a = b^k$} \end{array} \right. =⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​O(nk),O(nlogba​),O(nklogbn​)=O(nlogba​logbn​),​如果a<bk(k>logba​)如果a>bk如果a=bk​

综上所述,对 T(n)=aT(nb)+f(n)T(n) = aT(\frac{n}{b}) + f(n)T(n)=aT(bn​)+f(n) 的情形:
T(n)={O(nk),如果a<bk(k>logba)O(nlogba),如果a>bkO(nklogbn)=O(nlogbalogbn),如果a=bkT(n)= \left\{ \begin{array}{lr} O(n^k) , & \text{如果$a< b^k(k>log_b^a)$}\\ &\\ O(n^{log_b^a}), & \text{如果$a> b^k$}\\ &\\ O(n^klog_b^n)=O(n^{log_b^a}log_b^n), & \text{如果$a = b^k$} \end{array} \right. T(n)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​O(nk),O(nlogba​),O(nklogbn​)=O(nlogba​logbn​),​如果a<bk(k>logba​)如果a>bk如果a=bk​

减治法主定理

主定理 Master Theorem相关推荐

  1. 主定理(Master Theorem) 及其应用

    主定理"Master Theorem" 一.主定理(Master Theorem) 二.应用举例 在分析算法的时候,我们经常需要分析递归算法的时间复杂度. 一.主定理(Master ...

  2. 主定理(master theorem)学习小记

    前言 这是分析复杂度的一个玩意儿,东西不多,原本只要死记一下就好了,但是考虑到我不太好的记忆力,所以还是解析一遍比较好 正文 主定理是用来分析T(n)=aT(nb)+f(n)T(n)=aT(\frac ...

  3. 主定理(Master Theorem)

    主定理是分析分治算法时间复杂度很重要的一个定理. 我们之前对于一个递归类的代码进行时间复杂度分析,一般会采用递归树的方式,下面我们先介绍一下递归树的方式,理解之后,再引入主定理的相关内容. 分治的介绍 ...

  4. 【】02-07主定理

     定理2.6 主定理(Master Theorem)    递归树:

  5. 【算法设计zxd】第2章 主定理

    定理2.6 主定理(Master Theorem) 设a≥1, b>1为常数, f(n)为函数,T(n)为非负整数,且 T(n)=aT(n/b)+f(n) 证明: (1) (2) (3) 主定理 ...

  6. 主定理(Master theorem)与Akra–Bazzi定理

    一.主定理(Master theorem) 主定理是算法分析中的一个重要结论,它主要用于求解基于分治思想设计的递归算法的渐进复杂度.该结论最初由Jon Bentley, Dorothea Haken, ...

  7. Master—Theorem 主定理的证明和使用

    引言? 在分析算法的时候,我们经常需要分析递归算法的时间复杂度.Master--Theorem 正是用于快速得出递归算法时间复杂度的方法. Master-Theorem 假设某个递归算法的时间复杂度递 ...

  8. 主定理(Master Theorem)与时间复杂度

    1. 问题 Karatsuba 大整数的快速乘积算法的运行时间(时间复杂度的递推关系式)为 T(n)=O(n)+4⋅T(n/2),求其最终的时间复杂度. 2. 主定理的内容 3. 分析 所以根据主定理 ...

  9. 主定理(Master Theorem)推导和理解(1)

    主定理:设为常数,f(n)为函数,T(n)为非负数,且 则有以下结果: 证明 不妨设,经过迭代,能够得到: 证毕.

最新文章

  1. 进程和线程的一些见解
  2. android的热修复,Android热修复原理
  3. ubuntu下python的错误
  4. sql developer Oracle 数据库 用户对象下表及表结构的导入导出
  5. Dynamic Routing-中科院西交旷视(孙剑团队)提出用于语义分割的动态路由网络,精确感知多尺度目标,代码已开源!...
  6. 清明赏春攻略——来一场技术踏青!
  7. android studio 融云,融云 SDK 集成详解 – Android Studio
  8. 三菱plc pwm指令_三菱PLC高速处理指令编程(新手教学)
  9. 用php打竖的文字_总结PHP竖排文字的方法
  10. 直播平台源码中的推拉流是什么
  11. Mac的最新版本JDK下载失败的解决方法
  12. 面向对像(8day) 正则表达式,日志格式,json模块
  13. Long Short-Term Memory(长短期记忆网络)
  14. IDEA注释模板设置【非常实用】
  15. ABP WEBAPI 跨域问题
  16. 在线调试后台管理系统HTTP的POST请求
  17. 从微信头像链接下载图片到服务器
  18. 星际争霸2 AI 强化学习环境部署
  19. 查询CNAPS 代码
  20. ISO14229系列规范介绍

热门文章

  1. EC03-DNC4G通信模块的使用
  2. <selectKey>标签详解
  3. Java工程进行性能测试时通常要考虑哪些要素,如何使接口响应时间在毫秒级范围,Java项目如何进行性能测试?0.2s的反应时间内返回响应,用户感知情况较好。附IO密集型和计算密集型性能测试摸底代码
  4. 不负我心,不负我生!
  5. 从信息包围到信息追踪,你在网络中还剩下多少自由?
  6. 渣打称中国房市出现泡沫 未归还房贷占GDP32%
  7. EasyCVR替换版本后调用api接提示401报错是什么原因?
  8. 前端框架OnsenUI学习之初识OnsenUI
  9. TFlops、Tops、MIPS等单位认识
  10. linux做桌面操作系统,我心目中的microsoft(对于普通用户,linux真的适合做桌面操作系统吗)...