算法设计复习纲要

情报

  1. 按阶递增方式排序函数,可以参考例子1.6(10分)
  2. 求解递推方程,递推公式的主定理和递归树方法要熟悉。(10分)
  3. 利用分治法设计算法(20分)或建立递推关系。
  4. 二分搜索法+蛮力法应用(15分)
  5. 利用动态规划法设计算法,可以参考例子3.4和习题3.1(15分)
  6. 贪心算法。可以参考例子4.2(15分)
  7. 关于算法基本概念的论述题(含题解和难解问题,回溯算法和分支限界算法)(15分)

细说

1.按阶递增方式排序函数,可以参考例子1.6(10分)

例1.6 下面给定一些函数,请把他们按照渐进的界从高到低的顺序进行排列.如果两个函数 f(n) 与 g(n) 的阶相等,则表示为 f(n) = Θ( g(n) )

vaVaVavaVaVaVaVa
log2nlog^2 nlog2n111n!n!n!n2nn1/logn(3/2)nlogn\sqrt{log n}logn(log n)logn
22n2^{2^n}22nnloglognn^{loglogn}nloglognn3n^3n3loglognloglognloglognnlognnlognnlognnnn2logn2^{logn}2lognlognlognlogn
log(n!)log(n!)log(n!)

解析:
指数函数的阶高于多项式函数的阶,而多项式函数的阶高于对数函数的阶

指数函数:f(n)=rnf(n) = r^nf(n)=rn

多项式函数:f(n)=a0+a1n+a2n2+...+adndf(n) = a_0 + a_1n+a_2n^2+...+a_dn^df(n)=a0+a1n+a2n2+...+adnd

对数函数:f(n)=logbnf(n) = log_bnf(n)=logbn

阶乘函数:f(n)=n!f(n) = n!f(n)=n!

  • n!=o(nn)n! = o(n^n)n!=o(nn)
  • n!=w(2n)n! = w(2^n)n!=w(2n)
  • log(n!)=Θ(nlogn)log(n!) = \Theta (nlogn)log(n!)=Θ(nlogn)

结果:

vaVaVavaVaVaVaVa
22n2^{2^n}22nn!n!n!n2nn2^nn2n32n{\frac {3}{2}}^n23n(logn)logn=nlognlogn(log n)^{logn} = n^{logn logn}(logn)logn=nlognlognn3n^3n3log(n!)=Θ(nlogn)log(n!) = \Theta(nlogn)log(n!)=Θ(nlogn)n=Θ(2logn)n = \Theta(2^{logn})n=Θ(2logn)
log2nlog^2nlog2nlognlognlognlogn\sqrt{logn}lognloglognloglognloglognn1logn=Θ1n^{\frac {1}{logn}} = \Theta 1nlogn1=Θ1

2. 求解递推方程,递推公式的主定理和递归树方法要熟悉。(10分)

定理1.6 主定理a≥1,b≥1a\geq 1,b\geq1a1,b1为常数,f(n)f(n)f(n)为函数,T(n)T(n)T(n)为非负整数,且
T(n)=aT(n/b)+f(n)T(n) = aT(n/b) + f(n)T(n)=aT(n/b)+f(n)
则有以下结果:
(1)若f(n)=O(nlogba−ε),ε>0,那么T(n)=Θ(nlogba)若f(n) = O (n^{log_ba-\varepsilon}),\varepsilon >0,那么T(n) = \Theta(n^{log_ba})f(n)=O(nlogbaε),ε>0,T(n)=Θ(nlogba)
(2) 若f(n)=Θ(nlogba),,那么T(n)=Θ(nlogbalogn)若f(n) = \Theta (n^{log_ba}),,那么T(n) = \Theta(n^{log_ba}logn)f(n)=Θ(nlogba),,T(n)=Θ(nlogbalogn)
(3) 若f(n)=Ω(nlogba+ε),ε>0,那么T(n)=Θ(f(n))若f(n) = \Omega (n^{log_ba+\varepsilon}),\varepsilon >0,那么T(n) = \Theta(f(n))f(n)=Ω(nlogba+ε),ε>0,T(n)=Θ(f(n))


例1.16:求解递推方程
T(n)=9T(n/3)+nT(n) = 9T(n/3) + n T(n)=9T(n/3)+n
解析:
由题可知,符合结构,此时f(n)f(n)f(n) = nnn,满足第一种情况,ε=1\varepsilon = 1ε=1
nlog39−εn^{log_39-\varepsilon}nlog39ε,则T(n)=Θ(n2)T(n) = \Theta(n^2)T(n)=Θ(n2)


例1.17:求解递推方程
T(n)=T(2n/3)+1T(n) = T(2n/3) + 1 T(n)=T(2n/3)+1
解析:
由题可知:nlog3/21=n0=1n^{log_{3/2}1} = n^0 =1nlog3/21=n0=1,满足f(n)=1f(n) = 1f(n)=1,f(n)=Θ(nlogba),f(n) = \Theta (n^{log_ba}),f(n)=Θ(nlogba),
则是T(n)=Θ(n0logn)=Θ(logn)T(n) = \Theta(n^{0}logn)=\Theta(logn)T(n)=Θ(n0logn)=Θ(logn)


例1.18:求解递推方程
T(n)=3T(n/4)+nlognT(n) = 3T(n/4) + nlognT(n)=3T(n/4)+nlogn

nlog43+εn^{log_4{3+\varepsilon}}nlog43+ε,满足第三种情况,nlogn=Ω(nlog43+ε)=Ω(nlog40.793+ε),则ε=0.2nlogn=\Omega(n^{log_43+\varepsilon})=\Omega(n^{log_40.793+\varepsilon}),则\varepsilon=0.2nlogn=Ω(nlog43+ε)=Ω(nlog40.793+ε)ε=0.2,
此外,要使af(n/b)≤cf(n)af(n/b)\leq cf(n)afn/bcf(n),得到
3n4logn4≤cnlogn\frac{3n}{4}log\frac{n}{4} \leq cnlogn43nlog4ncnlogn显然只要c≥3/4成立c \geq 3/4成立c3/4,因此有T(n)=Θ(f(n))=Θ(nlogn)T(n)= \Theta (f(n)) = \Theta (nlogn)T(n)=Θ(f(n))=Θ(nlogn)


例1.19 求解递推方程
T(n)=2T(n/2)+nlognT(n) = 2T(n/2) + nlognT(n)=2T(n/2)+nlogn
递归树解法:
n=3kn=3^kn=3k,


例1.20 求解
{T(n)=2T(n/2)+nT(1)=1. \left\{ \begin{matrix} T(n) = 2T(n/2) + n \\T(1)=1. \end{matrix}\right. {T(n)=2T(n/2)+nT(1)=1.


3.利用分治法设计算法(20分)或建立递推关系。


4. 二分搜索法+蛮力法应用(15分)


5. 利用动态规划法设计算法,可以参考例子3.4和习题3.1(15分)

6. 贪心算法。可以参考例子4.2(15分)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值