主定理 Master Theorem
分治法主定理
主定理的证明
假设有递归式:
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−1ajf(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) ~~ =alogbnT(1)+j=0∑logbn−1ajf(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)=blogbalogbn=blogbnlogba=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−1ajf(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−1ajf(n/bj)=∑j=0logbn−1aj(n/bj)k= \sum_{j=0}^{log_b^n-1} a^j (n/b^j)^k ~~~~~~~=j=0∑logbn−1aj(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(nlogbalogbn),如果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(nlogbalogbn),如果a<bk(k>logba)如果a>bk如果a=bk
减治法主定理
主定理 Master Theorem相关推荐
- 主定理(Master Theorem) 及其应用
主定理"Master Theorem" 一.主定理(Master Theorem) 二.应用举例 在分析算法的时候,我们经常需要分析递归算法的时间复杂度. 一.主定理(Master ...
- 主定理(master theorem)学习小记
前言 这是分析复杂度的一个玩意儿,东西不多,原本只要死记一下就好了,但是考虑到我不太好的记忆力,所以还是解析一遍比较好 正文 主定理是用来分析T(n)=aT(nb)+f(n)T(n)=aT(\frac ...
- 主定理(Master Theorem)
主定理是分析分治算法时间复杂度很重要的一个定理. 我们之前对于一个递归类的代码进行时间复杂度分析,一般会采用递归树的方式,下面我们先介绍一下递归树的方式,理解之后,再引入主定理的相关内容. 分治的介绍 ...
- 【】02-07主定理
定理2.6 主定理(Master Theorem) 递归树:
- 【算法设计zxd】第2章 主定理
定理2.6 主定理(Master Theorem) 设a≥1, b>1为常数, f(n)为函数,T(n)为非负整数,且 T(n)=aT(n/b)+f(n) 证明: (1) (2) (3) 主定理 ...
- 主定理(Master theorem)与Akra–Bazzi定理
一.主定理(Master theorem) 主定理是算法分析中的一个重要结论,它主要用于求解基于分治思想设计的递归算法的渐进复杂度.该结论最初由Jon Bentley, Dorothea Haken, ...
- Master—Theorem 主定理的证明和使用
引言? 在分析算法的时候,我们经常需要分析递归算法的时间复杂度.Master--Theorem 正是用于快速得出递归算法时间复杂度的方法. Master-Theorem 假设某个递归算法的时间复杂度递 ...
- 主定理(Master Theorem)与时间复杂度
1. 问题 Karatsuba 大整数的快速乘积算法的运行时间(时间复杂度的递推关系式)为 T(n)=O(n)+4⋅T(n/2),求其最终的时间复杂度. 2. 主定理的内容 3. 分析 所以根据主定理 ...
- 主定理(Master Theorem)推导和理解(1)
主定理:设为常数,f(n)为函数,T(n)为非负数,且 则有以下结果: 证明 不妨设,经过迭代,能够得到: 证毕.
最新文章
- 进程和线程的一些见解
- android的热修复,Android热修复原理
- ubuntu下python的错误
- sql developer Oracle 数据库 用户对象下表及表结构的导入导出
- Dynamic Routing-中科院西交旷视(孙剑团队)提出用于语义分割的动态路由网络,精确感知多尺度目标,代码已开源!...
- 清明赏春攻略——来一场技术踏青!
- android studio 融云,融云 SDK 集成详解 – Android Studio
- 三菱plc pwm指令_三菱PLC高速处理指令编程(新手教学)
- 用php打竖的文字_总结PHP竖排文字的方法
- 直播平台源码中的推拉流是什么
- Mac的最新版本JDK下载失败的解决方法
- 面向对像(8day) 正则表达式,日志格式,json模块
- Long Short-Term Memory(长短期记忆网络)
- IDEA注释模板设置【非常实用】
- ABP WEBAPI 跨域问题
- 在线调试后台管理系统HTTP的POST请求
- 从微信头像链接下载图片到服务器
- 星际争霸2 AI 强化学习环境部署
- 查询CNAPS 代码
- ISO14229系列规范介绍
热门文章
- EC03-DNC4G通信模块的使用
- <selectKey>标签详解
- Java工程进行性能测试时通常要考虑哪些要素,如何使接口响应时间在毫秒级范围,Java项目如何进行性能测试?0.2s的反应时间内返回响应,用户感知情况较好。附IO密集型和计算密集型性能测试摸底代码
- 不负我心,不负我生!
- 从信息包围到信息追踪,你在网络中还剩下多少自由?
- 渣打称中国房市出现泡沫 未归还房贷占GDP32%
- EasyCVR替换版本后调用api接提示401报错是什么原因?
- 前端框架OnsenUI学习之初识OnsenUI
- TFlops、Tops、MIPS等单位认识
- linux做桌面操作系统,我心目中的microsoft(对于普通用户,linux真的适合做桌面操作系统吗)...