《算法导论》第三章 函数的增长

第三章 函数的增长

3-1 知识点

Θ \Theta Θ记号

Θ ( g ( n ) ) \Theta(g(n)) Θ(g(n))的含义为:存在正常量 c 1 , c 2 和 n 0 c_1,c_2 和 n_0 c1,c2n0,使得对所有 n ≥ n 0 n \ge n_0 nn0,有 0 ≤ c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) 0 \le c_1g(n) \le f(n) \le c_2g(n) 0c1g(n)f(n)c2g(n)

举个例子,当分析插入排序的最坏运行时间时:

  • f ( n ) = a 2 n 2 + b n + c f(n) =\frac{a}{2}n^2 + bn +c f(n)=2an2+bn+c
  • g ( n ) = n 2 g(n) = n^2 g(n)=n2

在算法导论一书中,通常使用 f ( n ) = Θ ( g ( n ) ) f(n) = \Theta(g(n)) f(n)=Θ(g(n)) 来表示与 f ( n ) ∈ Θ ( g ( n ) ) f(n) ∈ \Theta(g(n)) f(n)Θ(g(n)) 相同的含义,即 Θ ( g ( n ) ) \Theta(g(n)) Θ(g(n))代表一个集合, f ( n ) f(n) f(n)代表一个属于 Θ ( g ( n ) ) \Theta(g(n)) Θ(g(n))的函数。

O \Omicron O记号

O ( g ( n ) ) \Omicron(g(n)) O(g(n))的含义为:存在正常量 c c c n 0 n_0 n0,使得对所有 n ≥ n 0 n\ge n_0 nn0,有 0 ≤ f ( n ) ≤ c g ( n ) 0 \le f(n) \le cg(n) 0f(n)cg(n)

f ( n ) = O ( g ( n ) ) f(n) = \Omicron(g(n)) f(n)=O(g(n)) 一般用来表示 g(n) 的某个常量倍数是 f(n) 的渐进上界,而不要求它是一个多么紧确的上界。比如, n = O ( n 2 ) , n 2 = O ( n 2 ) n = O(n^2), n^2 = O(n^2) n=O(n2),n2=O(n2)都是成立的。

当我们说运行时间为 O ( n 2 ) \Omicron(n^2) O(n2) 时,意指其最坏情况运行时间为 O ( n 2 ) \Omicron(n^2) O(n2)

Ω \Omega Ω记号

Ω ( g ( n ) ) \Omega(g(n)) Ω(g(n)) 的含义为:存在正常量 c c c n 0 n_0 n0,使得对所有 n ≥ n 0 n\ge n_0 nn0,有 0 ≤ c g ( n ) ≤ f ( n ) 0 \le cg(n) \le f(n) 0cg(n)f(n)

不是所有函数都可渐进比较

f ( n ) = n , g ( n ) = n 1 + sin ⁡ x f(n) = n,g(n) = n^{1+\sin x} f(n)=ng(n)=n1+sinx,则 f ( n ) = O ( g ( n ) ) , f ( n ) = Ω ( g ( n ) ) f(n) = \Omicron(g(n)),f(n) = \Omega(g(n)) f(n)=O(g(n))f(n)=Ω(g(n)) 都不成立。f(n) 与 g(n) 的函数图像如下:

练习题

3.1-1

假设 f(n) 和 g(n) 都是渐进非负函数,证明 m a x ( f ( n ) , g ( n ) ) = Θ ( f ( n ) + g ( n ) ) max(f(n), g(n)) = \Theta(f(n) + g(n)) max(f(n),g(n))=Θ(f(n)+g(n))

因为两者均为渐进非负函数,所以存在正常量 n 0 n_0 n0,使得对所有 n ≥ n 0 n \ge n_0 nn0,都有 f ( n ) > = 0 , g ( n ) > = 0 f(n) >= 0, g(n) >= 0 f(n)>=0,g(n)>=0。取 c 1 = 1 2 , c 2 = 3 2 c_1 = \frac{1}{2},c_2=\frac{3}{2} c1=21c2=23,则对所有 n ≥ n 0 n \ge n_0 nn0,都有:

c 1 ∗ m a x ( f ( n ) , g ( n ) ) ≤ f ( n ) + g ( n ) ≤ c 2 ∗ m a x ( f ( n ) , g ( n ) ) c_1*max(f(n), g(n)) \le f(n) + g(n) \le c_2*max(f(n),g(n)) c1max(f(n),g(n))f(n)+g(n)c2max(f(n),g(n))

综上, m a x ( f ( n ) , g ( n ) ) = Θ ( f ( n ) + g ( n ) ) max(f(n), g(n)) = \Theta(f(n) + g(n)) max(f(n),g(n))=Θ(f(n)+g(n))

其实, c 1 , c 2 c_1,c_2 c1c2 有很多选择,但重要的时存在这样的选择。

3.1-2

证明:对任意实常量 a,b,其中 b > 0,有 ( n + a ) b = Θ ( n b ) (n+a)^b = \Theta(n^b) (n+a)b=Θ(nb)

为了证明上述结论,需找到正常量 c 1 , c 2 , n 0 c_1,c_2,n_0 c1,c2,n0 ,使得对所有 n ≥ n 0 n \ge n_0 nn0时,都有 0 ≤ c 1 ∗ n b ≤ ( n + a ) b ≤ c 2 ∗ n b 0 \le c_1*n^b \le (n+a)^b \le c_2*n^b 0c1nb(n+a)bc2nb

n 0 = 2 ∗ ∣ a ∣ n_0 = 2*|a| n0=2a 时,无论 a 取何值,下述不等式都成立:

∣ a ∣ ≤ n 2 ≤ n − ∣ a ∣ ≤ n + a ≤ n + ∣ a ∣ ≤ 2 ∗ n |a| \le \frac{n}{2} \le n-|a| \le n+a \le n+|a| \le 2*n a2nnan+an+a2n

n 2 ≤ n + a ≤ 2 n \frac{n}{2} \le n+a \le 2n 2nn+a2n

当 b > 0 时有:
0 < = ( 1 2 n ) b ≤ ( n + a ) b ≤ ( 2 n ) b 0 < = ( 1 2 ) b n b ≤ ( n + a ) b ≤ 2 b n b \begin{aligned} 0 <= (\frac{1}{2}n)^b \le (n+a)^b \le (2n)^b \\ 0 <= (\frac{1}{2})^bn^b \le (n+a)^b \le 2^bn^b \end{aligned} 0<=(21n)b(n+a)b(2n)b0<=(21)bnb(n+a)b2bnb

综上,当 c 1 = ( 1 2 ) b , c 2 = 2 b c1=(\frac{1}{2})^b,c2=2^b c1=(21)bc2=2b 时,对所有 n ≥ n 0 = 2 ∣ a ∣ n \ge n_0 = 2|a| nn0=2a,都有 0 ≤ c 1 ∗ n b ≤ ( n + a ) b ≤ c 2 ∗ n b 0 \le c_1*n^b \le (n+a)^b \le c_2*n^b 0c1nb(n+a)bc2nb,所以 ( n + a ) b = Θ ( n b ) (n+a)^b = \Theta(n^b) (n+a)b=Θ(nb)

3.1-3

解释“算法A的运行时间至少是 O ( n 2 ) \Omicron(n^2) O(n2)”这一表述是无意义的。

感觉这是个语文题。 O ( g ( n ) ) \Omicron(g(n)) O(g(n)) 表示运行时间的上界,与“至少”用在一起是个病句。就像说插入排序的运行时间至少是 O ( n 2 ) \Omicron(n^2) O(n2)

作者的解答如下:

3.1-4

2 n + 1 = O ( 2 n ) 2^{n+1} = \Omicron(2^n) 2n+1=O(2n)成立吗? 2 2 n = O m i c r o n ( 2 n ) 2^{2n} = Omicron(2^n) 22n=Omicron(2n)成立吗?

c = 3 时 c = 3 时 c=3,对于所有 n ≥ n 0 = 1 n \ge n_0 = 1 nn0=1,都有 0 ≤ 2 ∗ 2 n = 2 n + 1 ≤ c ∗ 2 n 0 \le 2*2^n = 2^{n+1} \le c*2^n 022n=2n+1c2n,所以 2 n + 1 = O ( 2 n ) 2^{n+1} = \Omicron(2^n) 2n+1=O(2n)成立。

假设存在 c c c n 0 n_0 n0,使得对所有 n ≥ n 0 n \ge n_0 nn0 都有 0 ≤ 2 2 n ≤ c 2 n 0 \le 2^{2n} \le c2^n 022nc2n,同除 2 n 2^n 2n得, 0 ≤ 2 n ≤ c 0 \le 2^{n} \le c 02nc,因为 c c c 是常量,所以对任意大的 n n n,该不等式不可能成立,故 2 2 n = O m i c r o n ( 2 n ) 2^{2n} = Omicron(2^n) 22n=Omicron(2n)不成立。

3.1-5

证明定理3.1

如果 f ( n ) = Θ ( g ( n ) ) f(n)=\Theta(g(n)) f(n)=Θ(g(n)),则存在正常量 n 0 , c 1 , c 2 n_0,c_1,c_2 n0c1c2,使得所有 n ≥ n 0 n \ge n_0 nn0 0 ≤ c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) 0 \le c_1g(n) \le f(n) \le c_2g(n) 0c1g(n)f(n)c2g(n),根据 Ω ( g ( n ) ) 及 O ( g ( n ) ) \Omega(g(n))及\Omicron(g(n)) Ω(g(n))O(g(n))的定义不难得出,此时 f ( n ) = Ω ( g ( n ) ) , f ( n ) = O ( g ( n ) ) f(n)=\Omega(g(n)),f(n)=\Omicron(g(n)) f(n)=Ω(g(n))f(n)=O(g(n)) 也成立。

如果 f ( n ) = O ( g ( n ) ) f(n)=\Omicron(g(n)) f(n)=O(g(n)) 成立,则存在正常量 n 1 , c 1 n_1,c_1 n1c1,使得所有 n ≥ n 1 n \ge n_1 nn1 0 ≤ c 1 g ( n ) ≤ f ( n ) 0 \le c_1g(n) \le f(n) 0c1g(n)f(n)
如果 f ( n ) = Ω ( g ( n ) ) f(n)=\Omega(g(n)) f(n)=Ω(g(n)) 成立,则存在正常量 n 2 , c 2 n_2,c_2 n2c2,使得所有 n ≥ n 2 n \ge n_2 nn2 0 ≤ f ( n ) ≤ c 2 g ( n ) 0 \le f(n) \le c_2g(n) 0f(n)c2g(n)

n 0 = m a x ( n 1 , n 2 ) n_0 = max(n_1,n_2) n0=max(n1n2),则所有 n ≥ n 0 n \ge n_0 nn0 0 ≤ c 1 g ( n ) ≤ f ( n ) ≤ c 2 g ( n ) 0 \le c_1g(n) \le f(n) \le c_2g(n) 0c1g(n)f(n)c2g(n)

综上, f ( n ) = Ω ( g ( n ) ) , f ( n ) = O ( g ( n ) ) f(n)=\Omega(g(n)),f(n)=\Omicron(g(n)) f(n)=Ω(g(n))f(n)=O(g(n)) f ( n ) = Θ ( g ( n ) ) f(n)=\Theta(g(n)) f(n)=Θ(g(n)) 充要条件。

3.1-7

证明 ο ( g ( n ) ) ∩ ω ( g ( n ) ) \omicron(g(n))∩\omega(g(n)) ο(g(n))ω(g(n)) 为空。

反证法。

假设 ο ( g ( n ) ) ∩ ω ( g ( n ) ) \omicron(g(n))∩\omega(g(n)) ο(g(n))ω(g(n))不为空,则对于任意 c > 0 c \gt 0 c>0,存在 f ( n ) , n 0 > 0 f(n),n_0 > 0 f(n)n0>0,使得对所有 n ≥ n 0 n \ge n_0 nn0 都有 0 ≤ f ( n ) < c g ( n ) 0 \le f(n) \lt cg(n) 0f(n)<cg(n) 0 ≤ c g ( n ) < f ( n ) 0 \le cg(n) \lt f(n) 0cg(n)<f(n),显然不存在这样的f(n),所以 ο ( g ( n ) ) ∩ ω ( g ( n ) ) \omicron(g(n))∩\omega(g(n)) ο(g(n))ω(g(n)) 为空。

3.1-8

给出 Ω ( g ( n , m ) ) , O ( g ( n , m ) ) \Omega(g(n,m)),\Omicron(g(n,m)) Ω(g(n,m))O(g(n,m)) 的定义。

3.2-1

因为 f ( n ) f(n) f(n) g ( n ) g(n) g(n) 均为单调递增的函数,则当 x < y x \lt y x<y 时有 f ( x ) ≤ f ( y ) , g ( x ) ≤ g ( y ) f(x) \le f(y),g(x) \le g(y) f(x)f(y)g(x)g(y),合并得 f ( x ) + g ( x ) ≤ f ( y ) + g ( y ) f(x)+g(x) \le f(y)+g(y) f(x)+g(x)f(y)+g(y),所以 f ( x ) + g ( y ) f(x)+g(y) f(x)+g(y) 为单调递增函数。

因为 f ( n ) f(n) f(n) g ( n ) g(n) g(n) 均为单调递增的函数,则当 x < y x \lt y x<y时有 g ( x ) ≤ g ( y ) g(x) \le g(y) g(x)g(y) f ( g ( x ) ) ≤ f ( g ( y ) ) f(g(x)) \le f(g(y)) f(g(x))f(g(y)),所以 f ( g ( n ) ) f(g(n)) f(g(n)) 是单调递增函数。

因为 f ( n ) f(n) f(n) g ( n ) g(n) g(n) 均为单调递增的函数且非负,则当 x < y x \lt y x<y时有 f ( x ) ∗ g ( x ) ≤ f ( y ) ∗ g ( y ) f(x)*g(x) \le f(y)*g(y) f(x)g(x)f(y)g(y),所以 f ( x ) ∗ g ( y ) f(x)*g(y) f(x)g(y) 为单调递增函数。

3.2-2

证明 a log ⁡ b c = c log ⁡ b a a^{\log_{b}{c}} = c^{\log_{b}a} alogbc=clogba

a = c n a=c^n a=cn,则有
a log ⁡ b c = c n log ⁡ b c = c log ⁡ b c n = c log ⁡ b a \begin{aligned} a^{\log_{b}{c}} &=c^{n\log_{b}{c}}\\ &=c^{\log_{b}{c^n}} \\ &=c^{\log_{b}{a}} \end{aligned} alogbc=cnlogbc=clogbcn=clogba

3.2-3

证明 n ! = ο ( n n ) n! = \omicron(n^n) n!=ο(nn)

3.20等式 可知,取 n 0 = 1 n_0 = 1 n0=1,对所有 n ≥ n 0 n \ge n_0 nn0
n ! = 2 π n ( n e ) n e α n \begin{aligned} n! &= \sqrt{2πn}(\frac{n}{e})^ne^{α_n} \\ \end{aligned} n!=2πn (en)neαn
因为 1 12 n + 1 < α n < 1 12 n \frac{1}{12n+1} < α_n < \frac{1}{12n} 12n+11<αn<12n1,所以有不等式如下:
n ! = 2 π n ( n e ) n e α n n ! < 2 π n ( n e ) n e n ! < 2 π n e ( n n e n ) \begin{aligned} n! &= \sqrt{2πn}(\frac{n}{e})^ne^{α_n} \\ n!&< \sqrt{2πn}(\frac{n}{e})^ne \\ n!&< \sqrt{2πn}e(\frac{n^n}{e^n}) \end{aligned} n!n!n!=2πn (en)neαn<2πn (en)ne<2πn e(ennn)

c > 0 c>0 c>0,若 2 π n e ( n n e n ) < c n n \sqrt{2πn}e(\frac{n^n}{e^n}) < cn^n 2πn e(ennn)<cnn,则有
2 π n e ( n n e n ) < c n n 2 π n e ( n n e n ) < c n n n 2 π e e n < c 2 π e c < e n ln ⁡ 2 π e c < ln ⁡ e n ln ⁡ 2 π + 1 − ln ⁡ c < n \begin{aligned} \sqrt{2πn}e(\frac{n^n}{e^n}) &< cn^n \\ \sqrt{2πn}e(\frac{n^n}{e^n}) &< cn^n\sqrt n \\ \frac{\sqrt{2π}e}{e^n} &< c \\ \frac{\sqrt{2π}e}{c} &< e^n \\ \ln {\frac{\sqrt{2π}e}{c}} &< \ln{e^n} \\ \ln {\sqrt{2π}} + 1 - \ln c &< n \end{aligned} 2πn e(ennn)2πn e(ennn)en2π ec2π elnc2π eln2π +1lnc<cnn<cnnn <c<en<lnen<n
综上,对于任意 c > 0 c > 0 c>0,存在 n 0 = m a x ( 1 , ⌈ ln ⁡ 2 π + 2 − ln ⁡ c ⌉ ) n_0 = max(1, \lceil {\ln {\sqrt{2π}} + 2 - \ln c} \rceil) n0=max(1,ln2π +2lnc),对于所有 n > = n 0 n >= n_0 n>=n0 0 < c n ! ≤ n n 0 < cn! \le n^n 0<cn!nn

所以 n ! = ο ( n n ) n! = \omicron(n^n) n!=ο(nn)

n ! = ω ( 2 n ) n! = \omega(2^n) n!=ω(2n)

n 0 = 7 n_0 = 7 n0=7 ,对所有 n ≥ n 0 n \ge n_0 nn0 n ! > 3 n > 2 n n! > 3^n > 2^n n!>3n>2n

对任意 c > 0 c > 0 c>0 有,设 c 2 n < 3 n c2^n < 3^n c2n<3n,则有
c 2 n < 3 n ln ⁡ c < l n ( 3 2 ) n ln ⁡ ( c − 3 2 ) < n \begin{aligned} c2^n &< 3^n \\ \ln c &< ln {(\frac{3}{2})^n} \\ \ln (c - \frac{3}{2}) &< n \end{aligned} c2nlncln(c23)<3n<ln(23)n<n

对任意 c > 0 c> 0 c>0,存在 n 0 = m a x ( 7 , ⌈ ln ⁡ ( c − 3 2 ) ⌉ ) n_0 = max(7, \lceil \ln (c - \frac{3}{2}) \rceil) n0=max(7,ln(c23)),对所有 n ≥ n 0 n \ge n_0 nn0 0 < c ∗ 2 n < n ! 0 \lt c*2^n < n! 0<c2n<n!,即 n ! = ω ( 2 n ) n! = \omega(2^n) n!=ω(2n)

lg ⁡ ( n ! ) = Θ ( n ∗ lg ⁡ n ) \lg(n!) = \Theta(n*\lg n) lg(n!)=Θ(nlgn)

3.20等式 可知,取 n 0 = 1 n_0 = 1 n0=1,对所有 n ≥ n 0 n \ge n_0 nn0
n ! = 2 π n ( n e ) n e α n \begin{aligned} n! &= \sqrt{2πn}(\frac{n}{e})^ne^{α_n} \\ \end{aligned} n!=2πn (en)neαn

有上述等式得:
lg ⁡ ( n ! ) = lg ⁡ ( 2 π n ( n e ) n e α n ) lg ⁡ ( n ! ) = lg ⁡ ( 2 π n ) + n lg ⁡ ( n ) − n lg ⁡ ( e ) + lg ⁡ ( e α n ) lg ⁡ ( n ! ) > n lg ⁡ ( n ) − n lg ⁡ ( e ) lg ⁡ ( n ! ) > n lg ⁡ ( n ) − n 2 lg ⁡ ( e 2 ) \begin{aligned} \lg (n!) &= \lg (\sqrt{2πn}(\frac{n}{e})^ne^{α_n}) \\ \lg (n!) &= \lg (\sqrt{2πn}) + n\lg(n) - n\lg(e) + \lg(e^{α_n}) \\ \lg (n!) &> n\lg(n) - n\lg(e) \\ \lg (n!) &> n\lg(n) - \frac{n}{2}\lg(e^2) \end{aligned} lg(n!)lg(n!)lg(n!)lg(n!)=lg(2πn (en)neαn)=lg(2πn )+nlg(n)nlg(e)+lg(eαn)>nlg(n)nlg(e)>nlg(n)2nlg(e2)

n 0 = ⌈ e 2 ⌉ n_0 = \lceil e^2 \rceil n0=e2,对所有 n ≥ n 0 n \ge n_0 nn0 都有,
lg ⁡ ( n ! ) > n lg ⁡ ( n ) − n 2 lg ⁡ ( e 2 ) lg ⁡ ( n ! ) > n lg ⁡ ( n ) − n 2 lg ⁡ ( n ) lg ⁡ ( n ! ) > 1 2 n lg ⁡ ( n ) \begin{aligned} \lg (n!) &> n\lg(n) - \frac{n}{2}\lg(e^2) \\ \lg (n!) &> n\lg(n) - \frac{n}{2}\lg(n) \\ \lg (n!) &> \frac{1}{2}n\lg(n) \end{aligned} lg(n!)lg(n!)lg(n!)>nlg(n)2nlg(e2)>nlg(n)2nlg(n)>21nlg(n)

综上,取 n 0 = ⌈ e 2 ⌉ , c 1 = 1 2 n_0 = \lceil e^2 \rceil, c_1 = \frac{1}{2} n0=e2,c1=21,对所有 n ≥ n 0 n \ge n_0 nn0 都有, lg ⁡ ( n ! ) ≥ c 1 n lg ⁡ ( n ) \lg (n!) \ge c_1n\lg(n) lg(n!)c1nlg(n)

令,取 n 0 = 1 n_0 = 1 n0=1,对所有 n ≥ n 0 n \ge n_0 nn0 都有
lg ⁡ ( n ! ) = lg ⁡ 1 + lg ⁡ 2 + . . + lg ⁡ n < = n lg ⁡ n \begin{aligned} \lg(n!) &= \lg 1 + \lg 2 + .. + \lg n \\ &<= n \lg n \end{aligned} lg(n!)=lg1+lg2+..+lgn<=nlgn

综上,取 n 0 = m a x ( ⌈ e 2 ⌉ , 1 ) , c 1 = 1 2 , c 2 = 1 n_0 = max( \lceil e^2 \rceil, 1),c_1 = \frac{1}{2}, c_2 = 1 n0=max(e2,1)c1=21,c2=1,对所有 n ≥ n 0 n \ge n_0 nn0 都有

0 ≤ c 1 lg ⁡ ( n lg ⁡ n ) ≤ lg ⁡ ( n ! ) ≤ c 2 lg ⁡ ( n lg ⁡ n ) 0 \le c_1\lg (n\lg n) \le \lg (n!) \le c_2\lg(n\lg n) 0c1lg(nlgn)lg(n!)c2lg(nlgn)

lg ⁡ ( n ! ) = Θ ( n ∗ lg ⁡ n ) \lg(n!) = \Theta(n*\lg n) lg(n!)=Θ(nlgn)

3.2-4

函数 ⌈ lg ⁡ n ⌉ ! \lceil\lg n\rceil ! lgn! ⌈ lg ⁡ lg ⁡ n ⌉ ! \lceil \lg \lg n\rceil ! lglgn! 多项式有界吗?

3.2-5

lg ⁡ ( lg ⁡ ∗ n ) \lg(\lg^*n) lg(lgn) lg ⁡ ∗ ( lg ⁡ n ) \lg ^*(\lg n) lg(lgn) 哪个渐进更大些?

lg ⁡ ∗ n \lg^*n lgn 的含义就是从 n 开始最少需要多少次运算可以得到一个不超过1的值,那么可得到 lg ⁡ ∗ ( lg ⁡ n ) = lg ⁡ ∗ n − 1 \lg ^*(\lg n) = \lg^*n - 1 lg(lgn)=lgn1

lg ⁡ ( lg ⁡ ∗ n ) \lg(\lg^*n) lg(lgn) lg ⁡ ∗ n − 1 \lg^*n - 1 lgn1 相比,显然后者渐进更大些。

3.2-7

n = 0 , 1 n = 0 ,1 n=0,1 时易得:

  • F 0 = 0 = ϕ 0 − ϕ ^ 0 5 F_0 = 0 = \frac{\phi ^0 - \widehat{\phi}^0}{\sqrt5} F0=0=5 ϕ0ϕ 0
  • F 1 = 1 = ϕ 1 − ϕ ^ 1 5 F_1 = 1 = \frac{\phi ^1 - \widehat{\phi}^1}{\sqrt5} F1=1=5 ϕ1ϕ 1

设当 n ≥ 2 n \ge 2 n2时, F n − 2 = ϕ n − 2 − ϕ ^ n − 2 5 , F n − 1 = ϕ n − 1 − ϕ ^ n − 1 5 F_{n-2} = \frac{\phi ^{n-2} - \widehat{\phi}^{n-2}}{\sqrt5},F_{n-1} = \frac{\phi ^{n-1} - \widehat{\phi}^{n-1}}{\sqrt5} Fn2=5 ϕn2ϕ n2Fn1=5 ϕn1ϕ n1 成立,

F n = F n − 1 + F n − 2 = ϕ n − 2 − ϕ ^ n − 2 5 + ϕ n − 1 − ϕ ^ n − 1 5 = ( ϕ n − 2 ( 1 + ϕ ) + ϕ ^ n − 2 ( 1 + ϕ ^ ) ) ∗ 1 5 = ϕ n − ϕ ^ n 5 / / 由 练 习 题 3.2 − 6 可 证 \begin{aligned} F_n &= F_{n-1} + F_{n-2} \\ &= \frac{\phi ^{n-2} - \widehat{\phi}^{n-2}}{\sqrt5} + \frac{\phi ^{n-1} - \widehat{\phi}^{n-1}}{\sqrt5} \\ &= (\phi ^{n-2}(1+\phi) +\widehat{\phi}^{n-2}(1+\widehat{\phi}))*\frac{1}{\sqrt5}\\ &= \frac{\phi ^n - \widehat{\phi}^n}{\sqrt5} // 由练习题3.2-6 可证 \end{aligned} Fn=Fn1+Fn2=5 ϕn2ϕ n2+5 ϕn1ϕ n1=(ϕn2(1+ϕ)+ϕ n2(1+ϕ ))5 1=5 ϕnϕ n//3.26

3.2-8

证明 k ln ⁡ k = Θ ( n ) k\ln k = \Theta(n) klnk=Θ(n) 蕴含着 k = Θ ( n / ln ⁡ n ) k=\Theta(n/\ln n) k=Θ(n/lnn)

k ln ⁡ k = Θ ( n ) k\ln k = \Theta(n) klnk=Θ(n) 可知,存在 $n_0 > 0,c_1 > 0,c_2 > 0 $,使得所有 n ≥ n 0 n \ge n_0 nn0 都有:

c 1 n ≤ k ln ⁡ k ≤ c 2 n c_1n \le k\ln k \le c_2n c1nklnkc2n

上式三部分同除 ln ⁡ n \ln n lnn 可得:

c 1 n ln ⁡ n ≤ k ln ⁡ k ln ⁡ n ≤ c 2 n ln ⁡ n c_1\frac{n}{\ln n} \le k\frac{\ln k}{\ln n} \le c_2\frac{n}{\ln n} c1lnnnklnnlnkc2lnnn

接下来,尝试证明 ln ⁡ k ln ⁡ n \frac{\ln k}{\ln n} lnnlnk 的取值范围。

c 1 n ≤ k ln ⁡ k ln ⁡ c 1 + ln ⁡ n ≤ ln ⁡ k + ln ⁡ ln ⁡ k ln ⁡ c 1 + ln ⁡ n ≤ 2 ln ⁡ k ln ⁡ c 1 ln ⁡ n + 1 ≤ 2 ln ⁡ k ln ⁡ n ln ⁡ c 1 2 ln ⁡ n + 1 2 ≤ ln ⁡ k ln ⁡ n 1 2 ≤ ln ⁡ k ln ⁡ n \begin{aligned} c_1n &\le k \ln k \\ \ln c_1 + \ln n&\le \ln k + \ln \ln k \\ \ln c_1 + \ln n&\le 2\ln k\\ \frac{\ln c_1}{\ln n} + 1 &\le 2\frac{\ln k}{\ln n} \\ \frac{\ln c_1}{2\ln n} + \frac{1}{2} &\le \frac{\ln k}{\ln n} \\ \frac{1}{2} &\le \frac{\ln k}{\ln n} \\ \end{aligned} c1nlnc1+lnnlnc1+lnnlnnlnc1+12lnnlnc1+2121klnklnk+lnlnk2lnk2lnnlnklnnlnklnnlnk
另外,取 n 0 = m a x ( n 0 , c 2 ) n_0 = max(n_0, c_2) n0=max(n0,c2),对所有 n ≥ n 0 n \ge n_0 nn0
c 2 n ≥ k ln ⁡ k ln ⁡ c 2 + ln ⁡ n ≥ ln ⁡ k + ln ⁡ ln ⁡ k ln ⁡ c 2 ln ⁡ n + 1 ≥ ln ⁡ k ln ⁡ n 2 ≥ ln ⁡ k ln ⁡ n \begin{aligned} c_2n &\ge k \ln k \\ \ln c_2 + \ln n &\ge \ln k + \ln \ln k \\ \frac{\ln c_2}{\ln n} + 1 &\ge \frac{\ln k}{\ln n} \\ 2 &\ge \frac{\ln k}{\ln n} \end{aligned} c2nlnc2+lnnlnnlnc2+12klnklnk+lnlnklnnlnklnnlnk

综上,由

k ln ⁡ k ln ⁡ n ≤ c 2 n ln ⁡ n k\frac{\ln k}{\ln n} \le c_2\frac{n}{\ln n} klnnlnkc2lnnn 1 2 ≤ ln ⁡ k ln ⁡ n \frac{1}{2} \le \frac{\ln k}{\ln n} 21lnnlnk

可得:

k ≤ 2 c 2 n ln ⁡ n k \le {2}{c_2}\frac{n}{\ln n} k2c2lnnn

c 1 n ln ⁡ n ≤ k ln ⁡ k ln ⁡ n c_1\frac{n}{\ln n} \le k\frac{\ln k}{\ln n} c1lnnnklnnlnk ln ⁡ k ln ⁡ n ≤ 2 \frac{\ln k}{\ln n} \le 2 lnnlnk2

可得:

c 1 2 n ln ⁡ n ≤ k \frac{c_1}{2}\frac{n}{\ln n} \le k 2c1lnnnk

因此 k ln ⁡ k = Θ ( n ) k\ln k = \Theta(n) klnk=Θ(n) 蕴含着 k = Θ ( n / ln ⁡ n ) k=\Theta(n/\ln n) k=Θ(n/lnn)

思考题 3-1

k ≥ d k \ge d kd,则 p ( n ) = O ( n k ) p(n) = \Omicron(n^k) p(n)=O(nk)

n 0 = 1 , c 2 = ⌈ ∣ a 0 ∣ + ∣ a 1 ∣ + . . + ∣ a d ∣ ⌉ n_0 = 1,c_2 = \lceil|a_0|+|a_1|+..+|a_d|\rceil n0=1c2=a0+a1+..+ad,则对于任意 n ≥ n 0 n \ge n_0 nn0 都有:

c 2 n k ≥ c 2 n d ≥ ∣ a 0 ∣ n d + ∣ a 1 ∣ n d + . . . + ∣ a d ∣ n d ≥ a 0 n 0 + a 1 n 1 + . . . + a d n d = p ( n ) \begin{aligned} c_2n^k &\ge c_2n^d \\ &\ge |a_0|n^d + |a_1|n^d + ... + |a_d|n^d \\ &\ge a_0n^0 + a_1n^1 + ... + a_dn^d = p(n) \\ \end{aligned} c2nkc2nda0nd+a1nd+...+adnda0n0+a1n1+...+adnd=p(n)

所以,若 k ≥ d k \ge d kd,则 p ( n ) = O ( n k ) p(n) = \Omicron(n^k) p(n)=O(nk)

k ≤ d k \le d kd,则 p ( n ) = Ω ( n k ) p(n) = \Omega(n^k) p(n)=Ω(nk)

设 S 为 p ( n ) p(n) p(n) 中所有小于 0 的系数的累加和的绝对值,则有:
p ( n ) = ∑ i = 0 d a i n i ≥ a d n d − S n d − 1 \begin{aligned} p(n) &= \sum_{i=0}^{d}a_in^i \\ &\ge a_dn^d - Sn^{d-1} \end{aligned} p(n)=i=0dainiadndSnd1

若要满足 a d n d − S n d − 1 > 0 a_dn^d - Sn^{d-1} > 0 adndSnd1>0,则有:

a d n > S n > S a d \begin{aligned} a_dn &> S \\ n &> \frac{S}{a_d} \end{aligned} adnn>S>adS

n 0 = ⌈ S a d ⌉ + 1 n_0 = \lceil \frac{S}{a_d}\rceil + 1 n0=adS+1,存在 c 1 ∈ ( 0 , a d − S n 0 ] c_1∈(0, a_d-\frac{S}{n_0}] c1(0,adn0S],满足对所有 n ≥ n 0 n \ge n_0 nn0都有:

0 ≤ c 1 ∗ k n k ≤ p ( n ) 0 \le c_1*kn^k \le p(n) 0c1knkp(n)

所以,若 k ≤ d k \le d kd,则 p ( n ) = Ω ( n k ) p(n) = \Omega(n^k) p(n)=Ω(nk)

k = d k = d k=d,则 p ( n ) = Θ ( n k ) p(n) = \Theta(n^k) p(n)=Θ(nk)

由上两问可知,当 k = d k = d k=d 时有 p ( n ) = Ω ( n k ) p(n) = \Omega(n^k) p(n)=Ω(nk) p ( n ) = O ( n k ) p(n) = \Omicron(n^k) p(n)=O(nk),所以 若 k = d k = d k=d,则 p ( n ) = Θ ( n k ) p(n) = \Theta(n^k) p(n)=Θ(nk)

k > d k > d k>d,则 p ( n ) = ο ( n k ) p(n) = \omicron(n^k) p(n)=ο(nk)

设 S 为 P ( n ) P(n) P(n) 中所有大于 0 的系数的累加和,则有:

p ( n ) = ∑ i = 0 d a i n i ≤ S n d \begin{aligned} p(n) &= \sum_{i=0}^{d}a_in^i \\ &\le Sn^d \end{aligned} p(n)=i=0dainiSnd

c > 0 c > 0 c>0,若要 c n k > p ( n ) cn^k > p(n) cnk>p(n),则只需 c n k > S n d cn^k > Sn^d cnk>Snd,取 n 0 = ⌈ S c ⌉ + 1 n_0 = \lceil\frac{S}{c}\rceil+1 n0=cS+1,则对于任意 n ≥ n 0 n \ge n_0 nn0 都有 c n k > p ( n ) cn^k > p(n) cnk>p(n)

k < d k < d k<d,则 p ( n ) = ω ( n k ) p(n) = \omega(n^k) p(n)=ω(nk)

设 S 为 p ( n ) p(n) p(n) 中所有小于 0 的系数的累加和的绝对值,则有:
p ( n ) = ∑ i = 0 d a i n i ≥ a d n d − S n d − 1 \begin{aligned} p(n) &= \sum_{i=0}^{d}a_in^i \\ &\ge a_dn^d - Sn^{d-1} \end{aligned} p(n)=i=0dainiadndSnd1

c > 0 c > 0 c>0,若要 p ( n ) > c n k p(n) > cn^k p(n)>cnk,则只需 a d n d − S n d − 1 > c n k a_dn^d - Sn^{d-1} > cn^k adndSnd1>cnk

n 0 = ⌈ c + S a d ⌈ + 1 n_0 = \lceil\frac{c+S}{a_d}\lceil + 1 n0=adc+S+1,则对于任意 n ≥ n 0 n \ge n_0 nn0都有 p ( n ) > c n k > 0 p(n) > cn^k > 0 p(n)>cnk>0

所以若 k < d k < d k<d,则 p ( n ) = ω ( n k ) p(n) = \omega(n^k) p(n)=ω(nk)

思考题 3-2

|A|B | O \Omicron O| ο \omicron ο| Ω \Omega Ω| ω \omega ω| Θ \Theta Θ|
|–|--|–|--|–|--|–|
| l g k n lg^kn lgkn | n ϵ n^\epsilon nϵ|N|N|Y|Y|N|
| n k n^k nk| c n c^n cn|N|N|Y|Y|N|
| n \sqrt n n | n sin ⁡ n n^{\sin n} nsinn|N|N|N|N|N|
| 2 n 2^n 2n| 2 n / 2 2^{n/2} 2n/2|Y|Y|N|N|N|
| n lg ⁡ c n^{\lg c} nlgc| c lg ⁡ n c^{\lg n} clgn|N|N|Y|Y|N|
| lg ⁡ ( n ! ) \lg (n!) lg(n!)| lg ⁡ ( n n ) \lg (n^n) lg(nn)|N|N|Y|Y|N|

思考题 3-3

已排序,若 A 在 B 的上面,则代表 A = Ω ( B ) A = \Omega(B) A=Ω(B)

思考题 3-4

f ( n ) = O ( g ( n ) ) f(n) = \Omicron(g(n)) f(n)=O(g(n)) 蕴涵 g ( n ) = O ( f ( n ) ) g(n) = \Omicron(f(n)) g(n)=O(f(n))

显然不成立,比如 f ( n ) = n 2 , g ( n ) = n 3 f(n) = n^2,g(n) = n^3 f(n)=n2g(n)=n3

f ( n ) + g ( n ) = θ ( f ( n ) + g ( n ) ) f(n) + g(n) = \theta(f(n) + g(n)) f(n)+g(n)=θ(f(n)+g(n))

显然不成立,比如 f ( n ) = 0.1 , g ( n ) = n 2 f(n) = 0.1,g(n) = n^2 f(n)=0.1g(n)=n2

f ( n ) = O ( f ( n ) 2 ) f(n) = \Omicron(f(n)^2) f(n)=O(f(n)2)

不成立,比如 f ( n ) = 1 n f(n) = \frac{1}{n} f(n)=n1

f ( n ) = O ( g ( n ) ) f(n) = \Omicron(g(n)) f(n)=O(g(n)) 蕴涵 g ( n ) = Ω ( f ( n ) ) g(n) = \Omega(f(n)) g(n)=Ω(f(n))

成立。

因为 f ( n ) = O ( g ( n ) ) f(n) = \Omicron(g(n)) f(n)=O(g(n)),所以存在正数 n 0 , c n_0, c n0,c,满足对所有 n ≥ n 0 n \ge n_0 nn0 都有 0 < f ( n ) ≤ c g ( n ) 0 < f(n) \le cg(n) 0<f(n)cg(n)

c 1 = 1 c c_1 = \frac{1}{c} c1=c1,则对所有 n ≥ n 0 n \ge n_0 nn0 都有 0 < c 1 f ( n ) ≤ g ( n ) 0 < c_1f(n) \le g(n) 0<c1f(n)g(n),即 g ( n ) = Ω ( f ( n ) ) g(n) = \Omega(f(n)) g(n)=Ω(f(n))

f ( n ) = Θ ( f ( n / 2 ) ) f(n) = \Theta(f(n/2)) f(n)=Θ(f(n/2))

不成立,比如这种奇葩函数

r a t e = { 2 n + 2 , n % 2 = 0 1 , n % 2 = 1 rate = \left\{ \begin{array}{l} 2^{n+2}&,n\%2=0 \\ 1&,n\%2=1\\ \end{array}\right. rate={2n+21,n%2=0,n%2=1

f ( n ) + ο ( f ( n ) ) = Θ ( f ( n ) ) f(n) + \omicron(f(n)) = \Theta(f(n)) f(n)+ο(f(n))=Θ(f(n))

对任意 c > 0 c > 0 c>0,存在 n 0 > 0 n_0 > 0 n0>0,对任意 n ≥ n 0 n \ge n_0 nn0,都有
0 < f ( n ) + ο ( f ( n ) ) < ( c + 1 ) f ( n ) 0 \lt f(n) + \omicron(f(n)) \lt (c+1)f(n) 0<f(n)+ο(f(n))<(c+1)f(n)

c 1 = 1 2 , c 2 = c + 1 c_1 = \frac{1}{2}, c_2 = c+1 c1=21c2=c+1,则对任意 n ≥ n 0 n \ge n_0 nn0,都有

c 1 f ( n ) ≤ f ( n ) + ο ( f ( n ) ) ≤ c 2 f ( n ) c_1f(n) \le f(n) + \omicron(f(n)) \le c_2f(n) c1f(n)f(n)+ο(f(n))c2f(n)

所以, f ( n ) + ο ( f ( n ) ) = Θ ( f ( n ) ) f(n) + \omicron(f(n)) = \Theta(f(n)) f(n)+ο(f(n))=Θ(f(n))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值