《算法导论》第三版第4章 分治策略 练习思考题 个人答案
4.1 最大子数组问题
4.1-1
解:最大值。
4.1-2
解:
VIOLENTLY-FIND-MAXIMUM-SUBARRAY(A)
max_sum = -∞
left = 0
right = 0
for i = 1 to A.lengthsum = A[i]if sum > max_summax_sum = sumleft = iright = ifor j = i + 1 to A.lengthsum = sum + A[j]if sum > max_summax_sum = sumright = j
return (max_sum, legt, right)
4.1-3
解:依不同计算机而不同。。。交叉点不会改变。
4.1-4
思路:原算法末尾加判断max_sum是否为负,或者开始时判断数组是否全部为负。
4.1-5
解:
ITERATIVE-FIND-MAX-SUBARRAY(A)
max_sum = -∞
i = 1
left = 0
right = 0
while i <= A.lengthsum = 0for j = i downto 1sum = sum + A[j]if sum > max_summax_sum = sumright = ileft = ji = i + 1
return (max_sum, left, right)
4.2 矩阵乘法的Strassen算法
4.2-1
解:过程很长,最后结果是
18 14
62 66
4.2-2
解:
SQUARE-MATRIX-MULTIPLY-STRASSEN(A, B)
n = A.rows
let C be a new n*n matrix
if n == 1C[1][1] = A[1][1] * B[1][1]
else partition A, B and C as in equations (4.9)let S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, P1, P2, P3, P4, P5, P6, P7 be new (n/2)*(n/2) matrixesS1 = B12 - B22S2 = A11 + A12S3 = A21 + A22S4 = B21 - B11S5 = A11 + A22S6 = B11 + B22S7 = A12 - A22S8 = B21 + B22S9 = A11 - A21S10 = B11 + B12P1 = SQUARE-MATRIX-MULTIPLY-STRASSEN(A11, S1)P2 = SQUARE-MATRIX-MULTIPLY-STRASSEN(S2, B22)P3 = SQUARE-MATRIX-MULTIPLY-STRASSEN(S3, B11)P4 = SQUARE-MATRIX-MULTIPLY-STRASSEN(A22, S4)P5 = SQUARE-MATRIX-MULTIPLY-STRASSEN(S5, S6)P6 = SQUARE-MATRIX-MULTIPLY-STRASSEN(S7, S8)P7 = SQUARE-MATRIX-MULTIPLY-STRASSEN(S9, S10)C11 = P5 + P4 - P2 + P6C12 = P1 + P2C21 = P3 + P4C22 = P5 + P1 - P3 - P7
return C
4.2-3
思路:可将矩阵扩展为规模为2的幂的矩阵,并在空白处填0;因为与0相乘的结果仍是0,所以扩充元素的计算可以省略。
4.2-4
解:k<3lg7,T(n)=kT(n/3)+Θ(n)
4.2-5
解:
log68132464≈2.795128
log70143640≈2.795122
log72155424≈2.795147
最快的是70×70,且优于Strassen。
4.2-6
解:前者会产生一个kn×kn矩阵,需要k2次相乘;后者会产生n×n矩阵,需要k次相乘和k-1次相加。
4.2-7
解:
COMPLEX-MULTIPLICATION(a, b, c, d)
A = (a + b) * (c + d)
B = a * c
C = b * d
real = B - C
imaginary = A - B - C
return (real, imaginary)
4.3 用代入法求解递归式
4.3-1
证明:
T(n)≤c(n−1)2+n=cn2−2cn+c+nT(n)≤c(n−1)2+n=cn2−2cn+c+nT(n)≤c(n−1)^2+n=cn^2−2cn+c+nT(n)≤c(n−1)^2+n=cn^2−2cn+c+nT(n)≤c(n−1)2+n=cn2−2cn+c+nT(n)≤c(n−1)2+n=cn2−2cn+c+n
令c=1c=1c=1 ,有n≥1n≥1n≥1时
n2−2n+1+n=n2−n+1≤n2n^2−2n+1+n=n^2−n+1≤n^2n2−2n+1+n=n2−n+1≤n2
4.3-2
证明:
T(n)≤clg(⌈n/2⌉−2)+1≤clg(n/2+1−2)+1≤clg((n−2)/2)+1≤clg(n−2)−clg2+1≤clg(n−2)≤clgnT(n) \le c\lg(\lceil n/2 \rceil - 2) + 1 \le c\lg(n/2 + 1 - 2) + 1 \le c\lg((n - 2)/2) + 1 \le c\lg(n - 2) - c\lg2 + 1 \le c\lg(n - 2) \le c\lg nT(n)≤clg(⌈n/2⌉−2)+1≤clg(n/2+1−2)+1≤clg((n−2)/2)+1≤clg(n−2)−clg2+1≤clg(n−2)≤clgn
4.3-3
证明:
T(n)≥2c(⌊n/2⌋+2)(lg(⌊n/2⌋+2)+n≥2c(n/2−1+2)(lg(n/2−1+2)+n≥2cn+22lgn+22+n≥c(n+2)lg(n+2)−c(n+2)lg2+n≥c(n+2)lg(n+2)+(1−c)n−2cfor n≥2c/(1−c),0<c<1≥c(n+2)lg(n+2)≥cnlgn\begin{aligned} T(n) & \ge 2c(\lfloor n/2 \rfloor + 2)(\lg(\lfloor n/2 \rfloor + 2) + n \\ & \ge 2c(n/2 - 1 + 2)(\lg(n/2 - 1 + 2) + n \\ & \ge 2c\frac{n+2}{2}\lg\frac{n+2}{2} + n \\ & \ge c(n+2)\lg(n+2) - c(n+2)\lg2 + n \\ & \ge c(n+2)\lg(n+2) + (1 - c)n - 2c \qquad \text{for } n \ge 2c/(1-c), 0 < c < 1 \\ & \ge c(n+2)\lg(n+2) \\ & \ge cn\lg n \end{aligned}T(n)≥2c(⌊n/2⌋+2)(lg(⌊n/2⌋+2)+n≥2c(n/2−1+2)(lg(n/2−1+2)+n≥2c2n+2lg2n+2+n≥c(n+2)lg(n+2)−c(n+2)lg2+n≥c(n+2)lg(n+2)+(1−c)n−2cfor n≥2c/(1−c),0<c<1≥c(n+2)lg(n+2)≥cnlgn
4.3-4
证明:
T(n)≤2(c⌊n/2⌋lg⌊n/2⌋+⌊n/2⌋)+n≤2c(n/2)lg(n/2)+2(n/2)+n≤cnlg(n/2)+2n≤cnlg(n/2)+2n≤cnlgn−cnlg2+2n≤cnlgn+(2−c)n(c≥1)≤cnlgn+n\begin{aligned} T(n) & \le 2(c\lfloor n/2 \rfloor\lg{\lfloor n/2 \rfloor} + \lfloor n/2 \rfloor) + n \\ & \le 2c(n/2)\lg(n/2) + 2(n/2) + n \\ & \le cn\lg(n/2) + 2n \\ & \le cn\lg(n/2) + 2n \\ & \le cn\lg{n} - cn\lg{2} + 2n \\ & \le cn\lg{n} + (2 - c)n \qquad (c \ge 1)\\ & \le cn\lg{n} + n \end{aligned}T(n)≤2(c⌊n/2⌋lg⌊n/2⌋+⌊n/2⌋)+n≤2c(n/2)lg(n/2)+2(n/2)+n≤cnlg(n/2)+2n≤cnlg(n/2)+2n≤cnlgn−cnlg2+2n≤cnlgn+(2−c)n(c≥1)≤cnlgn+n
T(1)=1≤cnlgn+n=0+1=1T(1) = 1 \le cn\lg{n} + n = 0 + 1 = 1T(1)=1≤cnlgn+n=0+1=1
4.3-5
证明:
T(n)≤c(⌊n/2⌋−2)lg(⌊n/2⌋−2)+c(⌈n/2⌉−2)lg(⌈n/2⌉−2)+dn≤c(n/2−2)lg(n/2−2)+c(n/2+1−2)lg(n/2+1−2)+dn≤c(n/2−1)lg(n/2−1)+c(n/2−1)lg(n/2−1)+dn≤cn−22lgn−22+cn−22lgn−22+dn≤c(n−2)lgn−22+dn≤c(n−2)lg(n−2)−c(n−2)+dn≤c(n−2)lg(n−2)+(d−c)n+2c(c>d,n>2c)≤c(n−2)lg(n−2)≤cnlgn\begin{aligned} T(n) & \le c(\lfloor n/2 \rfloor - 2)\lg(\lfloor n/2 \rfloor - 2) + c(\lceil n/2 \rceil -2 )\lg(\lceil n/2 \rceil - 2) + dn \\ & \le c(n/2 - 2)\lg(n/2 - 2) + c(n/2 + 1 -2 )\lg(n/2 + 1 - 2) + dn \\ & \le c(n/2 - 1)\lg(n/2 - 1) + c(n/2 - 1 )\lg(n/2 - 1) + dn \\ & \le c\frac{n-2}{2}\lg\frac{n-2}{2} + c\frac{n-2}{2}\lg\frac{n-2}{2} + dn \\ & \le c(n-2)\lg\frac{n-2}{2} + dn \\ & \le c(n-2)\lg(n-2) - c(n-2) + dn \\ & \le c(n-2)\lg(n-2) + (d - c)n + 2c \qquad (c > d, n > 2c)\\ & \le c(n-2)\lg(n-2) \\ & \le cn\lg n \end{aligned}T(n)≤c(⌊n/2⌋−2)lg(⌊n/2⌋−2)+c(⌈n/2⌉−2)lg(⌈n/2⌉−2)+dn≤c(n/2−2)lg(n/2−2)+c(n/2+1−2)lg(n/2+1−2)+dn≤c(n/2−1)lg(n/2−1)+c(n/2−1)lg(n/2−1)+dn≤c2n−2lg2n−2+c2n−2lg2n−2+dn≤c(n−2)lg2n−2+dn≤c(n−2)lg(n−2)−c(n−2)+dn≤c(n−2)lg(n−2)+(d−c)n+2c(c>d,n>2c)≤c(n−2)lg(n−2)≤cnlgn
Ω(nlgn)\Omega(nlgn)Ω(nlgn)的证明类似。
4.3-6
证明:
T(n)≤2c(⌊n/2⌋+17−a)lg(⌊n/2⌋+17−a)+n≤2c(n/2+1+17−a)lg(n/2+1+17−a)+n≤c(n+36−2a)lgn+36−2a2+n≤c(n+36−2a)lg(n+36−2a)−c(n+36−2a)+n(c>1,n>n0=f(a))≤c(n+36−2a)lg(n+36−2a)(a≥36)≤c(n−a)lg(n−a)≤cnlgn\begin{aligned} T(n) & \le 2c(\lfloor n/2 \rfloor + 17 - a)\lg(\lfloor n/2 \rfloor + 17 - a) + n \\ & \le 2c(n/2 + 1 + 17 - a)\lg(n/2 + 1 + 17 - a) + n \\ & \le c(n + 36 - 2a)\lg\frac{n + 36 - 2a}{2} + n \\ & \le c(n + 36 - 2a)\lg(n + 36 - 2a) - c(n + 36 - 2a) + n & (c > 1, n > n_0 = f(a))\\ & \le c(n + 36 - 2a)\lg(n + 36 - 2a) & (a \ge 36) \\ & \le c(n - a)\lg(n - a) \\ & \le cn\lg n \end{aligned}T(n)≤2c(⌊n/2⌋+17−a)lg(⌊n/2⌋+17−a)+n≤2c(n/2+1+17−a)lg(n/2+1+17−a)+n≤c(n+36−2a)lg2n+36−2a+n≤c(n+36−2a)lg(n+36−2a)−c(n+36−2a)+n≤c(n+36−2a)lg(n+36−2a)≤c(n−a)lg(n−a)≤cnlgn(c>1,n>n0=f(a))(a≥36)
4.3-7
证明:
猜测T(n)≤cnlog34T(n) \le cn^{\log_3{4}}T(n)≤cnlog34,
T(n)≤4c(n/3)log34+n≤cnlog34+n\begin{aligned} T(n) & \le 4c(n/3)^{\log_3{4}} + n \\ & \le cn^{\log_3{4}} + n \end{aligned}T(n)≤4c(n/3)log34+n≤cnlog34+n
证明不通。
猜测T(n)≤cnlog34−nT(n) \le cn^{\log_3{4}} - nT(n)≤cnlog34−n,
T(n)≤4(c(n/3)log34−n)+n≤cnlog34−4n+n≤cnlog34−3n≤cnlog34−n\begin{aligned} T(n) & \le 4\Big(c(n/3)^{\log_3{4}} - n\Big) + n \\ & \le cn^{\log_3{4}} - 4n + n \\ & \le cn^{\log_3{4}} - 3n \\ & \le cn^{\log_3{4}} - n \end{aligned}T(n)≤4(c(n/3)log34−n)+n≤cnlog34−4n+n≤cnlog34−3n≤cnlog34−n
4.3-8
证明:
T(n)≤4c(n/2)2+n2≤cn2+n2≤(c+1)n2T(n) \le 4c(n/2)^2 + n^2 \leq cn^2 + n^2 \leq (c + 1)n^2T(n)≤4c(n/2)2+n2≤cn2+n2≤(c+1)n2
证明不同。
猜测T(n)≤cn2−nT(n) \le cn^2 - nT(n)≤cn2−n,
T(n)≤4(c(n/2)2−n/2)+n≤cn2−2n+n≤cn2−n\begin{aligned} T(n) & \le 4\Big(c(n/2)^2 - n/2\Big) + n \\ & \le cn^2 - 2n + n \\ & \le cn^2 - n \end{aligned}T(n)≤4(c(n/2)2−n/2)+n≤cn2−2n+n≤cn2−n
4.3-9
解:Θ(lglg3n)\Theta(lg^{lg3}n)Θ(lglg3n),证明https://ita.skanev.com/04/03/09.html
4.4 用递归树方法求解递归式
本节证明就略了吧……
4.4-1
解:O(nlg3)O(n^{\lg3})O(nlg3)
4.4-2
解:O(n2)O(n^2)O(n2)
4.4-3
解:O(n2)O(n^2)O(n2)
4.4-4
解:O(n)O(n)O(n)
4.4-5
解:O(2n)O(2^n)O(2n)
4.4-6
略。
4.4-7
解:Θ(n2)\Theta (n^2)Θ(n2)
4.4-8
解:Θ(n2)\Theta (n^2)Θ(n2)
4.4-9
解:Θ(nlgn)\Theta (n\lg n)Θ(nlgn)
4.5 用主方法求解递归式
4.5-1
a.
解:Θ(n)\Theta(\sqrt{n})Θ(n)
b.
解:Θ(nlgn)\Theta(\sqrt{n}\lg n)Θ(nlgn)
c.
解:Θ(n)\Theta(n)Θ(n)
d.
解:Θ(n2)\Theta(n^2)Θ(n2)
4.5-2
解:48。
4.5-3
略。
4.5-4
解:不可以,因为不是多项式意义上的大于;O(n2+ϵ)O(n^{2+\epsilon})O(n2+ϵ)
4.5-5
例:T(n)=T(n2)+n(2−cosn)T(n)=T(\frac{n}{2})+n(2-\cos n)T(n)=T(2n)+n(2−cosn)
4.6 证明主定理
4.6-1
解:nj=⌈nbj⌉n_j=\lceil \frac{n}{b^j} \rceilnj=⌈bjn⌉
4.6-2
证明:
g(n)=∑j=0logbn−1ajf(n/bj)f(n/bj)=Θ((n/bj)logbalgk(n/bj))g(n)=Θ(∑j=0logbn−1aj(nbj)logbalgk(nbj))=Θ(A)A=∑j=0logbn−1aj(nbj)logbalgknbj=nlogba∑j=0logbn−1(ablogba)jlgknbj=nlogba∑j=0logbn−1lgknbj=nlogbaBlgknd=(lgn−lgd)k=lgkn+o(lgkn)B=∑j=0logbn−1lgknbj=∑j=0logbn−1(lgkn−o(lgkn))=logbnlgkn+logbn⋅o(lgkn)=Θ(logbnlgkn)=Θ(lgk+1n)g(n)=Θ(A)=Θ(nlogbaB)=Θ(nlogbalgk+1n)g(n) = \sum_{j=0}^{\log_b{n}-1}a^jf(n/b^j) \\ f(n/b^j) = \Theta\Big((n/b^j)^{\log_b{a}}\lg^k(n/b^j)\Big) \\ g(n) = \Theta\Big(\sum_{j=0}^{\log_b{n}-1}a^j\big(\frac{n}{b^j}\big)^{\log_b{a}}\lg^k\big(\frac{n}{b^j}\big)\Big) = \Theta(A) \\ A = \sum_{j=0}^{\log_b{n}-1}a^j\big(\frac{n}{b^j}\big)^{\log_b{a}}\lg^k\frac{n}{b^j} = n^{\log_b{a}}\sum_{j=0}^{\log_b{n}-1}\Big(\frac{a}{b^{\log_b{a}}}\Big)^j\lg^k\frac{n}{b^j} = n^{\log_b{a}}\sum_{j=0}^{\log_b{n}-1}\lg^k\frac{n}{b^j} = n^{\log_b{a}}B\\ \lg^k\frac{n}{d} = (\lg{n} - \lg{d})^k = \lg^k{n} + o(\lg^k{n}) \\ B = \sum_{j=0}^{\log_b{n}-1}\lg^k\frac{n}{b^j} = \sum_{j=0}^{\log_b{n}-1}\Big(\lg^k{n} - o(\lg^k{n})\Big) = \log_b{n}\lg^k{n} + \log_b{n} \cdot o(\lg^k{n}) = \Theta(\log_b{n}\lg^k{n}) = \Theta(\lg^{k+1}{n}) \\ g(n) = \Theta(A) = \Theta(n^{\log_b{a}}B) = \Theta(n^{\log_b{a}}\lg^{k+1}{n})g(n)=∑j=0logbn−1ajf(n/bj)f(n/bj)=Θ((n/bj)logbalgk(n/bj))g(n)=Θ(∑j=0logbn−1aj(bjn)logbalgk(bjn))=Θ(A)A=∑j=0logbn−1aj(bjn)logbalgkbjn=nlogba∑j=0logbn−1(blogbaa)jlgkbjn=nlogba∑j=0logbn−1lgkbjn=nlogbaBlgkdn=(lgn−lgd)k=lgkn+o(lgkn)B=∑j=0logbn−1lgkbjn=∑j=0logbn−1(lgkn−o(lgkn))=logbnlgkn+logbn⋅o(lgkn)=Θ(logbnlgkn)=Θ(lgk+1n)g(n)=Θ(A)=Θ(nlogbaB)=Θ(nlogbalgk+1n)
4.6-3
证明:
af(n/b)≤cf(n)αf(n/b)≤f(n),α=a/cαf(n)≤f(nb)αif(1)≤f(bi)n=bi⇒i=logbn⇒f(n)≥αlogbnf(1)=nlogbαα>a⇒α=a+d(c<1,d>0)⇒f(n)=nlogba+logbd=nlogba+ϵ(ϵ=logbd)af(n/b) \le cf(n) \\ \alpha f(n/b) \le f(n), \quad \alpha = a/c \\ \alpha f(n) \le f(nb) \\ \alpha^i f(1) \le f(b^i) \\ n = b^i \Rightarrow i = \log_{b}n \Rightarrow f(n) \ge \alpha^{\log_b{n}}f(1) = n^{\log_{b}\alpha} \\ \alpha > a \Rightarrow \alpha = a + d \quad (c < 1, d > 0) \\ \Rightarrow f(n) = n^{\log_b{a} + log_b{d}} = n^{\log_b{a}+\epsilon} \quad (\epsilon = \log_{b}d)af(n/b)≤cf(n)αf(n/b)≤f(n),α=a/cαf(n)≤f(nb)αif(1)≤f(bi)n=bi⇒i=logbn⇒f(n)≥αlogbnf(1)=nlogbαα>a⇒α=a+d(c<1,d>0)⇒f(n)=nlogba+logbd=nlogba+ϵ(ϵ=logbd)
一些参考
思考题
4-1 (递归式例子)
证明就略了。。
a.
解:Θ(n4)\Theta (n^4)Θ(n4)
b.
解:Θ(n)\Theta (n)Θ(n)
c.
解:Θ(n2lgn)\Theta (n^2\lg n)Θ(n2lgn)
d.
解:Θ(n2)\Theta (n^2)Θ(n2)
e.
解:Θ(nlg7)\Theta (n^{\lg7})Θ(nlg7)
f.
解:Θ(nlgn)\Theta (\sqrt n\lg n)Θ(nlgn)
g.
解:Θ(n3)\Theta (n^3)Θ(n3)
4-2 (参数传递代价)
a.
解:Θ(n)\Theta(n)Θ(n);Θ(nlgn)\Theta(n\lg n)Θ(nlgn);Θ(n)\Theta(n)Θ(n)
b.
解:Θ(nlgn)\Theta(n\lg n)Θ(nlgn);Θ(n2)\Theta(n^2)Θ(n2);Θ(nlgn)\Theta(n\lg n)Θ(nlgn)
4-3 (更多的递归式例子)
a.
解:Θ(nlog34)\Theta(n^{\log_3 4})Θ(nlog34)
b.
解:Θ(nlglgn)\Theta(n\lg\lg n)Θ(nlglgn)
c.
解:Θ(n2n)\Theta(n^2\sqrt{n})Θ(n2n)
d.
解:Θ(nlgn)\Theta(n\lg n)Θ(nlgn)
e.
解:Θ(nlglgn)\Theta(n\lg\lg n)Θ(nlglgn)
f.
解:Θ(n)\Theta(n)Θ(n)
g.
解:Θ(lgn)\Theta(\lg n)Θ(lgn)
h.
解:Θ(nlgn)\Theta(n\lg n)Θ(nlgn)
i.
解:Θ(lglgn)\Theta(\lg\lg n)Θ(lglgn)
j.
解:Θ(nlglgn)\Theta(n\lg\lg n)Θ(nlglgn)
4-4 (斐波那契数)
a.
证明:
z+zF(z)+z2F(Z)=z+z∑i=0∞Fizi+z2∑i=0∞Fizi=z+∑i=1∞Fi−1zi+∑i=2∞Fi−2zi=z+F1z+∑i=2∞(Fi−1+Fi−2)zi=z+F1z+∑i=2∞Fizi=F(z)\begin{aligned} & z + z\mathcal{F}(z) + z^2\mathcal{F}(Z) \\ & = z + z\sum_{i=0}^{\infty}F_iz^i + z^2\sum_{i=0}^{\infty}F_iz^i \\ & = z + \sum_{i=1}^{\infty}F_{i-1}z^i + \sum_{i=2}^{\infty}F_{i-2}z^i \\ & = z + F_1z + \sum_{i=2}^{\infty}(F_{i-1} + F_{i-2})z^i \\ & = z + F_1z + \sum_{i=2}^{\infty}F_iz^i \\ & = \mathcal{F}(z) \end{aligned}z+zF(z)+z2F(Z)=z+zi=0∑∞Fizi+z2i=0∑∞Fizi=z+i=1∑∞Fi−1zi+i=2∑∞Fi−2zi=z+F1z+i=2∑∞(Fi−1+Fi−2)zi=z+F1z+i=2∑∞Fizi=F(z)
b.
证明:
F(z)=F(z)(1−z−z2)1−z−z2=F(z)−zF(z)−z2F(z)−z+z1−z−z2=F(z)−F(z)+z1−z−z2=z1−z−z2=z1−(ϕ+ϕ^)z+ϕϕ^z2=z(1−ϕz)(1−ϕ^z)=5z5(1−ϕz)(1−ϕ^z)=(ϕ−ϕ^)z+1−15(1−ϕz)(1−ϕ^z)=(1−ϕ^z)−(1−ϕz)5(1−ϕz)(1−ϕ^z)=15(11−ϕz−11−ϕ^z)\begin{aligned} \mathcal{F}(z) &= \frac{\mathcal{F}(z)(1 - z - z^2)}{1 - z - z^2} \\ &= \frac{\mathcal{F}(z) - z\mathcal{F}(z) - z^2\mathcal{F}(z) - z + z}{1 - z - z^2} \\ &= \frac{\mathcal{F}(z) - \mathcal{F}(z) + z}{1 - z - z^2} \\ &= \frac{z}{1 - z - z^2} \\ &= \frac{z}{1 - (\phi + \hat\phi)z + \phi\hat\phi z^2} \\ &= \frac{z}{(1 - \phi z)(1 - \hat\phi z)} \\ &= \frac{\sqrt5 z}{\sqrt5 (1 - \phi z)(1 - \hat\phi z)} \\ &= \frac{(\phi - \hat\phi)z + 1 - 1}{\sqrt5 (1 - \phi z)(1 - \hat\phi z)} \\ &= \frac{(1 - \hat\phi z) - (1 - \phi z)}{\sqrt5 (1 - \phi z)(1 - \hat\phi z)} \\ &= \frac{1}{\sqrt5}\Big(\frac{1}{1 - \phi z} - \frac{1}{1 - \hat\phi z}\Big) \\ \end{aligned}F(z)=1−z−z2F(z)(1−z−z2)=1−z−z2F(z)−zF(z)−z2F(z)−z+z=1−z−z2F(z)−F(z)+z=1−z−z2z=1−(ϕ+ϕ^)z+ϕϕ^z2z=(1−ϕz)(1−ϕ^z)z=5(1−ϕz)(1−ϕ^z)5z=5(1−ϕz)(1−ϕ^z)(ϕ−ϕ^)z+1−1=5(1−ϕz)(1−ϕ^z)(1−ϕ^z)−(1−ϕz)=51(1−ϕz1−1−ϕ^z1)
c.
证明:有11−x=∑k=0∞xk当 ∣x∣<1\frac{1}{1 - x} = \sum_{k=0}^{\infty}x^k \quad\text{当 } |x| < 11−x1=∑k=0∞xk当 ∣x∣<1
F(n)=15(11−ϕz−11−ϕ^z)=15(∑i=0∞ϕizi−∑i=0∞ϕ^izi)=∑i=0∞15(ϕi−ϕ^i)zi\begin{aligned} \mathcal{F}(n) &= \frac{1}{\sqrt5}\Big(\frac{1}{1 - \phi z} - \frac{1}{1 - \hat\phi z}\Big) \\ &= \frac{1}{\sqrt5}\Big(\sum_{i=0}^{\infty}\phi^i z^i - \sum_{i=0}^{\infty}\hat{\phi}^i z^i\Big) \\ &= \sum_{i=0}^{\infty}\frac{1}{\sqrt5}(\phi^i - \hat{\phi}^i) z^i \end{aligned}F(n)=51(1−ϕz1−1−ϕ^z1)=51(i=0∑∞ϕizi−i=0∑∞ϕ^izi)=i=0∑∞51(ϕi−ϕ^i)zi
d.
证明:
Fi=ϕi−ϕ^i5=ϕi5−ϕ^i5F_i = \frac{\phi^i - \hat{\phi}^i}{\sqrt5} = \frac{\phi^i}{\sqrt5} - \frac{\hat{\phi}^i}{\sqrt5}Fi=5ϕi−ϕ^i=5ϕi−5ϕ^i
对于i=0i=0i=0,ϕ/5=(5+5)/10>0.5\phi/\sqrt5 = (\sqrt5 + 5)/10 > 0.5ϕ/5=(5+5)/10>0.5
对于i>2i>2i>2,∣ϕ^i∣<0.5|\hat{\phi}^i| < 0.5∣ϕ^i∣<0.5
4-5 (芯片检测)
答案来自https://blog.csdn.net/victoryaoyu/article/details/77085161
a.
思路:因为好芯片检测准确,而坏芯片检测不确定(可能准确,也可能错误)。如果好芯片数量少于n/2,则就会有同样数量的坏芯片,假设跟好芯片表现的一样(总能准确报告芯片的好坏)。按照这种策略,永远也没法区分这两类的好坏性了。
b.
思路:我们将芯片分成两组并进行比较。如果结果是第一个(两者都好或两者都不好),我们可以采取其中一个芯片,但两者都不然。 在收起时,我们会删除至少一个坏芯片,用于我们删除的每个好芯片。 在我们选择芯片的配对中,会有比芯片更好的芯片(会有更好的配对,因为好的芯片超过一半)。 现在我们最多n/ 个芯片,其中至少有一半是好的。
c.
解:T(n)=T(n/2)+n/2T(n) = T(n/2) + n/2T(n)=T(n/2)+n/2;Θ(n)\Theta(n)Θ(n)。
4-6 (Monge阵列)
a.
证明思路:“仅当”易证;“当”可用给出的提示证明。
b.
解:22改为24。
c.
注:一开始不太理解这个“最左最小元素”,就是最小元素(假设有多个相同值)中最左边的一个。。
证明思路:用反证法证明行数越高,最左最小元素的列下标越大。可在两行之间证明,两行的最左最小元素可以生成一个矩形,然后可利用阵列的性质和a题的性质证明。
d.
思路:利用偶数行的最左最小元素的列下标进行分割,奇数行可在上下两个偶数行的最左最小元素的列下标之间进行寻找,这样所有奇数行需要比较的元素加起来就只有一行。
e.
解:T(m)=T(m2)+cn+m2T(m)=T(\frac{m}{2})+cn+\frac{m}{2}T(m)=T(2m)+cn+2m,证明略。
《算法导论》第三版第4章 分治策略 练习思考题 个人答案相关推荐
- 算法导论第三版第十一章11.1-4
算法导论第三版第十一章11.1-4 我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时,该数组中可能包含一些无用信息,但要堆整个数组进行初始化时不太实际的,因为该数组的规模太大 ...
- 算法导论第三版第8章思考题
8-1 a. 因为对于每一种输入,不可能能够到达同一片叶子,所以一共有 n! n!片子是可以到达的.其次因为输入完全随机,每种输入概率相等且到叶子结点的路径是固定的,这 n! n!个叶子结点的概率也是 ...
- 《算法导论》第三版第10章 基本数据结构 练习思考题 个人答案
10.1 栈和队列 10.1-1 仿照图10-1,画图表示依次执行操作PUSH(S, 4).PUSH(S, 1).PUSH(S, 3).POP(S).PUSH(S, 8)和POP(S)每一步的结果,栈 ...
- 算法导论第三版 第15章习题答案
2020/11/18:初稿,增加Python代码实现,修订参考文献部分错误(如15.1的第4题) 参考文献: https://walkccc.github.io/CLRS/Chap15/ https: ...
- 算法导论第三版 第2章习题答案
2020/10/27: 增加伪代码相应的Python实现代码. 2020/11/13:修订第2节第3题的bug. 参考文献:https://ita.skanev.com/ 2 Getting Star ...
- 带权中位数-算法导论第三版第九章思考题9-2
带权中位数-算法导论第三版第九章思考题9-2 b 时间复杂度O(nlgn) float find_median_with_weights_b(float *array,int length) {qui ...
- 算法导论第三版第二章思考题答案
算法导论第三版第二章思考题答案 第二章思考题 算法导论第三版第二章思考题答案 2.1 2.2 2.3 2.4 汇总传送门 2.1 #include<iostream> using name ...
- 算法导论第三版3.1答案
算法导论第三版3.1答案 这一章数学公式实在太多了..打不过来,为了节约时间就用纸笔写了. 2.2 算法导论第三版3.1答案 汇总传送门 汇总传送门 链接: [算法导论习题答案汇总]
- 给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)
给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1) template<typename T> void insert_recursive(BinaryTree< ...
- 写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)
写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3) TREE-PREDECESSOR(x)if x.left != NILreturn TREE-MAXIMUM(x.left) ...
最新文章
- linux日志怎么进行转储,Linux logrotate命令用法详解:进行日志转储(轮替)
- 官宣!推动深圳大学、南科大创建“双一流”!
- CG笔记之一——透视投影
- 相邻省份最多的省区_2019年人口净流入最多的十座城市,其中有八座位于我国南方地区...
- override,final的使用,两者都是针对虚函数,也就是说要有virtual关键字
- C语言中quot;##quot;的独特用法
- centos7.5 源码安装mysql5.7.25
- 最经典的职场十大理论,好文值得一看滴童鞋们。2
- urtracker 项目管理工具
- linux 发送测试数据帧,ubuntu – 测试巨型帧是否真正起作用
- Android开发笔记(一百六十七)Android8.0的画中画模式
- Linux的学习方法
- Log4j整合阿里云日志服务
- linux 的常用命令---------第十三阶段(NFS与DHCP服务,scp用法)
- csdn格式字体、样式、排版
- mysql查询distinct_mysql中select distinct的用法
- virtualenv虚拟环境中安装MySQL-python
- LTE 各频段对应频点以及频率,频点号与频率之间的转换关系
- 腾讯云---语音识别--一句话识别
- 多图!2020年互联网大厂中秋礼盒PK!阿里走情怀,腾讯更复古,最走心的是.........