北航计算机研究生课程-算法设计与分析-HomeWork-1.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北航 计算机 研究生课程 算法 设计 分析 HomeWork
- 资源描述:
-
一、已知下列递推式: C(n) = 1 若n =1 = 2C(n/2) + n – 1 若n ≥ 2 请由定理1 导出C(n)的非递归表达式并指出其渐进复杂性。 定理1:设a,c为非负整数,b,d,x为非负常数,并对于某个非负整数k, 令n=ck, 则以下递推式 f(n) =d 若 n=1 =af(n/c)+bnx 若 n>=2 的解是 f(n)= bnxlogcn + dnx 若 a=cx f(n)= 若 a≠cx 解:令F(n) = C(n) – 1 则 F(n) = 0 n=1 F(n) = 2C(n/2) + n – 2 n>=2 = 2[F(n/2) + 1] + n – 2 = 2F(n/2) + n 利用定理1,其中: d=0,a=2,c=2,b=1,x=1,并且a=cx 所以 F(n) = nlog2n 所以 C(n) = F(n) + 1 = nlog2n + 1 C(n)的渐进复杂性是O(nlog2n) 二、由于Prim算法和Kruskal 算法设计思路的不同,导致了其对不同问题实例的效率对比关系的不同。请简要论述: 1、如何将两种算法集成,以适应问题的不同实例输入; 2、你如何评价这一集成的意义? 答: 1、Prim算法基于顶点进行搜索,所以适合顶点少边多的情况。 Kruskal从边集合中进行搜索,所以适合边少的情况。 根据输入的图中的顶点和边的情况,边少的选用kruskal算法,顶点少的选用prim算法 2、没有一个算法是万能的,没有一个算法是对所有情况都适合的。这一集成体现了针对具体问题选用最适合的方法,即具体问题具体分析的哲学思想。 三、分析以下生成排列算法的正确性和时间效率: HeapPermute(n) //实现生成排列的Heap算法 //输入:一个正正整数n和一个全局数组A[1..n] //输出:A中元素的全排列 if n = 1 write A else for i ←1 to n do HeapPermute(n-1) if n is odd swap A[1]and A[n] else swap A[i]and A[n] 解: n=1时,输出a1 n=2时,输出a1a2,a2a1 n=3时, (1) 第一次循环i=1时,HeapPermute(2)将a1a2做完全排列输出,记为[a1a2]a3,并将A变为a2a1a3,并交换1,3位,得a3a1a2 (2) 第二次循环i=2时,HeapPermute(2)输出[a3a1]a2,并将A变为a1a3a2,交换1,3位,得a2a3a1 (3) 第三次循环i=3时,HeapPermute(2)输出[a2a3]a1,并将A变为a3a2a1,交换1,3位,得a1a2a3,即全部输出完毕后数组A回到初始顺序。 n=4时, (1) i=1时,HeapPermute(3)输出[a1a2a3]a4,并且a1a2a3顺序不变,交换1,4位,得a4a2a3a1 (2) i=2时,HeapPermute(3)输出[a4a2a3]a1,并且a4a2a3顺序不变,交换2,4位,得a4a1a3a2 (3) i=3时,HeapPermute(3)输出[a4a1a3]a2,并且a4a1a3顺序不变,交换3,4位,得a4a1a2a3 (4) i=4时,HeapPermute(3)输出[a4a1a2]a3,并且a4a1a2顺序不变,交换4,4位,得a4a1a2a3,即全部输出完毕后数组A循环右移一位。 由以上分析可得出结论: 当n为偶数时,HeapPermute(n)输出全排列后数组元素循环右移一位。 当n为奇数时,HeapPermute(n)输出全排列后数组元素顺序保持不变。 所以由归纳法证明如下: (1)i=1时,显然成立。 (2)i=k为偶数时,假设输出的是全排列,则i=k+1(奇数)时,k+1次循环中,每次前k个元素做全排列输出后循环右移一位,所以对换swap A[1]and A[n]可以保证每次将前k个元素中的一个换到k+1的位置,所以k+1次循环后输出的是A[1…k+1]的全排列。 (3)i=k为奇数时,假设输出的是全排列,则i=k+1(偶数)时,k+1次循环中,每次前k个元素做全排列输出后顺序保持不变,所以对换swap A[i]and A[n]可以保证每次将前k个元素中的一个换到k+1的位置,所以k+1次循环后输出的是A[1…k+1]的全排列。 证毕。 时间复杂度递推公式为T(n) = 1 n=1 = n[ T(n-1)+2 ] n>1 化简得T(n) = n! + O(nn-1) 所以时间复杂度为O(n!) + O(nn-1) 四、对于求n 个实数构成的数组中最小元素的位置问题,写出你设计的具有减治思想算法的伪代码,确定其时间效率,并与该问题的蛮力算法相比较。 解: (1)算法思想:将n分为[n/2],n-[n/2]([]表示向下取整)两部分,分别找出其中的最小元及其位置,比较这两个元素的大小,得出总的最小元素的位置。 (2)伪代码: (x,i) = FindLeastElement(a,b) //从数组A[a…b]中找出最小元x,及其位置i //输入:全局实数数组A[1…n],搜索起始位置a,结束位置b //输出:最小元素x及其位置i if a==b return (A[a],a) else (x1,i) = FindLeastElement(1,[n/2]); (x2,j) = FindLeastElement([n/2]+1,n); if x1<x2 return (x1,i) else return (x2,j) (3)算法复杂度递推公式:F(n) = 1 n=1 = 2F(n/2) n>1 化简:F(n) = 2F(n/2) + 1 = 2[2F(n/22)+1] + 1 = 22F(n/22) + 2 + 1 … = 2kF(2k/2k) + 1 + 2 + … + 2k-1 ( n=2k) = 2n-1 所以复杂度为O(2n-1) 蛮力法的复杂度为O(n),所以此方法还没有蛮力法效率高,因为减治后会增加比较次数。 五、请给出约瑟夫斯问题的非递推公式 J(n),并证明之。其中,n 为最初总人数,J(n) 为最后幸存者的最初编号。 解:已知幸存者号码的递推公式:J(1) = 1; J(2k) = 2J(k) – 1; n=2k J(2k+1) = 2J(k) + 1; n=2k+1 幸存者号码非递推公式:设n = 2m + b,J(n) = 2*b+1 (0<=b<2m,m>=0) 证明(数学归纳法): (1) i=1时,m=0,b=0,J(1)=2*b+1=1,成立。 (2) i>1时, 当i为偶数时,设k = i/2时成立,即k = 2m + b,则J(k) = 2b+1, 此时,i = 2k = 2m+1 + 2b J(i) = J(2k) = 2J(k) – 1 = 2(2b+1) – 1 = 4b + 1 = 2(2b) + 1,即k=i时成立。 当i为奇数时,设k = (i-1)/2时成立,即k = 2m + b,则J(k) = 2b+1, 此时,i = 2k + 1 = 2m+1 + 2b+1 J(i)= J(2k+1) = 2J(k)+1 = 2(2b+1)+1 = 4b+3 = 2(2b+1)+1, 即k=i时成立。 证毕。展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




北航计算机研究生课程-算法设计与分析-HomeWork-1.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/6025836.html