递归式求解-主方法
来源:互联网 发布:mac软件为什么无法删除 编辑:程序博客网 时间:2024/05/22 20:27
http://pytlab.org/2017/09/10/%E9%80%92%E5%BD%92%E5%BC%8F%E6%B1%82%E8%A7%A3-%E4%B8%BB%E6%96%B9%E6%B3%95/
本文对递归式求解中很重要的主方法进行介绍总结。
主方法
主方法为如下形式的递归式提供了一种”菜谱式”的求解方法:
其中
上式描述了这样的一个算法运行时间: 他将原问题的规模为
主定理
这里我将书上的定义直接贴上来了。
主方法依赖主定理:
令
其中我们将忽略舍入问题
- 若对某个常数
ϵ>0 有f(n)=O(nlogba−ϵ) ,T(n)=Θ(nlogba) - 若
f(n)=Θ(nlogba) , 则T(n)=Θ(nbalgn) - 若对某个常数
ϵ>0 有f(n)=Ω(nlogba+ϵ) , 且对某个常数c<1 和所有足够大的n y有af(n/b)≤cf(n) , 则T(n)=Θ(f(n))
主定理的直观理解
主定理其实主要是比较两个函数
- 若
nlogba>f(n) , 则就是情况1, 解就直接是T(n)=Θ(nlogba) - 若
nlogba=f(n) , 则就是情况2, 解就需要在f(n) 的基础上乘上个对数因子lgn ,T(n)=Θ(nlogbalgn) - 若
nlogba<f(n) , 则就是情况3, 解为T(n)=Θ(f(n))
主定理的细节理解
多项式意义上大于
主定理中,除了渐进大于(小于)以外,还有一个重要的概念就是多项式意义的大于(小于)(polynomially larger/smaller)
多项式大于意味着函数的比值会渐进的落在两个多项式之间。
例如对于两个函数
则函数
主定理中的细节
除了像上一部分那样有个大致的“大于”,“小于”的直观理解外,我们要理解定义中的具体细节,其实就是多项式大于/小于的应用。
- 第一种情况中,我们需要
f(n) 多项式意义上小于nlogba , 即f(n) 渐进小于nlogba−ϵ 。f(n) 必须渐近小于nlogba , 同时要相差一个因子nϵ , 其中ϵ 是大于0的常数。 - 第二种情况中,除了多项式意义上的大于以外,而且还要满足“正则”条件
af(n/b)≤cf(n)
但是主方法中的三种情况并不能覆盖所有此形式的情况。情况1和情况2之间有一定的间隙,即
例如求解如下递归式的时候:
我们按照主方法,
我们可以看到
但是对于任意
使用主方法的例子
对于矩阵乘法的Strassen方法递归式:
有
- 主方法求解递归式
- 递归式求解-主方法
- 用主方法求解递归式
- 算法学习笔记----用主方法求解递归式
- CLRS 4.5用主方法求解递归式
- 算法导论笔记 - 主方法求解递归式
- 分治策略求解递归式之主方法
- 主方法求解递归算法复杂度
- 递归式求解的三种方法
- 递归方法求解汉诺塔!
- 递归方法求解n!
- 用递归方法求解
- 递归式求解-主定理
- 递归式求解-主定理
- CLRS 4.4用递归树方法求解递归式
- 八皇后求解方法(递归求解)
- 递归方法 求解fibnacci数列
- 分治 & 递归式求解
- 验证数字的正则表达式集 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0
- 欢迎使用CSDN-markdown编辑器
- 深度学习-根据日志画loss-acc折线图
- JAVA虚拟机体系结构
- 中级javaScript之Sum All Numbers in a Range
- 递归式求解-主方法
- 关于秋招(前端方向)的一些干货
- opencv学习——cv2.findHomography()
- 不等数列
- PE文件格式:如何恢复导入表
- java生成UUID
- IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)
- pandas数据的导入与导出【CSV,JSON】(10/25)
- 数据存储(无数据库版)之二:存储为CSV