note:
- 注意到其实近几年的考题,画递归树基本没有。2022也没有需要画递归树的题目
- 较难的计算题,比如本文中指出的需要减去一个低阶项的题目,其实也不会考察,基本都是考察【主方法】,PPT上的题会就行。
本人也觉得算法分析与设计课考察不应该重视这方面的数学考察,整张卷子最后的设计题才是应有的趋势
常考题型判断题:
Θ , Ω , O \Theta,\Omega,O Θ,Ω,O的表示,熟悉三者的定义:
真题Example:
判断
n
l
g
n
=
O
(
n
2
)
nlgn = O(n^2)
nlgn=O(n2)是否正确——考察O的定义
根据定义
:
n
l
g
n
≤
c
n
2
,当
c
>
1
时恒成立
成立
根据定义:nlgn\leq cn^2,当c>1时恒成立\\成立
根据定义:nlgn≤cn2,当c>1时恒成立成立
常考大题:
递归树求解递归式,考察方式有两种:
T ( n ) = a T ( n / b ) + f ( n ) T(n) = aT(n/b) + f(n) T(n)=aT(n/b)+f(n)
递归树的表示:
扣分点:
树高要写上: l o g b n log_b^n logbn,可以直接写成 l g n lg^n lgn
最后一层的开销:叶子数目乘以T(1)
l
e
a
v
e
s
=
a
h
=
a
l
o
g
b
n
=
n
l
o
g
b
a
最后一层的花销:
n
l
o
g
b
a
T
(
1
)
leaves = a^h = a^{log_b^n} = n^{log_b^a}\\ 最后一层的花销:n^{log_b^a} T(1)
leaves=ah=alogbn=nlogba最后一层的花销:nlogbaT(1)
确定上界
(
1
+
3
2
+
.
.
.
+
(
3
2
)
l
g
n
−
1
)
+
O
(
n
l
g
3
)
=
1
−
(
3
2
)
l
g
n
1
−
3
2
n
+
O
(
n
l
g
3
)
=
O
(
n
l
g
3
)
(1+\frac{3}{2}+...+(\frac{3}{2})^{lg^n-1}) +O(n^{lg3})\\ =\frac{1-(\frac{3}{2})^{lgn}}{1-\frac{3}{2}}n + O(n^{lg3})\\=O(n^{lg^3})
(1+23+...+(23)lgn−1)+O(nlg3)=1−231−(23)lgnn+O(nlg3)=O(nlg3)
证明
常见错误解法——
此题有一个小技巧,当直接证明无法得证时,减去一个低阶项,修改猜测的边界,这里是cn
预证明: T ( n ) = O ( n l g 3 ) T(n) = O(n^{lg^3}) T(n)=O(nlg3),即证 T ( n ) ≤ c n l g 3 − c n T(n)\leq cn^{lg^3}-cn T(n)≤cnlg3−cn
假设:
T
(
n
/
2
)
≤
c
(
n
/
2
)
l
g
3
−
c
(
n
/
2
)
T(n/2)\leq c(n/2)^{lg^3} - c(n/2)
T(n/2)≤c(n/2)lg3−c(n/2)成立,有
T
(
n
)
=
3
T
(
n
/
2
)
+
n
≤
3
(
c
(
n
/
2
)
l
g
3
−
c
(
n
/
2
)
)
+
n
=
3
c
(
n
/
2
)
l
g
3
−
3
c
(
n
/
2
)
+
n
=
c
n
l
g
3
−
(
(
3
c
−
2
)
/
2
)
n
≤
c
n
l
g
3
−
c
n
上式当
(
3
c
−
2
)
/
2
≥
c
时成立,即
c
≥
2
时成立
T(n) = 3T(n/2) + n \\\leq 3(c(n/2)^{lg^3} - c(n/2)) + n\\=3c(n/2)^{lg^3}-3c(n/2) + n \\ =cn^{lg^3} -((3c-2)/2)n\\\leq cn^{lg^3} - cn\\ 上式当(3c-2)/2\geq c时成立,即c\geq 2时成立
T(n)=3T(n/2)+n≤3(c(n/2)lg3−c(n/2))+n=3c(n/2)lg3−3c(n/2)+n=cnlg3−((3c−2)/2)n≤cnlg3−cn上式当(3c−2)/2≥c时成立,即c≥2时成立
最后一行是我们添加的,必须给出c的取值范围。
The recurrence
T
(
n
)
=
7
T
(
n
/
2
)
+
n
2
T(n)= 7T(n/2)+ n^2
T(n)=7T(n/2)+n2 describes the runing time of an algorithm A. A competing algorithm A has a running time
of
T
′
(
m
)
=
a
T
′
(
n
/
4
)
+
n
2
T'(m)=aT'(n/4)+n^2
T′(m)=aT′(n/4)+n2. What is the largest integer value for a such that A’ is asymptotically faster than A?
依题意有:
l
o
g
4
a
<
l
o
g
2
7
=
l
o
g
4
49
故
a
<
49
,
∴
a
的最大整数取值是
48
log_4^a
Draw the recurion tree for T ( n ) = 4 T ( ⌊ n / 2 ⌋ ) + c n T(n) = 4T(\lfloor n/2 \rfloor) + cn T(n)=4T(⌊n/2⌋)+cn, where c is a constant, and provide a tight asympotic bound on its solution. Verify your bound by the substitution method.
提示:向下取整不需要画出,a = 1时不用分支
首先画出递归树,以得到一个较好的猜测:
总开销 = c n ( 1 + 2 + 2 2 + . . . + 2 l g n ) = c n ⋅ 1 − 2 l g n + 1 1 − 2 = 2 c n ( n l g 2 − 1 2 ) = 2 c n ( n − 1 2 ) = O ( n 2 ) = Ω ( n 2 ) 总开销= cn(1 + 2 +2^2+...+2^{lgn}) \\=cn·\frac{1-2^{lgn+1}}{1-2} =2cn(n^{lg2} - \frac{1}{2})\\=2cn(n-\frac{1}{2}) = O(n^2) = \Omega(n^2) 总开销=cn(1+2+22+...+2lgn)=cn⋅1−21−2lgn+1=2cn(nlg2−21)=2cn(n−21)=O(n2)=Ω(n2)
先证明 T ( n ) = O ( n 2 ) T(n) = O(n^2) T(n)=O(n2),即证明 T ( n ) ≤ k n 2 − k n T(n)\leq k n^2 - kn T(n)≤kn2−kn
假设
T
(
n
/
2
)
≤
k
(
n
2
)
2
−
k
n
2
T(n/2)\leq k(\frac{n}{2})^2 - k\frac{n}{2}
T(n/2)≤k(2n)2−k2n成立,有:
T
(
n
)
=
4
T
(
n
/
2
)
+
c
n
≤
4
(
k
(
n
2
)
2
−
k
n
2
)
+
c
n
=
k
n
2
−
(
2
k
−
c
)
n
≤
k
n
2
−
k
n
上式当
k
≤
2
k
−
c
,
即
k
≥
c
时成立,即
T
(
n
)
=
O
(
n
2
)
T(n) = 4T(n/2) + cn \\\leq 4(k(\frac{n}{2})^2 - k\frac{n}{2}) + cn\\=kn^2-(2k-c)n\\\leq kn^2 -kn\\上式当k\leq 2k-c,即k\geq c时成立,即T(n) = O(n^2)
T(n)=4T(n/2)+cn≤4(k(2n)2−k2n)+cn=kn2−(2k−c)n≤kn2−kn上式当k≤2k−c,即k≥c时成立,即T(n)=O(n2)
再证明 T ( n ) = Ω ( n 2 ) T(n) = \Omega(n^2) T(n)=Ω(n2),即证明 T ( n ) ≥ k n 2 − k n T(n)\geq k n^2 - kn T(n)≥kn2−kn
假设
T
(
n
/
2
)
≥
k
(
n
2
)
2
−
k
(
n
2
)
T(n/2)\geq k(\frac{n}{2})^2 - k(\frac{n}{2})
T(n/2)≥k(2n)2−k(2n)成立,有:
T
(
n
)
=
4
T
(
n
/
2
)
+
c
n
≥
4
(
k
(
n
2
)
2
−
k
(
n
2
)
)
+
c
n
=
k
n
2
−
(
2
k
−
c
)
n
≥
k
n
2
−
k
n
上式当
k
≥
2
k
−
c
,
即
k
≤
c
时成立,即
T
(
n
)
=
O
(
n
2
)
T(n) = 4T(n/2) + cn \\\geq 4(k(\frac{n}{2})^2- k (\frac{n}{2})) + cn\\=kn^2-(2k-c)n\\\geq kn^2 -kn\\上式当k\geq 2k-c,即k\leq c时成立,即T(n) = O(n^2)
T(n)=4T(n/2)+cn≥4(k(2n)2−k(2n))+cn=kn2−(2k−c)n≥kn2−kn上式当k≥2k−c,即k≤c时成立,即T(n)=O(n2)
综上所述,当 k = c 时,有 T ( n ) = Θ ( n 2 ) T(n) = \Theta(n^2) T(n)=Θ(n2)
Given the following recurrence: T ( n ) = 4 T ( n / 2 ) + n 2 l g n T(n) = 4T(n/2) +n^2lgn T(n)=4T(n/2)+n2lgn. Given an asymptotic upper bound for this recurrence.
f ( n ) = n 2 l g n , n l o g 2 4 = n 2 f ( n ) = Θ ( n 2 l g k n ) ,其中 k = 1 所以 T ( n ) = Θ ( n 2 l g 2 n ) = Θ ( ( n l g n ) 2 ) f(n) = n^2lgn,\quad n^{log_2^4} = n^2\\ f(n) = \Theta(n^2lg^kn),其中k = 1\\ 所以T(n) = \Theta(n^2lg^2n) = \Theta((nlgn)^2) f(n)=n2lgn,nlog24=n2f(n)=Θ(n2lgkn),其中k=1所以T(n)=Θ(n2lg2n)=Θ((nlgn)2)
n 2 ( l g n + l g n 2 + l g n 2 2 + . . . + l g n n ) = n 2 ( l g n − 0 + l g n − l g 2 + l g n − l g 2 2 + . . . + l g n − l g n ) = n 2 ( l g n ( l o g 2 n + 1 ) − l g 2 1 + l o g 2 n 2 ) = n 2 ( 1 + l g n ) ( l g n − 1 2 l g n ) = 1 2 n 2 ( 1 + l g n ) l g n = Θ ( n 2 ( l g n ) 2 ) n^2(lgn+lg\frac{n}{2} + lg\frac{n}{2^2} + ... +lg\frac{n}{n})=n^2(lgn-0+lgn-lg2+lgn-lg2^2 +...+lgn-lgn)\\ =n^2(lgn(log_2^n+1)-lg2^{\frac{1+log_2^n}{2}}) = n^2(1+lgn)(lgn-\frac{1}{2}lgn) = \frac{1}{2}n^2(1+lgn)lgn=\Theta(n^2(lgn)^2) n2(lgn+lg2n+lg22n+...+lgnn)=n2(lgn−0+lgn−lg2+lgn−lg22+...+lgn−lgn)=n2(lgn(log2n+1)−lg221+log2n)=n2(1+lgn)(lgn−21lgn)=21n2(1+lgn)lgn=Θ(n2(lgn)2)