算法导论第三版代码python实现与部分习题答案-第四章:分治策略(二)

4.4 递归树

一、 对于幂函数的复习

证明:3log⁡4n=nlog⁡433^{\log_4 n} = n^{\log_4 3}3log4n=nlog43

方法一:标准推导

3log⁡4n=3ln⁡nln⁡4(换底公式:log⁡4n=ln⁡nln⁡4)3^{\log_4 n} = 3^{\frac{\ln n}{\ln 4}} \quad \text{(换底公式:} \log_4 n = \frac{\ln n}{\ln 4} \text{)}3log4n=3ln4lnn(换底公式:log4n=ln4lnn

=(31ln⁡4)ln⁡n(幂的乘方法则:akm=(ak)m)= \left(3^{\frac{1}{\ln 4}}\right)^{\ln n} \quad \text{(幂的乘方法则:} a^{km} = (a^k)^m \text{)}=(3ln41)lnn(幂的乘方法则:akm=(ak)m

=(eln⁡3ln⁡4)ln⁡n(因为31ln⁡4=eln⁡3ln⁡4)= \left(e^{\frac{\ln 3}{\ln 4}}\right)^{\ln n} \quad \text{(因为} 3^{\frac{1}{\ln 4}} = e^{\frac{\ln 3}{\ln 4}} \text{)}=(eln4ln3)lnn(因为3ln41=eln4ln3

=eln⁡3ln⁡4⋅ln⁡n(幂的乘方法则:(ak)m=akm)= e^{\frac{\ln 3}{\ln 4} \cdot \ln n} \quad \text{(幂的乘方法则:} (a^k)^m = a^{km} \text{)}=eln4ln3lnn(幂的乘方法则:(ak)m=akm

=eln⁡n⋅ln⁡3ln⁡4(乘法交换律)= e^{\ln n \cdot \frac{\ln 3}{\ln 4}} \quad \text{(乘法交换律)}=elnnln4ln3(乘法交换律)

=(eln⁡n)ln⁡3ln⁡4(幂的乘方法则:akm=(ak)m)= \left(e^{\ln n}\right)^{\frac{\ln 3}{\ln 4}} \quad \text{(幂的乘方法则:} a^{km} = (a^k)^m \text{)}=(elnn)ln4ln3(幂的乘方法则:akm=(ak)m

=nln⁡3ln⁡4(指数还原:eln⁡n=n)= n^{\frac{\ln 3}{\ln 4}} \quad \text{(指数还原:} e^{\ln n} = n \text{)}=nln4ln3(指数还原:elnn=n

=nlog⁡43(换底公式:ln⁡3ln⁡4=log⁡43)= n^{\log_4 3} \quad \text{(换底公式:} \frac{\ln 3}{\ln 4} = \log_4 3 \text{)}=nlog43(换底公式:ln4ln3=log43

方法二:对数验证法

x=3log⁡4nx = 3^{\log_4 n}x=3log4n,两边取以4为底的对数:

log⁡4x=log⁡4(3log⁡4n)=(log⁡4n)⋅(log⁡43)(对数的幂法则)\log_4 x = \log_4(3^{\log_4 n}) = (\log_4 n) \cdot (\log_4 3) \quad \text{(对数的幂法则)}log4x=log4(3log4n)=(log4n)(log43)(对数的幂法则)

=(log⁡43)⋅(log⁡4n)(乘法交换律)= (\log_4 3) \cdot (\log_4 n) \quad \text{(乘法交换律)}=(log43)(log4n)(乘法交换律)

y=nlog⁡43y = n^{\log_4 3}y=nlog43,两边取以4为底的对数:

log⁡4y=log⁡4(nlog⁡43)=(log⁡43)⋅(log⁡4n)(对数的幂法则)\log_4 y = \log_4(n^{\log_4 3}) = (\log_4 3) \cdot (\log_4 n) \quad \text{(对数的幂法则)}log4y=log4(nlog43)=(log43)(log4n)(对数的幂法则)

因为 log⁡4x=log⁡4y\log_4 x = \log_4 ylog4x=log4y,所以 x=yx = yx=y,即:3log⁡4n=nlog⁡433^{\log_4 n} = n^{\log_4 3}3log4n=nlog43

幂对换公式的一般形式

alog⁡bn=nlog⁡ba(条件:a>0,a≠1,b>0,b≠1,n>0)a^{\log_b n} = n^{\log_b a} \quad \text{(条件:} a > 0, a \neq 1, b > 0, b \neq 1, n > 0 \text{)}alogbn=nlogba(条件:a>0,a=1,b>0,b=1,n>0

[!IMPORTANT]

常用公式回顾

log⁡ab=log⁡blog⁡a=ln⁡bln⁡a(换底公式)\log_a b = \frac{\log b}{\log a} = \frac{\ln b}{\ln a} \quad \text{(换底公式)}logab=logalogb=lnalnb(换底公式)

log⁡ab⋅log⁡bc=log⁡ac(对数的连乘)\log_a b \cdot \log_b c = \log_a c \quad \text{(对数的连乘)}logablogbc=logac(对数的连乘)

alog⁡bc=clog⁡ba(幂对换公式)a^{\log_b c} = c^{\log_b a} \quad \text{(幂对换公式)}alogbc=clogba(幂对换公式)

log⁡a(bc)=c⋅log⁡ab(对数的幂法则)\log_a(b^c) = c \cdot \log_a b \quad \text{(对数的幂法则)}loga(bc)=clogab(对数的幂法则)

ak⋅m=(ak)m(幂的乘方法则)a^{k \cdot m} = (a^k)^m \quad \text{(幂的乘方法则)}akm=(ak)m(幂的乘方法则)

二、数列求和相关
T(n)=cn2+316cn2+(316)2cn2+⋯+(316)log⁡4n−1cn2+Θ(nlog⁡43) T(n) = cn^2 + \frac{3}{16}cn^2 + \left(\frac{3}{16}\right)^2 cn^2 + \dots + \left(\frac{3}{16}\right)^{ {\log_4 n}-1} cn^2 + \Theta(n^{\log_4 3}) \qquad T(n)=cn2+163cn2+(163)2cn2++(163)log4n1cn2+Θ(nlog43)

=∑i=0log⁡4n−1(316)icn2+Θ(nlog⁡43)/* 写成等比数列求和的形式 */ = \sum_{i=0}^{ {\log_4 n}-1} \left(\frac{3}{16}\right)^i c n^2 + \Theta(n^{\log_4 3}) \qquad \text{/* 写成等比数列求和的形式 */} =i=0log4n1(163)icn2+Θ(nlog43)/* 写成等比数列求和的形式 */

<∑i=0∞(316)icn2+Θ(nlog⁡43)/* 用无穷级数和估计有限级数和,上界分析 */ < \sum_{i=0}^{\infty} \left(\frac{3}{16}\right)^i c n^2 + \Theta(n^{\log_4 3}) \qquad \text{/* 用无穷级数和估计有限级数和,上界分析 */} <i=0(163)icn2+Θ(nlog43)/* 用无穷级数和估计有限级数和,上界分析 */

=(∑i=0∞qi)cn2+Θ(nlog⁡43),q=316/* 设q=316,便于套用公式 */ = \left(\sum_{i=0}^{\infty} q^i\right) c n^2 + \Theta(n^{\log_4 3}),\quad q = \frac{3}{16} \qquad \text{/* 设$q = \frac{3}{16}$,便于套用公式 */} =(i=0qi)cn2+Θ(nlog43),q=163/* q=163,便于套用公式 */

=11−qcn2+Θ(nlog⁡43)/* 等比无穷级数求和公式:∑i=0∞qi=11−q,∣q∣<1 */ = \frac{1}{1-q} c n^2 + \Theta(n^{\log_4 3}) \qquad \text{/* 等比无穷级数求和公式:$\sum_{i=0}^{\infty} q^i = \frac{1}{1-q}$,$|q|<1$ */} =1q1cn2+Θ(nlog43)/* 等比无穷级数求和公式:i=0qi=1q1q<1 */

=1613cn2+Θ(nlog⁡43)/* 代入q的值,1−q=1−316=1316 */ = \frac{16}{13} c n^2 + \Theta(n^{\log_4 3}) \qquad \text{/* 代入$q$的值,$1-q = 1 - \frac{3}{16} = \frac{13}{16}$ */} =1316cn2+Θ(nlog43)/* 代入q的值,1q=1163=1613 */

=O(n2)/* n2项主导,渐进上界符号表示 */ = O(n^2) \qquad \text{/* $n^2$项主导,渐进上界符号表示 */} =O(n2)/* n2项主导,渐进上界符号表示 */

[!IMPORTANT]
∑i=0kqi=1−qk+11−q \sum_{i=0}^k q^i = \frac{1 - q^{k+1}}{1-q} i=0kqi=1q1qk+1

无穷等比数列求和公式
无穷等比数列指的是首项为 aaa,公比为 qqq,项数无限的数列:
a,  aq,  aq2,  aq3,  … a, \; aq, \; aq^2, \; aq^3, \; \ldots a,aq,aq2,aq3,

∣q∣<1|q| < 1q<1,无穷等比数列的和为:
S=a+aq+aq2+aq3+⋯=∑i=0∞aqi=a1−q S = a + aq + aq^2 + aq^3 + \cdots = \sum_{i=0}^{\infty} aq^i = \frac{a}{1-q} S=a+aq+aq2+aq3+=i=0aqi=1qa

其中:

  • aaa 为首项
  • qqq 为公比(∣q∣<1|q|<1q<1

推导过程:

S=a+aq+aq2+aq3+⋯S = a + aq + aq^2 + aq^3 + \cdotsS=a+aq+aq2+aq3+

SSS 两边同时乘以 qqq
qS=aq+aq2+aq3+⋯ qS = aq + aq^2 + aq^3 + \cdots qS=aq+aq2+aq3+

两式相减:
S−qS=aS(1−q)=aS=a1−q S - qS = a \\ S(1-q) = a \\ S = \frac{a}{1-q} SqS=aS(1q)=aS=1qa


注意:

  • 只有当 ∣q∣<1|q|<1q<1 时,级数才收敛,有和公式。
  • ∣q∣≥1|q|\geq 1q1,级数发散,无和。

设无穷等比级数的部分和为 Sn=a+aq+aq2+⋯+aqn=a⋅1−qn+11−qS_n = a + aq + aq^2 + \cdots + aq^n = a \cdot \frac{1 - q^{n+1}}{1-q}Sn=a+aq+aq2++aqn=a1q1qn+1q≠1q \neq 1q=1

∣q∣<1|q|<1q<1qn+1→0q^{n+1} \to 0qn+10,所以 lim⁡n→∞Sn=a1−q\displaystyle \lim_{n\to\infty} S_n = \frac{a}{1-q}nlimSn=1qa,极限存在,级数收敛。

∣q∣>1|q|>1q>1∣qn+1∣→∞|q^{n+1}| \to \inftyqn+1SnS_nSn 不存在有限极限,级数发散。

q=1q=1q=1Sn=a(n+1)→∞S_n = a(n+1) \to \inftySn=a(n+1),级数发散。

q=−1q=-1q=1SnS_n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值