当前位置:文档之家› 算法分析与设计》期末考试复习题纲(完整版)

算法分析与设计》期末考试复习题纲(完整版)


delete[] ; return ;
}
例 2:批处理作业调度 解空间:排列树 算法描述: class Flowshop {
课件第 5 章(2)P2-5 问题描述,课本 P125-127
static int [][] m,
2A5A
1 A
bestp=0,将物体的序号按价值体积比排序结果是(2,1,3,4,5) N2 1 3 45
void hanoi (int n, int a, int c, int b) { if (n > 0) { hanoi(n-1, a, b, c); move(a,c); hanoi(n-1, b, c, a); } }
2. 用分治法求解快速排序问题。 快速排序算法 P25 、作业、课件第 2 章(2)42 页-50 页 template<class Type> void QuickSort (Type a[], int p, int r) {
C.最小花费生成树问题
D.背包问题
17. 使用二分搜索算法在 n 个有序元素表中搜索一个特定元素,在最好情况和最坏情
况下搜索的时间复杂性分别为( A )。P17
A.O(1),O(logn)
B.O(n),O(logn)
C.O(1),O(nlogn)
D.O(n),O(nlogn)
18. 优先队列式分支限界法选取扩展结点的原则是(C)。P162
解题算法: template<class Type> void GS (int n, Type s[], Type f[], bool A[])
{ A[1]=false; int j=1; int sum=0; for (int i=2;i<=n;i++) { if (s[i]>=f[j]) { A[i]=false; j=i; } else {A[i]=true; sum++;} }
此时已回到根结点,结束。最优解( 1,1,0,0, 1 ),价值为 92. (如图第 10 步)
练习 n=8, M=110, W=( 1, 11,21,23,33,43,45,55 ) P=(11,21,31,33,43,53,55,65 ) 用回溯法求此 0-1 背包问题的最优解。
最优装载问题 P119 课件第 P37- P54 页 假定 n= 4,w= [ 8 , ቤተ መጻሕፍቲ ባይዱ , 2 , 3 ],c1 = c2 =12. 试根据改进后的最优装载算法找出最优装载量及相应的最优装载方案。 要求:
A.先进先出
B.后进先出
C.结点的优先级
D.随机
19. 下面不是分支界限法搜索方式的是( D )。P161
A.广度优先
B.最小耗费优先
C.最大效益优先
D.深度优先
20. 分支限界法解最大团问题时,活结点表的组织形式是( B )。
A.最小堆
B.最大堆
C.栈
D.数组
21. 下列关于计算机算法的描述不正确的是( C )。P1
成概算法的时间为 t 秒。现有另一台计算机,其运行速度为第一台的 64 倍,那么
在这台新机器上用同一算法在 t 秒内能解输入规模为多大的问题( B )解题方
法:3*2^n*64=3*2^x
A.n+8
B.n+6
C.n+7
D.n+5
4. 设 问 题 规 模 为 N 时 , 某 递 归 算 法 的 时 间 复 杂 度 记 为 T(N) , 已 知 T(1)=1 ,
24. 分治法所能解决的问题应具有的关键特征是( C )。P16
A.该问题的规模缩小到一定的程度就可以容易地解决 B.该问题可以分解为若干个规模较小的相同问题 C.利用该问题分解出的子问题的解可以合并为该问题的解 D.该问题所分解出的各个子问题是相互独立的 25. 下列关于回溯法的描述不正确的是( D )。P114 A.回溯法也称为试探法 B.回溯法有“通用解题法”之称 C.回溯法是一种能避免不必要搜索的穷举式搜索法 D.用回溯法对解空间作深度优先搜索时只能用递归方法实现 26. 常见的两种分支限界法为( D )。P161 A. 广度优先分支限界法与深度优先分支限界法; B. 队列式(FIFO)分支限界法与堆栈式分支限界法; C. 排列树法与子集树法; D. 队列式(FIFO)分支限界法与优先队列式分支限界法;
A.算法是指解决问题的一种方法或一个过程
B.算法是若干指令的有穷序列
C. 算法必须要有输入和输出
D.算法是编程的思想
22. 下列关于凸多边形最优三角剖分问题描述不正确的是( A )。
A.n+1 个矩阵连乘的完全加括号和 n 个点的凸多边形的三角剖分对应
B.在有 n 个顶点的凸多边形的三角剖分中,恰有 n-3 条弦
} 题型二: 试用贪心算法求解下列问题:将正整数 n 分解为若干个互不相同的自然数之和,使这些自然 数的乘积最大,写出该算法。先看看几个 n 比较小的例子,看能否从中找出规律:
A.重叠子问题
B.最优子结构性质
C.贪心选择性质
D.定义最优解
9. 下列哪个问题不用贪心法求解( C )。
A.哈夫曼编码问题
B.单源最短路径问题
C.最大团问题
D.最小生成树问题
10. 下列算法中通常以自底向上的方式求解最优解的是( B )。
A.备忘录法
B.动态规划法
C.贪心法
D.回溯法
11. 下列算法中不能解决 0/1 背包问题的是( A )。
{ if (n==0) return 1; 递归出口 return n * factorial (n-1); 递归调用
} 例 2:用递归技术求解 Hanoi 塔问题,Hanoi 塔的递归算法。P15 其中 Hanoi (int n, int a, int c, int b)表示将塔座 A 上的 n 个盘子移至塔座 C,以塔座 B 为辅助。 Move(a,c)表示将塔座 a 上编号为 n 的圆盘移至塔座 c 上。
{
int i = p, j = r + 1;
Type x=a[p];
D=i; Q[i-1].d=*p[i]/w[i];
P+=p[i]; }
W+=w[i];
if(W<=c) D]; [i]=w[Q[i-1].ID]; }
=0; =0;
=c;
=n;
=0; (1);
delete[] Q;
delete[] ;
C.该问题可以用动态规划法来求解
D.在有 n 个顶点的凸多边形的三角剖分中,恰有 n-2 个三角形
23. 动态规划法求解问题的基本步骤不包括( C )。P44
A.递归地定义最优值
B.分析最优解的性质,并刻画其结构特征
C.根据计算最优值时得到的信息,构造最优解 (可以省去的)
D.以自底向上的方式计算出最优值
;分支限界法
三、算法填空题
1. 递归求解 Hanoi 塔问题/阶乘问题。
例 1 :阶乘函数 n! P12
阶乘的非递归方式定义: n! n (n 1) (n 2) 21
试写出阶乖的递归式及算法。
递归式为:
1 n0 n! n(n 1)! n 0
边界条件
递归方程 递归算法: int factorial (int n)
D.2m
14. 二分搜索算法是利用(A)实现的算法。
A.分治策略
B.动态规划法
C.贪心法
D.回溯法
15. 下列不是动态规划算法基本步骤的是(B)。P44
A.找出最优解的性质
B.构造最优解
C.算出最优解(应该是最优值)
D.定义最优解
16. 下面问题( B )不能使用贪心法解决。
A.单源最短路径问题
B.N 皇后问题
if (p<r) { int q=Partition(a,p,r); QuickSort (a,p,q-1); QuickSort (a,q+1,r); }
}
Partition 函数的具体实现
template<class Type>
int Partition (Type a[], int p, int r)
a) 列出问题的解空间。 b) 构造解空间树。 c) 根据递归回溯算法求出最优解和最优值。
四、算法设计题
使用贪心算法求解。
题型一:
开会问题:
某公司的会议很多,以至于全公司唯一的会议室不够用。现在给出这段时期的会议时间表, 要求你适当删除一些会议,使得剩余的会议在时间上互不冲突,要求删除的会议数最少。
A.5,89
B.3,89
C.5,144
D.3,144
7. 在有 8 个顶点的凸多边形的三角剖分中,恰有( B )。
A.6 条弦和 7 个三角形
B.5 条弦和 6 个三角形
C.6 条弦和 6 个三角形
D.5 条弦和 5 个三角形
8. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。
T(N)=2T(N/2)+N/2,用 O 表示的时间复杂度为( C )。
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N2logN)
5. 直接或间接调用自身的算法称为( B )。
A.贪心算法
B.递归算法
C.迭代算法
D.回溯法
6. Fibonacci 数列中,第 4 个和第 11 个数分别是( D )。
二、填空题
1. f(n)=3n2+10 的渐近性态 f(n)= O(n2 ),
g(n)=10log3n 的渐近性态 g(n)= O( n )。
2. 一个“好”的算法应具有正确性、 低存储量需求等特性。
相关主题