练习 2-2 解答

Problem 1 (教材习题 3.2-2)

证明:alogbc=clogbaa^{\log_b c} = c^{\log_b a}

Solution

证明:因为

lnalogbc=logbclna=lnclnblna=lnalnblnc=logbalnc=lnclogba\begin{aligned}
\ln{a^{\log_b c}} & = \log_b c\ln a = \frac{\ln c}{\ln b} \ln a \
& = \frac{\ln a}{\ln b} \ln c = \log_b a\ln c\
& = \ln{c^{\log_b a}}
\end{aligned}

所以 alogbc=clogbaa^{\log_b c} = c^{\log_b a}

Problem 2 (教材习题 3.2-3)

证明 log(n!)=Θ(nlogn)\log(n!) = \Theta(n\log n) ,并证明 n!=ω(2n)n! = \omega(2^n)n!=o(nn)n! = o(n^n)

Solution

证明:根据斯特林近似公式(见第2讲PPT第10页,教材3.2节),有:

log(n!)=log(2πn(ne)n(1+Θ(1n)))=12log(2πn)+nlognnloge+log(1+Θ(1n))\begin{aligned}
\log(n!) &= \log(\sqrt{2\pi n}(\frac{n}{e})^n(1 + \Theta(\frac{1}{n})))\
&= \frac12\log(2\pi n) + n\log n - n \log e + \log(1 + \Theta(\frac1n))
\end{aligned}

其中最高阶项是 nlognn \log n ,所以 log(n!)=Θ(nlogn)\log(n!) = \Theta(n\log n)

limn2nn!=limn12πn(1+Θ(1n))(2en)nlimn(2en)nlimn(12)n,n4e=0\begin{aligned}
\lim_{n \to \infty}\frac{2^n}{n!} &= \lim_{n \to \infty} \frac{1}{\sqrt{2\pi n}(1+\Theta(\frac1n))} (\frac{2e}{n})^n \le \lim_{n \to \infty} (\frac{2e}{n})^n\
&\le \lim_{n \to \infty} (\frac12)^n ,n \ge 4e \
&= 0
\end{aligned}

于是 limn2nn!=0\lim\limits_{n \to \infty}\frac{2^n}{n!} = 0 ,则 n!=ω(2n)n! = \omega(2^n)

limnnnn!=limn12πn(1+Θ(1n))enlimnencn,c is a constant=\begin{aligned}
\lim_{n \to \infty}\frac{n^n}{n!} &= \lim_{n \to \infty} \frac{1}{\sqrt{2\pi n}(1+\Theta(\frac1n))} e^n \
&\ge \lim_{n\to\infty} \frac{e^n}{c\cdot n}, c \text{ is a constant}\
&= \infty
\end{aligned}

于是 limnnnn!=\lim\limits_{n \to \infty}\frac{n^n}{n^!} = \infty ,则 n!=o(nn)n! = o(n^n)

Problem 3 (教材习题 3.2-4)

函数 logn!\lceil\log n\rceil! 多项式有界吗?函数 loglogn!\lceil\log\log n\rceil! 多项式有界吗?

Solution
  1. 函数 logn!\lceil\log n\rceil! 不是多项式有界的。

证明:反证法。假设 logn!\lceil\log n\rceil! 是多项式有界的,则存在常数 c,a,n0c, a, n_0 ,使得当 nn0n \ge n_0 时, logn!cna\lceil\log n\rceil! \le cn^a 恒成立。特别地,考虑 n=2k,kNn = 2^k, k\in\mathbb{N} 的情况,有 k!c(2a)k\lceil k\rceil! \le c(2^a)^k ,这与阶乘并不是指数有界是矛盾的。

阶乘不是指数有界的这件事情可以通过问题2中类似的方式证明: n!=ω(an)n! = \omega(a^n)

  1. 函数 loglogn!\lceil\log\log n\rceil! 是多项式有界的。

证明:不失一般性,令 n=22kn = 2^{2^k} ,则有

loglogn!=k!=i=1kii=1k22i1=2i=1k2i1=22k122k=n\lceil\log\log n\rceil! = k! = \prod_{i = 1}^{k} i \le \prod_{i = 1}^{k} 2^{2^{i - 1}} = 2^{\sum\limits_{i = 1}^{k} 2^{i - 1}} = 2^{2^k - 1} \le 2^{2^k} = n

于是, loglogn!\lceil\log\log n\rceil! 是多项式有界的。

Problem 4 (教材习题 3.2-5)

如下两个函数中,哪一个渐近更大些:log(logn)\log(\log^* n) 还是 log(logn)\log^*(\log n)

Solution

注意到 log(2n)=1+logn\log^*(2^n) = 1 + \log^* n ,则:

limnlog(logn)log(logn)=limnlog(log(2n))log(log(2n))(换元:n2n)=limnlog(logn+1)logn=limnlog(n+1)n(换元:lognn)=limn1n+1(洛必达法则)=0\begin{aligned}
\lim_{n\to\infty} \frac{\log(\log^* n)}{\log^*(\log n)} &= \lim_{n\to\infty} \frac{\log(\log^* (2^n))}{\log^*(\log (2^n))} (\text{换元:} n \to 2^n ) \
&= \lim_{n\to\infty} \frac{\log(\log^n + 1)}{\log^ n} \
&= \lim_{n\to\infty} \frac{\log(n + 1)}{n} (\text{换元:} \log^* n \to n)
&= \lim_{n\to\infty} \frac{1}{n + 1} (\text{洛必达法则}) \
&= 0
\end{aligned}

从而 log(logn)=o(log(logn))\log(\log^* n) = o(\log^*(\log n))log(logn)\log^*(\log n) 渐近更大些。

Problem 5 (教材习题 3.2-8)

证明: klnk=Θ(n)k=Θ(n/lnn)k\ln k = \Theta(n) \Rightarrow k = \Theta(n / \ln n)

Solution

证明:下面的讨论都是在 nnkk 充分大的情况下。

klnk=Θ(n)k\ln k = \Theta(n)c1nklnkc2nc_1 n \le k\ln k \le c_2 n

于是 klnkc2nklnkc1\frac{k\ln k}{c_2}\le n\le \frac{k\ln k}{c_1}

从而 lnk+ln(2)klnc2lnnlnk+ln(2)klnc1\ln k + \ln^{(2)} k - \ln c_2 \le \ln n \le \ln k + \ln^{(2)} k - \ln c_1

不难发现 lnn=Θ(lnk)\ln n = \Theta(\ln k) ,不妨设 c3lnklnnc4lnkc_3 \ln k \le \ln n \le c_4 \ln k ,于是

klnkc2c4lnknlnnklnkc1c3lnk\frac{\frac{k\ln k}{c_2}}{c_4 \ln k} \le \frac{n}{\ln n} \le \frac{\frac{k\ln k}{c_1}}{c_3 \ln k}

kc2c4n/lnnkc1c3\frac{k}{c_2c_4} \le n / \ln n \le \frac{k}{c_1c_3} ,简单变形有:

c1c3(n/lnn)kc2c4(n/lnn)c_1c_3 (n /\ln n) \le k \le c_2c_4 (n / \ln n)

因此 k=Θ(n/lnn)k = \Theta(n / \ln n)