算法概论笔记 - 大O符号

引入

Fibonacci
指数Version
function fib(n)
if n=0: return 0
if n=1: return 1
return fib(n-1) + fib(n-2)

包含大量重复计算步骤,基本操作次数为n的指数

线性Version
function fib(n)
if n=0: return 0
create an array f[0...n]
f[0]=0, f[1]=1
for i=2...n:
    f[i]=f[i-1]+f[i-2]
return f[n]

对中间计算结果进行存储,基本操作次数为关于n的线性

对数Version

![](http://latex.codecogs.com/svg.latex?\begin{pmatrix}F_n \F_{n+1} \\end{pmatrix}=\begin{pmatrix}0 & 1 \1 & 1 \\end{pmatrix}^n\begin{pmatrix}F_0 \F_1 \\end{pmatrix})
![](http://latex.codecogs.com/svg.latex?\begin{pmatrix}0 & 1 \1 & 1 \\end{pmatrix})
^1

![](http://latex.codecogs.com/svg.latex?\begin{pmatrix}0 & 1 \1 & 1 \\end{pmatrix})
^n
在二叉树上需要logn次上升操作

这里用到分治思想,与快速求指数类似。

function power(a, n)
    if(n=0) return 1
    x = power(a, n/2's floor)
    if(n is even)
        then return(x^2)
    else
        return (a*n^2)
通项公式
  1. 构造
    的等比数列,即![](http://latex.codecogs.com/svg.latex?F(n) - rF(n-1) = s(F(n-1) - rF(n-2)))
    可得到![](http://latex.codecogs.com/svg.latex?F(n) - rF(n-1) = s^{n-1}(F(1) - rF(0)))
  2. 则![](http://latex.codecogs.com/svg.latex?F(n) = s^{n-1} + rF(n-1) = s^{n-1} + rs^{n-2} + rF(n-2) = s^{n-1} + rs^{n-2} + r2*s{n-3} + ... + r^{n-2}s + r^{n-1}s^0),即为首项为
    ,比值为
    的等比数列,因此
    ![](http://latex.codecogs.com/svg.latex?F(n) = s^{n-1}* \frac {(r/s)^n-1} {r/s - 1})
  3. 又因![](http://latex.codecogs.com/svg.latex?s, r 满足s+r=1以及s*r=-1),因此,s/r为![](http://latex.codecogs.com/svg.latex?\frac {1+-\sqrt 5} 2)。因此,约简后,![](http://latex.codecogs.com/svg.latex?F(n) = \frac {\sqrt 5} 5 [(\frac {1+\sqrt 5} 2)^n - \frac {1-\sqrt 5} 2)^n])
大O表示法

在机器无关性下分析算法


大O表示法

各函数规模增长情况

一些经验规则:

  1. 常系数可以忽略
  2. 当a>b时,

    支配
  3. 任何指数项支配任何多项式项,如

    支配
  4. 任何多项式项支配对数项,如n支配

对数的性质(换底公式):
![](http://latex.codecogs.com/svg.latex?log_ab = \frac {log_cb} {log_ca})
随着规模n的增大,对数的底对于算法复杂度并无实际贡献,如![](http://latex.codecogs.com/svg.latex?log_2(1, 000, 000) = 19.9316, log_3(1, 000, 000) = 12.5754...)
因此,在大O符号下,基数可以忽略,因此可以简单记为O(logn)

一些公式

![](http://latex.codecogs.com/svg.latex?\sum_{i=1}^N i^2 = \frac {N(N+1)(2N+1)} 6 = \frac {N^3} 3)
when k!= 1,![](http://latex.codecogs.com/svg.latex?\sum_{i=1}^N i^k = \frac {N^{k+1}} {k+1})
![](http://latex.codecogs.com/svg.latex?\sum_{i=1}^N {\frac 1 i} = log_eN)

递归

基本法则

  1. 基准情形:必须总要有某些基准的情形,它们不用递归就能求解
  2. 不断推进:对于那些要递归求解的情形,递归调用必须总能够朝着一个基准情形推进

在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 归去来兮。 1.1 说明 本篇为《挑战程序设计竞赛(第2版)》[http://www.ituring.com.cn...
    尤汐Yogy阅读 14,267评论 0 160
  • 算法和数据结构 [TOC] 算法 函数的增长 渐近记号 用来描述算法渐近运行时间的记号,根据定义域为自然数集$N=...
    wxainn阅读 1,054评论 0 0
  • 前天晚上正在宿舍看写作业,突然打进来一个电话,一看是阿金的发小,接上后第一句话:明天回来吧,阿金妈去世了。刚开始不...
    哇咔咔呀阅读 348评论 0 0
  • 别被天气“捉弄” 醉老火/文图 热浪来袭,一波接着一波,一波更胜一波。 进入七月以来,全国各地的高温预警就没有停...
    醉老火阅读 290评论 0 3
  • HTTP协议 HTTP协议作为网络传输的基本协议,有着广泛的应用。 HTTP协议的完整内容很多,但是其核心知识却又...
    小甲鱼python阅读 362评论 0 1