2.1 数学基础、大O表示法、洛必达法则相对增长率、T(N) = O( f(N) )、Ω( g(N) )、Ω( h(N) )、o( p(N) )

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) )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值