算法复杂度-渐进分析

算法复杂度-渐进分析

渐进表达式的定义

渐进上界 大 O O O

O ( g ( n ) ) = { f ( n ) : ∃   c > 0 , n 0 > 0 。   s . t .   ∀   n ≥ n 0 ,   0 ≤ f ( n ) ≤ c g ( n ) } O(g(n)) = \{f(n):{\exists} \: c > 0,n_0 > 0。 \: s.t. \: {\forall} \: n \geq n_0,\: 0 \leq f(n) \leq cg(n)\} O(g(n))={f(n)c>0n0>0s.t.nn00f(n)cg(n)}

渐进下界 大 Ω \Omega Ω

Ω ( g ( n ) ) = { f ( n ) : ∃   c > 0 , n 0 > 0 。   s . t .   ∀   n ≥ n 0 ,   0 ≤ c g ( n ) ≤ f ( n ) } \Omega(g(n)) = \{f(n):{\exists} \: c > 0,n_0 > 0。\: s.t. \: {\forall} \: n \geq n_0,\: 0 \leq cg(n) \leq f(n)\} Ω(g(n))={f(n)c>0n0>0s.t.nn00cg(n)f(n)}

渐进确界 Θ \Theta Θ

Θ ( g ( n ) ) = { f ( n ) : ∃   c 1 > 0 , c 2 > 0 , n 0 > 0 。   s . t .   ∀   n ≥ n 0 ,   0 ≤ c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) } \Theta(g(n)) = \{f(n):{\exists} \: c_1 > 0,c_2 > 0,n_0 > 0。\: s.t. \: {\forall} \: n \geq n_0, \: 0 \leq c_1g(n) \leq f(n) \leq c_2g(n)\} Θ(g(n))={f(n)c1>0c2>0n0>0s.t.nn0,0c1g(n)f(n)c2g(n)}

结论

∀   f ( n ) , g ( n ) 。   f ( n ) = Θ ( g ( n ) )   i i f   f ( n ) = O ( g ( n ) )   a n d   f ( n ) = Ω ( g ( n ) ) 。 {\forall} \: f(n),g(n)。\:f(n) = \Theta(g(n)) \:{iif}\: f(n)=O(g(n)) \:and\: f(n) = \Omega(g(n))。 f(n)g(n)f(n)=Θ(g(n))iiff(n)=O(g(n))andf(n)=Ω(g(n))

即: Θ ( g ( n ) ) = O ( g ( n ) )   ⋂   Ω ( g ( n ) ) \Theta(g(n)) = O(g(n))\: \bigcap \: \Omega(g(n)) Θ(g(n))=O(g(n))Ω(g(n))

非渐进确界的上界 小 ο \omicron ο

ο ( g ( n ) ) = { f ( n ) : ∀   c > 0   ∃   n 0 > 0 。   s . t .   n ≥ n 0 ,   0 ≤ f ( n ) < c g ( n ) } \omicron(g(n)) = \{f(n):{\forall} \: c > 0 \: {\exists} \: n_0 > 0。\: s.t. \: n \geq n_0,\: 0 \leq f(n) < cg(n)\} ο(g(n))={f(n)c>0n0>0s.t.nn00f(n)<cg(n)}

非渐进确界的下界 小 ω \omega ω

ω ( g ( n ) ) = { f ( n ) : ∀   c > 0   ∃   n 0 > 0 。   s . t .   n ≥ n 0 ,   0 ≤ c g ( n ) < f ( n ) } \omega(g(n)) = \{f(n): {\forall} \: c > 0 \: {\exists} \: n_0 > 0。\: s.t. \: n \geq n_0, \: 0 \leq cg(n) < f(n)\} ω(g(n))={f(n):c>0n0>0s.t.nn0,0cg(n)<f(n)}

举例说明

2 n 2 = O ( n 3 ) / 2 n 2 ∈ O ( n 3 ) 2n^2 = O(n^3)\quad / \quad 2n^2 \in O(n^3) 2n2=O(n3)/2n2O(n3)

f ( n ) = n 3 + O ( n 2 ) f(n) = n^3 + O(n^2) f(n)=n3+O(n2) 含义是: ∃   f ( n ) , h ( n ) ∈ O ( n 2 ) 。   s . t .   f ( n ) = n 3 + h ( n ) \exists \: f(n),h(n) \in O(n^2)。\: s.t. \: f(n) = n^3 + h(n) f(n)h(n)O(n2)s.t.f(n)=n3+h(n)

n 2 + O ( n ) = O ( n 2 ) n^2 + O(n) = O(n^2) n2+O(n)=O(n2) 含义是: ∀ f ( n ) ∈ O ( n ) ,   ∃   h ( n ) ∈ O ( n 2 ) 。   s . t .   n 2 + f ( n ) = h ( n ) \forall f(n) \in O(n),\: \exists \: h(n) \in O(n^2)。\: s.t. \: n^2 + f(n) = h(n) f(n)O(n)h(n)O(n2)s.t.n2+f(n)=h(n)

含义:“任何的左边都是右边”

n = Ω ( l g n ) \sqrt {n} = \Omega(lgn) n =Ω(lgn)

2 n 2 = o ( n 3 ) ,   n 0 = 2 c 。 2n^2 = o(n^3),\: n_0 = \frac{2}{c}。 2n2=o(n3)n0=c2

1 2 n 2 = Θ ( n 2 ) \frac{1}{2}n^2 = \Theta(n^2) 21n2=Θ(n2)

1 2 n 2 ≠ o ( n 2 ) \frac{1}{2}n^2 \neq o(n^2) 21n2=o(n2)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值