收藏 分享(赏)

中科院计算机算法分析与设计 习题1-2 答案.ppt

上传人:精品资料 文档编号:10587566 上传时间:2019-12-02 格式:PPT 页数:24 大小:767.50KB
下载 相关 举报
中科院计算机算法分析与设计  习题1-2 答案.ppt_第1页
第1页 / 共24页
中科院计算机算法分析与设计  习题1-2 答案.ppt_第2页
第2页 / 共24页
中科院计算机算法分析与设计  习题1-2 答案.ppt_第3页
第3页 / 共24页
中科院计算机算法分析与设计  习题1-2 答案.ppt_第4页
第4页 / 共24页
中科院计算机算法分析与设计  习题1-2 答案.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、第一章 复杂性分析初步 习题,1. 试确定下述程序的执行步数,该函数实现一个mn矩阵与一个np矩阵之间的乘法:,s/e 表示每次执行该语句所要执行的程序步数,频率是指该语句总的执行次数。,2 函数MinMax用来查找数组a0:n-1中的最大元素和最小元素,以下给出两个程序。令n为实例特征。试问:在各个程序中,a中元素之间的比较次数在最坏情况下各是多少?,6. 按照渐进阶从低到高的顺序排列以下表达式:,template bool MinMax(T a, int n, int ,最好,最坏,平均比较次数都是 2*(n-1),template bool MinMax(T a, int n, int

2、,最坏2*(n-1) 最好 n-1, 平均,7. 1)假设某算法在输入规模是 时为 .在某台计算机上实现并完成该算法的时间是 秒. 现有另一台计算机,其运行速度为第一台的64倍, 那么,在这台计算机上用同一算法在 秒内能解决规模为多大的问题?,关系式: 时间复杂度(计算步数)*运行速度(时间/每步)=运行所需时间,解:设在新机器上 秒内能解决规模为 的问题,时间复杂度为,由于新机器运行速度提高64倍,则运行速度变为,由关系式,,得,解,得,由于新复杂度 ,新机器的运行速度为,2) 若上述算法改进后,新算法的计算复杂度为 , 则在新机器上用,秒时间能解决输入规模为多大的问题?,代入关系式,,得,

3、设在新机器上用 秒时间能解决输入规模为 的问题,则,解,得,3)若进一步改进算法,最新的算法的时间复杂度为 ,其余条件不变,在新机器上运行,在 秒内能够解决输入规模为多大的问题?,设可解决的最大时间复杂度为 ,则,可解决的最大时间复杂度为,,(n为原始的输入规模)。,所以任意规模的问题都可在t秒内解决。,因为 ,且为常数不随输入规模n变化,,8. Fibonacci数有递推关系:,试求出,的表达式。,的出度连接点,使得,第二章 图与遍历算法 习题,1.证明下列结论: 1)在一个无向图中,如果每个顶点的度大于等于2,则该图一定含有圈; 2)在一个有向图D中,如果每个顶点的出度都大于等于1,则该图

4、一定含有一个有向圈。,1)证明:设无向图最长的无重复顶点的迹,因为每个顶点的度大于等于2,,故存在与 相异的点 与 相邻。,若 则得到比 更长的迹,与P的取法矛盾。,因此, , 故 是闭迹。因无重复顶点,故存在圈,2)证明:同(1),设有向图最长的无重复顶点的有向迹,因为每个顶点出度大于等于1,故存在 为,成为一条有向边,若,则得到比,更长的有向迹,与P最长矛盾。,,从而该图一定含有有向圈。,因此必有,(若顶点重复已含有圈),2.设D是至少有三个顶点的连通有向图。如果D中包含有向的Euler环游(即是通过D中每条有向边恰好一次的闭迹),则D中每一顶点的出度和入度相等。反之,如果D中每一顶点的出

5、度与入度都相等,则D一定包含有向的Euler环游。这两个结论是正确的吗?请说明理由。如果G是至少有三个顶点的无向图,则G包含Euler环游的条件是什么? 3设G是具有n个顶点和m条边的无向图,如果G是连通的,而且满足m = n-1,证明G是树。 4假设用一个nn的数组来描述一个有向图的nn邻接矩阵,完成下面工作: 1)编写一个函数以确定顶点的出度,函数的复杂性应为 ; 2)编写一个函数以确定图中边的数目,函数的复杂性应为 ; 3)编写一个函数删除边(i,j),并确定代码的复杂性。,5.实现图的D-搜索算法。要求用ALGEN语言写出算法的伪代码,或者用一种计算机高级语言写出程序。,6.下面的无向

6、图以邻接链表存储,而且在关于每个顶点的链表中与该顶点相邻的顶点是按照字母顺序排列的。试以此图为例描述讲义中算法DFNL的执行过程。,邻接链表 A-B-E|0 B-A-C|0 C-B-D-E|0 D-C|0 E-A-C-F-G|0 F-E-G|0 G-E-F|0,A-B-E|0 B-A-C|0 C-B-D-E|0 D-C|0 E-A-C-F-G|0 F-E-G|0 G-E-F|0,初始化 DFN:=0,num:=1; DFNL(A,null),DFN(A):=num=1; L(A):=num=1; num+:=2。 DFN(B)=0, DFNL(B,A)DFN(B):=num= 2, L(B):

7、=num=2, num+:=3; DFN(A)=10, A=A, 无操作。 DFN(C)=0 DFNL(C,B)DFN(C):= num=3, L(C):=num=3,num+:=4; DFN(B)=10, B=B, 无操作. DFN(D)=0, DFNL(D,C),DFN(D):=num= 4; L(D):=num=4; num+:=5; DFN(C)=30,C=C,无操作.DFNL(D,C) 结束。 DFN(E)=0, DFNL(E,C),DFN(E):=5; L(E):=5; num+:=6; DFN(A)=10,AC, L(E)=min (L(E), DFN(A)=1。DFN(C)=3

8、0,C=C,无操作。 DFN(F)=0,DFNL(F,E),DFN(F):=num=6; L(F):=num=6; num+:=7; DFN(E)=50,E=E,无操作。 DFN(G)=0,DFNL(G,F),DFN(G):=num=7; L(G):=num=7; num+:=8;DFN(E)=50,EF,L(G)=min (L(G),DFN(E)=5; DFN(F)=60,F=F,无操作。DFNL(G,F) 结束 L(F):=min (L(F),L(G)=min(6,5)=5DFNL(F,E)的结束。 L(E):=min (L(E),L(F)=min(1,5)=1DFNL(E,C) 结束。

9、L(C):=min (L(C),L(E)=min(3,1)=1DFNL(C,B) 结束。 L(B):=min (L(B),L(C)=min(2,1)=1DFNL(B,A) 结束。 L(A):=min (L(A),L(B)=1因DFN(E)=0,E null,则L(A)=min (L(A),DFN(E)=1 DFNL(A,null) 结束。,7. 对图的另一种检索方法是 D-Search。该方法与 BFS 的不同之处在于将队列换成栈,即下一个要检测的结点是最新加到未检测结点表的那个结点。 1)写一个D-Search算法; 2)证明由结点v开始的D-Search能够访问v可到达的所有结点; 3)你

10、的算法的时、空复杂度是什么?,(类比BFS算法),(类比定理2.2.1证明),proc DBFS(v) /PushS(v , S);/ 将S初始化为只含有一个元素v的栈while S非空 do u:= PullHead(S); count:=count+1; visitedu:=count; for 邻接于u的所有顶点w do if sw=0 thenPushS(w , S); /将w压入栈中sw:=1; endif endfor endwhile endDBFS 图的D搜索算法伪代码: proc DBFT(G, ) /count、s同DBFS中的说明,branch是统计图G的连通分支数 co

11、unt:=0; branch:=0; for i to n do si:=0; /将所有的顶点标记为未被访问 endforfor i to do if si=0 then DBFS(i); branch:=branch+1; endif endfor endDBFT,2)证明:除结点v外,只有当结点w满足sw=0时才被压入栈中,因此每个结点至多有一次被压入栈中,搜索不会出现重叠和死循环现象,对于每一个v可到达的节点,要么直接被访问,要么被压入栈中,只有栈内节点全部弹出被访问后,搜索才会结束,所以由结点v开始的D-Search能够访问v可到达的所有结点。 3)除结点v外,只有当结点w满足sw=0

12、时才被压入栈中,因此每个结点至多有一次被压入栈中。需要的栈 空间至多是-1;visited数组变量所需要的空间为;其余变量所用的空间为O(1),所以s(,)= ()。 如果使用邻接链表, for循环要做d(u)次,而while循环需要做次,又visited、s和count的赋值都需要次操作,因而t (,)= (+ )。 如果采用邻接矩阵,则while循环总共需要做2次操作,visited、s和count的赋值都需要次操作,因而t (,)= (2)。,8.考虑下面这棵假想的对策树: 1)使用最大最小方法(2-4-2)式获取各结点的值; 2)弈者A为获胜应该什么棋着? 3)列出算法VEB计算这棵对

13、策树结点的值时各结点被计算的顺序 4)对树中每个结点X,用(2-4-3)式计算V(X); 5)在取X根,l=10, LB =-, D=的情况下,用算法AB计算此树的根的值期间,这棵树的那些结点没有计算?,1)使用最大最小方法(2-4-2)式获取各结点的值,max,max,max,min,min,2)弈者A为获胜应该什么棋着?,20,6,4,20,5,4,8,15,6,20,30,5,50,8,4,15,20,5,10,30,5,9,20,50,18,6,15,10,5,5,20,X,X1,X2,X3,X4,X1.1,X1.2,X2.1,X2.2,X3.1,X3.2,X4.1,X4.2,X1.1

14、.1,X1.1.2,X1.1.3,X1.2.1,X2.1.1,X2.2.1,X3.1.1,X3.1.2,X1.1.1.1,X3.1.2.1,X3.2.1,X3.2.2,X3.2.3,X4.1.1,X4.2.1,X4.4.2,X4.2.3,X4.2.4,3)列出算法VEB计算这棵对策树结点的值时各结点被计算的顺序,4,6,15,10,5,1,-5,2,3,4,6,9,-10,-15,15,-6,6,5,7,8,-6,-4,4,10,11,-4,3)列出算法VEB计算这棵对策树结点的值时各结点被计算的顺序,4)对树中每个结点X,用(2-4-3)式计算V(X);,5)在取X根,l=10, LB =-

15、, D=的情况下,用算法AB计算此树的根的值期间,这棵树的那些结点没有计算?,20,-6,-6,-20,-20,6,15,6,20,30,20,-4,-15,-20,-5,-10,-30,-5,-6,-15,-10,-5,5,20,5)在取X根,l=10, LB =-, D=的情况下,用算法AB计算此树的根的值期间,这棵树的那些结点没有计算?,20,-6,-6,-20,-20,6,15,6,20,30,20,-4,-15,-20,-5,-10,-30,-5,-6,-15,-10,-5,5,20,5)在取X根,l=10, LB =-, D=的情况下,用算法AB计算此树的根的值期间,这棵树的那些结点没有计算?,20,-6,-6,-20,-20,6,15,6,20,30,20,-4,-15,-20,-5,-10,-30,-5,-6,-15,-10,-5,5,20,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报