中国科学院大学历年计算机算法作业和历年习题.doc
《中国科学院大学历年计算机算法作业和历年习题.doc》由会员分享,可在线阅读,更多相关《中国科学院大学历年计算机算法作业和历年习题.doc(83页珍藏版)》请在咨信网上搜索。
1、中国科学院大学历年习题习题一 复杂性分析初步1. 试确定下述程序的执行步数,该函数实现一个mn矩阵与一个np矩阵之间的乘法: 矩阵乘法运算 template void Mult(T *a, T *b, int m, int n, int p) /mn矩阵a与np矩阵b相成得到mp矩阵c for(int i=0; im; i+) for(int j=0; jp; j+) T sum=0; for(int k=0; kn; k+) Sum+=aik*bkj; Cij=sum; 语 句 s/e 频率 总步数template void Mult(T *a, T *b, int m, int n, in
2、t p) 0 0 0for(int i=0; im; i+) 1 m+1 m+1for(int j=0; jp; j+) 1 m*(p+1) m*p+m T sum=0; 1 m*p m*p for(int k=0; kn; k+) 1 m*p*(n+1) m*p*n+m*p Sum+=aik*bkj; 1 m*p*n m*p*n Cij=sum; 1 m*p m*p 总 计 2*m*p*n+4*m*p+2*m+1其中 s/e 表示每次执行该语句所要执行的程序步数。频率是指该语句总的执行次数。2 函数MinMax用来查找数组a0:n-1中的最大元素和最小元素,以下给出两个程序。令n为实例特征。
3、试问:在各个程序中,a中元素之间的比较次数在最坏情况下各是多少? 找最大最小元素 方法一templatebool MinMax(T a, int n, int& Min, int& Max)/寻找a0:n-1中的最小元素与最大元素 /如果数组中的元素数目小于1,则还回false if(n1) return false; Min=Max=0; /初始化 for(int i=1; iai) Min=i; if(aMaxai) Max=i; return true;最好,最坏,平均比较次数都是 2*(n-1) 找最大最小元素 方法二templatebool MinMax(T a, int n, in
4、t& Min, int& Max)/寻找a0:n-1中的最小元素与最大元素 /如果数组中的元素数目小于1,则还回false if(n1) return false; Min=Max=0; /初始化 for(int i=1; iai) Min=i; else if(aMax=(2n)/2=n,而一个含有n个顶点的树有n-1条边。因m=nn-1,故该图一定含有圈。(定义:迹是指边不重复的途径,而顶点不重复的途径称为路。起点和终点重合的途径称为闭途径,起点和终点重合的迹称为闭迹,顶点不重复的闭迹称为圈。)2)证明:设有向图最长的有向迹每个顶点出度大于等于1,故存在为的出度连接点,使得成为一条有向边,
5、若则得到比更长的有向迹,与P矛盾,因此必有,从而该图一定含有有向圈。2.设D是至少有三个顶点的连通有向图。如果D中包含有向的Euler环游(即是通过D中每条有向边恰好一次的闭迹),则D中每一顶点的出度和入度相等。反之,如果D中每一顶点的出度与入度都相等,则D一定包含有向的Euler环游。这两个结论是正确的吗?请说明理由。如果G是至少有三个顶点的无向图,则G包含Euler环游的条件是什么?证明:1)若图D中包含有向Euler环游,下证明每个顶点的入度和出度相等。如果该有向图含有Euler环游,那么该环游必经过每个顶点至少一次,每经过一次,必为“进”一次接着“出”一次,从而入度等于出度。从而,对于
6、任意顶点,不管该环游经过该顶点多少次,必有入度等于出度。2)若图D中每个顶点的入度和出度相等,则该图D包含Euler环游。证明如下。对顶点个数进行归纳。当顶点数|v(D)|=2时,因为每个点的入度和出度相等,易得构成有向Euler环游。假设顶点数|v(D)|=k时结论成立,则当顶点数|v(D)|=k + 1时,任取vv(D).设S=以v为终点的边,K=以v为始点的边,因为v的入度和出度相等,故S和K中边数相等。记G=D-v.对G做如下操作:任取S和K中各一条边,设在D中,则对G和S做如下操作 , ,重复此步骤直到S为空。这个过程最终得到的G有k个顶点,且每个顶点的度与在G中完全一样。由归纳假设
7、,G中存在有向Euler环游,设为C。在G中从任一点出发沿C的对应边前行,每当遇到上述添加边v1v2时,都用对应的两条边e1,e2代替,这样可以获得有向Euler环游。3)G是至少有三个顶点的无向图,则G包含Euler环游等价于G中无奇度顶点。(即任意顶点的度为偶数)。 3设G是具有n个顶点和m条边的无向图,如果G是连通的,而且满足m = n-1,证明G是树。证明:思路一:只需证明G中无圈。若G中有圈,则删去圈上任一条边G仍连通。而每个连通图边数e=n(顶点数) 1,但删去一条边后G中只有n-2条边,此时不连通,从而矛盾,故G中无圈,所以G为树。思路二:当时,两个顶点一条边且连通无环路,显然是
8、树。设当时,命题成立,则当时,因为G连通且无环路,所以至少存在一个顶点,他的度数为1,设该顶点所关联的边为那么去掉顶点和,便得到了一个有k-1个顶点的连通无向无环路的子图,且的边数,顶点数。由于m=n-1,所以,由归纳假设知,是树。由于相当于在中为添加了一个子节点,所以G也是树。由(1),(2)原命题得证。4. 假设用一个的数组来描述一个有向图的邻接矩阵,完成下面工作:1)编写一个函数以确定顶点的出度,函数的复杂性应为:2)编写一个函数以确定图中边的数目,函数的复杂性应为3)编写一个函数删除边,并确定代码的复杂性。解答:(1)邻接矩阵表示为,待确定的顶点为第m个顶点int CountVout(
9、int *a,int n,int m)int out = 0;for(int i=0;in;i+) if(am-1i=1) out+;return out;(2)确定图中边的数目的函数如下:int EdgeNumber(int*a,int n)int num =0;for(int i=0;in;i+) for(int j=0;jB-E|0B-A-C|0C-B-D-E|0D-C|0E-A-C-F-G|0F-E-G|0G-E-F|0解:初始化 数组DFN:=0, num=1;A为树的根节点,对A计算DFNL(A,null),DFN(A):=num=1; L(A):=num=1; num:=1+1=
10、2。从邻接链表查到A的邻接点B,因为DFN(B)=0,对B计算DFNL(B,A)DFN(B):= num=2; L(B):=num=2; num:=2+1=3。查邻接链表得到B的邻接点A,因为DFN(A)=10, 但A=A,即是B的父节点,无操作。接着查找邻接链表得到B的邻接点C,因为DFN(C)=0,对C计算DFNL(C,B)DFN(C):= num=3; L(C):=num=3; num:=3+1=4。查找C的邻接点B,因为DFN(B)=10, 但B=B,即是C的父节点,无操作。接着查找邻接链表得到C的邻接点D,因为DFN(D)=0,对D计算 DFNL(D,C),DFN(D):= num=
11、4; L(D):=num=4; num:=4+1=5。查找得D邻接点C,而DFN(C)=30,但C=C,为D的父节点, L(D)保持不变。D的邻接链表结束,DFNL(D,C)的计算结束。返回到D的父节点C,查找邻接链表得到C的邻接点E, 因为DFN(E)=0,对E计算DFNL(E,C),DFN(E):=num=5; L(E):=num=5; num:5+1=6;查找得E邻接点A,因DFN(A)=10,又AC,变换L(E)=min(L(E),DFN(A)=1。查找得E邻接点C,因DFN(C)=30,但C=C,无操作。查找得E邻接点F,因DFN(F)=0,对F计算 DFNL(F,E),DFN(F)
12、:=num=6; L(F):=num=6; num:=6+1=7; 查找得F邻接点E,因DFN(E)=50,但E=E,无操作。 查找得F邻接点G,因DFN(G)=0,对G计算 DFNL(G,F), DFN(G):=num=7; L(G):=num=7; num=7+1=8; 查找G邻接点E,因DFN(E)=50,又EF,L(G)=min(L(G),DFN(E)=5 查找得G邻接点F,因DFN(F)=60,但F=F,无操作。 G的邻接链表结束,DFNL(G,F)的计算结束。 L(F):=min(L(F),L(G)=min(6,5)=5 F的邻接链表结束,DFNL(F,E)的计算结束。 L(E):
13、=min(L(E),L(F)=min(1,5)=1E邻接链表结束, DFNL(E,C)计算结束。L(C):=min(L(C),L(E)=min(3,1)=1 C的邻接链表结束,DFNL(C,B)计算结束。 L(B):=min(L(B),L(C)=min(2,1)=1 查找B的邻接链表结束,DFNL(B,A)计算结束。 L(A):=min(L(A),L(B)=1 查找得A的邻接点E,因DFN(E)=0,又Enull,则L(A)=min(L(A),DFN(E)=1查找A的邻接链表结束,DFNL(A,null)计算结束。最终结果为:深索数DFN,与最低深索数L如下DFN(A)=1,DFN(B)=2,
14、DFN(C)=3,DFN(D)=4,DFN(E)=5,DFN(F)=6,DFN(G)=7L(A)=1; L(B)=1; L(C)=1; L(D)=4; L(E)=1; L(F)=5;L(G)=5.序节点DFNL栈顶栈底2-连通割点1A1(1,0,0,0,0,0,0)(A,B)2B2(1,2,0,0,0,0,0)(B,C),(A,B)3C3(1,2,3,0,0,0,0)(C,D),(B,C),(A,B)4D4(1,2,3,4,0,0,0)(B,C),(A,B)(C,D);C5E5(1,1,1,4,1,0,0)(E,F),(E,A),(B,C),(A,B)6F6(1,1,1,4,1,6,0)(F,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国科学院 大学 历年 计算机 算法 作业 习题
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。