(渐近记号的性质)假设
f
(
n
)
f(n)
f(n)和
g
(
n
)
g(n)
g(n)为渐近正函数。证明或反驳下面的每个猜测。
a.
f
(
n
)
=
O
(
g
(
n
)
)
f(n) = O(g(n))
f(n)=O(g(n))蕴含
g
(
n
)
=
O
(
f
(
n
)
)
g(n) = O(f(n))
g(n)=O(f(n))。
b.
f
(
n
)
+
g
(
n
)
=
Θ
(
m
i
n
(
f
(
n
)
,
g
(
n
)
)
)
f(n) + g(n) = Θ({\rm min}(f(n), g(n)))
f(n)+g(n)=Θ(min(f(n),g(n)))。
c.
f
(
n
)
=
O
(
g
(
n
)
)
f(n) = O(g(n))
f(n)=O(g(n))蕴含
l
g
(
f
(
n
)
)
=
O
(
l
g
(
g
(
n
)
)
)
{\rm lg}(f(n)) = O({\rm lg}(g(n)))
lg(f(n))=O(lg(g(n))),其中对所有足够大的
n
n
n,有
l
g
(
g
(
n
)
)
≥
1
{\rm lg}(g(n)) ≥ 1
lg(g(n))≥1且
f
(
n
)
≥
1
f(n) ≥ 1
f(n)≥1。
d.
f
(
n
)
=
O
(
g
(
n
)
)
f(n) = O(g(n))
f(n)=O(g(n))蕴含
2
f
(
n
)
=
O
(
2
g
(
n
)
)
2^{f(n)} = O(2^{g(n)})
2f(n)=O(2g(n))。
e.
f
(
n
)
=
O
(
(
f
(
n
)
)
2
)
f(n) = O((f(n))^2)
f(n)=O((f(n))2)。
f.
f
(
n
)
=
O
(
g
(
n
)
)
f(n) = O(g(n))
f(n)=O(g(n))蕴含
g
(
n
)
=
Ω
(
f
(
n
)
)
g(n) = Ω(f(n))
g(n)=Ω(f(n))。
g.
f
(
n
)
=
Θ
(
f
(
n
/
2
)
)
f(n) = Θ(f(n/2))
f(n)=Θ(f(n/2))。
h.
f
(
n
)
+
o
(
f
(
n
)
)
=
Θ
(
f
(
n
)
)
f(n) + o(f(n)) = Θ(f(n))
f(n)+o(f(n))=Θ(f(n))。
解
a. 错误
例如,
n
=
O
(
n
2
)
n = O(n^2)
n=O(n2),然而
n
2
≠
O
(
n
)
n^2 ≠ O(n)
n2̸=O(n)。
b. 错误
例如,
n
+
n
2
≠
Θ
(
n
)
n + n^2 ≠ Θ(n)
n+n2̸=Θ(n)。
c. 正确
f
(
n
)
=
O
(
g
(
n
)
)
f(n) = O(g(n))
f(n)=O(g(n)),意味着存在正常量
c
c
c和
n
0
n_0
n0,使得对所有
n
≥
n
0
n ≥ n_0
n≥n0,有
f
(
n
)
≤
c
g
(
n
)
f(n) ≤ cg(n)
f(n)≤cg(n)。对这个不等式两边取对数,得到
l
g
(
f
(
n
)
)
≤
l
g
c
+
l
g
(
g
(
n
)
)
{\rm lg}(f(n)) ≤ {\rm lg}c + {\rm lg}(g(n))
lg(f(n))≤lgc+lg(g(n))。由于
l
g
c
{\rm lg}c
lgc是常数,可以取足够大的正常量
c
′
c'
c′,使得对所有
n
≥
n
0
n ≥ n_0
n≥n0,有
l
g
c
+
l
g
(
g
(
n
)
)
≤
c
′
l
g
(
g
(
n
)
)
{\rm lg}c + {\rm lg}(g(n)) ≤ c'{\rm lg}(g(n))
lgc+lg(g(n))≤c′lg(g(n)),即
l
g
(
f
(
n
)
)
≤
c
′
l
g
(
g
(
n
)
)
{\rm lg}(f(n)) ≤ c'{\rm lg}(g(n))
lg(f(n))≤c′lg(g(n))。所以
l
g
(
f
(
n
)
)
=
O
(
l
g
(
g
(
n
)
)
)
{\rm lg}(f(n)) = O({\rm lg}(g(n)))
lg(f(n))=O(lg(g(n)))成立。
d. 错误
例如,
n
=
O
(
n
/
2
)
n = O(n/2)
n=O(n/2),然而,
2
n
≠
O
(
2
n
/
2
)
2^n ≠ O(2^{n/2})
2n̸=O(2n/2)。
e. 错误
我们可以构造一个函数,该函数是渐近小于
1
1
1的,例如,
f
(
n
)
=
1
/
n
f(n)=1/n
f(n)=1/n,
(
f
(
n
)
)
2
=
1
/
n
2
(f(n))^2=1/n^2
(f(n))2=1/n2。显然有
l
i
m
n
→
∞
(
f
(
n
)
)
2
f
(
n
)
=
l
i
m
n
→
∞
f
(
n
)
=
l
i
m
n
→
∞
1
n
=
0
lim_{n→∞}\frac{(f(n))^2}{f(n)}=lim_{n→∞}f(n)=lim_{n→∞}\frac{1}{n}=0
limn→∞f(n)(f(n))2=limn→∞f(n)=limn→∞n1=0
这说明
(
f
(
n
)
)
2
=
o
(
f
(
n
)
)
(f(n))^2=o(f(n))
(f(n))2=o(f(n)),因此
f
(
n
)
≠
O
(
(
f
(
n
)
)
2
)
f(n)≠O((f(n))^2)
f(n)̸=O((f(n))2)。
f. 正确
3.1节已给出了这一结论。
g. 错误
例如,
2
n
≠
Θ
(
2
n
/
2
)
2^n ≠ Θ(2^{n/2})
2n̸=Θ(2n/2)。
h. 正确
对任意一个函数
g
(
n
)
=
o
(
f
(
n
)
)
g(n) = o(f(n))
g(n)=o(f(n)),当
n
n
n足够大时,必有
0
≤
g
(
n
)
<
f
(
n
)
0 ≤ g(n) < f(n)
0≤g(n)<f(n)。于是当
n
n
n足够大时,有
f
(
n
)
≤
f
(
n
)
+
g
(
n
)
<
2
f
(
n
)
f(n) ≤ f(n) + g(n) < 2f(n)
f(n)≤f(n)+g(n)<2f(n),这说明
f
(
n
)
+
g
(
n
)
=
Θ
(
f
(
n
)
)
f(n) + g(n) = Θ(f(n))
f(n)+g(n)=Θ(f(n)),即
f
(
n
)
+
o
(
f
(
n
)
)
=
Θ
(
f
(
n
)
)
f(n) + o(f(n)) = Θ(f(n))
f(n)+o(f(n))=Θ(f(n))。