2.1 数学基础、大O表示法、洛必达法则相对增长率、T(N) = O( f(N) )、Ω( g(N) )、Ω( h(N) )、o( p(N) )
2018-02-02 11:16
459 查看
2.1 数学基础
①定义2.1:如果存在正常数 c 和 n0,使得当 N≤cf(N) ,则记为 T(N) = O( f(N) )
解释:T(N) 的增长率 ≤ f(N)
定义2.2: 如果存在正常数 c 和 n0,使得当 N ≥ cf(N) ,则记为 T(N) = Ω( g(N) )
解释:T(N) 的增长率 ≥ g(N)
定义2.3:T(N) = θ( h(N) ) 当且仅当 T(N) = O( h(N) ) 和 T(N) = Ω( h(N) )
解释:T(N) 的增长率 = h(N)
定义2.4: 如果对每一正常数 c 都存在常数 n0,使得当 N > n0 时 T(N) < cp(N),则 T(N) = o( p(N) )
如果 T(N) = O( p(N) ) 且 T(N) ≠ θ( p(N) ),则 T(N) = o( p(N) )
(注意大O和小o有区别:大O包含增长率相同的可能性,所以会有等于的关系)
解释:T(N) 的增长率 < g(N)
②大O表示法:称一个函数g(n)是O(
f(n) ),当且仅当存在常数 c>0 和 n0>=1,对一切 n>n0 均有 |g(n)|<=c|f(n)| 成立,也称函数 g(n) 以 f(n) 为界或者称 g(n) 优于f(n),记作g(n)=O(f(n))。 定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数。T(n)称为这一算法的“时间复杂度”。当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。
大O表示法表示时间复杂度,注意它是某一个算法的时间复杂度。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。此外,一个问题本身也有它的复杂度,如果某个算法的复杂度到达了这个问题复杂度的下界,那就称这样的算法是最佳算法。
③ 当 T(N)
= O( f(N) ) 时,是在保证函数 T(N) 以不快于 f(N) 的速度增长,得到 f(N) 是 T(N) 的一个上界,T(N) 是 f(N) 的一个下界,
即 T(N)
= O( f(N) ) --> f(N) = Ω( T(N) )
例子:N^3 比 N^2 增长快 -->N^2
= O( N^3 ) 或
N^3 = Ω( N^2 )
④ 如果 T1(N) = O( f(N) ) 且 T2(N) = O( g(N) ),那么
a) T1(N) + T2(N) = O( f(N) + g(N) ) [ 直观的和非正式的可以写成 max( O( f(N) ), O( g(N) ) ) ]
b) T1(N)
* T2(N) = O( f(N) * g(N) )
⑤
如果T(N) 是一个k次多项式,则 T(N) = θ( N^k )
⑥
对任意常数k, ( log( 2,N ) ) ^k = O(N),说明对数增长得很缓慢
⑦
计算极限 lim( N->oo ) f(N) / g(N),确定 f(N) 和 g(N) 的相对增长率,洛必达法则:
a) 极限是 0: f(N) = o( g(N) )
b) 极限是 c≠0: f(N) = θ( g(N) )
c) 极限是 oo: g(N) = o( f(N) )
①定义2.1:如果存在正常数 c 和 n0,使得当 N≤cf(N) ,则记为 T(N) = O( f(N) )
解释:T(N) 的增长率 ≤ f(N)
定义2.2: 如果存在正常数 c 和 n0,使得当 N ≥ cf(N) ,则记为 T(N) = Ω( g(N) )
解释:T(N) 的增长率 ≥ g(N)
定义2.3:T(N) = θ( h(N) ) 当且仅当 T(N) = O( h(N) ) 和 T(N) = Ω( h(N) )
解释:T(N) 的增长率 = h(N)
定义2.4: 如果对每一正常数 c 都存在常数 n0,使得当 N > n0 时 T(N) < cp(N),则 T(N) = o( p(N) )
如果 T(N) = O( p(N) ) 且 T(N) ≠ θ( p(N) ),则 T(N) = o( p(N) )
(注意大O和小o有区别:大O包含增长率相同的可能性,所以会有等于的关系)
解释:T(N) 的增长率 < g(N)
②大O表示法:称一个函数g(n)是O(
f(n) ),当且仅当存在常数 c>0 和 n0>=1,对一切 n>n0 均有 |g(n)|<=c|f(n)| 成立,也称函数 g(n) 以 f(n) 为界或者称 g(n) 优于f(n),记作g(n)=O(f(n))。 定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数。T(n)称为这一算法的“时间复杂度”。当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。
大O表示法表示时间复杂度,注意它是某一个算法的时间复杂度。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。此外,一个问题本身也有它的复杂度,如果某个算法的复杂度到达了这个问题复杂度的下界,那就称这样的算法是最佳算法。
③ 当 T(N)
= O( f(N) ) 时,是在保证函数 T(N) 以不快于 f(N) 的速度增长,得到 f(N) 是 T(N) 的一个上界,T(N) 是 f(N) 的一个下界,
即 T(N)
= O( f(N) ) --> f(N) = Ω( T(N) )
例子:N^3 比 N^2 增长快 -->N^2
= O( N^3 ) 或
N^3 = Ω( N^2 )
④ 如果 T1(N) = O( f(N) ) 且 T2(N) = O( g(N) ),那么
a) T1(N) + T2(N) = O( f(N) + g(N) ) [ 直观的和非正式的可以写成 max( O( f(N) ), O( g(N) ) ) ]
b) T1(N)
* T2(N) = O( f(N) * g(N) )
⑤
如果T(N) 是一个k次多项式,则 T(N) = θ( N^k )
⑥
对任意常数k, ( log( 2,N ) ) ^k = O(N),说明对数增长得很缓慢
⑦
计算极限 lim( N->oo ) f(N) / g(N),确定 f(N) 和 g(N) 的相对增长率,洛必达法则:
a) 极限是 0: f(N) = o( g(N) )
b) 极限是 c≠0: f(N) = θ( g(N) )
c) 极限是 oo: g(N) = o( f(N) )
相关文章推荐
- 数学基础之概率
- 2.1 IPC机制简介与基础概念
- 开源Math.NET基础数学类库使用(08)C#进行数值积分
- 机器学习数学基础--(三)线性代数之四个基本子空间
- 南京大学基础数学研究生的学习和生活
- CSS学习三~~相对定位,绝对定位,兼容性基础
- 机器学习数学基础
- 机器学习的数学基础(1)--Dirichlet分布
- GIS的数学基础
- [Unity3D学习]3D数学基础之向量
- 关于数学基础的危机
- 基础数学知识
- 基础数学
- 3D数学基础,图形与游戏开发笔记3
- 数学基础(1)--线代
- 【原创】开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
- 3D数学基础
- 3. 深度学习的数学基础:概率论与信息论
- dom4j-2.1基础 attributeValue 得到指定元素的指定属性值
- Codeforces 610B Vika and Squares 【计数 数学基础】