Notations
下面四种记号是为了建立函数间的相对级别。
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的更多相关文章
- 深入理解DOM节点类型第三篇——注释节点和文档类型节点
× 目录 [1]注释节点 [2]文档类型 前面的话 把注释节点和文档类型节点放在一起是因为IE8-浏览器的一个bug.IE8-浏览器将标签名为"!"的元素视作注释节点,所以文档声明 ...
- Excel 转Latex 及tex表格的处理 总结
Excel 转LaTex表格 与TeX表格的处理 总结 工具使用:一个Latex表格输入神器--Excel2Tex插件的安装过程. 首先下载插件:http://www.ctan.org/tex-a ...
- (MTT)连续能量函数最小化方法
(MTT)连续能量函数最小化方法 Multitarget tracking Multi-object tracking 连续能量函数 读"A.Milan,S. Roth, K. Schind ...
- Pegasos: Primal Estimated sub-GrAdient Solver for SVM
Abstract We describe and analyze a simple and effective iterative algorithm for solving the optimiza ...
- [转载]VIM 教程:Learn Vim Progressively
文章来源:http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/ Learn Vim Progressively TL ...
- All About Python
Part one: Learn the Basics Hello, World! print "Hello,World!" Variables and Types Python i ...
- softmax分类器+cross entropy损失函数的求导
softmax是logisitic regression在多酚类问题上的推广,\(W=[w_1,w_2,...,w_c]\)为各个类的权重因子,\(b\)为各类的门槛值.不要想象成超平面,否则很难理解 ...
- Groovy 模版引擎
1. Introduction Groovy supports multiple ways to generate text dynamically including GStrings, print ...
- Groovy 处理 XML
1. Parsing XML 1.1. XmlParser and XmlSlurper The most commonly used approach for parsing XML with Gr ...
随机推荐
- postman 参数传递
pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm.test(& ...
- rest_framework-分页
分页 from django.shortcuts import render # Create your views here. from rest_framework import serializ ...
- 分治算法(C++版)
#include<iostream>using namespace std; void printArray(int array[],int length) { for (i ...
- flask入门 之 Python Shell (三)
1.代码: #encoding:utf-8 from flask_sqlalchemy import SQLAlchemy from flask_script import Manager,Shell ...
- flask 入门 之 Python Shell (一)
1.安装插件: pip install flask_script 2.代码: #encoding:utf-8 from flask_sqlalchemy import SQLAlchemy from ...
- Linux kernel min/max宏
#define min(x,y) ({ \ typeof(x) _x = (x); \ typeof(y) _y = (y); \ (void) (&_x == &_y); \ _x ...
- 答好友困惑:Java零基础如何入门,不知道怎么学,迷茫ING
作者:程序员小跃 几个星期之前,我在知乎上看到一个提问,说是:对于完全没有经验零基础自身的数学底子也很弱学习Java应该怎么学习呢?想着类似的问题我也有过回答,并且反馈还是蛮好的,就参考之前的思路回答 ...
- 科技发展时间线(Technology Timeline)
本文主要记录,过去两百年间,科技发展的时间线 这些内容,是自己在学习电脑发展历史的时候做的, 感兴趣的同学,可以复制到 Excel 里面,按顺序逐一进行学习, 学习和整理的过程确实花了很长时间,但是并 ...
- 遇到自己喜欢的视频无法下载,python帮你解决
问题描述 python是一种非常好用的爬虫工具.对于大多数的爬虫小白来说,python是更加简洁,高效的代码.今天就用实际案例讲解如何爬取动态的网站视频. 环境配置:python3:爬虫库reques ...
- idea创建springboot工程,总出现响应超时问题,或者无法连接http://start.spring.io导致创建失败
问题描述如下: idea创建springboot工程,总出现响应超时问题,或者无法连接http://start.spring.io导致创建失败 从我出现此类问题几次的解决方案 依照解决效率分为一下三种 ...