算法导论3-2
读书笔记
这一章节主要是回顾了一些关于数学的内容,下面是其中的重要内容。
多重函数
我们使用记号\(f^{(i)}(n)\)来表示函数\(f(n)\)重复\(i\)次作用于一个初值\(n\)上。形式化地,假设\(f(n)\)为实数集上的一个函数。对非负整数\(i\),我们递归地定义
\[f^{(i)}(n)= \begin{cases} n &若i=0 \\ f(f^{(i-1)}(n)) & 若i>0 \end{cases} \]上述文字表述有一些复杂,简单来说本次函数的输入是次级函数的输出,这里次级函数指的是\(f^{(i-1)}\),\(f^{(i-1)}\)的输出又取决于它的次级函数,由此递归至不可分解;
多重对数函数
\[\lg^{*}n = min\{i\ge0:\lg^{(i)}n\le1\} \]定义如上,也就是求取满足条件的\(i\)的最小值
举个例子:现在求\(\lg^*{16}\),过程如下:
一共代入了三次函数,所以\(\lg^*{16}=3\)
斐波那契数
定义如下:
\[F(n) = \begin{cases} 0 & n =0 \\ 1 & n=1 \\ F(n-1)+F(n-2) & n\ge 2 \end{cases} \]注意此处的\(n\)皆为非负整数;
尽管斐波那契数的求取过程是递归的,但是它仍然有同项公式,如下:
\[F(n) = \frac{\phi^n -{\bar{\phi}}^n}{\sqrt{5}} \]此处这两个符号的值为:
\[\begin{aligned} & \phi = \frac{1+\sqrt{5}}{2} = 1.61803 \\ & {\bar{\phi}} = \frac{1-\sqrt{5}}{2} = -0.61803 \end{aligned} \]又因为\(\frac{\bar{\phi}^n}{\sqrt{5}}<\frac{1}{\sqrt{5}}<\frac{1}{2}\),所以最终的通项表达式如下:
\[F(n) = \lfloor \frac{\phi^{n}}{\sqrt{5}} + \frac{1}{2}\rfloor \]
课后习题
3.2-1
证明: 若\(f(n)\)和\(g(n)\)是单调增的函数,则函数\(f(n)+g(n)\)和\(f(g(n))\)也是单调增,此外,若\(f(n)\)和\(g(n)\)是非负的,则\(f(n)*g(n)\)也是单调增的;
由两个单调增的函数证明三个新函数的单调性;
对于\(f(n)+g(n)\)
现有\(n_1\)和\(n_2\),且\(n_1<n_2\),因为\(f(n)\)和\(g(n)\)都是单调增函数,则有
两个不等式相加,则有\(f(n_1)+g(n_1)<f(n_2)+g(n_2)\),证毕;
对于\(f(g(n))\)
现有\(n_1\)和\(n_2\),且\(n_1<n_2\),因为\(g(n)\)是单调增函数,则有\(g(n_1)<g(n_2)\),又因为\(f(n)\)是单调增函数,所以有
证毕;
对于\(f(n)*g(n)\)
现有\(n_1\)和\(n_2\),且\(n_1<n_2\),因为\(f(n)\)和\(g(n)\)都是单调增函数,则有
又因为\(f(n)\)和\(g(n)\)都是非负函数,不存在相乘后符号变换的问题,所以可以安全的将两个不等式相乘;
证毕;
3.2-2
证明等式 (3.16)
等式3.16:
令\(M=\log_b{c}\)和\(N=\log_b{a}\),则有
将等式3.16中的\(a和c\)用上面的式子替换掉,则有
左右两边相等,证毕;
3.2-3
证明等式(3.19)。并证明\(n! = \omega(2^n)且n! = o(n^n)\)。
等式3.19:
因为 \(n!=n\ast(n-1)\dots\ast2\ast1\) ,所以
毫无疑问,存在\(c\ge1\),对于所有\(n>0\),有\(0\le{\lg{(n!})}\le{cn\lg{n}}\)成立,即\(\lg{n!}=o(n\lg{n})\);
以此同时,存在\(c\rightarrow0\),对于所有\(n>0\),有\(0\le{cn\lg{n}}\le{\lg{(n!)}}\)成立,即\(\lg{n!}=\omega{(n\lg{n})}\)
综上作述,\(\lg{n!}=\theta({n\lg{n}})\),证毕;
对于\(n! = \omega({2^n})\)
证毕;
对于 \(n!= o(n^n)\)
证毕;
3.2.4
函数\(\lceil{\lg{n}}\rceil !\)多项式有界吗?函数\(\lceil{\lg{\lg{n}}}\rceil !\)多项式有界吗?
对于多项式\(f(n)\)有界,其具体含义是
将不等式两边取对数
对于函数\(\lceil{\lg{n}}\rceil {!}\)
所以函数\(\lceil\lg{n}\rceil!\)没有界;
对于函数\(\lceil{\lg{(\lg{n})}}\rceil!\)
所以函数\(\lceil{\lg{(\lg{n})}}\rceil!\)有界;
3.2-5
如下两个函数,哪一个渐近更大些:\(\lg(\lg^{\ast}{n})\)还是\(\lg^{\ast}{\lg{n}}\)?
这道题有点类似\(f(n)=\sqrt{n}/2\)和\(f(n)=\sqrt{n/2}\),毫无疑问是\(\color{red}{后者}\)大;
3.2-6
证明:黄金分割率\(\phi\)及其共轭数\(\bar\phi\)都满足方程\(x^2=x+1\)
初中数学不再赘述;
3.2-7
用归纳法证明斐波那契通项公式:
\[F_i = \frac{\phi^i-\bar\phi^i}{\sqrt{5}} \]
首先
当\(i=1\)时,\(F_1=\frac{\sqrt{5}}{\sqrt{5}}=1\),成立;
假设当\(i=n\)时,\(F_n=\frac{\phi^n-\bar\phi^n}{\sqrt{5}}\),成立;
当\(i=n+1\)时,
证毕;
3.2-8
证明:\(k\ln{k}=\theta(n)蕴含着k=\theta({n/\ln{n}})\)。
根据条件:
\(\color{red} {不等式左边}\)
两边取对数,
即存在\(c_3\),使得\(\ln{n}\le{c_3\ln{k}}\),即\(\frac{n}{\ln{n}}\ge\frac{n}{c_3\ln{k}}\ge\frac{k}{c_2c_3}\)成立,即\(\frac{n}{\ln{n}}=\Omega(k)\);
\(\color{red} {不等式右边}\)
推导过程同不等式的右边相似,不再赘述;
结论\(\frac{n}{\ln{n}}=\theta{(k)}\),由于\(\theta\)的对称性,得到\(k=\theta(\frac{n}{\ln{n}})\);
证毕;