《算法导论》部分习题解答

djwj233

2021-11-06 11:46:21

Personal

做着玩玩,就当颓废了( 以下的解答是自己写的,就当作业本了,不一定对。[这里](https://walkccc.me/CLRS/)有除了附录以外的全部答案。 ## 附录 A 求和 先补补数学![](https://啧.tk/dk) ### A. 1 1. $$ \sum\limits_{k=1}^n (2k-1)=2\sum\limits_{k=1}^n k -n=n(n+1)-n=n^2 $$ 2. $$ \sum_{k=1}^n \dfrac{1}{2k-1}=\sum_{k=1}^n(\dfrac{1}{2k}-\dfrac{1}{2k(2k-1)})=\frac{1}{2}\ln n+\mathcal O(1) -\sum_{k=1}^n (\dfrac{1}{2k-1}-\dfrac{1}{2k}) $$ 注意到后面那个和式显然大于 $0$,而: $$ 0<\sum_{k=1}^n (\dfrac{1}{2k-1}-\dfrac{1}{2k})\le\sum_{k=2}^{2n}(\dfrac{1}{k-1}-\dfrac{1}{k})=1-\dfrac{1}{2n}=\mathcal O(1) $$ 故 $\sum\limits_{k=1}^n (\dfrac{1}{2k-1}-\dfrac{1}{2k})=\mathcal O(1)$。由 $\dfrac{1}{2}\ln n=\ln \sqrt{n}$, $$ \sum_{k=1}^n \dfrac{1}{2k-1}=\ln \sqrt{n}+\mathcal O(1) $$ 3. (以下均有 $|x|<1$)由 $$ \sum_{k=0}^{\infty}kx^k=\dfrac{x}{(1-x)^2} $$ 两边分别求导可得 $$ \sum_{k=0}^{\infty}k^2x^{k-1}=\dfrac{1+x}{(1-x)^3} $$ 那么 $$ \sum_{k=0}^{\infty}k^2x^k=\dfrac{x(1+x)}{(1-x)^3} $$ 4. $$ \sum_{k=0}^{\infty}\dfrac{k-1}{2^k}=\sum_{k=0}^{\infty}k(\dfrac{1}{2})^k-\sum_{k=0}^{\infty}\dfrac{1}{2^k}=\dfrac{\frac{1}{2}}{(1-\frac{1}{2})^2}-2=0 $$ 5. $|x|<1$ 时, $$ \sum_{k=1}^{\infty}(2k+1)x^{2k}=\sum_{k=1}^{\infty}2kx^{2k}+\sum_{k=1}^{\infty}x^{2k} $$ 令 $x^2=t$,易见 $|t|<1$,有 $$ \text{原式}=2\sum_{k=1}^\infty kt^k+\sum_{k=1}^\infty t^k=\dfrac{2t}{(1-t)^2}+\dfrac{1}{1-t}=\dfrac{t+1}{(t-1)^2}=\dfrac{x^2+1}{x^4-2x^2+1} $$ 6. 我们知道 $$ \mathcal O(f(n))+\mathcal O(g(n))=\mathcal O(f(n)+g(n)) $$ 那么原式显然。(也可以用定义代入证明,不过细节多得要死) 7. 设 $$ \text{原式}=\prod_{k=1}^n2\cdot 4^k=\prod_{k=1}^n2^{2k+1}=S $$ 则 $$ \log_2 S=\sum_{k=1}^n 2k+1=n^2+2n $$ 故 $\text{原式}=2^{n^2+2n}$。 8. $$ \prod_{k=2}^n(1-\dfrac{1}{k^2})=\prod_{k=2}^n\dfrac{k^2-1}{k^2}=\prod_{k=2}^n\dfrac{k-1}{k}\times\dfrac{k+1}{k}=\dfrac{1}{2}\times\dfrac{n+1}{n}=\dfrac{n+1}{2n} $$ ### A. 2 1. $$ \sum_{k=1}^n\dfrac{1}{k^2}=1+\sum_{k=2}^n\dfrac{1}{k^2}\le1+\sum_{k=2}^n\dfrac{1}{k(k-1)}=1+\sum_{k=2}^n(\dfrac{1}{k-1}-\dfrac{1}{k})=1+1-\dfrac{1}{n}\le 2 $$ 故 $\sum\limits_{k=1}^n\dfrac{1}{k^2}=\mathcal O(1)$。 2. $$ \sum_{k=0}^{\left\lfloor\lg n\right\rfloor} \left\lceil \dfrac{n}{2^k} \right\rceil \le \sum_{k=0}^{\left\lfloor\lg n\right\rfloor} (\left\lfloor \dfrac{n}{2^k} \right\rfloor+1)\le n\sum_{k=0}^{\left\lfloor\lg n\right\rfloor} \dfrac{1}{2^k} + \left\lfloor\lg n\right\rfloor\le n\sum_{k=0}^{\infty} \dfrac{1}{2^k} + \lg n=2n+\lg n=\mathcal O(n) $$ 3. 我们参考书中对 $H_n$ 上界的证明,把下标从 $1$ 到 $n$ 划分为 $1+\left\lfloor\log_2 n\right\rfloor$ 段,第 $i$ 段的范围为 $[2^i,2^{i+1})$(其中 $0\le i\le \left\lfloor\log_2 n\right\rfloor$)。那么: $$ H_n=\sum_{k=1}^n\dfrac{1}{k}=\sum_{i=0}^{\left\lfloor\log_2 n\right\rfloor}\sum_{k=1}^{2^i}\dfrac{1}{2^i-k}\ge\sum_{i=0}^{\left\lfloor\log_2 n\right\rfloor}\sum_{k=1}^{2^i}\dfrac{1}{2^i}=\sum_{i=0}^{\left\lfloor\log_2 n\right\rfloor}1=\left\lfloor\log_2 n\right\rfloor $$ 故 $H_n=\Omega(\log n)$。 4. 易证 $y=x^3$ 在 $\mathbb R$ 上单调递增,有: $$ \sum_{k=1}^n k^3\le\int_{1}^{n+1} x^3\text{d}x=\left.\dfrac{1}{4}x^4\right|_1^{n+1}=\dfrac{(n+1)^4-1}{4} $$ 另一方面, $$ \sum_{k=1}^n k^3\ge\int_{0}^{n} x^3dx=\dfrac{n^4}{4} $$ 故 $\dfrac{n^4}{4}\le\sum_{k=1}^n k^3\le\dfrac{(n+1)^4-1}{4}$。 5. 因为如果直接积分近似,会得到: $$ \sum_{k=1}^n \dfrac{1}{k}\le \int_{0}^{n}\dfrac{\text{d}x}{x} $$ 然后我们知道: $$ \lim_{x\to 0} \int_{x}^n\dfrac{\text{d}x}{x}=\infty $$ 因此直接积分啥都得不到。 ### 思考题 **A - 1.**(确定和的界) ~~这三个结论还是十分常用的~~ > 以下 $r,s\ge 0$,均为常数。 - **a.** $\sum_{k=1}^n k^r=\Theta(n^{r+1})$. 对上界,我们有: $$ \sum_{k=1}^n k^r\le \sum_{k=1}^n n^r=n^{r+1} $$ 对下界,我们有: $$ \sum_{k=1}^n k^r=\sum_{k=1}^{\left\lfloor\frac{n}{2}\right\rfloor} k^r+\sum_{k=\left\lfloor\frac{n}{2}\right\rfloor+1}^n k^r\ge 0+\sum_{k=\left\lfloor\frac{n}{2}\right\rfloor+1}^n (\dfrac{n}{2})^r=\dfrac{n^{r+1}}{2^{r+1}} $$ 故有 $\sum_{k=1}^n k^r=\Theta(n^{r+1})$ 成立。 - **b.** $\sum_{k=1}^n \log^s k=\Theta(n\log^s n)$. 对上界,我们有: $$ \sum_{k=1}^n \log^s k\le \sum_{k=1}^n \log^s n=n\log^s n $$ 对下界,我们有: $$ \sum_{k=1}^n \log^s k=\sum_{k=1}^{\left\lfloor\frac{n}{2}\right\rfloor} \log^s k+\sum_{k=\left\lfloor\frac{n}{2}\right\rfloor+1}^n \log^s k\ge 0+\sum_{k=\left\lfloor\frac{n}{2}\right\rfloor+1}^n \log^s \dfrac{n}{2}=\Omega(n\log^s n) $$ 故有 $\sum_{k=1}^n \log^s k=\Theta(n\log^s n)$ 成立。 - **c.** $\sum_{k=1}^n k^r\log^s k=\Theta(n^{r+1}\log^s n)$ 对上界,我们有: $$ \sum_{k=1}^n k^r\log^s k\le \sum_{k=1}^n n^r\log^s n=n^{r+1}\log^s n $$ 对下界,我们有: $$ \sum_{k=1}^n k^r\log^s k=\sum_{k=1}^{\left\lfloor\frac{n}{2}\right\rfloor} k^r\log^s k+\sum_{k=\left\lfloor\frac{n}{2}\right\rfloor+1}^n k^r\log^s k\ge 0+\sum_{k=\left\lfloor\frac{n}{2}\right\rfloor+1}^n (\dfrac{n}{2})^r\log^s \dfrac{n}{2}=\dfrac{n^{r+1}}{2^{r+1}}\log^s\dfrac{n}{2}=\Omega(n^{r+1}\log^s n) $$ 故有 $\sum_{k=1}^n k^r\log^s k=\Theta(n^{r+1}\log^s n)$ 成立。 ## 附录 B 集合等离散数学内容 ### B.1 1. 题不难,懒得画图了。 2. 考虑数学归纳法。对第一个命题,$n=2$ 时,直接应用德 · 摩根定律。现在假设 $n=k$ 时,有: $$ \overline{\bigcap_{i=1}^k A_i}=\bigcup_{i=1}^k \overline{A_i} $$ 成立,那么 $n=k+1$ 时: $$ \overline{\bigcap_{i=1}^k A_i}=\overline{\bigcup_{i=1}^k \overline{A_i}\cap A_{k+1}}=\bigcup_{i=1}^k \overline{A_i}\cup \overline{A_{k+1}}=\bigcup_{i=1}^{k+1} \overline{A_i} $$ 第二个命题同理。 3. 考虑数学归纳法。$n=2$ 时,直接应用等式 (B.3)。现在假设 $n=k$ 时,有: $$ \left|\bigcup_{i=1}^k A_i\right| = \sum_{i=1}^k \sum_{(p_1,p_2,\cdots,p_i)}\left|\bigcap_{t=1}^i A_{p_t}\right| $$ 成立(其中 $(p_1,p_2,\cdots,p_i)$ 表示无序列表,设 $p_1\le p_2\le \cdots \le p_k$),那么 $n=k+1$ 时: $$ \left|\bigcup_{i=1}^{k+1} A_i\right| = \left(\sum_{i=1}^k \sum_{(p_1,p_2,\cdots,p_i)}\left|\bigcap_{t=1}^i A_{p_t}\right|\right) + \left|A_{k+1}\right| + \left|\left(\bigcup_{i=1}^k A_i\right)\bigcap A_{k+1}\right| $$ 还是用归纳法推广一下分配律,就可以把后面那坨东西化开: $$ \left|A_{k+1}\right| + \left|\left(\bigcup_{i=1}^k A_i\right)\bigcap A_{k+1}\right| = \left|A_{k+1}\right|+ \left|\bigcup_{i=1}^k A_{i}\cap A_{k+1}\right| =\sum_{i=0}^k \sum_{(p_1,p_2,\cdots,p_i)}\left|\left(\bigcap_{t=1}^i A_{p_t}\right)\bigcap A_{k+1}\right| = \sum_{i=0}^k \sum_{(p_1,p_2,\cdots,p_i,p_{k+1})}\left|\left(\bigcap_{t=1}^i A_{p_t}\right)\bigcap A_{k+1}\right| $$ 然后把这个东西合并一下能得到: $$ \left|\bigcup_{i=1}^{k+1} A_i\right| = \sum_{i=1}^{k+1} \sum_{(p_1,p_2,\cdots,p_i)}\left|\bigcap_{t=1}^i A_{p_t}\right| $$ 这就证完了。 4. 我们写出奇自然数集合的形式 $\mathrm{Odd}=\{2k+1 | k\in \mathbb N\}$,易证每个 $k$ 恰好对应一个元素,因此它与自然数集合一一对应。 5. 考虑有集合 $S^\prime = S\cup\{x\}(x\notin S)$。我们考虑是否选择 $x$,有: $$ 2^{S^\prime} =2^S\cup\{c\cup x|c\in 2^S\} $$ 然后可以归纳证明方案数是 $2^{|S|}$。 ### B.2 这部分看着脑子已经不太够了![](https://啧.tk/ll) 1. - 自反性:$\forall A\sube \mathbb Z$,有 $A\sube A$,这由定义显然。 - 反对称性:$\forall A,B\sube \mathbb Z$,有 $A\sube B,B\sube A\Rightarrow A=B$,这由定义显然。 - 传递性:$\forall A,B,C\sube \mathbb Z$,有 $A\sube B,B\sube C\Rightarrow A\sube C$,这由定义显然。 因此 $\sube$ 是一个偏序关系。 - 但是取 $A=\{1\}$,$B=\{2\}$,$A\sube B$ 和 $B\sube A$ 均不成立。 所以 $\sube$ 不是全序关系。 2. - 自反性:$\forall x\in \mathbb N^+$,$x\equiv x\pmod{n}$,显然。 - 对称性:$\forall x,y\in \mathbb N^+$,$x\equiv y\pmod{n}\Rightarrow y\equiv x\pmod{n}$。 证明:取 $x-y=qn$,则 $y-x=-qn$。 - 传递性:$\forall x,y,z\in \mathbb N^+$,$x\equiv y\pmod{n}, y\equiv z\pmod{n}\Rightarrow x\equiv z\pmod{n}$。 证明:取 $x-y=pn,y-z=qn$,则 $x-z=(p+q)n$。 所以模 $n$ 同余构成了一个等价类。 划分为模 $n$ 意义下的 $n$ 个完全剩余系。 3. **a.** 考虑关系 $R=\{(a,b):a,b\in \mathbb N^+,a\&b\ne 0\}$( $\&$ 表示按位与)。 **b.** 考虑在 $\mathbb R^2$ 上的 $\geq$。 **c.** 考虑关系 $R=\varnothing$。 4. 考虑反证法。设 $S$ 被 $R$ 划分出的等价类中有一个不是单元集,设为 $[x_1]=\{x_1, x_2,\cdots x_n\}$。 取 $x_1,x_2$,由等价类的性质 $x_1\ R\ x_2$ 且 $x_2\ R\ x_1$,那么 $x_1=x_2$,矛盾。故所有等价类均为单元集。 5. 错误。自反性要求对于所有的 $a$ 均有 $a\ R\ a$ 成立,这个证明只是证明了对 $R$ 的集合中出现过的 $a$ 均有 $a\ R\ a$ 成立。 比如举出定义在 $\mathbb Z^2$ 上的关系 $R = \varnothing$ 就可以反驳他的证明。 ### B.3 1. 设 $f$ 的值域为 $C$,显然 $|A|\ge |C|$。 **a. ** 若 $f$ 是单射,则必有 $|A|=|C|$。由 $C\sube B$ 可知 $|A|=|C|\le |B|$。 **b.** 若 $f$ 是满射,则必有 $|B|=|C|$,那么 $|A|\ge|B|$。 2. 不是;是。 3. 若有二元关系 $R=\{(a_1,b_1), (a_2, b_2),\cdots\}$,我们定义其**逆**为 $R^\prime=\{(b_1,a_1),(b_2,a_2),\cdots\}$。 (或者说,设 $a\ R^\prime\ b$ 当且仅当 $b\ R\ a$) 4. 对于两个自然数 $x,y$,设 $x$ 的十进制表示长度为 $|x|$,$y$ 同理,取 $n=\max(|x|,|y|)$。 在 $x,y$ 前用前导 $0$ 补成 $n$ 位,设 $x=\overline{a_1a_2\cdots a_n}$,$y=\overline{b_1b_2\cdots b_n}$。 我们定义 $g(x,y)=\overline{a_1b_1a_2b_2\cdots a_nb_n}$,容易发现 $g:\mathbb N\times \mathbb N\to \mathbb N$ 构成双射。 定义 $s(x)=\begin{cases}0 & x \ge 0\\ -1 & x<0\end{cases}$, $\text{sgn}(x)=\begin{cases}1 & x > 0\\ 0 & x =0\\-1 & x<0\end{cases}$。 那么 $f_1(x,y)=\text{sgn}(x)(2\times g(|x|,|y|)+s(y))$ 就是一个 $\mathbb Z\times\mathbb Z\to \mathbb Z$ 的双射,求其逆记为 $f$,这就是一个合法的答案。 ### B.4 1. 考虑每条边会对总度数产生 $2$ 的贡献,原式显然。 2. 1. 在这个路径中不断地删去环就可以得到一条简单路径。 2. 在这个环中取 $v_x=v_y,x\le y$(其中 $x\ne 1$ 或 $y\ne n$),截出子串 $\{v_x,v_{x+1},\cdots v_y\}$。 重复以上操作至无法操作即可。 (这两个证明的详细过程懒得写了) 3. 考虑数学归纳法。 - $|V|=1$ 时,显然有 $|E|\ge 0=|V|-1$。 - 设 $|V|=n\ge 1$ 时成立。我们取任意一张 $|V|=n+1$ 的图,找出一个 $x$ 使 $\deg(x)=1$。 由于连通且 $n+1>1$,所以 $\forall x,\deg(x)\ge 1$。如果找不到则说明 $\sum_{i=1}^n \deg(x)\ge 2n$,则 $|E|\ge |V|-1$ 已经成立。 否则我们删去这条边和点 $x$,那么剩下的 $n$ 个点和所有边构成的图依然连通(这可以通过反证说明),至少含有 $n-1$ 条边。 算上删去的这一条就是至少有 $n$ 条边,依然满足。 综上,命题成立。 4. 自反性:考虑路径 $\left<x\right>$,所以每个点都能到达自己; 对称性:将路径反转,我们发现 $x$ 能到达 $y$ 可推出 $y$ 能到达 $x$; 传递性:将两条路径接起来。 因此"从......可达"是等价关系。 自反性和传递性。 5. 纱比题,懒得写了。 6. 就是那个提示里的内容 (?) 不知道这题想干嘛。 ### B.5 1. 为什么这里有那么多煞笔题??? 2. 由于 $v_0$ 到每个点都有唯一路径,因此没有一个除 $v_0$ 外的点可以到达 $v_0$,否则就会存在环。 对于任意结点对 $(x,y)$,找出 $v_0$ 到 $x$ 的路径和 $v_0$ 到 $y$ 的路径,把它们去掉一个最长公共前缀然后接在一起即可找到 $G$ 的无向版本的一条简单路径。 因此 $G$ 的无向版本是一张连通图。而若 $G$ 的无向版本中存在环,那么我们把这个环在 $G$ 中找出来。 如果每个点的入度都为 $1$,那么就构成了 $G$ 中的一个环,矛盾。因此至少有一个点入度不为 $1$。 又因为环中入度等于结点数,因此有一个点入度为 $0$ 就意味着有至少一个点入度大于 $1$。因此至少有一个点入度大于 $1$。 任取这个点的两条入边 $(u_1,v)$ 和 $(u_2,v)$,那么 $v_0$ 到 $v$ 就至少有 $v_0\rightsquigarrow u_1\to v$ 和 $v_0\rightsquigarrow u_2\to v$,矛盾。 故 $G$ 是一张无环的无向连通图,即一棵树。