先贴出两个初中数学公式
使用换根公式和对数倒数性质可以得出这样的结论:

alogbn=nlogba

a^{log_bn}=n^{log_ba}
等比数列求和公式:

Sn=anq−a1q−1

S_n=\frac{a_nq-a_1}{q-1}

这个关于f(n)的公式可以估计满足分治关系的函数的阶:如果f(n)=af(nb)+g(n)f(n)=af(\frac{n}{b})+g(n)那么有:

f(n)=akf(1)+∑j=0k−1ajg(nbj)

f(n)=a^kf(1)+\sum_{j=0}^{k-1}a^jg(\frac{n}{b^j})

主定理(MasterTheorem):

设ff是满足递推关系:

f(n)=af(nb)+cndf(n)=af(\frac{n}{b})+cn^d

的增函数,其中n=bkn=b^k,kk是一个正整数,a≥1a\geq1,bb是大于1的正整数,cc和dd是实数,满足cc是正的且bb是非负的。那么f(n)f(n)是

  1. O(nd)O(n^d) a<bda

  2. O(ndlogn)O(n^dlogn) a=bda=b^d

  3. O(nlogba)O(n^{log_ba}) a>bda>b^d

怎么证明呢?可以分为三种情况来证明:

  1. a<bda
  2. a=bda=b^d
  3. a>bda>b^d

首先可以将f(n)=akf(1)+∑k−1j=0ajg(nbj)f(n)=a^kf(1)+\sum_{j=0}^{k-1}a^jg(\frac{n}{b^j}) ,代入主定理递推关系,因为g(n)=cndg(n)=cn^d,可以得到

f(n)=akf(1)+c∑j=0k−1aj(nbj)d=akf(1)+c∑j=0k−1aj(nbj)d

f(n)=a^kf(1)+c\sum_{j=0}^{k-1}a^j(\frac{n}{b^j})^d\\ =a^kf(1)+c\sum_{j=0}^{k-1}a^j(\frac{n}{b^j})^d

由于n=bkn=b^k,所以k=logbnk=log_bn

优先考虑a=bda=b^d的情况:

f(n)=akf(1)+c∑j=0k−1aj(nbj)d=akf(1)+c∑j=0k−1aj(nbj)d=(bd)logbnf(1)+cnd∑j=0k−1(bd)jb−jd=ndf(1)+cndk=ndf(1)+cndlogbn

f(n)=a^kf(1)+c\sum_{j=0}^{k-1}a^j(\frac{n}{b^j})^d\\ =a^kf(1)+c\sum_{j=0}^{k-1}a^j(\frac{n}{b^j})^d\\ =({b^d})^{log_bn}f(1)+cn^d\sum_{j=0}^{k-1}({b^d})^jb^{-jd}\\ =n^df(1)+cn^dk\\ =n^df(1)+cn^dlog_bn\\
所以 a=bda=b^d时, f(n)f(n)是 O(ndlogn)O(n^dlogn)

然后是a≠bd a\neq b^d的情况,使用等比数列求和公式可以做出如下推导:

f(n)=akf(1)+c∑j=0k−1aj(nbj)d=akf(1)+c∑j=0k−1aj(nbj)d=akf(1)+cnd∑j=0k−1(abd)j=akf(1)+((abd)k−1)cndbda−bd=akf(1)+(abd)logbncbdnda−bd+ndbdcbd−a=nlogbaf(1)+(abd)logbncbdnda−bd+ndbdcbd−a=nlogbaf(1)+nlogbabdcbdnda−bd+ndbdcbd−a=nlogbaf(1)+nlogban−dcbdnda−bd+ndbdcbd−a=nlogbaf(1)+nlogbacbda−bd+ndbdcbd−a=nlogbaf(1)+nlogban−dcbdnda−bd+ndbdcbd−a=C1nd+C2nlogba

f(n)=a^kf(1)+c\sum_{j=0}^{k-1}a^j(\frac{n}{b^j})^d\\ =a^kf(1)+c\sum_{j=0}^{k-1}a^j(\frac{n}{b^j})^d\\ =a^kf(1)+cn^d\sum_{j=0}^{k-1}(\frac{a}{b^d})^j\\ =a^kf(1)+\frac{((\frac{a}{b^d})^k-1)cn^db^d}{a-b^d}\\ =a^kf(1)+\frac{(\frac{a}{b^d})^{log_bn}cb^dn^d}{a-b^d}+\frac{n^db^dc}{b^d-a}\\ =n^{log_ba}f(1)+\frac{(\frac{a}{b^d})^{log_bn}cb^dn^d}{a-b^d}+\frac{n^db^dc}{b^d-a}\\ =n^{log_ba}f(1)+\frac{{n^{log_b{\frac{a}{b^d}}}}cb^dn^d}{a-b^d}+\frac{n^db^dc}{b^d-a}\\ =n^{log_ba}f(1)+\frac{{n^{log_ba}}n^{-d}cb^dn^d}{a-b^d}+\frac{n^db^dc}{b^d-a}\\ =n^{log_ba}f(1)+\frac{{n^{log_ba}}cb^d}{a-b^d}+\frac{n^db^dc}{b^d-a}\\ =n^{log_ba}f(1)+\frac{{n^{log_ba}}n^{-d}cb^dn^d}{a-b^d}+\frac{n^db^dc}{b^d-a}\\ =C_1n^d+C_2n^{log_ba}

这里C1=bdcbd−aC_1=\frac{b^dc}{b^d-a}, C2=f(1)+bdca−bdC_2=f(1)+\frac{b^dc}{a-b^d}

我们还可以推导出结论:

当a<bda

logba<logbbd=d

log_ba

当a>bda > b^d

logba>logbbd=d

log_ba>log_b{b^d}=d

同时使用已经得出的结论f(n)=C1nd+C2nlogbaf(n)=C_1n^d+C_2n^{log_ba},可以完成证明

  1. O(nd)O(n^d) a<bda

  2. O(nlogba)O(n^{log_ba}) a>bda>b^d

至此,主定理的证明全部完成。

离散数学及其应用学习笔记——主定理(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

    分治法主定理 主定理的证明 假设有递归式: 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 ...

  4. 主定理(Master Theorem)

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

  5. 泰斗破环神学习笔记——主界面开发

    泰斗破环神学习笔记--主界面开发 主界面主要就是,角色状态面板.角色信息面板.金币与钻石数额面板 文章目录 泰斗破环神学习笔记--主界面开发 前言 一.委托(delegate) 二.事件(Event) ...

  6. MySQL学习笔记-主键索引和二级索引

    文章目录 MySQL学习笔记-主键索引和二级索引 1.笔记图 2.索引的常见模型 3.InnoDB 的索引模型 4.主键索引和普通索引查询的区别 5.如何选择主键字段 6.笔记图 7.回表过程 8.最 ...

  7. 【Bandit Algorithms学习笔记】UCB算法的理论证明

    文章目录 前言 算法优势 算法原理 UCB公式 UCB算法流程 相关定理及证明 定理7.1 证明 定理7.2 证明 总结 参考资料 前言 笔者毕设研究的是Bandit问题,因此最近在学习相关的内容,想 ...

  8. 『Discrete Mathematics and Its Applications』离散数学及其应用学习笔记

    教材是Discrete Mathematics and Its Applications 7th,做了一些简单的翻译和简单的笔记. 1. The Foundations: Logic and Proo ...

  9. 《MySQL实战45讲》实践篇 24-29 学习笔记 (主备篇)

    图片来自于极客时间,如有版权问题,请联系我删除. 24 | MySQL是怎么保证主备一致的? 主备切换流程如下: 建议把节点 B(也就是备库)设置成只读(readonly)模式. 1.有时候一些运营类 ...

最新文章

  1. 【转】通过Hibernate将数据 存入oracle数据库例子
  2. “夸夸机器人”App来了:变身百万粉丝大V,48万人给你的帖子点赞
  3. 斯人若彩虹,遇上方知有
  4. Ellipse(椭圆)
  5. Yum在线升级之网络(本地)服务器的搭建!
  6. java常见面试题及答案 11-20(JVM篇)
  7. 一起学nRF51xx 10 -  rng
  8. 【杂谈】为了让大家学好深度学习模型设计和优化,有三AI都做了什么
  9. SoftPool算法详解
  10. nginx 并发过十万
  11. Win7电脑创建本地连接网络的操作方法
  12. appium+python自动化57-chromedriver与chrome版本
  13. jQuery 1.3 正式版发布
  14. 作用域经典练习题(主要是这个图太大不能一起分享)
  15. android奔溃日志手机查看
  16. 董监高股票减持25%规定?
  17. Shell学习:关于替换命令-tr-ROT13法则
  18. 基于离线策略的强化学习(PPO)
  19. 判断输入框是不是数字_【Excel技巧】老板说,“我只要数字!数字!”
  20. 机器学习sklearn之支持向量回归(SVR)

热门文章

  1. 超实用web前端开发工具推荐(web开发+前端性能优化+浏览器兼容性测试+……)
  2. YOLOv5的损失函数
  3. 信号频率(Frequency),幅值(Amplitude),周期(Period),相位(Phase)所代表的含义与关系
  4. arcgis 线转面
  5. InVEST模型 | HAbitat quality模块计算生境质量
  6. 无线网卡抓包小记--我的无线网卡终于能抓包了
  7. 如何找到msdn中文文档呢?
  8. 使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件
  9. 怎样在公司内部搭建一个进行资料共享、支持全文检索的网站?
  10. MATLAB 矩阵数据可视化imagesc 以及 如何多图共用一个 colorbar