算法复习题Word文档下载推荐.docx
- 文档编号:19021710
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:8
- 大小:30.12KB
算法复习题Word文档下载推荐.docx
《算法复习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《算法复习题Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
(a)f(n)+f(n)=Θ(g(n)+g(n))1212(b)f(n)+f(n)=Θ(min{g(n),g(n)})1212(c)f(n)+f(n)=Θ(max{g(n),g(n)})1212答:
(a)和(c)均正确,(b)错误。
(a)正确可以根据定义直接证得。
(b)错误可举反例。
例:
f2(n)=2n,f(n)=2n12下面证明(c)正确性.根据上题已经证明f(n)+f(n)=O(max{g(n),g(n)}),下面只需证明1212f(n)+f(n)=Ω(max{g(n),g(n)}),即存在正常数C,使得|f(n)+f(n)|≥121212C(max{g(n),g(n)})12根据f(n)=Θ(g(n))并且f(n)=Θ(g(n))得到,当n≥n时,存在正常11220数C、C、C、C1234C|g(n)|≤|f(n)|≤C|g(n)|11131C|g(n)|≤|f(n)|≤C|g(n)|22242不妨设max{g(n),g(n)}=g(n)121由于|f(n)+f(n)|≥||f(n)|-|f(n)||≥|C|g(n)|-C|g(n)||12121132=C|max{g(n),g(n)}|12取C≥|C-C|的正常数,由定义得13f(n)+f(n)=Ω(max{g(n),g(n)})1212
命题得证。
5.证明|「logn」|=O(n)2证明:
对于任意的正整数n,|「logn」|≤|log(n+1)|≤|n+1|≤2|n|22取n=1,C=2,根据定义知命题成立。
026.证明3n「logn」=O(n)2证明:
对于任意的正整数n,|3n「log2n」|≤|3n「logn」|≤3|n|22取n=1,C=3,根据定义知命题成立。
0n7.用数学归纳法证明:
当n≥1时,.in(n1)/2i1n证明:
当n=1时,,n(n+1)/2=1,命题成立;
i1i1n假设n=k-1时,成立;
(k≥2)in(n1)/2i1nn当n=k时,==k(k+1)/2in(n1)/2ik(k1)/2ki1i1综上可知,命题成立。
8.在下列情况下求解递归关系式g(n)n足够小T(n)=2T(n/2)f(n)否则当①n=2kg(n)=O
(1)和f(n)=O(n);
k②n=2g(n)=O
(1)和f(n)=O
(1)。
解:
T(n)=T(2kk-1kk-2k-1k)=2T
(2)+f
(2)=2(2T
(2)+f
(2))+f
(2)2k-21k-1k=2T
(2)+2f
(2)+f
(2)
=„„kk-1k-220k=2T
(1)+2f
(2)+2f
(2)+„+2f
(2)kk-1k-220k=2g(n)+2f
(2)+2f
(2)+„+2f
(2)①当g(n)=O
(1)和f(n)=O(n)时,不妨设g(n)=a,f(n)=bn,a,b为正常数。
则kkk-1k-220kkkT(n)=T
(2)=2a+2*2b+2*2b+„+2*2b=2a+kb2=an+bnlogn=O(nlogn)22②当g(n)=O
(1)和f(n)=O
(1)时,不妨设g(n)=c,f(n)=d,c,d为正常数。
则kkk-1k-20kkT(n)=T
(2)=c2+2d+2d+„+2d=c2+d(2-1)=(c+d)n-d=O(n)h
(1)19.求解递推关系式:
h(n)2h(n1)1解:
构造生成函数k2H(x)h
(1)xh
(2)xh(k)xk12H(x)h
(1)xh
(2)x求解H(x)232xH(x)2h
(1)x2h
(2)xx23(12x)H(x)xxx(x1)1xxH(x)(12x)(1x)分解成幂级数H(x)AB令则A=-1B=1H(x)1x12x11223H(x)(1xx)(12x(2x)(2x))1x12x
22nn(21)x(21)x(21)xkk(21)xk1所以()21nhnT1110.求解递推关系式:
T2T2n1n解:
22n1n1n1T2T22(T2)22T222T(22)3*22nn1n2n21F11F111.求解递推关系式:
2FFF(n2)n1n2n解:
以FF(x)为系数,构成生成函数n2F(x)FxFx1223xF(x)FxFx12234xF(x)FxFx122)23(1xxF(x)Fx(FF)x(FFF)xx121321xxABF(x)21xx15151515(x)(x)xx22221111A
(1)B
(1)22551222(()x()xF(x)51515其中22
1nnF()n5115nF()n25n12.分治法的三个步骤是什么?
给出使用SPARKS语言描述的分治策略抽象化控制。
答:
分治法的三个步骤是:
①分解②解决③合并用SPARKS语言描述的分治策略抽象化控制为:
ProcedureDANDC(p,q)Globaln,A(1:
n);
integerm,p,q;
IfSMALL(p,q)Thenreturn(G(p,q))Elsem←DIVIDE(p,q)Return(COMBINE(DANDC(p,m),DANDC(m+1,q)))EndifEndDANDC13.根据教材中所给出的二分检索策略,写一个二分检索的递归过程。
ProcedureBINSRCH(A,low,high,x,j)integermidiflow≤highthenmid←(lowhigh)/2ifx=A(mid)thenj←mid;
endififx>
A(mid)thenBINSRCH(A,mid+1,high,x,j);
endififx<
A(mid)thenBINSRCH(A,low,mid-1,x,j);
endif
elsej←0;
endifendBINSRCH14.作一个“三分”检索算法。
它首先检查n/3处的元素是否等于某个x的值,然后检查2n/3处的元素;
这样,或者找到x,或者把集合缩小到原来的1/3。
分析此算法在各种情况下的计算复杂度。
ProcedureThriSearch(A,x,n,j)integerlow,high,p1,p2low←1;
high←nwhilelow≤highdop1←;
p2←(2lowhigh)/3(low2high)/3case:
x=A(p1):
j←p1;
return:
x=A(p2):
j←p2;
x<
A(p1):
high←p1-1:
x>
A(p2):
low←p2+1:
else:
low←p1+1;
high←p2-1endcaserepeatj←0endThriSearchg(n)n足够小T(n)=T(n/3)f(n)否则g(n)=O
(1)f(n)=O
(1)
成功:
O
(1),O(log3(n)),O(log3(n))最好,平均,最坏失败:
O(log3(n)),O(log3(n)),O(log3(n))最好,平均,最坏15.对于含有n个内部结点的二元树,证明E=I+2n,其中,E,I分别为外部和内部路径长度。
证明:
数学归纳法①当n=1时,易知E=2,I=0,所以E=I+2n成立;
②假设n≤k(k>
0)时,E=I+2n成立;
③则当n=k+1时,不妨假定找到某个内结点x为叶结点(根据二元扩展树的定义,一定存在这样的结点x,且设该结点的层数为h),将结点x及其左右子结点(外结点)从原树中摘除,生成新二元扩展树。
此时新二元扩展树内部结点为k个,则满足E=I+2k,考察原树的外部路径长度为E=E-(h-1)kkk+1k+2h,内部路径长度为I=I+(h-1),所以E=I+2k+h+1=I+2k+2=k+1kk+1kk+1I+2(k+1),k+1综合①②③知命题成立。
16.以比较为基础(基本操作)的分类算法最坏情况的时间下界是什么?
答:
(nlogn)17对线性存储的有序表中元素的以比较为基础的检索算法最坏时间的下界是什么?
简要说明理由。
答:
log(n1)
对线性存储的有序表中元素的以比较为基础的检索算法的执行过程都可以用二元判定树来描述。
该树的每个内结点表示一次元素比较,因此对检索的最坏情况而言,该树最少含有n个不同的内结点。
检索算法最坏时间不大于该树中由根到一个叶子的最长路径长(树高)。
对有n个结点的二元树其最小树高为,所以对线性存储的有序表中元素的以比较为基础的检索算法最log(n1)坏时间的下界是。
log(n1)18.简要说明选择问题算法中二次取中值规则的作用。
通过选择划分元素V使其尽量靠近元素集合的中间可以得到一个最坏情况时间复杂度是O(n)的选择算法。
使用二次取中值规则可以选出满足要求的划分元素V。
19.给出斯特拉森矩阵乘法算法执行时间的递归关系式,并对其求解计算时间复杂度。
斯特拉森矩阵乘法算法执行时间的递归关系式为:
bn2T(n)=27T(n/2)ann2其中a和b是常数。
求解这个递归式,得22T(n)7[7T(n/4)a(n/2)]an227T(n/4)an(17/4)2227[7T(n/8)a(n/4)]an(17/4)k22k17T
(1)an[17/4(7/4)...(7/4)]k2k7an[(7/4)1]/(7/41)k(c1)7log7(c1)nlog7O(n)
2.81O(n)20.通过手算证明(4.9)和(4.10)式确实能得到C,C,C和C的正确值。
11122122P=(A+A)(B+B)T=(A+A)B11221122111222Q=(A+A)BU=(A-A)(B+B)21221121111112R=A(B-B)V=(A-A)(B+B)11122212222122S=A22(B21-B11)C=P+S-T+V11=(A+A)(B+B)+A(B-B)-(A+A)B+(A-A)(B+B)2211112222211111122212222122=AB+AB+AB+AB+AB111122*********22221-AB-AB-AB+AB+AB-AB-AB221111*********1122222212222=AB+AB11111221C=R+T12=AB-AB+AB+AB111211*********2=AB+AB11121222C=Q+S21=A21B11+A22B11+A22B21-A22B11=A21B11+A22B21C=P+R-Q+U22=(A+A)(B+B)+A(B+B)-(A+A)B+(A-A)(B+B)112211*********1221121111112=AB+AB+AB+AB+AB-AB-AB-AB+AB+AB111111*********2111211222111221121112112-AB-AB11111112=AB+AB2222211221.过程MERGESORT的最坏情况时间是O(nlogn),它的最好情况时间是什么?
能说归并分类的时间是Θ(nlogn)吗?
最好情况:
是对有序文件进行排序。
分析:
在此情况下归并的次数不会发生变化----log(n)次
归并中比较的次数会发生变化(两个长n/2序列归并)最坏情况两个序列交错大小,需要比较n-1次最好情况一个序列完全大于/小于另一个序列,比较n/2次差异都是线性的,不改变复杂性的阶因此最好情况也是nlogn,平均复杂度nlogn。
可以说归并分类的时间是Θ(nlogn)22.写一个“由底向上”的归并分类算法,从而取消对栈空间的利用。
见《数据结构》算法MPass(R,n,1ength.X)MP1[初始化]i1.MP2[合并相邻的两个长度为length的子文件]WHILEi≤n–2*length+1DO(Merge(R,i,i+length–l,i+2*length–1.X).ii+2*length).MP3[处理余留的长度小于2*length的子文件]IFi+length–1<
nTHENMerge(R,i,i+length–1,n.X)ELSEFORj=iTOnDOXj←Rj▌
算法MSort(R,n)//直接两路合并排序算法,X是辅助文件,其记录结构与R相同MS1[初始化]length1.MS2[交替合并]WHILElength<
nDO(MPass(R,n,length.X).length2*lengthiflength>
nthenFORj=1TOnDORj←XjelseMPass(X,n,length.R).length2*length)endif)▌23.什么是约束条件?
什么是可行解?
什么是目标函数?
什么是最优解?
并举例说明。
有一类问题,解由输入的某个子集组成,但是这个子集必须满足某些事先给定的条件。
那些必须满足的条件称为约束条件。
满足约束条件的子集称为可行解。
为了衡量可行解的优劣,事先也给出一定的标准,这些标准一般以函数形式给出,称为目标函数。
使目标函数取极值的可行解称为最优解。
26.什么是贪心方法?
给出使用SPARKS语言描述的贪心方法的抽象化控制。
对求取最优解问题,选取一种度量标准,将输入按度量标准排序,并按此序一次输入一个量。
如果这个输入和前面输入产生的在这种度量意义下的部分
最优解加在一起产生一个可行解,将其加入形成新的在这种度量意义下的部分最优解;
若不能构成一个可行解,则去掉该输入;
重复此过程直到将输入枚举完成。
这种能够得到某种度量意义下的最优解的分级处理方法称为贪心方法。
贪心方法的SPARKS语言描述的抽象化控制为:
ProcedureGREEDY(A,n)soltionfori1tondoxSELECT(A)ifFEASIBLE(soltion,x)thensoltionUNION(soltion,x)endifrepeatreturn(soltion)endGREEDY24.①求以下情况背包问题的最优解,n=7,m=15,(p,.....p)17=(10,5,15,7,6,18,3)和=(2,3,5,7,1,4,1)。
(w,.....w)17②将以上数据情况的背包问题记为I。
设FG(I)是物品按的非增次序pi输入时由GREEDY-KNAPSACK所生成的解,FO(I)是一个最优解。
问FO(I)/FG(I)是多少?
③当物品按的非降次序输入时,重复②的讨论。
wi解:
①按照/的非增序可得pwiipwpwpwpwppwp(/,/,/,/,/,/,/)ww22441155633767=(6,5,9/2,3,3,5/3,1)W的次序为(1,2,4,5,1,3,7),解为(1,1,1,1,1,2/3,0)所以最优解为:
(1,2/3,1,0,1,1,1)
FO(I)=166/3②按照Pi的非增次序输入时得到ppp(,,,,,,)=(18,15,10,7,6,5,3),pppp4216357对应的(www,,,,,,)=(4,5,2,7,1,3,1)wwww4213567解为(1,1,1,4/7,0,0,0)所以FG(I)的解为(1,0,1,4/7,0,1,0)FG(I)=47,所以FO(I)/FG(I)=166/141.③按照的非降次序输入时得到wiwww(,,,,,,)=(1,1,2,3,4,5,7)wwww2415376相应的(ppp,,,,,,)=(6,3,10,5,18,15,7)pppp2415763解为(1,1,1,1,1,4/5,0)则FW(I)的解为(1,1,4/5,0,1,1,1)FW(I)=54,所以FO(I)/FW(I)=83/81.25.(0/1背包问题)如果将5.3节讨论的背包问题修改成n极大化pxii1n约束条件xi=0或11≤i≤nwxMii1这种背包问题称为0/1背包问题。
它要求物品或者整件装入背包或者整件不装入。
求解此问题的一种贪心策略是:
按/的非增次序考虑这些物品,pwii只要正被考虑的物品能装进的就将其装入背包。
证明这种策略不一定能得到最优解。
当按照pw/的非增次序考虑物品存放背包时,如果所装入的物品ii恰能装满背包时,易证为最优解,否则未必是最优解。
可举例如下:
设n=3,M=6,(pwpw,,)=(3,4,8),(,,)pw221133pwpw=(1,2,5),按照/的非增序得到(/,/,/)=(3,2,1.6),pwpw221133ii则其解为(1,1,0),而事实上最优解是(1,0,1),问题得证。
ll26.假定要将长为,,„,的n个程序存入一盘磁带,程序i被检索的频l21n率是ii。
如果程序按,,„,的次序存放,则期望检索时间(ERT)是if21nijnn[(fl)]/fiiijkj1k1i1①证明按的非降次序存放程序不一定得到最小的ERT。
li②证明按的非增次序存放程序不一定得到最小的ERT。
fi③证明按/的非增次序来存放程序时ERT取最小值。
flii证明:
只需证明结论③是正确的即可,现证明如下:
假设,,„,按照/的非增次序存放,即/≥/≥„≥fllllflfliiiiiiiii12n1122/,则得到fliinnnERT=[+(+)+„+(++„+]/flfllflllfiiiiiiiiii11212n12ni1假设该问题的一个最优解是按照jj,,„,的顺序存放,并且其期望检j12n索式件是,我们只需证明≤,即可证明按照ERTERTERT/的非增次序存flii放得到的是最优解。
易知n=[+(+)+„+(++„+)]/fflflllllfERTjjjjjjjjjin1121212ni1从前向后考察最优解中的程序,不妨设程序是第一个与其相邻的程序jkjjj存在关系/≤/,则交换程序和程序,得到的期望检索flflk1kk1jjjjkkk1k1时间记为ERT-=-≤0flflERTERTjjjjkk1k1k≤ERTERT
显然也是最优解,将原来的最优解中所有这样类似于反序对的程序互ERT换位置,得到的解不比原来的最优解差,所以最终变换后得到的解也是最优解,而最终的解恰是程序按/的非增次序来存放得到的顺序。
fliilTlT27.假定要把长为,,„,的n个程序分布到两盘磁带和上,并且希望l2112n按照使最大检索时间取最小值的方式存放,即,如果存放在TT和上的程序集12合分别是A和B,那么就希望所选择的A和B使得max{,}取最小lliiiAiB值。
一种得到A和B的贪心方法如下:
开始将A和B都初始化为空,然后一次考虑一个程序,如果=min{,},则将当前正在考虑的那个程llliiiiAiAiB序分配给A,否则分配给B。
证明无论是按llll≤≤„≤或是按≥≥„≥l2211n的次序来考虑程序,这种方法都不能产生最优解。
ln证明:
按照ll≤≤„≤存放不会得到最优解,举例如下:
l21n3个程序(a,b,c)长度分别为(1,2,3),根据题中的贪心算法,产生的解是A={a,c}B={b},则max{,}=4,而事实上,最优解应为3,所lliiiAiB以得证.按照ll≥≥„≥的次序存放也不会得到最优解,举例如下:
l21n5个程序(a,b,c,d,e)长度分别为(10,9,8,6,4)根据题中的贪心算法,产生的解是A={a,d,e}B={b,c},则max{,}=20,而事实上,最优lliiiAiB解应为19,所以得证。
28.①当n=7,=(3,5,20,18,1,6,30)和=(1,3,4,3,2,1,2)(p,.....p)(d,.....d)1717时,算法5.4所生成的解是什么?
②证明即使作业有不同的处理时间定理5.3亦真。
这里,假定作业I的效益>
0,要用的处理时间>
0,限期≥.ptdtiiii解:
①根据ppp的非增排序得到(,,,,,,pppp421736i)=(30,20,18,6,5,3,1),对应的期限为(2,4,3,1,3,1,2),按照算法5.4生p5成的解为:
a.J
(1)=7b.J
(1)=7,J
(2)=3
c.J
(1)=7,J
(2)=4,J(3)=3d.J
(1)=6,J
(2)=7,J(3)=4,J(4)=3;
②证明:
显然即使>
0(≥),如果J中的作业可以按照的次序而又tdtiiik不违反任何一个期限来处理,即对次序中的任一个作业k,应满足,t≥djkj1则J就是一个可行解。
下面证明如果J是可行解,则使得J中的作业可以按照,,„,排dddiii12n列的序列处理而又不违反任何一个期限。
因为J是可行解,则必存在=rr„,使得对任意的,都有≥drr21knkk,我们设是按照t≤≤,„,≤排列的作业序列。
假设,那么dddjiii12nj1令a是使的最小下标,设=,显然b>
a,在中将与相交换,因irirrrababaa为≤,显然和可以按期完成作业。
rrddbarrba还要证明和之间的作业也能按期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 复习题