山东大学软件学院2022年春算法设计与分析考试
时间:2022年6月9日14:00-16:00
试题
一、 选择题(单项选择题 5*2分)
-
f ( n ) = 1 100 n 3 + 2 n + 3 f(n)={\frac{1}{100}n^3+2n+3} f(n)=1001n3+2n+3,判断 f ( n ) = O ( n 3 ) , f ( n ) = Θ ( n 3 ) f(n)=O(n^3),f(n)={\Theta{(n^3)}} f(n)=O(n3),f(n)=Θ(n3)?两个都对。
-
判断无向图的DFS算法不会产生前向边,后向边,树边,交叉边的哪些边?
-
强连通算法:问你 G T G^T GT和 G G G是否具有相同的强连通分量?
-
考查三角不等式的选择问题, δ ( s , v ) ≤ δ ( s , u ) + w ( u , v ) {\delta(s,v)}{\leq}{\delta(s,u)+w(u,v)} δ(s,v)≤δ(s,u)+w(u,v).
-
Bellman-Ford算法的时间复杂度问题, Θ ( V E ) {\Theta(VE)} Θ(VE).
二、 填空题(填空题 5*3分,顺序不一定对)
-
RAM模型中机器会执行哪三条类型的指令,算术指令,数据移动指令,控制指令。
-
-
-
(忘了,好像是写一个算法的复杂度的问题)反正是一个一个复杂度为 Θ ( V + E ) {\Theta(V+E)} Θ(V+E)的算法,应该是强连通算法的复杂度?
-
这里以矩阵乘法计算所有顶点对的最短路径问题为例,请解释参数m的含义,类似这样的。
三、 解答与证明题(共6题,75分)
-
(10分)(英文题)请求出 T ( n ) = 2 T ( n / 5 ) + n 2 lg n T(n)=2T(n/5)+n^2\lg{n} T(n)=2T(n/5)+n2lgn的上界。
-
(10分)(中文题)请解释多项式归约和传递的含义;请解释P=NP的含义。
-
(15分)(英文题)
- 请设计算法求解图 G G G的最小生成树,并给出伪代码,分析时间复杂度。
- 如果我在图 G = ( V , E ) G=(V,E) G=(V,E)的顶点不变的基础之上,已知有一颗最小生成树 T T T,那么加入边 ( u , v ) (u,v) (u,v), u , v ∈ G . V u,v{\in}G.V u,v∈G.V,请设计有效的算法判断加入边之后原来的最小生成树 T T T是否仍旧是现在的新图的最小生成树,写出算法思想,伪代码,并证明你设计的算法的正确性。
-
(15分)(英文题)请写出Floyd-Warshall算法的思想,现在我有给定的一个有向带权重图,已知 D 0 , D 1 , D 2 , D 3 D^0,D^1,D^2,D^3 D0,D1,D2,D3,求解 D 4 D^4 D4.(前面的四个矩阵给了,让你求解第五个矩阵,这些个矩阵都是4*4的),然后写出所有顶点对之间的最短路径,给出该算法的复杂度(含时间、空间复杂度).
本题有一个矩阵大概是这样的:
[ 0 6 3 3 2 0 3 3 − 1 2 0 7 − 1 2 1 0 ] \begin{bmatrix} 0&6&3&3\\ 2&0&3&3\\ -1&2&0&7\\ -1&2&1&0\\ \end{bmatrix} ⎣⎢⎢⎡02−1−1602233013370⎦⎥⎥⎤
(数据是编的,有几个记不得了,有向图的形状是差不多的,4*4的矩阵).
-
(15分)(中文题)动态规划算法设计
已知一个字符串由a,b,c组成,其中不含有连续的两个a,问长度为 n n n满足上述条件的字符串一共有多少个?请写出算法思想和伪代码,并分析时间复杂度。
-
(15分)(中文题)贪心算法-集合覆盖问题
给定 F F F由n个集合组成,集合中的元素均连续的取自整数集 { 1 , 2 , 3 , … , k } \{1,2,3,\dots,k\} {1,2,3,…,k},请找到数量最小的集合覆盖整数集 { 1 , 2 , 3 , … , k } \{1,2,3,\dots,k\} {1,2,3,…,k}. 请写出算法设计思想和伪代码,并证明你所设计的算法的正确性。
(上述回忆可能存在数据的误差问题,但是大致方向是没什么问题的!)
祝各位算法都可以A+!