算法设计与分析基础习题参考答案.docx
《算法设计与分析基础习题参考答案.docx》由会员分享,可在线阅读,更多相关《算法设计与分析基础习题参考答案.docx(28页珍藏版)》请在三一办公上搜索。
1、习题1.15.证明等式gcd(m.n=gcd(n.mn(1.n)对每一对正整数m.n都成立.Hint:根据除法的定义不难证明:如果d整除U和V.那么d一定能整除uv;加果d整除U.那么d也能修整除U的任何整数倍ku.对于任意一对正整数m,n,辑设d能整除m和nJE么d一定能整除n和r=mmodn=m-qn:显然,假设d能整除n和r,也一定能整除n=r+qn和n.数对(m.n)和(n.r)具有相同的公约数的有限非空集,其中也包括了最大公约数.故gcd(111.n)=gctcmpreturnx1.,x2e1.seifD=Oreturn-M2*a)e1.serc(umnorea1.Isme1.se/
2、a=f1.ifb0return-cbe1.se/a=b=Oifc=0return,fcnrea1.numbers*e1.sereturn,wnorea1.roots”5 .描述将十进制整数表达为.进制整数的标准算法必用文字描述b.用伪代码描述解答:今将十进制整数转换为:进制整数的修法输入:一个正整数n输出,正整数n相应的二进制数第一步:用n除以2.余数赋给Ki(i三whi1.ei!=()doprintBini;i9.考虑下面这个算法.它求的是数组中大小相差最小的两个元素的差(算法略)对这个究法做尽可能多的改良.算法MinDistance(O.n-1)“输入:数组A(0.n-1.)输出:thes
3、ma1.1.estdistancedbetweentwoofitse1.ementsdminfori0ton2doforJ4i+1.ton-Idotemp44ijiftempdmindmin-tempreturndmin习题1.3考虑这样一个排序算法,该算法对于待持序的数组中的姆一个元素,计算比它小的元素个数,然后利用这个信息.将各个元素放到有序数祖的相应位置上去.foriOton1doCounti*OfortOton-2doforji1ton-1doifiAjCcnntjCountj+1e1.seCountiCounti+1forOton1doSCunfiAia.应用该算法对列表”60,35
4、31.98.14.47”排序b.该和法稳定吗?C,该算法在位吗?解:a.该算法对列表”60.35.81.98.14.4T排序的过程如下所示:Initia1.1.yCountAfterpassi=OCountAfterpassi1CountAfterPaSSi=2CountAfterPaSSi=3CountAfterpassi=4CountFina1.stateCountArray0.5ArrayS0.5OOOOOO3O11OO122O143O15O1O23145O2I6()3581I981447I14I35476()I819Kb该算法不杨定.比方对列表“2.2*”排序C该辞法不在位.额外空间f
5、brSa1.Count1.1.4.(古老的七桥问题)习题1.41.请分别描述一下应该如何实现以下对数组的操作.使得操作时间不依敕数组的长发.a删除数组的第i个元素(1.=i=n)b.州除有序数祖的第i个元素(依然有序)hints:a. Rep1.acetheithe1.ementwiththe1.aste1.ementanddecreasethearraysizeof1b. Rep1.acetheithC1.CmCntwihaspecia1.symbo1.thatCanno1.beava1.ueofthearraysc1.emcn(c.g.,0foranarrayofpositivenumbe
6、rs)tomark(heithpositionisenpde1.e习题2.1欧几里得竟法的时间复杂度欧几里得笄法,又称混转相除法.用于求两个自然数的最大公约数.算法的思想很简单,基于卜面的数论等式gc1.(a,b)=gcd(b,amodb)其中gcd(a,b)表示a和b的班大公约数,mod是模运獴,即求a除以b的余数.算法如下:输入:两个整数&b输出:a和b的最大公约数functiongcd(a,b:intcgcr):intcgcr;ifb=0returna;e1.sereturngc=1.(假设a=2).显然.假设算法需要n次模运算.那么行Un=SCd(a.b).un+1.=O.我们比拟数列
7、un)和班波那奥数列Fn,R)-=un,F1.=1.=uk+1.+uk+2,由数学归嗨去容易得到uk=Fnk.于是得到a=uO=Fn,b=uO=Fn1.,也就是说如果欧几里得以法需要做n次模运算,班么b必定不小于Fn-1.换句话说,假设bn/Sqrt(5).即b(1.618)nsqrt(5),所以模运算的次数为O(Igb)以b为底数=O(Ig(2)b)一以2为底数,输入规模也可以看作是b的bh位数.习题2.27.对以下新古进行证明:(如果是错误的,请举例a.如果Nn)Wo(g(n),那么g(n)O(t(n)b.0.(g(n)=(g(n)解:a.这个断古是正确的.它指出如果t(n)的增长率小于或
8、等于g(n)的增长率,那么g(n)的培氏率大于或等于(三)的增长率由t(n)cg(nfora1.1.nn.wherec0(一)/()g()那么:CIbraHnNnOb.这个断言是正确的.只需证明(ag()u(g(MRg5)U=n0.c0f(n)ctg(n)ftwa1.1.n=Mc1.=c00即:f(n)(g(n)又设f(n)6(g(n).那么有:/()cg()fora1.1.n=nO.cOf()-ag(n)=c1.ag(n)afora1.1.n=11.c1.=c00UP:f(n)-)(tg(n)8.证明本节定理对于以下符号也成立:&Q符号b.。符号证明:aweneed(oproof(hatif
9、ti(n)0(g1.(n)andc2(n)Q(g2(n),then(1(n)=n1.,wherec1.0由c2(n)Q(g2(n),T2(n)c2g2(n)fora1.1.n=n2fcwherec20那么取c=minc1.c2).当n=maxn1.n2)Bf:t1.(nc1.g1.(n+c2g2(ncg1.(n)+cg2(n)c(g1.(n+g2(n)NCmaX1.g1.(n),g2(n)所以以命遨成立,bU(n)+2nW电(max(g】(),g2()证明:由大的定义知.必须确定常数c1.、c2和n.使得对于所有n=n.有:C1.maX他1(”).g2(”)”()+t2(n)max(g1.()
10、,g2()由存在非负整数a1.*和id使:a1.4g1.(n)-(1)由I2(n)(g2(n)知.存在非负整数b1.,b2和n2使:b1*g2(n)=t2(n)=b2*g2(n)“(2)(1.)+2):a1.g1.(n)+b1.g2(n)=t1.(n)+t2(n)V=a21*g1.(n)+b2*g2(n)令c1.=nin(a1.,b1.),c2=max(a2,b2).那么C1.*(g1.+g2)=t1.(n)+t2(n)=c2(g1.+g2)-(3)不失一般性假设11ux(g1.(n).g2(n)=g1.(n).显然.gI(n)+g2(n)2g1(n).即g1.+g20.g1.(n)+g2(n
11、)g1.(n),Wg1.+g2max(g1.,g2).那么(3)式转换为:CPnax(gi.g2)=n时上述不容式成立.证毕.10.切忌算法走的步数和人真实走的步数的区别,算法是不需要走回头路的习题2.4解以下递推关系(ftab).V()=X(ZI-I)+5当n1.时-V(I)=O解:a. x(n)=z(n-1)+5forn1,x(1.)=0x(n)-xn-1)+5=x(n-2)+5+5=x(n-2)+52=x(n-3)+5+52=x(n-3)+53=.=(n-)+5t=H(I)+5(n1)=5(n1).b. (n)=3(j-I)当n1.时X(I)=4解:b.x(n)=3x(n1)forn1,
12、x(1.)=4x(n)=3x(n-1)=33x(n-2)=32x(11-2)=3*3r(n3)=33x(n3)=31.x(ni)=3n1x(1.)=43n1.对于计算n1的递IU修法Kn),建立其递仃调用次数的递推关系并求解.解:2. C(n)=C(n-1)+1,C(O)=1(thereisaca1.1.hutnomu1.tip1.icationswhenn=0).C(n)=C(n-1)+1=C(n-2)+1+1=C(n-2)+2=.=C(n-i)+i=.=C(O)+n=1+n.考虑以下递归算法,该律法用来计算前n个立方的和:S(n)=1.3+23+.+n3,算法S(n)“输入:正整数n场出:
13、前n个立方的和ifn=1.returnIe1.sereturnS(n-1.)+n*nna.建立该算法的根本操作次数的递推关系并求解b.如果将这个算法和直截r当的非递打算法比.你做何评价?幅a.a. 1.etAf(n)bethenunberofnni1.tip1.icatioiisnatitntions:f(n)=(n-1)+2=(n-2)+2+2=f(n-2)+2+2=(n-3)+2+2+2=(n-3)+2+2+2=.=(n-i)+2i=.=(1.)+2(n-1.)=2(n-1).6 .汉诺塔的非迷以何胆请见F:worN维续教团算法设计与分析根底7 .a.请基于公式2n=2n1.+2n1.,设
14、计一个递归算法,当n是任意非负整数的时候,该算法能够计算2n的值。b.建立该算法所做的加法运算次数的递推关系并求解c.为该算法构造一棵递归园用树然后计算它所做的递归网用次数.d.对于该问理的求解来说,这是一个好的算法吗?解:a.算法POWer(n)“基于公式2n=2n-1.+2n-1.,计算2n输入:非负整数n“输出:2n的值Ifn=()return1E1.sereturnpowcr(n-1.)+powcr(n-1.)b. (n)=2A(n-1)+1,4(0)=0.A(n)=2A(n1)1=22(n-2)+1+1=22A(n-2)+2+1=222A(n-3)+12+1=23(n-3)+22+2
15、I=.=2iA(n-i)+2i1.+2i-2+.+I=2n(0)+2n-1.+2n-2+.+1=2,+2n-2+.+1=2n-1.whi1.ej0andj1.vdocoun1.-coun1.+iA+IJ-Af(j1.*-vreturncount比拟计数涔是否辅在了正确的位置?如果不对,请改正.解:应改为:算法Sf1.Ana1.ysis(A(0.n-1)inpu1.:包含n个可排序元索的一个数组A0.m1)仇H1.tput:所做的关健比拟的总次数count-0fori*-1.(oivIdov-A(i)jf1whi1.ej=0andAjvdaCOunI-COim+1.A(j+H-A(j)j-j-1
16、.ifj=0count-countI(j1.*-vreturnCoUn1.7.bgcd(m.n)切法性能破坏情况下为两个整数为斐波居很数列,即k时间最长时,最小的整数时必定为斐波那锲数列。9 .我认为埃拉托色尼筛的效率为根号n.10 .gcd(a.b)熨杂性估计c=a%b:ci2:在算法中即表现为n(余数)每两次循环至少战少为原来的一半,所以该舞法时间复杂度估算为21.ogn=O(1.ogn):由于能力有限,更精确及杂的时间红朵度的计算还没有掌握.在最坏的情况下(如m和n是两个相邻的斐波居契数时)可以稍默改良成1.441ogn欧几里侬算法在平均情况下的性能需要大眼箭幅的海度亚杂的数学分析,其迭
17、代的平均次数约为(121n21nn)pi2+1.47t在最差情况下在平均情况下.假设成功查找的概率是p(O=p=1.)Hints:Cworst(n)=n1在成功i找下,对F任意的I.第次匹配发生在第i个位置的可能性是Pd比拟次数是i,在荏找不成功时.比拟次数是n+1.可能性是IPC(W夕(m1+21.+i2+Ti勺+(九+1)(1p)nnnn1.1+2+.+i+.411+(111)(1p)71孑吟斗(IP)=(2-P)(n+1)4此座翻译有向题,原题类似与:前一段时间看到一道Goog1.e的面试题在各大论坛被炒得很火题目如下:“有一个100层SS的大厦.你手中有两个相同的玻璃图根子.从这个大厦
18、的某一层扔下胭棋了就会砰,用你手中的这两个玻璃困根子,找出一个足优的策略,来得知那个临界层面,”题目虽然看起来简单,但是仔细想想,此遨中然含的算法道珅以及实用价值还是很值得好好研究-卜.石头在网上也看到了不少热心朋友的解法(CSDN、ChinaUnix).行过之后感觉还是接有启发的.于是总结一下,主要的算法行以下几种:等分段来最小伯:这种算法先假设把大楼分成等岛的X段,这样在最差的情况下,要确定临界段,我们需要投掷100.次,确定了临界段之后要确定临界层,我们需要再投掷X-I次。这样,问SS就成了求函数Rx)=存在球小值且只有一个驻点,所以当x=10时ftx)取得最小值,最小值为18.假设投掷
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 分析 基础 习题 参考答案
链接地址:https://www.31ppt.com/p-7239944.html