主定理

所谓主定理,就是用来解递归方程的一种方法,此方法可以用来求解大多数递归方程。

设递归方程为T(n)=aT(n/b)+f(n)  (其中a≥1,b>1)

主定理:

1. 如果存在常数ε>0有f(n)=O(n^(logb^a-ε)),则T(n)=Θ(n^(logb^a));

2. 若f(n)=Θ(n^(logb^a)),则T(n)=Θ(n^(logb^a)logn2^n);

3. 若对某个常数ε>0有f(n)=Ω(n^(logb^a)+ε),且对某个常数c<1和所有足够大的n有af(n/b)≤cf(n),则T(n)=Θ(f(n))。

歪曲记忆法:谁大听谁的,相等就乘个对数系数

多项式大于(小于)

在看算法导论时候,看到讲主定理节时,有“在第一种情况中,不仅要有f(n)小于n^log(b)(a),还必须是多项式地小于……”,之前先入为主的以为多项式地小于就是两者之差为一个多项式(事实上这么想也没大错,只是形式不对),但注意到是在算法的世界里,所以不需要精确到一个多项式(形如n^3+n^2+n+3之类的),只要两者之比(即f(n)/log(a)(b))渐近小于n^e(e > 0)即可。

归纳起来,就是:(e > 0的任意实数)

f(x) > g(x) * n^e ==> f(x)多项式地大于g(x);

f(x) < g(x) * n^e ==> f(x)多项式地小于g(x)。

歪曲记忆法:就是得差个多项式啊,多项式是n、n^2、n^3……这种样子的,lgn 不是个合法多项式

主定理求解算法时间复杂度相关推荐

  1. 基于主定理以及递推树求解递归算法的时间复杂度

    非递归算法的时间复杂度可以通过找到执行次数最多的代码,计算其执行次数即可.但是递归算法的时间复杂度则无法通过这种方式求得.有一种最简单的求递归算法的方式,即利用递推方法求解时间复杂度.如下所示: 这种 ...

  2. 使用主定理求时间复杂度

    文章目录 使用主定理求时间复杂度 主定理 直接可用主定理 转化之后可以利用主定理 使用主定理求时间复杂度 很多算法最后都可以写出 T(n)=aT(nb)+f(n))(a≥1,b≥1)T(n)=aT(\ ...

  3. 【算法设计与分析】12 主定理及其应用

    主定理是一个非常有用的定理,前面我们学习的所有知识都可以用主定理来求解,而不必要使用复杂的计算方法来求解 文章目录 1. 主定理 1.1 主定理的应用背景 1.2 主定理内容 2. 主定理的应用 2. ...

  4. 递归算法复杂度与主定理的推导

    一.基本概念 分治法的基本思想 分治法就是把一个大的问题分解成为若干个小的问题,求出小问题的解后合并即为大问题的解 分治法能够解决的问题的一般特征 该问题可以分解为若干规模规模较小的相同问题: 该问题 ...

  5. 【算法导论-主定理】用主方法求解递归式 学练结合版

    问题:若某算法的计算时间表示为递推关系式:T(N)=2T(N/2)+NlogN 且 T(1)=1 则该算法的时间复杂度为( ). O(Nsqrt(N)) O(NlogN) O(N(logN)^2) O ...

  6. 【算法设计与分析】1.主定理

    1.主定理内容 定理:设a >= 1, b>1为常数, f(n)为函数, T(n) 为非负整数,且T(n)=aT(n/b)+f(n) 2. 主定理的应用 例1:T(n) = 4T(n/3) ...

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

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

  8. 算法与程序设计(一):主定理

    目录 一.主定理的概念 二.举例 2.1 求解递推方程(case1) 2.2 求解递推方程(case2) 2.3 求解递推方程(case3) 2.4 不能使用主定理的例子 一.主定理的概念 二.举例 ...

  9. 运用主定理计算递归问题时间复杂度

    主定理 符号Θ ,既是上界也是下界,等于. 符号O ,表示上界,时间复杂度小于等于该值. 符号Ω ,表示下界,时间复杂度大于等于该值. 意思就是Θ 是平均时间复杂度,O 是最坏情况下的复杂度,Ω 是最 ...

最新文章

  1. 一文看透汽车芯片!巨头布局技术路线全解密【附下载】| 智东西内参
  2. YCbCr与YUV的区别
  3. javamail command not implemented
  4. Perl匿名数组、hash和autovivification特性
  5. python怎么读取pdf为文本_python怎么读取pdf文本内容
  6. [导入]C#优化字符串操作【月儿原创】
  7. 计算机硬件系统一直延用,会计从业资格证考试:会计电算化计算机硬件系统
  8. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式
  9. 我们正处在“后开源”时代?
  10. kali dvwa php mysql,kali linux 2.0下搭建DVWA渗透测试演练平台
  11. 计算机图形学在线作业,电子科大16秋《计算机图形学》在线作业3答案
  12. scrapy生成json中文为ASCII码解决
  13. linux中SUID,SGID和SBIT的奇妙用途
  14. 线性支持向量机与软间隔最大化
  15. IDEA黑色主题Darcula主题看不到鼠标指针
  16. 用74HC573进行LED数码管驱动的编程
  17. android手机电池寿命,真正有效延长手机电池寿命的几点建议(iPhone+安卓)
  18. K-S指标校验评分卡
  19. CF1379C Choosing flowers
  20. 混合算法(SA+TS)解决TSP问题——lua实现(Microcity)

热门文章

  1. linux下Mysql查询语句
  2. 《人工智能》课程作业2
  3. A-level 计算机科学学习记录:系统软件system software(全英)
  4. vue+element-ui之tree树形控件有关子节点和父节点之间的各种选中关系详解
  5. 藁城计算机技术学校地址,石家庄市藁城区职教中心
  6. python写因子策略_单因子策略进阶版 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码,以股息率作为择股条件,自动筛选出股息率前十名的股... - 雪球...
  7. SCS【25】单细胞细胞间通信第一部分细胞通讯可视化(CellChat)
  8. 【python初学者日记】读入正整数n,生成并输出一个含有n个0~100之间的随机列表,求其平均值(保留2位小数)
  9. Vue.js——60分钟组件快速入门(下篇)
  10. il2cpp_IL2CPP内部构件:测试框架