算法导论 思考题4-1

4-1(递归式例子)对下列每个递归式,给出T(n)的渐进上界和渐进下界。假定 n2n\leq2n≤2时T(n)时常数。给出尽量紧确的界,并验证其正确性。

不会主方法的先看以下这篇博客:
https://blog.csdn.net/qq_40512922/article/details/96932368

a. T(n)=2T(n/2)+n4T(n)=2T(n/2)+n^4T(n)=2T(n/2)+n4

证明:有a=2,b=2,nlogba=na=2,b=2,n^{log_ba}=na=2,b=2,nlogb​a=n,f(n)=f(n4)=Ω(nϵ+1)f(n)=f(n^4)=\Omega(n^{\epsilon+1})f(n)=f(n4)=Ω(nϵ+1),其中ϵ=3\epsilon=3ϵ=3。下面证明正则条件:c&lt;1,af(n/b)cf(n)\exists c&lt;1,af(n/b)\leq cf(n)∃c<1,af(n/b)≤cf(n)

2f(n/2)=n48cn42f(n/2)=\frac{n^4}{8} \leq cn^42f(n/2)=8n4​≤cn4

c=1/8c=1/8c=1/8时,显然成立。因此T(n)=Θ(f(n))=Θ(n4)T(n)=\Theta(f(n))=\Theta(n^4)T(n)=Θ(f(n))=Θ(n4)


b. T(n)=T(7n/10)+nT(n)=T(7n/10)+nT(n)=T(7n/10)+n

证明:有a=1,b=10/7,nlogba=1a=1,b=10/7,n^{log_ba}=1a=1,b=10/7,nlogb​a=1,f(n)=n=Ω(nϵ+0)f(n)=n=\Omega(n^{\epsilon+0})f(n)=n=Ω(nϵ+0),其中ϵ=1\epsilon=1ϵ=1,下面证明正则条件:c&lt;1,af(n/b)cf(n)\exists c&lt;1,af(n/b)\leq cf(n)∃c<1,af(n/b)≤cf(n)

f(7n/10)=7n/10cnf(7n/10)=7n/10 \leq cnf(7n/10)=7n/10≤cn

c=7/10c=7/10c=7/10时,显然成立。因此T(n)=Θ(f(n))=Θ(n)T(n)=\Theta(f(n))=\Theta(n)T(n)=Θ(f(n))=Θ(n)


c. T(n)=16T(n/4)+n2T(n)=16T(n/4)+n^2T(n)=16T(n/4)+n2

证明:有a=16,b=4,nlogba=n2a=16,b=4,n^{log_ba}=n^2a=16,b=4,nlogb​a=n2,f(n)=n2=Θ(n2)f(n)=n^2=\Theta(n^2)f(n)=n2=Θ(n2)。

因此,T(n)=Θ(nlgn)T(n)=\Theta(nlgn)T(n)=Θ(nlgn)。


d. T(n)=7T(n/3)+n2T(n)=7T(n/3)+n^2T(n)=7T(n/3)+n2

证明:有a=7,b=3,nlogban1.7a=7,b=3,n^{log_ba}\approx n^{1.7}a=7,b=3,nlogb​a≈n1.7,f(n)=n2=Ω(n1.7+ϵ)f(n)=n^2=\Omega(n^{1.7+\epsilon})f(n)=n2=Ω(n1.7+ϵ),其中ϵ=0.3\epsilon=0.3ϵ=0.3,下面证明正则条件。

7f(n/3)=7n29cn27f(n/3)=\frac{7n^2}{9} \leq cn^27f(n/3)=97n2​≤cn2

c=7/9c=7/9c=7/9时,显然成立。因此T(n)=Θ(f(n))=Θ(n2)T(n)=\Theta(f(n))=\Theta(n^2)T(n)=Θ(f(n))=Θ(n2)


e. T(n)=7T(n/2)+n2T(n)=7T(n/2)+n^2T(n)=7T(n/2)+n2

证明:有a=7,b=2,nlogban2.8a=7,b=2,n^{log_ba}\approx n^{2.8}a=7,b=2,nlogb​a≈n2.8,f(n)=n2=O(n2.8ϵ)f(n)=n^2=O(n^{2.8-\epsilon})f(n)=n2=O(n2.8−ϵ),其中ϵ=0.8\epsilon=0.8ϵ=0.8。

因此T(n)=Θ(nlogba)=Θ(nlog27)T(n)=\Theta(n^{log_ba})=\Theta(n^{log_27})T(n)=Θ(nlogb​a)=Θ(nlog2​7)


f. T(n)=2T(n/4)+nT(n)=2T(n/4)+\sqrt nT(n)=2T(n/4)+n

证明:有a=2,b=4,nlogba=n0.5a=2,b=4,n^{log_ba}=n^{0.5}a=2,b=4,nlogb​a=n0.5,f(n)=n0.5=Θ(n0.5)f(n)=n^{0.5}=\Theta(n^0.5)f(n)=n0.5=Θ(n0.5)。
因此,T(n)=Θ(f(n)lgn)=Θ(nlgn)T(n)=\Theta(f(n)lgn)=\Theta(\sqrt{n}lgn)T(n)=Θ(f(n)lgn)=Θ(n​lgn)


g. T(n)=T(n2)+n2T(n)=T(n-2)+n^2T(n)=T(n−2)+n2

证明:
T(n)=i=0n(2i)2=2n(n+1)(2n+1)3+T(0)=Θ(n3)T(n)=\sum_{i=0}^{n}{(2i)^2}=\frac{2n(n+1)(2n+1)}{3}+T(0) = \Theta(n^3)T(n)=i=0∑n​(2i)2=32n(n+1)(2n+1)​+T(0)=Θ(n3)


上一篇:csharp基础练习题:水煮蛋【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练


下一篇:Shashlik Cooking