Exercise 1
设 $n$ 是 $2$ 的幂,$n = 2^m$。递归树的高度为 $\log_2 n$(根为第 $0$ 层,叶子为第 $\log_2 n$ 层)。
在第 $k$ 层有 $2^k$ 个子问题,每个子问题的大小为 $n / 2^k$。每个子问题对应的非递归代价为 $O\bigl( \frac{n}{2^k} \log \frac{n}{2^k} \bigr)$。因此,第 $k$ 层的总代价为
$$2^k \cdot O\Bigl( \frac{n}{2^k} \log \frac{n}{2^k} \Bigr) = O\Bigl( n \log \frac{n}{2^k} \Bigr) = O\bigl( n (\log n - k) \bigr).$$将所有层的代价求和(忽略基例常数):
$$T(n) = \sum_{k=0}^{\log_2 n - 1} O\bigl( n (\log n - k) \bigr) = O\Bigl( n \sum_{k=0}^{\log_2 n - 1} (\log n - k) \Bigr).$$令 $m = \log_2 n$,则
$$\sum_{k=0}^{m-1} (m - k) = \sum_{j=1}^{m} j = \frac{m(m+1)}{2} = O(m^2) = O\bigl((\log n)^2\bigr).$$因此
$$T(n) = O\bigl( n (\log n)^2 \bigr).$$Exercise 2
(1)
(2)
Exercise 3
Exercise 4
(a)
$\omega = 3$
$$ 3^1=3,\; 3^2=2,\; 3^3=6,\; 3^4=4,\; 3^5=5,\; 3^6=1 \pmod{7}, $$求和:
$$ \omega + \omega^2 + \omega^3 + \omega^4 + \omega^5 + \omega^6 = 3+2+6+4+5+1 = 21 \equiv 0 \pmod{7}. $$(b)
$y_j = \sum_{k=0}^{5} x_k \omega^{jk} \pmod{7}$
$$ \begin{aligned} y_0 &= 0+1+1+1+5+2 = 10 \equiv 3,\\ y_1 &= 0\cdot1 +1\cdot3 +1\cdot2 +1\cdot6 +5\cdot4 +2\cdot5 = 3+2+6+20+10 = 41 \equiv 6,\\ y_2 &= 0\cdot1 +1\cdot2 +1\cdot4 +1\cdot1 +5\cdot2 +2\cdot4 = 2+4+1+10+8 = 25 \equiv 4,\\ y_3 &= 0\cdot1 +1\cdot6 +1\cdot1 +1\cdot6 +5\cdot1 +2\cdot6 = 6+1+6+5+12 = 30 \equiv 2,\\ y_4 &= 0\cdot1 +1\cdot4 +1\cdot2 +1\cdot1 +5\cdot4 +2\cdot2 = 4+2+1+20+4 = 31 \equiv 3,\\ y_5 &= 0\cdot1 +1\cdot5 +1\cdot4 +1\cdot6 +5\cdot2 +2\cdot3 = 5+4+6+10+6 = 31 \equiv 3. \end{aligned} $$故变换结果为 $(3,6,4,2,3,3)$
(c)
逆傅里叶变换矩阵为 $\frac{1}{n} M_n(\omega^{-1})$,其中 $n=6$,模 $7$ 下 $6^{-1}=6$(因为 $6\times6=36\equiv1$),且 $\omega^{-1}=3^{-1}=5$。因此逆矩阵为
$$ M_6^{-1} = 6 \cdot M_6(5), $$即 $(M_6^{-1})_{jk} = 6 \cdot 5^{jk} \pmod{7}$。
验证:对任意 $\mathbf{x}$,有
其中 $y_j = \sum_{k'} x_{k'} \omega^{jk'}$。代入得
$$ \frac{1}{6}\sum_j \sum_{k'} x_{k'} \omega^{j(k'-k)} = \frac{1}{6}\sum_{k'} x_{k'} \sum_{j=0}^{5} \omega^{j(k'-k)} = \frac{1}{6}\cdot 6 \cdot x_k = x_k, $$因为 $\sum_{j=0}^{5} \omega^{jm} = 0$ 当 $m\not\equiv 0\pmod{6}$,且等于 $6$ 当 $m\equiv0$。模 $7$ 下 $6/6=1$。
(d)
将系数按低次到高次(长度 $n=6$)写为:
$$ \mathbf{p} = (1, 1, 1, 0, 0, 0), \qquad \mathbf{q} = (6, 2, 0, 1, 0, 0). $$1. 计算 DFT:$\mathbf{P} = \text{DFT}(\mathbf{p})$,$\mathbf{Q} = \text{DFT}(\mathbf{q})$
DFT 公式:
$$ P_j = \sum_{k=0}^{5} p_k \cdot \omega^{j k} \pmod{7}, \quad j = 0,\dots,5, $$其中 $\omega = 3$。
先计算 $\omega$ 的各次幂(模 7):
计算 $P_j$:
- $j=0$:$\omega^0=1$,$P_0 = 1+1+1 = 3$。
- $j=1$:乘数序列 $1,3,2,6,4,5$,$P_1 = 1\cdot1 + 1\cdot3 + 1\cdot2 = 6$。
- $j=2$:乘数序列 $1,2,4,1,2,4$,$P_2 = 1 + 2 + 4 = 7 \equiv 0$。
- $j=3$:乘数序列 $1,6,1,6,1,6$,$P_3 = 1 + 6 + 1 = 8 \equiv 1$。
- $j=4$:乘数序列 $1,4,2,1,4,2$,$P_4 = 1 + 4 + 2 = 7 \equiv 0$。
- $j=5$:乘数序列 $1,5,4,6,2,3$,$P_5 = 1 + 5 + 4 = 10 \equiv 3$。
故
$$ \mathbf{P} = (3,\; 6,\; 0,\; 1,\; 0,\; 3). $$计算 $Q_j$:
- $j=0$:$Q_0 = 6+2+0+1 = 9 \equiv 2$。
- $j=1$:$6\cdot1 + 2\cdot3 + 0\cdot2 + 1\cdot6 = 6+6+6=18 \equiv 4$。
- $j=2$:$6\cdot1 + 2\cdot2 + 0\cdot4 + 1\cdot1 = 6+4+1=11 \equiv 4$。
- $j=3$:$6\cdot1 + 2\cdot6 + 0\cdot1 + 1\cdot6 = 6+12+6=24 \equiv 3$。
- $j=4$:$6\cdot1 + 2\cdot4 + 0\cdot2 + 1\cdot1 = 6+8+1=15 \equiv 1$。
- $j=5$:$6\cdot1 + 2\cdot5 + 0\cdot4 + 1\cdot6 = 6+10+6=22 \equiv 1$。
故
$$ \mathbf{Q} = (2,\; 4,\; 4,\; 3,\; 1,\; 1). $$2. 逐点相乘:$R_j = P_j \cdot Q_j \pmod{7}$
$$ \begin{aligned} R_0 &= 3 \times 2 = 6, \\ R_1 &= 6 \times 4 = 24 \equiv 3, \\ R_2 &= 0 \times 4 = 0, \\ R_3 &= 1 \times 3 = 3, \\ R_4 &= 0 \times 1 = 0, \\ R_5 &= 3 \times 1 = 3. \end{aligned} $$所以
$$ \mathbf{R} = (6,\; 3,\; 0,\; 3,\; 0,\; 3). $$3. 逆 DFT:$r_k = \frac{1}{6} \sum_{j=0}^{5} R_j \cdot \omega^{-j k} \pmod{7}$
模 7 下,$6^{-1} = 6$(因为 $6\times6=36\equiv1$),且 $\omega^{-1}=3^{-1}=5$。
逆变换公式:
对每个 $k$,计算 $S_k = \sum_{j=0}^{5} R_j \cdot (5^k)^j$,然后 $r_k = 6 S_k \bmod 7$。
- $k=0$:$5^0=1$,$S_0 = 6+3+0+3+0+3 = 15 \equiv 1$,$r_0 = 6\times1 = 6$。
- $k=1$:$5^1=5$,
$j=0:6\times1=6$,$j=1:3\times5=15\equiv1$,$j=2:0$,$j=3:3\times5^3=3\times6=18\equiv4$,$j=4:0$,$j=5:3\times5^5=3\times3=9\equiv2$,
和 $6+1+4+2=13\equiv6$,$r_1=6\times6=36\equiv1$。
- $k=2$:$5^2=4$,$4$ 的幂次:$1,4,2,1,4,2$。
$j=0:6$,$j=1:3\times4=12\equiv5$,$j=2:0$,$j=3:3\times1=3$,$j=4:0$,$j=5:3\times2=6$,
和 $6+5+3+6=20\equiv6$,$r_2=6\times6=36\equiv1$。
- $k=3$:$5^3=6$,$6$ 的幂次:$1,6,1,6,1,6$。
$j=0:6$,$j=1:3\times6=18\equiv4$,$j=2:0$,$j=3:3\times6=18\equiv4$,$j=4:0$,$j=5:3\times6=18\equiv4$,
和 $6+4+4+4=18\equiv4$,$r_3=6\times4=24\equiv3$。
- $k=4$:$5^4=2$,$2$ 的幂次:$1,2,4,1,2,4$。
$j=0:6$,$j=1:3\times2=6$,$j=2:0$,$j=3:3\times1=3$,$j=4:0$,$j=5:3\times4=12\equiv5$,
和 $6+6+3+5=20\equiv6$,$r_4=6\times6=36\equiv1$。
- $k=5$:$5^5=3$,$3$ 的幂次:$1,3,2,6,4,5$。
$j=0:6$,$j=1:3\times3=9\equiv2$,$j=2:0$,$j=3:3\times6=18\equiv4$,$j=4:0$,$j=5:3\times5=15\equiv1$,
和 $6+2+4+1=13\equiv6$,$r_5=6\times6=36\equiv1$。
因此乘积系数(低次到高次)为:
$$ (r_0, r_1, r_2, r_3, r_4, r_5) = (6, 1, 1, 3, 1, 1). $$即多项式
$$ R(x) = x^5 + x^4 + 3x^3 + x^2 + x + 6 \equiv x^5 + x^4 + 3x^3 + x^2 + x - 1 \pmod{7}, $$与直接卷积结果一致。
Exercise 5
建模为决策树。每个内部节点对应一次形如“$A[i] \leq z$?”的比较。比较的结果为“是”或“否”,分别导向左右子树。每个叶子节点对应算法输出一个结果,即 $x$ 在数组中的位置(或输出“不存在”)。
$x$ 可以取 $n+1$ 种可能:$x < A[1]$,$x = A[1]$,$x = A[2]$,…,$x = A[n]$,或 $x > A[n]$。因此,决策树必须至少有 $n+1$ 个不同的叶子。
决策树是一棵二叉树,深度为 $d$ 的二叉树最多有 $2^d$ 个叶子。因此,为了区分 $n+1$ 种结果,必须有
由于每一步比较对应树中的一层,最坏情况下的比较次数至少为 $d$,故任何确定性算法在最坏情况下至少需要 $\log_2(n+1) = \Omega(\log n)$ 次比较。