总体感受

国科大研究生的计算机算法设计与分析课程有三位老师教授,分别是卜东波老师、陈玉福老师 和刘玉贵老师,这三位老师上课各有特色和风格。我选择的是刘玉贵老师的课程。 这门课程的内容挺充足的,但是有个缺点就是不太注重实践,课程重点讲述算法的思想和理论推导,例如贪心算法的正确性验证、动态规划算法的最优子结构证明等等,所以对于代码的训练还是得靠平时积累。课程对数据结构不会有太多讲述,因为这个前置课程就是数据结构,重点还是在算法本身。之前没有学过数据结构也没有很大关系,课后主要补一下数据结构中树和图的知识,其他都能听得懂。作业和考试都是基于伪代码,平时认真做作业,考试就不会有问题。

算法课学完,自己真的感触颇深,觉得需要好好学习一下数据结构了,之前太混了。好好刷题写代码吧,算法的学习真的不是一朝一夕就能促成的,算法的重要性不言而喻,算法的学习也不能结束啊!

注意:对于2021年12月份期末考试试题的内容,是本人在考后回忆的,前面的填空题和判断题一些记得不清楚,但是后面的大题内容是没有错误的,也是给自己学完这门课的一个纪念和总结吧。

2021年12月份期末考试试题回顾

1. 试卷分值及内容安排

(1) 2021年12月份是的试卷分值是:一. 填空题(5 * 2’=10’);二. 判断题(5 * 2’=10’);三. 简答题(25’=5’+5’+10’+5’);四. 算法设计题目(55’=20’+20’+15’) (2) 考前是会给提纲的,并且说一下题目重点

2. 具体内容

1. 填空题

1.算法阶的估计,给定函数f(x)和g(x),判断这两个函数阶的关系; 2.下面属于遗传算法实现的关键技术问题的有___________。 (1)解的编码 (2)初始种群的选择 (3)邻域定义 (4)适应函数 3.实现n皇后问题求解,有下几种方法哪几种:(四选二) 4…对判定问题的Monte Carlo算法,当返回false(true)时解总是正确的,但当返回true(false)时解可能有错误,该算法是_________。 (1)偏真的Monte Carlo算法(2)偏假的Monte Carlo算法 (3)一致的Monte Carlo算法(4)不一致的Monte Carlo算法 5.下面说法,正确的是:____________. (1)P类问题是存在多项式时间算法的问题。 (2)NP类问题是不存在多项式时间算法的问题。 (3)P类问题一定也是NP类问题。 (4)NP类问题比P类问题难解。

2. 判断题

抱歉,判断题大概只记得3个

0/1背包问题的贪心算法(单位价值高优先装入)是绝对近似算法。( )多机调度问题的贪心近似算法(按输入顺序将作业分配给当前最小负载机器)是e-近似算法。( )禁忌搜索中,禁忌某些对象是为了避免邻域中的不可行解。( )

注意:填空题和判断题基本上都是作业里面的选择题和判断题,主要是集中在第八章至十一章(NP完全理论,近似算法,启发式算法里面),都是一些概念性问题。

3 简答题:

写出模拟退火算法的主要步骤。(5’)写出一个贪心算法,来近似估计多机调度问题的解,并说明该解释什么近似的(不需要证明)?(其实这个题目背后就是第十章,多机调度问题的2-近似算法)。(5’)相遇集问题是 NP-完全问题(10’)读程序题,读懂下列快速 Fourier 变换的程序,并使用迭代法分析该程序的时间复杂度。(5’)

Proc FFT(N, a,w,A)

// N=2m,w 是 n 次单位根, a 是已知的 N 元数组,代表多项式 a(x)的系数,

//A 是计算出来的 N 元数组, A[j]=a(wj), j=0,1,…,N-1.

real b[ ], c[ ]; int j;

complex B[ ], C[ ], wp[ ];

if N=1 then A[0]:=a[0];

else

n:=N/2;

for j from 0 to n-1 do

b[j]:=a[2*j+1]; c[j]:=a[2*j];

end{for}

end{if}

FFT(n,b,w*w,B);

FFT(n,c,w*w,C);

wp[0]:=1;

for j from 0 to n-1 do

wp[j+1]:=w*wp[j];

A[j]:= C[j]+B[j]*wp[j]; A[j+n]:= C[j]-B[j]*wp[j];

end{for}

end{FFT}

4. 程序设计题目

有n个进程p1,p2,…,pn,进程pi的开始时间为s[i],截止时间为d[i]。可以通过检测程序Test来测试正在运行的进程,Test每次测试时间很短,可以忽略不计,即,如果Test在时刻t测试,那么它将对满足s[i]<=t<=d[i]的所有进程同时取得测试数据。问:如何安排测试时刻,使得对每个进程至少测试一次,且Test测试的次数达到最少?设计算法并证明正确性,分析算法复杂度。(20’)请设计动态规划算法解决该(双机调度问题,用两台处理机 A 和 B 处理 n 个作业。设第i 个作业交给机器 A 处理时所需要的时间是ai,若由机器 B 来处理,则所需要的时间是bi 。现在要求每个作业只能由一台机器处理,每台机器都不能同时处理两个作业。设计一个动态规划算法,使得这两台机器处理完这n 个作业的时间最短(从任何一台机器开工到最后一台机器停工的总的时间)。(20’)最佳调度问题:假设有n 个任务要由k 个可并行工作的机器来完成,完成任务需要的时间为ti 。试设计一个分枝限界算法,找出完成这n 个任务的最佳调度,使得完成全部任务的时间最短。请使用回溯法或者是分支限界法来设计算法解决这个问题,要求写出剪枝过程。(15’)

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。