[Algorithm] Asymptotic Growth Rate
f(n) 的形式 vs 判定形势
但,此题型过于简单,一般不出现在考题中。
Extended:
Let's set n = 2^m, so m = log(n)
T(n) = 2*T(n^(1/2)) + 1 =>
T(2^m) = 2*T(2^(m/2)) + 1 =>
S(M) = 2*S(M/2)) + 1
通过变量替换,变为了熟悉的、主定理能解决的 形式 => S(m) ~ O(m)
故,S(m) = T(log(n)) ~ O(log(n))
关键点:match 主定理(3)的条件。
a*f(n/b) <= c*f(n) ->
3*f(n/4) <= c*f(n) ->
3*(n/4)*log(n/4) <= c*n*log(n) ->
3/4 * n*log(n/4) <= c*n*log(n)
可见,有c<1时,是满足的。
答案就是O(nlogn)
When f(x) = x*sqrt(x+1)
这里的常数1是个tricky.
去掉它,x^(3/2)
变为x,sqrt(2)*[x^(3/2)]
可见,f(x)~Θ(x^(3/2))
T(n)=T(⌊n/2⌋)+T(⌊n/4⌋)+T(⌊n/8⌋)+n.
n+(7/8)*n+(7/8)^2 *n+(7/8)^3 *n+⋯ 等比数列!
so we have a geometric series and thus,
for our upper bound.
In a similar way, we could count just the contribution of the leftmost branches and conclude that T(n)≥2n.
Putting these together gives us the desired bound, T(n)=Θ(n)
Extended:
Recurrence Relation T(n)=T(n/8)+T(n/4)+lg(n)
太难:Solution.
(a) T(n) = T(n-1) + cn link
(b) T(n) = T(n-1) + log(n) link
(c) T(n) = T(n-1) + n^2 link
(d) T(n) = T(n-1) + 1/n link
(a) 递归展开,探寻规律:
T(n)=T(n−3)+(n−2)c+(n−1)c+nc
At the end we use T(2)=T(1)+2c=1+2cT(2)=T(1)+2c=1+2c. We conclude that
T(n)=1+(2+3+⋯+n)c.
可见是O(n^2)
(b) 递归展开,探寻规律:
T(n) = T(n - 1) + log n
= T(n - 2) + log (n - 1) + log n
= T(n - 3) + log (n - 2) + log (n - 1) + log n
= ...
= T(0) + log 1 + log 2 + ... + log (n - 1) + log n
= T(0) + log n!
According to Stirling's formula, 可见是O(n*log(n))
(c) 递归展开,探寻规律:
T(n)=T(0)+1^2+2^2+3^2+⋯+n^2
Or simply,
O(n^3)
(d) 这里是个调和级数
This is the nth harmonic number, Hn = 1 + 1/2 + 1/3 + ... + 1/n.
"所有调和级数都是发散于无穷的。但是其拉马努金和存在,且为欧拉常数。"
In fact, Hn = ln(n) + γ + O(1/n)
Hint:比较难,需换两次元。
[Algorithm] Asymptotic Growth Rate的更多相关文章
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- The Go Programming Language. Notes.
Contents Tutorial Hello, World Command-Line Arguments Finding Duplicate Lines A Web Server Loose End ...
- Exercises for IN1900
Exercises for IN1900October 14, 2019PrefaceThis document contains a number of programming exercises ...
- Caching Best Practices--reference
reference:http://java.dzone.com/articles/caching-best-practices There is an irresistible attraction ...
- WPF依赖对象(DependencyObject) 实现源码,理解WPF原理必读
/// DependencyObject encompasses all property engine services. It's primary function /// is providin ...
- Background removal with deep learning
[原文链接] Background removal with deep learning This post describes our work and research on the gree ...
- (转)Awesome PyTorch List
Awesome-Pytorch-list 2018-08-10 09:25:16 This blog is copied from: https://github.com/Epsilon-Lee/Aw ...
- Ethereum White Paper
https://github.com/ethereum/wiki/wiki/White-Paper White Paper EditNew Page James Ray edited this pag ...
- CSUOJ 2031 Barareh on Fire
Description The Barareh village is on fire due to the attack of the virtual enemy. Several places ar ...
随机推荐
- Java 对象的序列化和反序列化
先创建一个实现了Serializable接口的对象 import java.io.Serializable; /** * 可序列化Person对象. * @author Ramer * Sep 18, ...
- HTML 5 断点续上传
断点上传,java里面比较靠谱一点的,一般都会选用Flex.我承认,Flex只是摸了一下,不精通.HTML 5 有个Blob对象(File对象继承它),这个对象有个方法slice方法,可以对一个文件进 ...
- 写自己的ASP.NET MVC框架(下)
上篇博客[写自己的ASP.NET MVC框架(上)] 我给大家介绍我的MVC框架对于Ajax的支持与实现原理.今天的博客将介绍我的MVC框架对UI部分的支持. 注意:由于这篇博客是基于前篇博客的,因此 ...
- Learning to rank的讲解,单文档方法(Pointwise),文档对方法(Pairwise),文档列表方法(Listwise)
学习排序(Learning to Rank) LTR(Learning torank)学习排序是一种监督学习(SupervisedLearning)的排序方法.LTR已经被广泛应用到文本挖掘的很多领域 ...
- Juno Puppet Opertaors Meetup小结
今年五月刚结束的Juno OpenStack Summit是半年一度的Openstack盛会,抛去那些迷花渐欲乱人眼的商业活动,我们来看一看本届summit puppet-openstack社区有哪些 ...
- 如何诊断windows性能问题
直接使用perfmon中的性能诊断工具
- docker-compose中启动镜像失败的问题
http://blog.csdn.net/boling_cavalry/article/details/79050451 解决docker-compose启动镜像失败的问题: 原文地址:http:// ...
- MySql之视图的使用
一:视图是什么 视图相当于一个窗口,一个基于具体数据库表.定义了相关查询规则 的窗口. 建立视图,可以重用一些复杂的查询语句. 建立视图,相当于定义了一系列查询操作:从视图查询数据,相当于在调用 ...
- ceph rgw multisite基本用法
Realm: Zonegroup: 理解为数据中心,由一个或多个Zone组成,每个Realm有且仅有 一个Master Zonegroup,用于处理系统变更,其他的称为Slave Zonegroup, ...
- php static 变量的例子
class test { public static function a(){} public function b(){} } $obj = new test; 调用 代码 test::a(); ...