渐进标记

渐进标记

引言

在拜读《算法导论》的时候,发现若要将所有课后题做完的话会花掉太多时间,所以以后不更新作业的博客了,而是写关于算法导论上某一部分内容总结性的记录。这篇博客先大概的说一下渐进标记,有什么补充的想起了在补充吧。

渐进标记

渐进非负函数: f ( n ) f(n) f(n)为一个渐进非负函数,则有,当 n ≥ 0 n\geq 0 n0时,总有 f ( n ) ≥ 0 f(n)\geq 0 f(n)0,也就是函数值在自变量取值为 [ 0 , + ∞ ) [0, +\infty) [0,+)时总大于0,在渐进标记的介绍中,所有函数均为渐进非负函数。
定义:

标记符号使用形式定义
Θ \Theta Θ f ( n ) = Θ ( g ( n ) ) f(n)=\Theta(g(n)) f(n)=Θ(g(n)) Θ ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , c 1 , c 2 , 使 得 不 等 式 c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) 成 立 } \Theta(g(n))=\{f(n):\exist n \geq n_0,c_1,c_2,使得不等式c_1g(n)\leq f(n) \leq c_2g(n)成立\} Θ(g(n))={f(n):nn0,c1,c2使c1g(n)f(n)c2g(n)}
O O O f ( n ) = O ( g ( n ) ) f(n)=O(g(n)) f(n)=O(g(n)) O ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , c , 使 得 不 等 式 0 ≤ f ( n ) ≤ c g ( n ) 成 立 } O(g(n))=\{f(n):\exist n \geq n_0, c,使得不等式0\leq f(n) \leq cg(n)成立\} O(g(n))={f(n):nn0,c使0f(n)cg(n)}
o o o f ( n ) = o ( g ( n ) ) f(n)=o(g(n)) f(n)=o(g(n)) o ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , ∀ c > 0 , 使 得 不 等 式 0 ≤ f ( n ) < c g ( n ) 成 立 } o(g(n))=\{f(n):\exist n \geq n_0,\forall c>0,使得不等式0\leq f(n) < cg(n)成立\} o(g(n))={f(n):nn0,c>0使0f(n)<cg(n)}
Ω \Omega Ω f ( n ) = Ω ( g ( n ) ) f(n)=\Omega(g(n)) f(n)=Ω(g(n)) Ω ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , c , 使 得 不 等 式 0 ≤ c g ( n ) ≤ f ( n ) 成 立 } \Omega(g(n))=\{f(n):\exist n \geq n_0,c,使得不等式0\leq cg(n) \leq f(n)成立\} Ω(g(n))={f(n):nn0,c使0cg(n)f(n)}
ω \omega ω f ( n ) = ω ( g ( n ) ) f(n)=\omega(g(n)) f(n)=ω(g(n)) ω ( g ( n ) ) = { f ( n ) : ∃ n ≥ n 0 , ∀ c > 0 , 使 得 不 等 式 0 ≤ c g ( n ) < f ( n ) 成 立 } \omega(g(n))=\{f(n):\exist n \geq n_0,\forall c>0,使得不等式0\leq cg(n) < f(n)成立\} ω(g(n))={f(n):nn0,c>0使0cg(n)<f(n)}$

注意事项:
对于标记 Θ , O , Ω \Theta,O,\Omega Θ,O,Ω,他们的定义中的常量 c c c是存在就行,标记 o , ω o,\omega o,ω中的常量 c c c是任意大于零的值。
极限:
书上给出了渐进标记 o , ω o,\omega o,ω可以等价于极限。
f ( n ) = o ( g ( n ) ) f(n)=o(g(n)) f(n)=o(g(n))等价于极限: l i m n → ∞ f ( n ) g ( 0 ) = 0 lim_{n\rightarrow\infty}\frac{f(n)}{g(0)}=0 limng(0)f(n)=0
f ( n ) = ω ( g ( n ) ) f(n)=\omega(g(n)) f(n)=ω(g(n))等价于极限: l i m n → ∞ f ( n ) g ( 0 ) = ∞ lim_{n\rightarrow\infty}\frac{f(n)}{g(0)}=\infty limng(0)f(n)=
但是,个人认为渐进标记 Θ \Theta Θ可以等价于极限 l i m n → ∞ f ( n ) g ( n ) = c lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c limng(n)f(n)=c,其中c为常数。书上未给出这个定义。
证明过程:
充分性:若 f ( n ) = Θ ( g ( n ) ) f(n)=\Theta(g(n)) f(n)=Θ(g(n)),则有 l i m n → ∞ f ( n ) g ( n ) = c lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c limng(n)f(n)=c成立。
必要性证明:
f ( n ) = Θ ( g ( n ) ) f(n)=\Theta(g(n)) f(n)=Θ(g(n)),根据定义有: f ( n ) : ∃ n ≥ n 0 , c 1 , c 2 , 使 得 不 等 式 c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) 成 立 f(n):\exist n \geq n_0,c_1,c_2,使得不等式c_1g(n)\leq f(n) \leq c_2g(n)成立 f(n):nn0,c1,c2使c1g(n)f(n)c2g(n)
则有:
c 1 ≤ f ( n ) g ( n ) ≤ c 2 c 1 ≤ l i m n → ∞ f ( n ) g ( n ) ≤ c 2 c_1\leq \frac{f(n)}{g(n)} \leq c_2 \\ c_1\leq lim_{n\rightarrow\infty}\frac{f(n)}{g(n)} \leq c_2 c1g(n)f(n)c2c1limng(n)f(n)c2
因此必定存在一个常数c,使得 l i m n → ∞ f ( n ) g ( n ) = c lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c limng(n)f(n)=c成立。(这里的必要性证明有点牵强。。。)
充分性:若 l i m n → ∞ f ( n ) g ( n ) = c lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c limng(n)f(n)=c成立,则有 f ( n ) = Θ ( g ( n ) ) f(n)=\Theta(g(n)) f(n)=Θ(g(n))
充分性证明:
l i m n → ∞ f ( n ) g ( n ) = c lim_{n\rightarrow\infty}\frac{f(n)}{g(n)}=c limng(n)f(n)=c可得:
f ( n ) g ( n ) = c + α \frac{f(n)}{g(n)}=c+\alpha g(n)f(n)=c+α,其中 α \alpha α为无穷小量。
f ( n ) = c g ( n ) + α f(n)=cg(n)+\alpha f(n)=cg(n)+α,因为 g ( n ) g(n) g(n)线性非负,必然存在 0 < ε ≤ 1 0<\varepsilon \leq1 0<ε1,以及 η ≥ 1 \eta \geq1 η1
使得不等式: ε c g ( n ) + α ≤ f ( n ) ≤ η c g ( n ) + α \varepsilon cg(n)+\alpha \leq f(n)\leq \eta cg(n)+\alpha εcg(n)+αf(n)ηcg(n)+α成立。
得证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值