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)−clg⁡2+1≤clg⁡(n−2)≤clg⁡nT(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+22lg⁡n+22+n≥c(n+2)lg⁡(n+2)−c(n+2)lg⁡2+n≥c(n+2)lg⁡(n+2)+(1−c)n−2cfor n≥2c/(1−c),0&lt;c&lt;1≥c(n+2)lg⁡(n+2)≥cnlg⁡n\begin{aligned} T(n) &amp; \ge 2c(\lfloor n/2 \rfloor + 2)(\lg(\lfloor n/2 \rfloor + 2) + n \\ &amp; \ge 2c(n/2 - 1 + 2)(\lg(n/2 - 1 + 2) + n \\ &amp; \ge 2c\frac{n+2}{2}\lg\frac{n+2}{2} + n \\ &amp; \ge c(n+2)\lg(n+2) - c(n+2)\lg2 + n \\ &amp; \ge c(n+2)\lg(n+2) + (1 - c)n - 2c \qquad \text{for } n \ge 2c/(1-c), 0 &lt; c &lt; 1 \\ &amp; \ge c(n+2)\lg(n+2) \\ &amp; \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+2​lg2n+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≤cnlg⁡n−cnlg⁡2+2n≤cnlg⁡n+(2−c)n(c≥1)≤cnlg⁡n+n\begin{aligned} T(n) &amp; \le 2(c\lfloor n/2 \rfloor\lg{\lfloor n/2 \rfloor} + \lfloor n/2 \rfloor) + n \\ &amp; \le 2c(n/2)\lg(n/2) + 2(n/2) + n \\ &amp; \le cn\lg(n/2) + 2n \\ &amp; \le cn\lg(n/2) + 2n \\ &amp; \le cn\lg{n} - cn\lg{2} + 2n \\ &amp; \le cn\lg{n} + (2 - c)n \qquad (c \ge 1)\\ &amp; \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≤cnlg⁡n+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−22lg⁡n−22+cn−22lg⁡n−22+dn≤c(n−2)lg⁡n−22+dn≤c(n−2)lg⁡(n−2)−c(n−2)+dn≤c(n−2)lg⁡(n−2)+(d−c)n+2c(c&gt;d,n&gt;2c)≤c(n−2)lg⁡(n−2)≤cnlg⁡n\begin{aligned} T(n) &amp; \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 \\ &amp; \le c(n/2 - 2)\lg(n/2 - 2) + c(n/2 + 1 -2 )\lg(n/2 + 1 - 2) + dn \\ &amp; \le c(n/2 - 1)\lg(n/2 - 1) + c(n/2 - 1 )\lg(n/2 - 1) + dn \\ &amp; \le c\frac{n-2}{2}\lg\frac{n-2}{2} + c\frac{n-2}{2}\lg\frac{n-2}{2} + dn \\ &amp; \le c(n-2)\lg\frac{n-2}{2} + dn \\ &amp; \le c(n-2)\lg(n-2) - c(n-2) + dn \\ &amp; \le c(n-2)\lg(n-2) + (d - c)n + 2c \qquad (c &gt; d, n &gt; 2c)\\ &amp; \le c(n-2)\lg(n-2) \\ &amp; \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−2​lg2n−2​+c2n−2​lg2n−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)lg⁡n+36−2a2+n≤c(n+36−2a)lg⁡(n+36−2a)−c(n+36−2a)+n(c&gt;1,n&gt;n0=f(a))≤c(n+36−2a)lg⁡(n+36−2a)(a≥36)≤c(n−a)lg⁡(n−a)≤cnlg⁡n\begin{aligned} T(n) &amp; \le 2c(\lfloor n/2 \rfloor + 17 - a)\lg(\lfloor n/2 \rfloor + 17 - a) + n \\ &amp; \le 2c(n/2 + 1 + 17 - a)\lg(n/2 + 1 + 17 - a) + n \\ &amp; \le c(n + 36 - 2a)\lg\frac{n + 36 - 2a}{2} + n \\ &amp; \le c(n + 36 - 2a)\lg(n + 36 - 2a) - c(n + 36 - 2a) + n &amp; (c &gt; 1, n &gt; n_0 = f(a))\\ &amp; \le c(n + 36 - 2a)\lg(n + 36 - 2a) &amp; (a \ge 36) \\ &amp; \le c(n - a)\lg(n - a) \\ &amp; \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)≤cnlog⁡34T(n) \le cn^{\log_3{4}}T(n)≤cnlog3​4,
T(n)≤4c(n/3)log⁡34+n≤cnlog⁡34+n\begin{aligned} T(n) &amp; \le 4c(n/3)^{\log_3{4}} + n \\ &amp; \le cn^{\log_3{4}} + n \end{aligned}T(n)​≤4c(n/3)log3​4+n≤cnlog3​4+n​
证明不通。
猜测T(n)≤cnlog⁡34−nT(n) \le cn^{\log_3{4}} - nT(n)≤cnlog3​4−n,
T(n)≤4(c(n/3)log⁡34−n)+n≤cnlog⁡34−4n+n≤cnlog⁡34−3n≤cnlog⁡34−n\begin{aligned} T(n) &amp; \le 4\Big(c(n/3)^{\log_3{4}} - n\Big) + n \\ &amp; \le cn^{\log_3{4}} - 4n + n \\ &amp; \le cn^{\log_3{4}} - 3n \\ &amp; \le cn^{\log_3{4}} - n \end{aligned}T(n)​≤4(c(n/3)log3​4−n)+n≤cnlog3​4−4n+n≤cnlog3​4−3n≤cnlog3​4−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) &amp; \le 4\Big(c(n/2)^2 - n/2\Big) + n \\ &amp; \le cn^2 - 2n + n \\ &amp; \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(nlg⁡3)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

解:Θ(nlg⁡n)\Theta (n\lg n)Θ(nlgn)

4.5 用主方法求解递归式

4.5-1

a.

解:Θ(n)\Theta(\sqrt{n})Θ(n​)

b.

解:Θ(nlg⁡n)\Theta(\sqrt{n}\lg n)Θ(n​lgn)

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−cos⁡n)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=0log⁡bn−1ajf(n/bj)f(n/bj)=Θ((n/bj)log⁡balg⁡k(n/bj))g(n)=Θ(∑j=0log⁡bn−1aj(nbj)log⁡balg⁡k(nbj))=Θ(A)A=∑j=0log⁡bn−1aj(nbj)log⁡balg⁡knbj=nlog⁡ba∑j=0log⁡bn−1(ablog⁡ba)jlg⁡knbj=nlog⁡ba∑j=0log⁡bn−1lg⁡knbj=nlog⁡baBlg⁡knd=(lg⁡n−lg⁡d)k=lg⁡kn+o(lg⁡kn)B=∑j=0log⁡bn−1lg⁡knbj=∑j=0log⁡bn−1(lg⁡kn−o(lg⁡kn))=log⁡bnlg⁡kn+log⁡bn⋅o(lg⁡kn)=Θ(log⁡bnlg⁡kn)=Θ(lg⁡k+1n)g(n)=Θ(A)=Θ(nlog⁡baB)=Θ(nlog⁡balg⁡k+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=0logb​n−1​ajf(n/bj)f(n/bj)=Θ((n/bj)logb​algk(n/bj))g(n)=Θ(∑j=0logb​n−1​aj(bjn​)logb​algk(bjn​))=Θ(A)A=∑j=0logb​n−1​aj(bjn​)logb​algkbjn​=nlogb​a∑j=0logb​n−1​(blogb​aa​)jlgkbjn​=nlogb​a∑j=0logb​n−1​lgkbjn​=nlogb​aBlgkdn​=(lgn−lgd)k=lgkn+o(lgkn)B=∑j=0logb​n−1​lgkbjn​=∑j=0logb​n−1​(lgkn−o(lgkn))=logb​nlgkn+logb​n⋅o(lgkn)=Θ(logb​nlgkn)=Θ(lgk+1n)g(n)=Θ(A)=Θ(nlogb​aB)=Θ(nlogb​algk+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=log⁡bn⇒f(n)≥αlog⁡bnf(1)=nlog⁡bαα&gt;a⇒α=a+d(c&lt;1,d&gt;0)⇒f(n)=nlog⁡ba+logbd=nlog⁡ba+ϵ(ϵ=log⁡bd)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 &gt; a \Rightarrow \alpha = a + d \quad (c &lt; 1, d &gt; 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=logb​n⇒f(n)≥αlogb​nf(1)=nlogb​αα>a⇒α=a+d(c<1,d>0)⇒f(n)=nlogb​a+logb​d=nlogb​a+ϵ(ϵ=logb​d)
一些参考

思考题

4-1 (递归式例子)

证明就略了。。

a.

解:Θ(n4)\Theta (n^4)Θ(n4)

b.

解:Θ(n)\Theta (n)Θ(n)

c.

解:Θ(n2lg⁡n)\Theta (n^2\lg n)Θ(n2lgn)

d.

解:Θ(n2)\Theta (n^2)Θ(n2)

e.

解:Θ(nlg⁡7)\Theta (n^{\lg7})Θ(nlg7)

f.

解:Θ(nlg⁡n)\Theta (\sqrt n\lg n)Θ(n​lgn)

g.

解:Θ(n3)\Theta (n^3)Θ(n3)

4-2 (参数传递代价)

a.

解:Θ(n)\Theta(n)Θ(n);Θ(nlg⁡n)\Theta(n\lg n)Θ(nlgn);Θ(n)\Theta(n)Θ(n)

b.

解:Θ(nlg⁡n)\Theta(n\lg n)Θ(nlgn);Θ(n2)\Theta(n^2)Θ(n2);Θ(nlg⁡n)\Theta(n\lg n)Θ(nlgn)

4-3 (更多的递归式例子)

a.

解:Θ(nlog⁡34)\Theta(n^{\log_3 4})Θ(nlog3​4)

b.

解:Θ(nlg⁡lg⁡n)\Theta(n\lg\lg n)Θ(nlglgn)

c.

解:Θ(n2n)\Theta(n^2\sqrt{n})Θ(n2n​)

d.

解:Θ(nlg⁡n)\Theta(n\lg n)Θ(nlgn)

e.

解:Θ(nlg⁡lg⁡n)\Theta(n\lg\lg n)Θ(nlglgn)

f.

解:Θ(n)\Theta(n)Θ(n)

g.

解:Θ(lg⁡n)\Theta(\lg n)Θ(lgn)

h.

解:Θ(nlg⁡n)\Theta(n\lg n)Θ(nlgn)

i.

解:Θ(lg⁡lg⁡n)\Theta(\lg\lg n)Θ(lglgn)

j.

解:Θ(nlg⁡lg⁡n)\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} &amp; z + z\mathcal{F}(z) + z^2\mathcal{F}(Z) \\ &amp; = z + z\sum_{i=0}^{\infty}F_iz^i + z^2\sum_{i=0}^{\infty}F_iz^i \\ &amp; = z + \sum_{i=1}^{\infty}F_{i-1}z^i + \sum_{i=2}^{\infty}F_{i-2}z^i \\ &amp; = z + F_1z + \sum_{i=2}^{\infty}(F_{i-1} + F_{i-2})z^i \\ &amp; = z + F_1z + \sum_{i=2}^{\infty}F_iz^i \\ &amp; = \mathcal{F}(z) \end{aligned}​z+zF(z)+z2F(Z)=z+zi=0∑∞​Fi​zi+z2i=0∑∞​Fi​zi=z+i=1∑∞​Fi−1​zi+i=2∑∞​Fi−2​zi=z+F1​z+i=2∑∞​(Fi−1​+Fi−2​)zi=z+F1​z+i=2∑∞​Fi​zi=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) &amp;= \frac{\mathcal{F}(z)(1 - z - z^2)}{1 - z - z^2} \\ &amp;= \frac{\mathcal{F}(z) - z\mathcal{F}(z) - z^2\mathcal{F}(z) - z + z}{1 - z - z^2} \\ &amp;= \frac{\mathcal{F}(z) - \mathcal{F}(z) + z}{1 - z - z^2} \\ &amp;= \frac{z}{1 - z - z^2} \\ &amp;= \frac{z}{1 - (\phi + \hat\phi)z + \phi\hat\phi z^2} \\ &amp;= \frac{z}{(1 - \phi z)(1 - \hat\phi z)} \\ &amp;= \frac{\sqrt5 z}{\sqrt5 (1 - \phi z)(1 - \hat\phi z)} \\ &amp;= \frac{(\phi - \hat\phi)z + 1 - 1}{\sqrt5 (1 - \phi z)(1 - \hat\phi z)} \\ &amp;= \frac{(1 - \hat\phi z) - (1 - \phi z)}{\sqrt5 (1 - \phi z)(1 - \hat\phi z)} \\ &amp;= \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)5​z​=5​(1−ϕz)(1−ϕ^​z)(ϕ−ϕ^​)z+1−1​=5​(1−ϕz)(1−ϕ^​z)(1−ϕ^​z)−(1−ϕz)​=5​1​(1−ϕz1​−1−ϕ^​z1​)​

c.

证明:有11−x=∑k=0∞xk当 ∣x∣&lt;1\frac{1}{1 - x} = \sum_{k=0}^{\infty}x^k \quad\text{当 } |x| &lt; 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) &amp;= \frac{1}{\sqrt5}\Big(\frac{1}{1 - \phi z} - \frac{1}{1 - \hat\phi z}\Big) \\ &amp;= \frac{1}{\sqrt5}\Big(\sum_{i=0}^{\infty}\phi^i z^i - \sum_{i=0}^{\infty}\hat{\phi}^i z^i\Big) \\ &amp;= \sum_{i=0}^{\infty}\frac{1}{\sqrt5}(\phi^i - \hat{\phi}^i) z^i \end{aligned}F(n)​=5​1​(1−ϕz1​−1−ϕ^​z1​)=5​1​(i=0∑∞​ϕizi−i=0∑∞​ϕ^​izi)=i=0∑∞​5​1​(ϕ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&gt;0.5\phi/\sqrt5 = (\sqrt5 + 5)/10 &gt; 0.5ϕ/5​=(5​+5)/10>0.5
对于i&gt;2i&gt;2i>2,∣ϕ^i∣&lt;0.5|\hat{\phi}^i| &lt; 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章 分治策略 练习思考题 个人答案相关推荐

  1. 算法导论第三版第十一章11.1-4

    算法导论第三版第十一章11.1-4 我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时,该数组中可能包含一些无用信息,但要堆整个数组进行初始化时不太实际的,因为该数组的规模太大 ...

  2. 算法导论第三版第8章思考题

    8-1 a. 因为对于每一种输入,不可能能够到达同一片叶子,所以一共有 n! n!片子是可以到达的.其次因为输入完全随机,每种输入概率相等且到叶子结点的路径是固定的,这 n! n!个叶子结点的概率也是 ...

  3. 《算法导论》第三版第10章 基本数据结构 练习思考题 个人答案

    10.1 栈和队列 10.1-1 仿照图10-1,画图表示依次执行操作PUSH(S, 4).PUSH(S, 1).PUSH(S, 3).POP(S).PUSH(S, 8)和POP(S)每一步的结果,栈 ...

  4. 算法导论第三版 第15章习题答案

    2020/11/18:初稿,增加Python代码实现,修订参考文献部分错误(如15.1的第4题) 参考文献: https://walkccc.github.io/CLRS/Chap15/ https: ...

  5. 算法导论第三版 第2章习题答案

    2020/10/27: 增加伪代码相应的Python实现代码. 2020/11/13:修订第2节第3题的bug. 参考文献:https://ita.skanev.com/ 2 Getting Star ...

  6. 带权中位数-算法导论第三版第九章思考题9-2

    带权中位数-算法导论第三版第九章思考题9-2 b 时间复杂度O(nlgn) float find_median_with_weights_b(float *array,int length) {qui ...

  7. 算法导论第三版第二章思考题答案

    算法导论第三版第二章思考题答案 第二章思考题 算法导论第三版第二章思考题答案 2.1 2.2 2.3 2.4 汇总传送门 2.1 #include<iostream> using name ...

  8. 算法导论第三版3.1答案

    算法导论第三版3.1答案 这一章数学公式实在太多了..打不过来,为了节约时间就用纸笔写了. 2.2 算法导论第三版3.1答案 汇总传送门 汇总传送门 链接: [算法导论习题答案汇总]

  9. 给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)

    给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1) template<typename T> void insert_recursive(BinaryTree< ...

  10. 写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)

    写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3) TREE-PREDECESSOR(x)if x.left != NILreturn TREE-MAXIMUM(x.left) ...

最新文章

  1. linux日志怎么进行转储,Linux logrotate命令用法详解:进行日志转储(轮替)
  2. 官宣!推动深圳大学、南科大创建“双一流”!
  3. CG笔记之一——透视投影
  4. 相邻省份最多的省区_2019年人口净流入最多的十座城市,其中有八座位于我国南方地区...
  5. override,final的使用,两者都是针对虚函数,也就是说要有virtual关键字
  6. C语言中quot;##quot;的独特用法
  7. centos7.5 源码安装mysql5.7.25
  8. 最经典的职场十大理论,好文值得一看滴童鞋们。2
  9. urtracker 项目管理工具
  10. linux 发送测试数据帧,ubuntu – 测试巨型帧是否真正起作用
  11. Android开发笔记(一百六十七)Android8.0的画中画模式
  12. Linux的学习方法
  13. Log4j整合阿里云日志服务
  14. linux 的常用命令---------第十三阶段(NFS与DHCP服务,scp用法)
  15. csdn格式字体、样式、排版
  16. mysql查询distinct_mysql中select distinct的用法
  17. virtualenv虚拟环境中安装MySQL-python
  18. LTE 各频段对应频点以及频率,频点号与频率之间的转换关系
  19. 腾讯云---语音识别--一句话识别
  20. 多图!2020年互联网大厂中秋礼盒PK!阿里走情怀,腾讯更复古,最走心的是.........

热门文章

  1. 字词拼音查询易语言代码
  2. android textwatcher 获取当前控件,TextWatcher如何找到调用它的EditText
  3. allegro使用经验
  4. windows8 初始界面和功能
  5. 如何委婉地拒绝公司的offer?
  6. iOS上架app store下载步骤
  7. 嵌入式开发——常见的存储器分类和特性介绍
  8. 如何配置Sql Server 2005之ODBC数据源连接
  9. 计算机应用基础试题及答案数据库,数据库原理试题及答案.doc
  10. 打开com方式和dos常用命令