湖南大学深刻复习算法分析期末答案解析大题

合集下载

(完整word版)算法设计与分析复习题目及答案(word文档良心出品)

(完整word版)算法设计与分析复习题目及答案(word文档良心出品)

一。

选择题1、二分搜索算法是利用( A )实现的算法。

A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。

A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。

A、分支界限法B、动态规划法C、贪心法D、回溯法4、在下列算法中有时找不到问题解的是( B )。

A、蒙特卡罗算法B、拉斯维加斯算法C、舍伍德算法D、数值概率算法5. 回溯法解旅行售货员问题时的解空间树是( B )。

A、子集树B、排列树C、深度优先生成树D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。

A、备忘录法B、动态规划法C、贪心法D、回溯法7、衡量一个算法好坏的标准是(C )。

A 运行速度快B 占用空间少C 时间复杂度低D 代码短8、以下不可以使用分治法求解的是(D )。

A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题9. 实现循环赛日程表利用的算法是( A )。

A、分治策略B、动态规划法C、贪心法D、回溯法10、下列随机算法中运行时有时候成功有时候失败的是(C )A 数值概率算法B 舍伍德算法C 拉斯维加斯算法D 蒙特卡罗算法11.下面不是分支界限法搜索方式的是( D )。

A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。

A、备忘录法B、动态规划法C、贪心法D、回溯法13.备忘录方法是那种算法的变形。

( B )A、分治法B、动态规划法C、贪心法D、回溯法14.哈弗曼编码的贪心算法所需的计算时间为( B )。

A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)15.分支限界法解最大团问题时,活结点表的组织形式是( B )。

A、最小堆B、最大堆C、栈D、数组16.最长公共子序列算法利用的算法是( B )。

A、分支界限法B、动态规划法C、贪心法D、回溯法17.实现棋盘覆盖算法利用的算法是( A )。

【期末复习】数据结构期末综合练习及参考答案四(算法分析题)

【期末复习】数据结构期末综合练习及参考答案四(算法分析题)

【期末复习】数据结构期末综合练习及参考答案四(算法分析题)数据结构(本科)期末综合练习四(算法分析题)1. 指出算法的功能并求出其时间复杂度。

int fun(int n){int i =1,s=1;while(s< bdsfid="67" p=""><>return i;}功能为:时间复杂度为:2. 指出算法的功能并求出其时间复杂度。

void matrimult(int a[M][N], int b[N][L], int c[M][L]){ //M、N、L均为全局整型常量int i, j, k;for ( i = 0; i < M; i++ )for ( j = 0; j < L; j++ )c[i][j] = 0;for( i =0; i <m;i++)< bdsfid="79" p=""></m;i++)<>for(j=0;j<l;j++)< bdsfid="81" p=""></l;j++)<>for(k=0;k<n;k++)< bdsfid="83" p=""></n;k++)<>c[i][j]+=a[i][k]*b[k][j];}功能为:时间复杂性为:3. 针对如下算法,回答问题:若数组A[n] = {12, 24, 0, 38, 0, 0, 0, 0, 29, 0, 45, 0}, n = 12,给出算法执行后数组A[n]的状态。

templatevoid unknown ( T A[ ], int n ) {int free = 0;for ( int i = 0; i < n; i++ )if ( A[i] != 0 ) {if ( i != free ) {A[free] = A[i];A[i] = 0;}free++;}}算法执行的结果4. 设顺序表SeqList具有下列操作:int Length( ) const; //计算表长度并返回,若表为空则返回0T Remove( ); //删除当前表项并返回其值,置下一表项为当前表项T First( ); //取表中第一个表项的值并返回,并置为当前表项T Next( ); //取当前表项后继表项的值并返回,//并把此后继表项置为当前表项若顺序表中存放的数据为{29,38,47,16,95,64,73,83,51,10,0,26},表的长度为12,参数值s=10, t=30,说明算法执行后顺序表的状态和长度的变化。

《算法分析与设计》期末试题及参考答案

《算法分析与设计》期末试题及参考答案

《算法分析与设计》期末试题及参考答案一、简要回答下列问题:1.算法重要特性是什么?1.确定性、可行性、输入、输出、有穷性2.2.算法分析的目的是什么?2.分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。

3.3.算法的时间复杂性与问题的什么因素相关?3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。

4.算法的渐进时间复杂性的含义?4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。

时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。

5.最坏情况下的时间复杂性和平均时间复杂性有什么不同?5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。

最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max{ T(n,I) } , I∈Dn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n) =∑P(I)T(n,I) I∈Dn6.简述二分检索(折半查找)算法的基本过程。

6. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]<x,则A[i:(i+j)/2-1]找x,否则在A[ (i+j)/2+1:j] 找x。

上述过程被反复递归调用。

7.背包问题的目标函数和贪心算法最优化量度相同吗?7. 不相同。

目标函数:获得最大利润。

最优量度:最大利润/重量比。

8.采用回溯法求解的问题,其解如何表示?有什么规定?8. 问题的解可以表示为n元组:(x1,x2,……x n),x i∈S i, S i为有穷集合,x i∈S i, (x1,x2,……x n)具备完备性,即(x1,x2,……x n)是合理的,则(x1,x2,……x i)(i<n)一定合理。

算法期末考试题及答案

算法期末考试题及答案

算法期末考试题及答案一、选择题(每题2分,共20分)1. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C2. 在二叉树的遍历算法中,中序遍历的顺序是:A. 先序B. 后序C. 中序D. 层序答案:C3. 动态规划与分治法算法的主要区别在于:A. 问题分解的方式B. 问题解决的顺序C. 存储中间结果的方式D. 问题规模的大小答案:C4. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 链地址法C. 线性探测法D. 排序答案:D5. 以下哪个是图的遍历算法?A. 归并排序B. 深度优先搜索C. 快速排序D. 堆排序答案:B6. 贪心算法的特点是:A. 每一步都选择最优解B. 每一步都选择局部最优解C. 每一步都选择最差解D. 每一步都随机选择解答案:B7. 在算法分析中,时间复杂度O(1)表示:A. 常数时间B. 线性时间C. 对数时间D. 多项式时间答案:A8. 以下哪个是排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C9. 递归算法的基本原理是:A. 重复执行B. 分而治之C. 循环调用D. 迭代求解答案:B10. 以下哪个是算法的时间复杂度为O(log n)的典型例子?A. 二分查找B. 线性查找C. 冒泡排序D. 快速排序答案:A二、简答题(每题10分,共20分)1. 简述快速排序算法的基本思想及其时间复杂度。

答案:快速排序是一种分治法的排序算法。

其基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两部分,一部分包含所有小于基准的元素,另一部分包含所有大于基准的元素。

这个过程称为分区(partitioning)。

之后,递归地对这两部分进行快速排序。

快速排序的平均时间复杂度为O(n log n),但在最坏情况下(例如数组已经排序或所有元素相等)时间复杂度为O(n^2)。

2. 解释什么是动态规划,并给出一个动态规划问题的例子。

(完整版)算法设计与分析期末考试卷及答案a

(完整版)算法设计与分析期末考试卷及答案a
_
flag=false
_
_
end if
_
__
end for
A[i] A[1]
w =i
return w, A end SPLIT
二.计算题和简答题(每小题
1.用O、、 表示函数f与g之间阶的关系,并分别指出下列函数中阶最低和最高 的函数:
(1)f (n)=100g(n)=100n
(2)f(n)=6n+nlog ng(n)=3n
算法EX1
输入:正整数n,n=2k。输出:⋯
ex1(n)
end EX1过程ex1(n) if n=1 then pro1(n)
else

名姓
级年
_
_系
_院学
pro2(n)
ex1(n/2) end if
return
end ex1
3.用Floyd算法求下图每一对顶点之间的最短路径长度, 计算矩阵D0,D1,D2和D3,其中Dk[i, j]表示从顶点i到顶点j的不经过编号大于
i=find ( (1) )
if i>0 then output i
else output“no solution”
end SEARCH
过程find (low, high)
//求A[low..high]中使得A[i]=i的一个下标并返回,若不存在,
//则返回0。
if (2) then return 0
生专
_

马的周游问题:给出一个nxn棋盘,已知一个中国象棋马在
_
_
棋盘上的某个起点位置(x0, y0),求一条访问每个棋盘格点恰好
_
_
一次,最后回到起点的周游路线。 (设马走日字。)

数据结构与算法分析—期末复习题及答案。。报告

数据结构与算法分析—期末复习题及答案。。报告

单选题(每题 2 分,共20分)1. 对一个算法的评价,不包括如下(B )方面的内容。

A.健壮性和可读性B.并行性C.正确性D.时空复杂度2. 在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( A )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3. 对线性表,在下列哪种情况下应当采用链表表示?( B )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4. 一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 36. 若需要利用形参直接访问实参时,应将形参变量说明为(D )参数。

A.值B.函数C.指针D.引用8. 在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的(A )。

A.行号B.列号C.元素值D.非零元素个数10. 从二叉搜索树中查找一个元素时,其时间复杂度大致为(C )。

A. O(n)B. O(1)C. O(log2n)D. O(n2)二、运算题(每题6 分,共24分)1. 数据结构是指数据及其相互之间的_联系。

当结点之间存在M对N(M:N)的联系时,称这种结构为__图__。

2. 队列的插入操作是在队列的___尾_进行,删除操作是在队列的_首_进行。

3. 当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是___top==0___(要超出才为满)_______________。

4. 对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为___ O(1)__,在表尾插入元素的时间复杂度为___ O(n)___。

算法设计与分析期末试题答案解析

算法设计与分析期末试题答案解析

问题空间是按广度优先的策
果满足进入该子树,继续按
略进行搜索“限界”策略是
深度优先的策略搜索。 否则, 为了加速搜索速度面采用启
不去搜索以该结点为根的子
发信息剪枝策略。
树,而是逐层向其祖先结点
可能会让画出 “子集树斩图”
回溯。其实回溯法就是对隐
235 页例题及图好好看一下。
7
( 1)分解:将原问题分 解为若干个规模较小,相互 独立,与原问题形式相同的 子问题;
( 2)解决:若子问题规 模较小而容易被解决则直接 解,否则递归地解各个子问 题;
4
( 3)合并:将各个子问 贪婪法
题的解合并为原问题的解。 优,达到最终的全局最优。
基本思想: 以逐步的局部最 【问题】 背包问题
转移有着天然的联系,状态 转移就是根据上一阶段的状
1、 确定问题的解空间: 应 用回溯法时,首先应明确
态和决策来导出本阶段的状
定义问题的解的空间。问
态。所以,如果我们确定了
题的解空间应至少包含问
决策,状态转移方程也就写
题的一个解。
出来了。但事实上,我们常 常是反过来做,根据相邻两
2、 确定结点的扩展规则 3、 搜索解空间: 从开始结
int
s=s+w[i];
m,n,i,j,w[50],p[50],pl[50],b[5
}
0],s=0,max;
if(s<=m)prntf(" 输入背包容量 m, 物品种类 n :");
{ printf("whole
scanf("%d %d",&m,&n);
choose\n");
for(i=1;i<=n;i=i+1)

算法分析期末试题集答案(6套)

算法分析期末试题集答案(6套)

《算法分析与设计》期末复习题(一)一、选择题1.应用Johnson法则的流水作业调度采用的算法是(D)A. 贪心算法B. 分支限界法C.分治法D. 动态规划算法2.Hanoi塔问题如下图所示。

现要求将塔座A上的的所有圆盘移到塔座B上,并仍按同样顺序叠置。

移动圆盘时遵守Hanoi塔问题的移动规则。

由此设计出解Hanoi塔问题的递归算法正确的为:(B)Hanoi塔3.动态规划算法的基本要素为(C)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用4. 算法分析中,记号O表示(B),记号Ω表示(A),记号Θ表示(D)。

A.渐进下界B.渐进上界C.非紧上界D.紧渐进界E.非紧下界5. 以下关于渐进记号的性质是正确的有:(A)A.f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ⇒=ΘB. f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==⇒=C. O(f(n))+O(g(n)) = O(min{f(n),g(n)})D. f(n)O(g(n))g(n)O(f(n))=⇔=6. 能采用贪心算法求最优解的问题,一般具有的重要性质为:(A)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。

A.广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分支限界法在问题的解空间树中,按(A)策略,从根结点出发搜索解空间树。

A.广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块(A)是回溯法中遍历排列树的算法框架程序。

A.B.C. D.10. 回溯法的效率不依赖于以下哪一个因素?(C )A. 产生x[k]的时间;B. 满足显约束的x[k]值的个数;C. 问题的解空间的形式;D. 计算上界函数bound 的时间;E. 满足约束函数和上界函数约束的所有x[k]的个数。

数据结构与算法分析—期末复习题及答案

数据结构与算法分析—期末复习题及答案

单选题(每题 2 分,共20分)1.对一个算法的评价,不包括如下(B )方面的内容。

A.健壮性和可读性B.并行性C.正确性D.时空复杂度2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( A )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3.对线性表,在下列哪种情况下应当采用链表表示?( B )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.一个栈的输入序列为 1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 36.若需要利用形参直接访问实参时,应将形参变量说明为(D )参数。

A.值B.函数C.指针D.引用8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的( A )。

A.行号B.列号C.元素值D.非零元素个数10.从二叉搜索树中查找一个元素时,其时间复杂度大致为(C )。

A. O(n)B. O(1)C. O(log2n)D. O(n2)二、运算题(每题 6 分,共24分)1.数据结构是指数据及其相互之间的_联系。

当结点之间存在M对N(M:N)的联系时,称这种结构为__图__。

2.队列的插入操作是在队列的___尾_进行,删除操作是在队列的_首_进行。

3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是___top==0___(要超出才为满)_______________。

4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为___O(1)__,在表尾插入元素的时间复杂度为___ O(n)___。

算法设计与分析试卷及答案

算法设计与分析试卷及答案

湖南科技学院二○ 年 学期期末考试信息与计算科学专业 年级《算法设计与分析》 试题考试类型:开卷 试卷类型:C 卷 考试时量:120 分钟一、填空题(每小题3 分,共计30 分)1. 用O 、Ω和θ表示函数f 与g 之间的关系______________________________。

2. 算法的时间复杂性为1,1()8(3/7),2n f n f n n n =⎧=⎨+≥⎩,则算法的时间复杂性的阶为__________________________。

3. 快速排序算法的性能取决于______________________________。

4. 算法是_______________________________________________________。

5. 在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的是_________________________。

6. 在算法的三种情况下的复杂性中,可操作性最好且最有实际价值的是_____情况下的时间复杂性。

7. 大Ω符号用来描述增长率的下限,这个下限的阶越___________,结果就越有价值。

8. ____________________________是问题能用动态规划算法求解的前提。

9. 贪心选择性质是指________________________________________________________ ____________________________________________________________。

10. 回溯法在问题的解空间树中,按______________策略,从根结点出发搜索解空间树。

二、简答题(每小题10分,共计30分)1. 试述回溯法的基本思想及用回溯法解题的步骤。

2. 有8个作业{1,2,…,8}要在由2台机器M1和M2组成的流水线上完成加工。

每个作业加工的顺序都是先在M1上加工,然后在M2上加工。

湖南大学计算机体系结构期末复习题(含答案)

湖南大学计算机体系结构期末复习题(含答案)

1.从执行程序的角度看,并行性等级从低到高分为那几级?从执行程序的角度看,并行性等级从低到高可分为:(1)指令内部并行:单条指令中各微操作之间的并行。

(2)指令级并行(Instruction Level Parallelism,ILP):并行执行两条或两条以上的指令。

(3)线程级并行(Thread Level Parallelism,TLP):并行执行两个或两个以上的线程,通常是以一个进程内派生的多个线程为调度单位。

(4)任务级或过程级并行:并行执行两个或两个以上的过程或任务(程序段),以子程序或进程为调度单元。

(5)作业或程序级并行:并行执行两个或两个以上的作业或程序。

2.计算机中提高并行性的技术途径有哪三种?(1)时间重叠。

多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。

(2)资源重复。

通过重复设置资源,尤其是硬件资源,大幅度提高计算机系统的性能。

(3)资源共享。

这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备3.从当前计算机技术来看,CISC结构有什么缺点?(1)CISC结构的指令系统中,各种指令的使用频率相差悬殊。

(2)CISC结构指令系统的复杂性带来了计算机系统结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。

(3)CISC结构指令系统的复杂性给VLSI设计增加了很大负担,不利于单片集成。

(4)CISC结构的指令系统中,许多复杂指令需要很复杂的操作,因而运行速度慢。

(5)在CISC结构的指令系统中,由于各条指令的功能不均衡性,不利于采用先进的计算机系统结构技术来提高系统的性能。

4.根据Amdahl定律,系统加速比有哪两个因素决定?系统加速比依赖于两个因素:(1)可改进比例:可改进部分在原系统计算时间中所占的比例。

(2)部件加速比:可改进部分改进以后的性能提高。

5.从处理数据角度,并行性等级由低到高分为哪几级?从处理数据的角度来看,并行性等级从低到高可分为:(1)字串位串:每次只对一个字的一位进行处理。

数据结构与算法分析—期末复习题及答案

数据结构与算法分析—期末复习题及答案

单选题(每题 2 分,共20分)1.对一个算法的评价,不包括如下(B )方面的内容。

A.健壮性和可读性B.并行性C.正确性D.时空复杂度2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( A )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3.对线性表,在下列哪种情况下应当采用链表表示?( B )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.一个栈的输入序列为 1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 36.若需要利用形参直接访问实参时,应将形参变量说明为(D )参数。

A.值B.函数C.指针D.引用8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的( A )。

A.行号B.列号C.元素值D.非零元素个数10.从二叉搜索树中查找一个元素时,其时间复杂度大致为(C )。

A. O(n)B. O(1)C. O(log2n)D. O(n2)二、运算题(每题 6 分,共24分)1.数据结构是指数据及其相互之间的_联系。

当结点之间存在M对N(M:N)的联系时,称这种结构为__图__。

2.队列的插入操作是在队列的___尾_进行,删除操作是在队列的_首_进行。

3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是___top==0___(要超出才为满)_______________。

4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为___O(1)__,在表尾插入元素的时间复杂度为___ O(n)___。

算法期末考试试题及答案

算法期末考试试题及答案

算法期末考试试题及答案一、选择题(每题2分,共20分)1. 在排序算法中,时间复杂度为O(n^2)的算法是:A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序2. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 链接法C. 链表法D. 排序法3. 以下哪个不是二叉树的性质:A. 每个节点最多有两个子节点B. 没有兄弟节点C. 左子树的所有节点的值小于根节点的值D. 右子树的所有节点的值大于根节点的值4. 在图的遍历算法中,深度优先搜索(DFS)使用的是:A. 栈B. 队列C. 链表D. 哈希表5. 动态规划与分治法的区别在于:A. 动态规划使用贪心选择,分治法不使用B. 分治法使用贪心选择,动态规划不使用C. 动态规划使用递归,分治法不使用D. 动态规划使用迭代,分治法使用递归...二、简答题(每题10分,共30分)1. 简述快速排序算法的基本思想。

2. 解释什么是贪心算法,并给出一个实际应用的例子。

3. 描述图的广度优先搜索(BFS)算法的步骤。

三、计算题(每题15分,共30分)1. 给定一个数组A=[3, 1, 4, 1, 5, 9, 2, 6, 5, 3],请使用归并排序算法对其进行排序,并给出排序过程中的每一步。

2. 假设有一个无向图,顶点集为V={A, B, C, D},边集为E={(A, B), (B, C), (C, D), (D, A)},请使用Kruskal算法找到该图的最小生成树。

四、编程题(每题20分,共20分)1. 编写一个函数,实现单源最短路径的Dijkstra算法。

函数输入为图的邻接矩阵和起始顶点,输出为从起始顶点到所有其他顶点的最短路径长度。

答案一、选择题1. C2. D3. B4. A5. D二、简答题1. 快速排序算法的基本思想是通过一个划分操作,将数组分为两部分,一部分比另一部分的所有元素都要小,然后再递归地对这两部分进行快速排序,最后将两部分合并。

2. 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法。

2022年湖南大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年湖南大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年湖南大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、已知广义表LS=((a,b,c),(d,e,f)),用head和tail数取出LS中原子e 的运算是()。

A.head(tail(LS))B.tail(head(LS))C.head(tail(head(tail(LS))))D.head(tail(tail(head(LS))))2、下述文件中适合于磁带存储的是()。

A.顺序文件B.索引文件C.哈希文件D.多关键字文件3、连续存储设计时,存储单元的地址()。

A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续4、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>, <V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。

A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V75、下列关于AOE网的叙述中,不正确的是()。

A.关键活动不按期完成就会影响整个工程的完成时间B.任何一个关键活动提前完成,那么整个工程将会提前完成C.所有的关键活动提前完成,那么整个工程将会提前完成D.某些关键活动若提前完成,那么整个工程将会提前完成6、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。

A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=27、下列选项中,不能构成折半查找中关键字比较序列的是()。

算法设计含解析总结计划期末考试复习题

算法设计含解析总结计划期末考试复习题

1、二分搜寻算法是利用(A)实现的算法。

A、分治策略 B 、动向规划法 C 、贪婪法 D 、回溯法2、以下不是动向规划算法基本步骤的是(A)。

A、找出最优解的性质 B 、结构最优解 C 、算出最优解 D 、定义最优解3、最大效益优先是(A)的一搜寻方式。

A、分支界线法 B 、动向规划法 C 、贪婪法 D 、回溯法4、在以下算法中有时找不到问题解的是(B)。

A、蒙特卡罗算法 B 、拉斯维加斯算法 C 、舍伍德算法 D 、数值概率算法5.回溯法解旅游售货员问题时的解空间树是(A)。

A、子集树B、摆列树C、深度优先生成树D、广度优先生成树6.以下算法中往常以自底向上的方式求解最优解的是(B)。

A、备忘录法B、动向规划法C、贪婪法D、回溯法7、权衡一个算法利害的标准是( C )。

A 运转速度快B 占用空间少C时间复杂度低D代码短8、以下不可以够使用分治法求解的是( D )。

A 棋盘覆盖问题B 选择问题C合并排序 D 0/1背包问题9. 实现循环赛日程表利用的算法是(A)。

A、分治策略B、动向规划法C、贪婪法D、回溯法10、以下随机算法中运转时有时成功有时失败的是( C )A 数值概率算法B 舍伍德算法 C拉斯维加斯算法D蒙特卡罗算法11.下边不是分支界线法搜寻方式的是(D)。

A、广度优先B、最小耗资优先C、最大效益优先D、深度优先12.以下算法中往常以深度优先方式系统搜寻问题解的是(D)。

A、备忘录法B、动向规划法C、贪婪法 D 、回溯法13. 备忘录方法是那种算法的变形。

( B)A、分治法B、动向规划法C、贪婪法D、回溯法14.哈弗曼编码的贪婪算法所需的计算时间为(B)。

A、 O( n2n)B、 O( nlogn )C、 O(2n)D、 O( n)15.分支限界法解最大团问题时,活结点表的组织形式是(B)。

A、最小堆B、最大堆C、栈D、数组.16.最长公共子序列算法利用的算法是(B)。

A、分支界线法B、动向规划法C、贪婪法D、回溯法17.实现棋盘覆盖算法利用的算法是(A)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、解答题1.机器调度问题。

问题描述:现在有n件任务和无限多台的机器,任务可以在机器上得到处理。

每件任务的开始时间为s i,完成时间为f i,s i<f i 。

[s i,f i]为处理任务i的时间范围。

两个任务i,j重叠指两个任务的时间范围区间有重叠,而并非指i,j的起点或终点重合。

例如:区间[1,4]与区间[2,4]重叠,而与[4,7]不重叠。

一个可行的任务分配是指在分配中没有两件重叠的任务分配给同一台机器。

因此,在可行的分配中每台机器在任何时刻最多只处理一个任务。

最优分配是指使用的机器最少的可行分配方案。

问题实例:若任务占用的时间范围是{[1,4],[2,5],[4,5],[2,6],[4,7]},则按时完成所有任务最少需要几台机器?(提示:使用贪心算法)画出工作在对应的机器上的分配情况。

3. 单源最短路径的求解。

问题的描述:给定带权有向图(如下图所示)G =(V,E),其中每条边的权是非负实数。

另外,还给定V中的一个顶点,称为源。

现在要计算从源到所有其它各顶点的最短路长度。

这里路的长度是指路上各边权之和。

这个问题通常称为单源最短路径问题。

解法:现采用Dijkstra算法计算从源顶点1到其它顶点间最短路径。

请将此过程填入下表中。

7. 最长公共子序列问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X 和Y 的最长公共子序列。

由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系。

用c[i][j]记录序列Xi 和Yj 的最长公共子序列的长度。

其中, Xi={x1,x2,…,xi};Yj={y1,y2,…,yj}。

当i=0或j=0时,空序列是Xi 和Yj 的最长公共子序列。

故此时C[i][j]=0。

其它情况下,由最优子结构性质可建立递归关系如下:0,0[][][1][1]1,0;max{[][1],[1][]},0;i j i ji j c i j c i j i j x y c i j c i j i j x y ⎧==⎪=--+>=⎨⎪-->≠⎩在程序中,b[i][j]记录C[i][j]的值是由哪一个子问题的解得到的。

三、算法理解1、写出多段图最短路经动态规划算法求解下列实例的过程,并求出最优值。

43 2 1 100 30 maxint10 - {1} 初始 dist[5] dist[4] dist[3] dist[2] u S 迭代各边的代价如下:C(1,2)=3,C(1,3)=5 ,C(1,4)=2C(2,6)=8 ,C(2,7)=4 ,C(3,5)=5 ,C(3,6)=4,C(4,5)=2,C(4,6)=1 C(5,8)=4,C(6,8)=5 ,C(7,8)=6解:Cost(4,8)=0Cost(3,7)= C(7,8)+0=6 ,D[5]=8Cost(3,6)= C(6,8)+0=5, D[6]=8Cost(3,5)= C(5,8)+0=4 D[7]=8Cost(2,4)= min{C(4,6)+ Cost(3,6), C(4,5)+ Cost(3,5)}= min{1+ 5, 2+4}=6 D[4]=6Cost(2,3)= min{C(3,6)+ Cost(3,6) }= min{4+5}=9 D[3]=5Cost(2,2)= min{C(2,6)+ Cost(3,6), C(2,7)+ Cost(3,7)}= min{8+5, 4+6}=10 D[2]=7Cost(1,1)= min{C(1,2)+ Cost(2,2), C(1,3)+ Cost(2,3), C(1,4)+ Cost(2,4)}= min{3+10, 5+9,2+6}= 8D[1]=41→4→6→82、写出maxmin算法对下列实例中找最大数和最小数的过程。

数组A=(48,12,61,3,5,19,32,7)解:写出maxmin算法对下列实例中找最大数和最小数的过程。

数组A=()1、48,12,61,3, 5,19,32,72、48,12 61,3 5,19 32,73、48~61, 12~3 19~32,5~74、61~32 3~55、61 31、快速排序算法对下列实例排序,算法执行过程中,写出数组A第一次被分割的过程。

A=(65,70,75,80,85,55,50,2)解:第一个分割元素为65(1) (2) (3) (4) (5) (6) (7) (8) i p65 70 75 80 85 55 50 2 2 865 2 75 80 85 55 50 70 3 765 2 50 80 85 55 75 70 4 665 2 50 55 85 80 75 70 4 655 70 75 80 85 65 50 22、归并排序算法对下列实例排序,写出算法执行过程。

A=(48,12,61,3,5,19,32,7)解:48,12,61,3 5,19,32,748,12 61,3 5,19 32,712,48 3,61 5,19 7,323, 12, 48, 61 5, 7, 19,323,5, 7,12,19,32,48,613、写出图着色问题的回溯算法的判断X[k]是否合理的过程。

解:i←0while i<k doif G[k,i]=1 and X[k]= X[i] thenreturn falsei←i+1repeatif i= k then return true4、对于下图,写出图着色算法得出一种着色方案的过程。

解:K←1X[1] ←1 , 返回trueX[2]←1,返回false; X[2]←X[2]+1=2, 返回trueX[3]←1 ,返回false; X[3]←X[3]+1=2, 返回false;X[3]←X[3]+1=3, 返回true X[4]←1, 返回false; X[4]←X[4]+1=2, 返回false;X[4]←X[4]+1=3, 返回true 找到一个解(1,2,3,3)5、写出第7题的状态空间树。

解:8、写出归并排序算法对下列实例排序的过程。

(6,2,9,3,5,1,8,7)解:调用第一层次6,2,9,3 5,1,8,7 分成两个子问题调用第二层次6,2 9,3 5,1 8,7 分成四个子问题调用第三层次 6 2 9 3 5 1 8 7 分成八个子问题调用第四层次只有一个元素返回上一层第三层归并 2 ,6 3, 9 1,5 7,8 返回上一层第二层归并 2 ,3,6, 9 1,5,7,8 返回上一层第一层归并1, 2 ,3, 5 ,6, 7, 8,9 排序结束,返回主函数9、写出用背包问题贪心算法解决下列实例的过程。

P=(18,12,4,1)W=(12,10,8,3)M=25解: 实例符合P(i)/W(i)≥P(i+1)/W(i+1)的顺序。

CU←25,X←0W[1]< CU: x[1]←1; CU←CU-W[1]=13;W[2]< CU: x[2]←1; CU←CU-W[2]=3;W[3]>CU: x[3]←CU/ W[3]=3/8;实例的解为:(1,1,3/8,0)11、有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当使用二分查找值为82的结点时,经过多少次比较后查找成功并给出过程。

解:有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当使用二分查找值为82的结点时,经过多少次比较后查找成功并给出过程。

一共要要执行四次才能找到值为82的数。

12、使用prim算法构造出如下图G的一棵最小生成树。

dist(1,2)=6;dist(2,5)=3;dist(5,6)=6;dist(6,4)=2;dist(4,1)=5; dist(1,3)=1;dist(2,3)=5;dist(3,4)=5;dist(3,6)=4;dist(5,3)=6 解:使用普里姆算法构造出如下图G的一棵最小生成树。

dist(1,2)=6;dist(2,5)=3;dist(5,6)=6;dist(6,4)=2;dist(4,1)=5; dist(1,3)=1;dist(2,3)=5;dist(3,4)=5;dist(3,6)=4;dist(5,3)=613、有如下函数说明 int f(int x,int y) {f=x Mod y +1; }已知a=10,b=4,c=5 则执行k=f(f(a+c,b),f(b,c))后,k 的值是多少并写出详细过程。

解:有如下函数说明 int f(int x,int y) {f=x Mod y +1; }已知a=10,b=4,c=5 则执行k=f(f(a+c,b),f(b,c))后,k 的值是多少并写出详细过程。

}K的值是5四、设计算法1.设有n项独立的作业{1,2,…, n},由m台相同的机器加工处理。

作业i所需要的处理时间为t i。

约定:任何一项作业可在任何一台机器上处理,但未完工前不准中断处理;任何作业不能拆分更小的子作业。

多机调度问题要求给出一种调度方案,使所给的n个作业在尽可能短的时间内由m台机器处理完。

设计算法,并讨论是否可获最优解。

解:对于处理机j,用S[j] 表示处理机j已有的作业数,用P[j,k]表示处理机j的第k 个作业的序号。

1)将作业按照t[1]≥t[2]≥……≥t[n]排序2)S[1:m]清零j←0 //从第一个处理机开始安排3) for i←1 to n do //安排n个作业j←j mod m +1 //选下一个处理机S[j]←S[j]+1;P[j,S[j]]←i ;Repeat2. 设有n种面值为:d1≥d2≥……≥d n的钱币,需要找零钱M,如何选择钱币d k,的数目X k,满足d1×X i+……d n×X n M ,使得X i+……X n 最小请选择贪心策略,并设计贪心算法。

解:贪心原则:每次选择最大面值硬币。

CU←M;i←1;X←0 // X为解向量While CU≠0 doX[i]←CU div d[i] // X[i]为第i中硬币数CU←CU-d[i]*X[i]i←i+1;repeat3.有n个物品,已知n=7, 利润为P=(10,5,15,7,6,18,3),重量W=(2,3,5,7,1,4,1),背包容积M=15,物品只能选择全部装入背包或不装入背包,设计贪心算法,并讨论是否可获最优解。

解:定义结构体数组G,将物品编号、利润、重量作为一个结构体:例如G[k]={1,10,2} 求最优解,按利润/重量的递减序,有{5,6,1,6} {1,10,2,5}{6,18,4,9/2} {3,15,5,3} {7,3,1,3}{2,5,3,5/3} {4,7,7,1}算法procedure KNAPSACK(P,W,M,X,n)//P(1:n)和W(1;n)分别含有按P(i)/W(i)≥P(i+1)/W(i+1)排序的n件物品的效益值和重量。

相关文档
最新文档