西电算法第一次上机习题讲解

算法第一次上机习题讲解

note:

  • 注意到其实近几年的考题,画递归树基本没有。2022也没有需要画递归树的题目
  • 较难的计算题,比如本文中指出的需要减去一个低阶项的题目,其实也不会考察,基本都是考察【主方法】,PPT上的题会就行。
    本人也觉得算法分析与设计课考察不应该重视这方面的数学考察,整张卷子最后的设计题才是应有的趋势
image-20220329113043199 image-20220329115230878

1.Key Point 1

常考题型判断题:

Θ , Ω , O \Theta,\Omega,O Θ,ΩO的表示,熟悉三者的定义:

  • Θ \Theta Θ表示渐近紧致界
  • Ω \Omega Ω表示渐近下界
  • 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时恒成立\\成立 根据定义:nlgncn2,当c>1时恒成立成立

2. Key Point 2

常考大题:

递归树求解递归式,考察方式有两种:

  • 指定方法:递归树、替换法
  • 任意方法

2.1 递归树的画法

T ( n ) = a T ( n / b ) + f ( n ) T(n) = aT(n/b) + f(n) T(n)=aT(n/b)+f(n)

在这里插入图片描述

递归树的表示:

  • 树根要标对
  • 最后叶子全写成T(1)。(若让证明的是O或者 θ \theta θ,那么也可以写成 O ( 1 ) O(1) O(1)或者 Θ ( 1 ) \Theta(1) Θ(1),但是写成T(1)肯定对)

扣分点:

  • 树高要写上: 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)

Example 4.4-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)lgn1)+O(nlg3)=1231(23)lgnn+O(nlg3)=O(nlg3)

  • 证明

常见错误解法——

image-20220330110951375

此题有一个小技巧,当直接证明无法得证时,减去一个低阶项,修改猜测的边界,这里是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)cnlg3cn

假设: 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)lg3c(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)+n3(c(n/2)lg3c(n/2))+n=3c(n/2)lg33c(n/2)+n=cnlg3((3c2)/2)ncnlg3cn上式当(3c2)/2c时成立,即c2时成立
最后一行是我们添加的,必须给出c的取值范围。


Example 4.3-2

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<log_2^7 = log_4^{49}\\ 故a<49,∴ a的最大整数取值是48 log4a<log27=log449a<49a的最大整数取值是48

2.2 真题

2.2.1 真题1

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)=cn1212lgn+1=2cn(nlg221)=2cn(n21)=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)kn2kn

假设 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)2k2n成立,有:
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)+cn4(k(2n)2k2n)+cn=kn2(2kc)nkn2kn上式当k2kc,kc时成立,即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)kn2kn

假设 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)2k(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)+cn4(k(2n)2k(2n))+cn=kn2(2kc)nkn2kn上式当k2kc,kc时成立,即T(n)=O(n2)


综上所述,当 k = c 时,有 T ( n ) = Θ ( n 2 ) T(n) = \Theta(n^2) T(n)=Θ(n2)

2.2.2 真题2

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.

(1)方法1:使用主定理的推论:

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)

(2)方法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(lgn0+lgnlg2+lgnlg22+...+lgnlgn)=n2(lgn(log2n+1)lg221+log2n)=n2(1+lgn)(lgn21lgn)=21n2(1+lgn)lgn=Θ(n2(lgn)2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blanche117

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值