下面四种记号是为了建立函数间的相对级别。

CLRS上的一张图很直观:

大O记号

定义:如果存在正常数\(c\)和\(n_0\),使得当\(N\ge n_o\)时\(T(N)\le cf(N)\),记\(T(N)=O(f(N))\)。

举个栗子:

当\(N < 1000\)时,\(1000N\gt N^2\),但\(N^2\)增长率更大,所以最终\(N^2\)会更大,即\(O(N^2)=1000N\)。

也就是说,总会存在某个点\(n_0\),从这个点以后\(cf(N)\)至少和\(T(N)\)一样大,忽略常数因子,即\(T(N)\)的增长率小于等于\(f(N)\)的增长率。

那么为什么这个常数因子\(c\)可以忽略呢?

当\(N\ge n_o\)时,\(T(N)\le cf(N)\),也就是\(\frac{T(N)}{f(N)}\le c\)。此时如果\(T(N)\)的增长率大于\(f(N)\)的增长率,那么\(\frac{T(N)}{f(N)}\)不可能小于某个常数,也就是\(c\)不存在,与我们的前提条件矛盾,所以说忽略掉常数因子后,\(T(N)\)的增长率仍然小于等于\(f(N)\)的增长率。

那么既然\(T(N)\)是以不快于\(f(N)\)的速度增长,也就可以说\(f(N)\)是\(T(N)\)的一个上界(upper bound),即最坏情况

\(\Omega\)记号

定义:如果存在正常数\(c\)和\(n_0\),使得当\(N\ge n_o\)时\(T(N)\ge cg(n)\),记\(T(N)=\Omega(g(n))\)。

与上述大O的分析类似,可知:

\(T(N)\)的增长率大于等于\(g(N)\)的增长率,\(g(N)\)是\(T(N)\)的一个下界(lower bound),即最好情况

\(\Theta\)记号

定义:当且仅当\(T(N)=\Omega(h(n))\)、\(T(N)=O(h(n))\)时,

\(T(N)=\Theta(f(n))\)。

那么这个就是说\(T(N)\)的增长率等于\(h(N)\)的增长率,即最坏情况和最好情况相同

小o记号

定义:若\(T(N)=O(p(n))\)且\(T(N)\neq\Theta(p(n))\)时,

\(T(N)=o(f(n))\)。

与大O不同,小o表示\(T(N)\)的增长率小于\(p(N)\)的增长率,不包括等于。

Notations的更多相关文章

  1. 深入理解DOM节点类型第三篇——注释节点和文档类型节点

    × 目录 [1]注释节点 [2]文档类型 前面的话 把注释节点和文档类型节点放在一起是因为IE8-浏览器的一个bug.IE8-浏览器将标签名为"!"的元素视作注释节点,所以文档声明 ...

  2. Excel 转Latex 及tex表格的处理 总结

    Excel 转LaTex表格 与TeX表格的处理 总结   工具使用:一个Latex表格输入神器--Excel2Tex插件的安装过程. 首先下载插件:http://www.ctan.org/tex-a ...

  3. (MTT)连续能量函数最小化方法

    (MTT)连续能量函数最小化方法 Multitarget tracking Multi-object tracking 连续能量函数 读"A.Milan,S. Roth, K. Schind ...

  4. Pegasos: Primal Estimated sub-GrAdient Solver for SVM

    Abstract We describe and analyze a simple and effective iterative algorithm for solving the optimiza ...

  5. [转载]VIM 教程:Learn Vim Progressively

    文章来源:http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/   Learn Vim Progressively   TL ...

  6. All About Python

    Part one: Learn the Basics Hello, World! print "Hello,World!" Variables and Types Python i ...

  7. softmax分类器+cross entropy损失函数的求导

    softmax是logisitic regression在多酚类问题上的推广,\(W=[w_1,w_2,...,w_c]\)为各个类的权重因子,\(b\)为各类的门槛值.不要想象成超平面,否则很难理解 ...

  8. Groovy 模版引擎

    1. Introduction Groovy supports multiple ways to generate text dynamically including GStrings, print ...

  9. Groovy 处理 XML

    1. Parsing XML 1.1. XmlParser and XmlSlurper The most commonly used approach for parsing XML with Gr ...

随机推荐

  1. Hadoop(四):HDFS读数据的基本流程

    HDFS读数据的流程 shell发送下载请求 NameNode检测文件系统,查找a的元数据(block和block所在的位置信息) 返回元数据给shell,返回的元数据会排序,排序规则: 拓扑距离近排 ...

  2. 03使用Want Weapp进行路由跳转

    因为这里使用的是第三方库,所以你要引入哈. 在app.json中引入哈. "usingComponents": { "van-cell": "@van ...

  3. django禁用csrf

    django禁用csrf 函数试图 from django.views.decorators.csrf import csrf_exempt @csrf_exempt def your_func_vi ...

  4. Linux网络架设篇,虚拟机l系统中网卡设备名与配置文件不符如何处理?

    很多情况下,当我们在虚拟机中安装好linux系统后,并不能成功连上网.当我们配置好相关IP地址后同样不能成功连接网络.并且会体会网卡名与配置名不符,这时候应该怎么办呢? 1.清空下面文件 /etc/u ...

  5. Python 1基础语法一(注释、行与缩进、多行语句、空行和代码组)

    一.注释Python中单行注释以 # 开头,实例如下: # 第一个注释 print ("Hello, Python!") # 第二个注释 输出结果为: ============== ...

  6. String 对象-->lastIndexOf() 方法

    1.定义和用法 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索. 语法: string.lastInde ...

  7. python调用js

    安装 pip install PyExecJS 方法 eval() 输入参数:source(JS语句).cwd(路径) 返回值:result(语句执行结果) compile() 输入参数:source ...

  8. go中的线程的实现模型-P G M的调度

    线程实现模型 go中线程的实现是依靠 P G M M machine的缩写.一个M代表一个内核线程,或称“工作线程” P processor的缩写.一个P代表执行一个Go代码片段所需要的资源(或称“上 ...

  9. leetcode c++做题思路和题解(4)——队列的例题和总结

    队列的例题和总结 0. 目录 栈实现队列 队列实现栈 滑动窗口最大值 1. 栈实现队列 FIFO和FILO,相当于+-号,互转都是利用"负负得正"的原理. 官方解答中第二种思路很6 ...

  10. [安卓] 21、android studio 疑难杂症

    目录 1 gradle问题 1.1 gradle版本不匹配导致的错误: . 1 gradle问题 1.1 gradle版本不匹配导致的错误: 背景:在导入telink ble ota安卓源码时遇到an ...