ImageVerifierCode 换一换
格式:DOC , 页数:48 ,大小:1.80MB ,
资源ID:2469606      下载积分:3 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2469606.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(算法设计与分析第二版课后习题解答.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

算法设计与分析第二版课后习题解答.doc

1、(完整word)算法设计与分析第二版课后习题解答算法设计与分析基础课后练习答案习题1.1 4。设计一个计算的算法,n是任意正整数.除了赋值和比较运算,该算法只能用到基本的四则运算操作。算法求 /输入:一个正整数n2 /输出:.step1:a=1; step2:若aan 转step 3,否则输出a; step3:a=a+1转step 2;5. a用欧几里德算法求gcd(31415,14142)。 b。 用欧几里德算法求gcd(31415,14142),比检查minm,n和gcd(m,n)间连续整数的算法快多少倍?请估算一下。a。 gcd(31415, 14142) = gcd(14142, 31

2、31) = gcd(3131, 1618) =gcd(1618, 1513) = gcd(1513, 105) = gcd(1513, 105) = gcd(105, 43) =gcd(43, 19) = gcd(19, 5) = gcd(5, 4) = gcd(4, 1) = gcd(1, 0) = 1.b。有a可知计算gcd(31415,14142)欧几里德算法做了11次除法。连续整数检测算法在14142每次迭代过程中或者做了一次除法,或者两次除法,因此这个算法做除法的次数鉴于114142 和 214142之间,所以欧几里德算法比此算法快114142/11 1300 与 214142/11

3、 2600 倍之间.6.证明等式gcd(m,n)=gcd(n,m mod n)对每一对正整数m,n都成立。Hint:根据除法的定义不难证明: l 如果d整除u和v, 那么d一定能整除uv; l 如果d整除u,那么d也能够整除u的任何整数倍ku。对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也一定能整除m=r+qn和n.数对(m,n)和(n,r)具有相同的公约数的有限非空集,其中也包括了最大公约数。故gcd(m,n)=gcd(n,r)7.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程

4、中,上述情况最多会发生几次?Hint:对于任何形如0=n0, c0 for all n=n0, c1=c0即:f(n)(g(n)又设f(n)(g(n),则有: for all n=n0,c0 for all n=n0,c1=c/0即:f(n)(g(n))8证明本节定理对于下列符号也成立:a。符号b.符号证明:a。we need to proof that if t1(n)(g1(n) and t2(n)(g2(n), then t1(n)+ t2(n)(maxg1(n), g2(n))。由 t1(n)(g1(n), t1(n)c1g1(n) for all n=n1, where c10由 t

5、2(n)(g2(n)), T2(n)c2g2(n) for all n=n2, where c20那么,取c=minc1,c2,当n=maxn1,n2时: t1(n)+ t2(n)c1g1(n)+ c2g2(n) c g1(n)+c g2(n)cg1(n)+ g2(n) cmax g1(n), g2(n)所以以命题成立。b. t1(n)+t2(n) (证明:由大的定义知,必须确定常数c1、c2和n0,使得对于所有n=n0,有:由t1(n)(g1(n))知,存在非负整数a1,a2和n1使: a1g1(n)=t1(n)=a2*g1(n)-(1)由t2(n)(g2(n))知,存在非负整数b1,b2和

6、n2使: b1*g2(n)=t2(n)=b2g2(n)-(2)(1)+(2):a1*g1(n)+ b1g2(n)=t1(n)+t2(n) = a2g1(n)+ b2*g2(n)令c1=min(a1,b1),c2=max(a2,b2),则 C1*(g1+g2)= t1(n)+t2(n) =c2(g1+g2)-(3)不失一般性假设max(g1(n),g2(n))=g1(n).显然,g1(n)+g2(n)2g1(n),即g1+g22max(g1,g2)又g2(n)0,g1(n)+g2(n)g1(n),即g1+g2max(g1,g2)。则(3)式转换为:C1*max(g1,g2) =n0时上述不等式成

7、立。证毕。习题2.22. 请用的非正式定义来判断下列断言是真还是假.a. n(n + 1)/2 O(n3) b。 n(n + 1)/2 O(n2)c. n(n + 1)/2 (n3) d. n(n + 1)/2 (n)答:c假,其它真。5。按照下列函数的增长次数对它们进行排列(按照从低到高的顺序) (n2)!, 5lg(n+100)10, 22n, 0.001n4+3n3+1, ln2 n, , 3n。答:习题2。31. 计算下列求和表达式的值。答:3. 考虑下面的算法.a 该算法求的是什么?b 它的基本操作是什么?c 该基本操作执行了多少次?d 该算法的效率类型是什么?e 对该算法进行改进,

8、或者设计一个更好的算法,然后指出它们的效率类型。如果做不到这一点,请试着证明这是不可能做到的。9.证明下面的公式:可以使用数学归纳法,也可以像10岁的高斯一样,用洞察力来解决该问题。这个小学生长大以后成为有史以来最伟大的数学家之一.数学归纳法:高斯的方法:习题2.41. 解下列递推关系 (做a,b)当n1时a。 解:当n1时b.解:2. 对于计算n!的递归算法F(n),建立其递归调用次数的递推关系并求解.解:3. 考虑下列递归算法,该算法用来计算前n个立方的和:S(n)=13+23+n3.算法S(n) /输入:正整数n /输出:前n个立方的和if n=1 return 1else return

9、 S(n1)+n*n*na。 建立该算法的基本操作次数的递推关系并求解b。 如果将这个算法和直截了当的非递归算法比,你做何评价?解:7. a. 请基于公式2n=2n1+2n1,设计一个递归算法.当n是任意非负整数的时候,该算法能够计算2n的值。 b。 建立该算法所做的加法运算次数的递推关系并求解 c。 为该算法构造一棵递归调用树,然后计算它所做的递归调用次数。 d. 对于该问题的求解来说,这是一个好的算法吗?解:a。算法power(n)/基于公式2n=2n1+2n-1,计算2n/输入:非负整数n/输出: 2n的值If n=0 return 1Else return power(n1)+ pow

10、er(n1)c.8。考虑下面的算法 算法 Min1(A0.。n1) /输入:包含n个实数的数组A0。.n-1 If n=1 return A0 Else tempMin1(A0.n-2) If tempAn1 return temp Else return An1a。该算法计算的是什么?b.建立该算法所做的基本操作次数的递推关系并求解解:a。计算的给定数组的最小值for all n1n=1b。9.考虑用于解决第8题问题的另一个算法,该算法递归地将数组分成两半.我们将它称为Min2(A0。n-1)算法 Min(Ar。.l) If l=r return Al Else temp1Min2(Al.(

11、l+r)/2) Temp2Min2(Al.(l+r)/2+1.。r) If temp1temp2 return temp1 Else return temp2a。建立该算法所做的的操作次数的递推关系并求解b。算法Min1和Min2哪个更快?有其他更好的算法吗?解:a。习题2.53.java的基本数据类型int和long的最大值分别是当n最小为多少的时候,第n个斐波那契数能够使下面的类型溢出。a。int类型 b.long类型4。爬梯子 假设每一步可以爬一个或两格梯子,爬一部n格梯子一共可以用几种的不同方法?(例如,一部3格的梯子可以用三种不同的方法爬:1-11,1-2和2-1)。6.改进算法Fi

12、b,使它只需要(1)的额外空间.7.证明等式:答:数学归纳法证明习题2.6 1. 考虑下面的排序算法,其中插入了一个计数器来对关键比较次数进行计数.算法SortAnalysis(A0.。n-1)/input:包含n个可排序元素的一个数组A0.n-1/output:所做的关键比较的总次数count0for i1 to n1 do vAi ji-1 while j0 and Ajv do countcount+1 Aj+1Aj jj+1 Aj+1vreturn count比较计数器是否插在了正确的位置?如果不对,请改正.解:应改为:算法SortAnalysis(A0。n1)/input:包含n个可

13、排序元素的一个数组A0.n1/output:所做的关键比较的总次数count0for i1 to n-1 do vAi ji-1 while j0 and Ajv do countcount+1 Aj+1Aj jj+1 if j=0 count=count+1 Aj+1vreturn count习题3。14. a。设计一个蛮力算法,对于给定的x0,计算下面多项式的值:P(x)=anxn+an-1xn1+a1x+a0并确定该算法的最差效率类型。b.如果你设计的算法属于(n2),请你为该算法设计一个线性的算法.C.对于该问题来说,能不能设计一个比线性效率还要好的算法呢?解:a. Algorithm

14、s BruteForcePolynomialEvaluation(P0.n,x)/由高幂到低幂用蛮力法计算多项式p在给定点x的值/输入:P0。.n是多项式按低幂到高幂的常系数,以及定值x/输出: 多项式p在给定点x的值p=0。0for i=n to 0 do power=1 for j=1 to i do power=powerx p=p+Pipowerreturn p算法效率分析:基本操作:两个数相乘,且M(n)仅依赖于多项式的阶nb. tha above algorithms is very inefficient, because we recompute powers of x aga

15、in and again as if there were no relationship among them。In fact ,we can move from the lowest term to the highest and compute xi by using xi-1.Algorithms BetterBruteForcePolynomialEvaluation(P0。n,x)/由高幂到低幂用蛮力法计算多项式p在给定点x的值/输入:P0。.n是多项式按低幂到高幂的常系数,以及定值x/输出: 多项式p在给定点x的值 P=P0 power=1 for i1 to n do powe

16、rpower*x pp+Pi*power return p基本操作乘法运算总次数M(n):c.不行。因为计算任意一个多项式在任意点x的值,都必须处理它的n+1 个系数。例如: (x=1,p(x)=an+an1+。.+a1+a0,至少要做n次加法运算) 5。应用选择排序对序列E,X,A,M,P,L,E按照字母顺序排序。6.选择排序是稳定的吗?(不稳定)7。用链表实现选择排序的话,能不能获得和数组版相同的(n2)效率?Yes.Both operationfinding the smallest element and swapping it can be done as efficiently w

17、ith the linked list as with an array。 8。应用冒泡排序对序列E,X,A,M,P,L,E按照字母顺序排序.9。a。请证明,如果对列表比较一遍之后没有交换元素的位置,那么这个表已经排好序了,算法可以停止了。b。结合所做的改进,为冒泡排序写一段伪代码。c。请证明改进的算法最差效率也是平方级的.Hints:a. 第i趟冒泡可以表示为:如果没有发生交换位置,那么:b.Algorithms BetterBubblesort(A0.n1)/用改进的冒泡算法对数组A0.。n1排序/输入:数组A0.。n-1/输出:升序排列的数组A0。n-1countn1 /进行比较的相邻元

18、素对的数目flagtrue /交换标志while flag do flagfalse for i=0 to count-1 do if Ai+1Ai swap(Ai,Ai+1) flagtrue countcount-1c最差情况是数组是严格递减的,那么此时改进的冒泡排序会蜕化为原来的冒泡排序.10.冒泡排序是稳定的吗?(稳定)习题3。21. 对限位器版的顺序查找算法的比较次数:a. 在最差情况下b. 在平均情况下.假设成功查找的概率是p(0=p1的情况都成立(n是偶数或奇数)d.比较的次数相同,但蛮力算法不用递归调用。2、a。为一个分治算法编写伪代码,该算法同时求出一个n元数组的最大元素和最

19、小元素的值。b.请拿该算法与解同样问题的蛮力算法做一个比较。c.请拿该算法与解同样问题的蛮力算法做一个比较.解答: a.同时求出最大值和最小值,只需要将原数组一分为二,再使用相同的方法找出这两个部分中的最大值和最小值,然后经过比较就可以得到整个问题的最大值和最小值。 算法 MaxMin(Al.r,Max,Min) /该算法利用分治技术得到数组A中的最大值和最小值/输入:数值数组Al.r/输出:最大值Max和最小值Minif(r=l) MaxAl;MinAl; /只有一个元素时elseif rl=1 /有两个元素时if AlArMaxAr; MinAlelseMaxAl; MinArelse /

20、rl1MaxMin(Al,(l+r)/2,Max1,Min1); /递归解决前一部分MaxMin(A(l+r/)2.r,Max2,Min2); /递归解决后一部分if Max1Max2 Max= Max2 /从两部分的两个最大值中选择大值if Min22C(1)=0, C(2)=1C(n)=C(2k)=2C(2k-1)+2=22C(2k-2)+2+2=22C(2k2)+22+2=222C(2k-3)+2+22+2=23C(2k-3)+23+22+2。.。=2k1C(2)+2k-1+2k2+。+2 /C(2)=1=2k-1+2k-1+2k-2+。.+2 /后面部分为等比数列求和=2k1+2k2

21、/2(k1)=n/2,2k=n=n/2+n-2=3n/22b.蛮力法的算法如下: 算法 simpleMaxMin(Al.。r)/用蛮力法得到数组A的最大值和最小值/输入:数值数组Al。r/输出:最大值Max和最小值MinMax=Min=Al;for i=l+1 to r do if AiMax MaxAi;else if AiMin MinAireturn Max,Min时间复杂度t(n)=2(n-1)算法MaxMin的时间复杂度为3n/2-2,simpleMaxMin的时间复杂度为2n-2,都属于(n),但比较一下发现,MaxMin的速度要比simpleMaxMin的快一些。 6。应用合并排

22、序对序列E,X,A,M,P,L,E按字母顺序排序。3218.a.对合并排序的最差键值比较次数的递推关系式求解。(for n=2k)b.建立合并排序的最优键值比较次数的递推关系式求解.(for n=2k)c.对于4.1节给出的合并排序算法,建立它的键值移动次数的递推关系式。考虑了该算法的键值移动次数之后,是否会影响它的效率类型呢?解:a. 递推关系式见4.1节.b. 最好情况(列表升序或降序)下:Cbest(n)=2Cbest(n/2)+n/2 for n1 (n=2k)Cbest(1)=0c. 键值比较次数M(n)M(n)=2M(n)+2n for n1M(1)=0习题4.21。应用快速排序对

23、序列E,X,A,M,P,L,E按字母顺序排序4. 请举一个n个元素数组的例子,使得我们有必须对它使用本节提到的”限位器”。限位器的值应是多少年来?为什么一个限位器就能满足所有的输入呢? Hints: With the pivot being the leftmost element, the left-toright scan will get out of bounds if and only if the pivot is larger than the other elements。Appending a sentinel(限位器) of value equal A0(or larger

24、 than A0) after the arrays last element , the quicksort algorithms will stop the index of the left-toright scan of A0.n-1 from going beyond position n.8。设计一个算法对n个实数组成的数组进行重新排列,使得其中所有的负元素都位于正元素之前。这个算法需要兼顾空间和时间效率. Algorithms netbeforepos(A0。.n1)/使所有负元素位于正元素之前/输入:实数组A0。.n-1/输出:所有负元素位于于正元素之前的实数组A0.。n1A1

25、-1; An1 /限位器i0; jn1While ij do While Ai0 do ii+1while Aj0 do jj1swap Aiand Ajswap Aiand Aj /undo the last swap当全是非负数或全是非正数时需要限位器。习题4.32. 当n=2k时,用反向替换法求下面的递推方程:当n1时, Cw(n)=Cw(n/2)+1, Cw(1)=1(略)4。如果对于一个100000个元素的数组成功查找的话,使用折半查找比顺序查找要快多少倍?6 如何将折半查找应用于范围查找?范围查找就是对于一个有序数组,找出位于给定值L、U之间(包含L、U)的所有元素,L=U。该算法

26、的最差效率是多少?Hints:Step1: 检查A0L,An-1U是否成立,若不成立,则无解。否则进入step 2Step2:在数组A中用二分查找法查找值L,如果查找成功,则返回数组下标m,否则l二分查找结束时的值。Step3: 在数组A中用二分查找法查找值U,如果查找成功,则返回数组下标m,否则r为二分查找结束时的值。最后,结果就是在数组序号范围在low和high(包含low,high)之间的范围.(low和high是step2和step3的值。)7 为折半查找写递归的伪代码。Algorithms BSR(Ao。.n-1,K)/折半查找递归算法/有序子数组Al.。r和查找键值K/查找成功则输

27、出其下标,否则输出-1if lr return -1else m (l+r)/2if K=Am return melse if K Am return BSR(Al。.m-1,K)else if K Am return BSR(Am+1,r,K)8.设计一个只使用两路比较的折半查找算法,即只用和=, 或者只用和=。Algorithms TwoWaysBinarySearch(Ao。n-1,K)/二路比较的折半查找/有序子数组Al.。r和查找键值K/查找成功则输出其下标,否则输出1l0, rn1while lr do m (l+r)/2if KAmr melse l m+1if K=Al ret

28、urn lelse return 1习题4。53. 用课文中介绍的分治算法来计算2101*1130。习题4.61.a.为最近对问题的一维版本设计一个直接基于分治技术的算法,并确定它的效率类型b。对于这个问题,它是一个好算法吗?解:a. Algorithms ClosestNumber(Al。.r)/分治计算最近对问题的一维版本/输入:升序排列的实数子数组Al。.r/输出:最近数对的距离If r=l return Else if rl=1 return ArAl Else return minClosestNumber(Al (l+r)/2 ), ClosestNumber(A (l+r)/2

29、.。r) A (l+r)/2 +1A (l+r)/2 设递归的时间效率为T(n):对n=2k, 则: T(n)=2T(n/2)+c利用主定理求解.T(n)=(n)2.(题略)习题5.14. 应用插入排序对序列E,X,A,M,P,L,E按照字母顺序排序。答:插入排序过程如下:习题5.42. 使用下面的方法生成1,2,3,4的全部排列:a. 从底向上的最小变化算法。b. Johnson-Trotter算法。c. 字典序算法.答:从底向上的最小变化算法过程如下:bJohnsonTrotter算法实现如下: c 。字典序算法实现如下: 9。 a。当n=4时,用减一技术生成它的格雷码. 答:用减一技术生

30、成格雷码: n=1 01; n=2 00011110;(从左到右,最左边填0,从右到左,最左边填1) n=3 000001011010110111101100 n=4生成的格雷码:习题5.53. 应用俄式乘法来计算4647。答:习题5。66.a。为了使大于6,n的最小值是多少?答:习题6。41.a。用自底向上算法为列表1,8,6,5,3,7,4构造一个堆.习题6。5 4.a.应用霍纳法则计算这个多项式:b. 利用霍纳法则的运算结果,求p(x)除以x+2之后的商和余数。6.a。应用从左到右二进制算法计算a17。7.应用从右到左二进制幂算法计算a17.习题7.11. 不使用额外的存储来交换两个变量

31、的数值是否可能,比如说是u和v。习题7。21. 应用Horspool算法在下面的文本中查找模式BAOBAB: BESS_KNEW_ABOUT_BAOBABS答:习题7。31. 对于输入30,20,56,75,31,19和散列函数h(K)=K mod 11a. 构造它们的开散列表;b. 求在本表中成功查找的最大键值比较次数;c. 求在本表中成功查找的平均键值比较次数.习题8.21. 对由下面邻接矩阵定义的有向图,应用warshall算法求它的传递闭包。答:7。对于下面具有权重矩阵的有向图,求解完全最短路径问题。答:习题8.31. 完成本节构造最优二叉查找树例题中余下的计算。习题8。41. a对于下面背包问题的实例,应用自底向上动态规划算法求解。ba中的实例有多少个不同的最优子集?9。为找零问题设计一个动态规划

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服