主定理求解算法时间复杂度
主定理
所谓主定理,就是用来解递归方程的一种方法,此方法可以用来求解大多数递归方程。
设递归方程为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 不是个合法多项式
主定理求解算法时间复杂度相关推荐
- 基于主定理以及递推树求解递归算法的时间复杂度
非递归算法的时间复杂度可以通过找到执行次数最多的代码,计算其执行次数即可.但是递归算法的时间复杂度则无法通过这种方式求得.有一种最简单的求递归算法的方式,即利用递推方法求解时间复杂度.如下所示: 这种 ...
- 使用主定理求时间复杂度
文章目录 使用主定理求时间复杂度 主定理 直接可用主定理 转化之后可以利用主定理 使用主定理求时间复杂度 很多算法最后都可以写出 T(n)=aT(nb)+f(n))(a≥1,b≥1)T(n)=aT(\ ...
- 【算法设计与分析】12 主定理及其应用
主定理是一个非常有用的定理,前面我们学习的所有知识都可以用主定理来求解,而不必要使用复杂的计算方法来求解 文章目录 1. 主定理 1.1 主定理的应用背景 1.2 主定理内容 2. 主定理的应用 2. ...
- 递归算法复杂度与主定理的推导
一.基本概念 分治法的基本思想 分治法就是把一个大的问题分解成为若干个小的问题,求出小问题的解后合并即为大问题的解 分治法能够解决的问题的一般特征 该问题可以分解为若干规模规模较小的相同问题: 该问题 ...
- 【算法导论-主定理】用主方法求解递归式 学练结合版
问题:若某算法的计算时间表示为递推关系式:T(N)=2T(N/2)+NlogN 且 T(1)=1 则该算法的时间复杂度为( ). O(Nsqrt(N)) O(NlogN) O(N(logN)^2) O ...
- 【算法设计与分析】1.主定理
1.主定理内容 定理:设a >= 1, b>1为常数, f(n)为函数, T(n) 为非负整数,且T(n)=aT(n/b)+f(n) 2. 主定理的应用 例1:T(n) = 4T(n/3) ...
- 主定理(Master Theorem)与时间复杂度
1. 问题 Karatsuba 大整数的快速乘积算法的运行时间(时间复杂度的递推关系式)为 T(n)=O(n)+4⋅T(n/2),求其最终的时间复杂度. 2. 主定理的内容 3. 分析 所以根据主定理 ...
- 算法与程序设计(一):主定理
目录 一.主定理的概念 二.举例 2.1 求解递推方程(case1) 2.2 求解递推方程(case2) 2.3 求解递推方程(case3) 2.4 不能使用主定理的例子 一.主定理的概念 二.举例 ...
- 运用主定理计算递归问题时间复杂度
主定理 符号Θ ,既是上界也是下界,等于. 符号O ,表示上界,时间复杂度小于等于该值. 符号Ω ,表示下界,时间复杂度大于等于该值. 意思就是Θ 是平均时间复杂度,O 是最坏情况下的复杂度,Ω 是最 ...
最新文章
- 一文看透汽车芯片!巨头布局技术路线全解密【附下载】| 智东西内参
- YCbCr与YUV的区别
- javamail command not implemented
- Perl匿名数组、hash和autovivification特性
- python怎么读取pdf为文本_python怎么读取pdf文本内容
- [导入]C#优化字符串操作【月儿原创】
- 计算机硬件系统一直延用,会计从业资格证考试:会计电算化计算机硬件系统
- 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式
- 我们正处在“后开源”时代?
- kali dvwa php mysql,kali linux 2.0下搭建DVWA渗透测试演练平台
- 计算机图形学在线作业,电子科大16秋《计算机图形学》在线作业3答案
- scrapy生成json中文为ASCII码解决
- linux中SUID,SGID和SBIT的奇妙用途
- 线性支持向量机与软间隔最大化
- IDEA黑色主题Darcula主题看不到鼠标指针
- 用74HC573进行LED数码管驱动的编程
- android手机电池寿命,真正有效延长手机电池寿命的几点建议(iPhone+安卓)
- K-S指标校验评分卡
- CF1379C Choosing flowers
- 混合算法(SA+TS)解决TSP问题——lua实现(Microcity)
热门文章
- linux下Mysql查询语句
- 《人工智能》课程作业2
- A-level 计算机科学学习记录:系统软件system software(全英)
- vue+element-ui之tree树形控件有关子节点和父节点之间的各种选中关系详解
- 藁城计算机技术学校地址,石家庄市藁城区职教中心
- python写因子策略_单因子策略进阶版 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码,以股息率作为择股条件,自动筛选出股息率前十名的股... - 雪球...
- SCS【25】单细胞细胞间通信第一部分细胞通讯可视化(CellChat)
- 【python初学者日记】读入正整数n,生成并输出一个含有n个0~100之间的随机列表,求其平均值(保留2位小数)
- Vue.js——60分钟组件快速入门(下篇)
- il2cpp_IL2CPP内部构件:测试框架