重新粗推了一下Master Theorem

主定理一般形式是T(n) = a T(n / b) + f(n), a >= 1, b > 1。递归项可以理解为一个高度为 logbn 的 a 叉树, 这样 total operation就是  (a ^ logbn) - 1,  右边的f(n)假设为 nc 那么我们对比一下这两项就会发现 T(n)的复杂度主要取决于 logba 与 c 的大小。所以我们才会有接下来的三种case。也需要注意什么时候不可以使用主定理。

Case 1:  c < logba ,   O(n) = n ^ logba  , 意味着我们可以忽略 f(n)

Case 2:  c = logba,    O(n) = nlogk + 1n   ,  k >= 0

Case 3:  c > logba,    O(n) = nc

Reference:

https://en.wikipedia.org/wiki/Master_theorem

时间: 2024-08-05 16:07:31

重新粗推了一下Master Theorem的相关文章

master theorem

The master theorem concerns recurrence relations of the form: {\displaystyle T(n)=a\;T\!\left({\frac {n}{b}}\right)+f(n)} where {\displaystyle a\in \mathbb {N} {\mbox{, }}1<b\in \mathbb {R} } In the application to the analysis of a recursive algorith

master theorem主定理

其中 为问题规模, 为递推的子问题数量, 为每个子问题的规模(假设每个子问题的规模基本一样) O(n^d)为除了递归以外的其他计算量. 例子:http://www.cnblogs.com/SelaSelah/archive/2012/06/04/2535271.html

git回滚远程仓库代码/错提master分支的恢复

前言 今天周五了,刚接了个新微服务模块,下班前高高兴兴开发完,提交git代码,jenkins发布到测试环境.突然看到一个提示 我最近提的代码呢?!! 想到可能会提错仓库,转念一想,不对呀,我怎有这么高的权限提到master呢? 去gitlab上看看,果然是推到了Master分支!/泪目 /泪目 于是有了这篇折腾记录! 正文 推送代码到正确的仓库 首先我得把现有的代码搞到dev分支,当前是在master上,master已经检出到本地master分支上了, 直接用现成的 master -> orgi

1. Git 克隆代码

1. Git 克隆代码 git clone git://github.com/facebook/hiphop-php.git 2. Git更新分支 查看服务器上的所有分支 [[email protected] hiphop-php]git branch –r 输出结果: origin/HEAD -> origin/master origin/HPHP-2.0 origin/a832f349d8caf0de8c7df671d03c90a5e078fb53 origin/master 查看当前有效分

Git Pro深入浅出(三)

七.自定义Git 前面已经阐述了Git基本的运作机制和使用方式,介绍了许多Git提供的工具来帮助你简单且有效地使用它.本部分将演示如何借助Git的一些重要的配置方法和钩子机制,来满足自定义的需求. 1. 配置Git (1)配置Git 可以用git config 配置Git. $ git config --global user.name "ligang" $ git config --global user.email "[email protected]" **快

【20171105】主定理的基本解释整合

在算法分析中,主定理(英语:master theorem)提供了用 渐近符号 表示许多由 分治法 得到的递推关系式的方法. 此方法经由经典算法教科书<算法导论>而为人熟知.不过,并非所有递推关系式都可应用主定理.该定理的推广形式包括Akra-Bazzi定理. 内容 假设有递推关系式 , 其中为 问题规模, 为递推的子 问题数量, 为 每个子问题的规模(假设每个子问题的规模基本一样), 为 递推以外 进行的 计算工作. a≥1,b>1为常数,f(n) 为函数,T(n) 为非负整数. 则有以

循序渐进学习时间复杂度

一.浅谈算法 学习软件开发这么多年,常常听到程序=数据结构+算法,但是很多人对这句话提出质疑,因为实际项目开发的时候大部分人是做螺丝钉的角色,而且大部分甘于做螺丝钉的角色,就会认为实际项目,只是完成业务开发而已,去哪都是增删改查,数据结构根本用不到.我认为,算法和基本的数据结构是非常重要的,对于一个合格的程序猿来说,有时候我们没有涉及到,只是别人把需要的事情都给我们做了,比如的java版本的hashmap,采用红黑树的结构,提高了更多效率,软件开发高速发展的同时,编程的门槛也会越来越低,只有了解

lecture 10.22

1. 不能使用master theorem的地方 2. basic induction 3. inductive case中也可以分别对base case0,1两种情况分别证明p(k+2)成立,即分别证明奇数成立,偶数成立 4. induction m upwords induction steps l>1 5. strong induction 举例为斐波那契额数列,成立的前提不仅仅是k(n)成立,而是前面的都成立 6. 推导可以逆序,如p(m)成立,推p(m-1).也就是说base case

Git 版本控制系统的基本使用、常用操作

以Ubuntu16.04操作系统为例(其他系统类似),主要记录常用的.基本操作: 0. 安装Git 分散型版本控制系统(CVS): sudo apt-get install git 1. 初始化本地配置git或其他配置等(配置仓库或者全局选项) git config --global user.name "your_name" git config --global user.email "[email protected]" git config --global