中南大学现代远程教育课程考试复习试题及参考答案.docx
- 文档编号:10110652
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:16
- 大小:24.42KB
中南大学现代远程教育课程考试复习试题及参考答案.docx
《中南大学现代远程教育课程考试复习试题及参考答案.docx》由会员分享,可在线阅读,更多相关《中南大学现代远程教育课程考试复习试题及参考答案.docx(16页珍藏版)》请在冰豆网上搜索。
中南大学现代远程教育课程考试复习试题及参考答案
中南大学现代远程教育课程考试复习试题及参考答案
《算法分析与设计》
一简答题
1.算法的复杂性分析主要是分析算法的什么耗费情况?
2.算法的重要特性是什么?
3.算法的时间复杂度用什么计量?
4.用比较树模型描述三个数排序的过程。
5.分治法的基本思想。
6.二分检索算法为什么可以提高查找的效率?
7.简述顺序选择select算法的基本流程。
8.简述顺序选择select2算法的改进思路。
9.简述快速排序的基本思想。
10.快速排序算法的最坏时间复杂性和平均时间复杂性函数。
11.快速排序算法怎样抽取分割元素?
12.partition怎样将数组划分成3段?
13.分治合并排序的是怎样分治的?
14.分治合并排序的二分归并过程在最坏情况下花费多少时间?
15.分治合并排序的二分归并过程在最好情况下花费多少时间?
16.MaxMin算法是怎样分治的?
17.贪心法的基本思路是什么?
18.用贪心法求解的问题有什么特点?
19.背包问题的目标函数是什么,最优量度是什么?
20.带限期的作业调度的贪心策略是什么?
约束条件是什么?
21.说明n皇后问题的解(x1,x2,….,xn)的含义。
22.简述n皇后算法的place函数的功能。
23.简述动态规划方法所运用最优化原理。
24.用多段图说明最优化原理。
二解释下列动态规划优解的一般递归形式。
1)0/1背包
2)货郎担问题
3)流水作业调度
三算法分析。
1.分析汉诺塔算法的时间复杂性。
2.计算冒泡排序算法时间复杂性的阶。
3.分析maxmin算法的时间复杂性。
4.分析分治合并排序算法的时间复杂性。
5.分析二分检索的时间复杂性。
6.背包问题贪心算法的时间复杂性。
7.快速排序的partition过程中,进行了多少次元素之间的比较。
8.多段图算法的时间复杂性。
四算法段填空。
1.MaxMin算法
Maxmin(i,j,max,min)
if
then对两元素进行比较;return;
else
{
maxmin(i,m,max1,min1);//其中max1和min1为解子问题1的解
}
2.Hanoi算法
Hanoi(n,a,b,c)
Ifn=1then
Else
{
;
Hanoi(n-1,b,a,c);
}
3.二分检索
BINSRCH(A,n,x,j)
low←1;high←n;
whilelow {________________mid←(low+high)/2; case : x=A[mid]: j←mid;return; : x _________________high←mid-1; : x>A[mid]: _________________low←mid+1; endcase } j←0; end 4.快速排序 Quicksort(p,q) ifp>qthen_____________ {callpartition(p,j); call_______________________ call_______________________ } end 5.贪心方法的抽象化控制 procedureGREEDY(A,n) //A(1: n)包含n个输入// solutions←; fori←1todo {x←SELECT(A) ifFEASIBLE(solution,x) thensolutions←; endif } return(solution) endGREEDY 6.背包问题贪心算法 procedureGREEDY-KNAPSACK(P,W,M,X,n) X←0; cu←M; fori←1tondo {ifthenexitendif X(i)←_; cu←; } ifi≤nthenX(i)←; endif endGREEDY-KNAPSACK 7.分治合并排序算法 procedureMERGESORT(low,high) iflow mid←_______________ ____________________ ____________________ MERGE(low,mid,high) endif endMERGESORT 8.多段图动态规划算法 procedureFGRAPH(E,k,n,P) 1realCOST(n),integerD(n一1),P(k),r,j,k,n 2; 3forto1by-1do 4设r是一个这样的结点,(j,r)E且使c(j,r)+COST(r)取最小值 5COST(j)←; 6; 7repeat 8P (1)←1;P(k)←n; 9fordo 10P(j)←D(P(j-1)) 11repeat 12endFGRAPH 9.n后问题递归算法 procedureRNQUEENS(K) globalx(1: m),n; forx(k)←1to_____do ifplace(k)=truethen ifk=nthen________ else _____________ endif endif repeat endENQUEENS 五.设计算法 1.写递归形式的二分检索算法 2.设计三分检索算法 3.有n个大小相同而重量不同的集装箱,重量分别为(w1,w2,……,wn),已知货船的额定载重量为M,Σwi>M,i=1,2,3,…,n。 最优解是货船能够装载最多的集装箱。 设计贪心算法。 4.有n个程序和长度为L的磁带,程序i的长度为ai,已知 ,求最优解(xi,x2,...,xi,…,xn),1,xi=1,表示程序i存入磁带,xi=0,表示程序i不存入磁带,满足 ,且存放的程序数目最多。 参考答案 一、简答题 1.算法的复杂性是算法运行所需要的计算机资源的耗费量,需要的时间资源的耗费量称作时间复杂性。 2.有5个基本特性是: 确定性、能行性、输入给定、产生输出、有穷性。 3.算法复杂性用算法的基本运算步骤计量,运算步骤与算法要解的问题的规模、算法的输入有关。 4.比较树模型 5.分治的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。 找出各部分的解,然后把各部分的解组合成整个问题的解。 6.分治算法时间是这样确定的: 解决子问题所需的工作总量由子问题的个数、解决每个子问题的工作量、合并所有子问题所需的工作量所决定。 折半查找最坏情况下,也只需要在原问题一半大小的子问题中查找,而且不需要合并子问题。 7.首先对于数组a[p: q]进行划分,以元素v为基准元素将a划分为三段a[p: j-1],a[j]和a[j+1: q],使得a[p: j-1]中任何一个元素都小于v,a[j+1: q]中任何一个元素大于等于v,下标j在划分中确定。 如果k=j,则返回v; 如果k j-1]中选择; 如果k>j,则在a[j+1: q]中选择; 8.select算法的最坏情况下的时间复杂性的阶为O(n2),其原因是a[p: j-1]和a[j+1: q]的大小不是均衡的。 Select2算法的基本思路就是改随即抽取v为经过经处理产生,保证在最坏情况下a[p: j-1]和a[j+1: q]的元素个数不会小于原规模的1/4。 9.快速排序是基于分治策略的一个排序算法。 基本思路: a)分解(Divide)以元素v为基准元素将a划分为三段a[p: j-1],a[j]和a[j+1: q],使得a[p: j-1]中任何一个元素都小于v,a[j+1: q]中任何一个元素大于等于v,下标j在划分中确定。 b)递归求解,通过递归调用快速排序算法分别对a[p: j-1]和a[j+1: q]进行排序。 不必进行任何合并操作。 10.快速排序算法的最坏情况下的时间复杂性的阶为O(n2),其原因是a[p: j-1]和a[j+1: q]的大小不是均衡的。 快速排序算法的平均时间复杂性的阶为O(nlogn)。 11.采用随机抽取。 对于数组a[p: q],用v=a[p]作为分割元素。 12.使v=a[p],q=q+1 while(p {dop++;while(a[p] doq++;while(a[q]>v); if(p } 13.if问题不可分then求解 else{m=(p+q)/2; 对a[p,m]排序; 对a[m+1,q]排序; 将a[p,m]和a[m+1,q]合并; } 14.分治合并排序的二分归并过程在最坏情况下需比较n-1次,花费可用cn表示。 15.最好情况下需比较n/2次。 16.Maxmin(p,q,max,min) if问题不可分: n=2 then对两元素进行比较产生max,min;return; else {m=(p+q)/2; Maxmin(p,m,max1,min1); maxmin(m+1,q,max2,min2); max=maxnum(max1,max2); min=minnum(min1,min2); } 17.贪心算法的基本思路: 从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。 当达到某算法中的某一步不能再继续前进时,算法停止。 18.具备最优子结构。 19.目标函数: ∑pi最大,最优量度是选择有最大利润/重量的物品。 20.∑pi最大,i属于可完工子集。 21.xi表示第i行上的皇后所在的列。 22.place函数的功能是判断第k行皇后的位置和前k-1个皇后是否相容。 23.最优化原理: 无论过程的初始状态是什么,其余的决策都必须相对于初始决策所产生的状态是最优的。 通俗地讲,每一步最优都是上一步最优加上本段的最优。 即当前最优只与上一步有关。 24.向前决策到第i段时,第i段的节点j的最优可以用第i-1段的最优值加上本段的长度: cost(i,j)=min{cost(i-1,l)+c(j,l)}l是i-1段的节点j的后继节点。 二、动态规划递归式 1.fi(X)=max{fi-1(X-wi)+pi,fi-1(X)},(0<=X<=M) fi(X)是背包容积为X时前i个物品的最优值。 fi-1(X-wi)+pi是前i-1个物品的最优值加上第i个物品放入获得的利润,fi(X)等于第i个物品放入或不放入两种情况的较大值。 2.g(s,i)=min{c(i,j)+g(s-{j},j)|js,is} s是不包含起始点1的任意顶点子集,g(s,i)是从顶点i出发经s中顶点各一次后到达顶点1的最优值。 g(s,i)等于i到j的代价c(i,j)加上从顶点j出发经s-{j}中顶点各一次后到达顶点1的最优值。 3.g(s,t)=min{ai+g(s-{i},bi+max{t-ai,0})|is} s任意作业子集,g(s,t)是处理机2需要t时间才能开工条件下的对s进行调度的最优值。 从顶点i出发经s中顶点各一次后到达顶点1的最优值。 g(s,i)等于i到j的代价c(i,j)加上从顶点j出发经s-{j}中顶点各一次后到达顶点1的最优值。 三、算法分析 1.分析汉诺塔算法的时间复杂性 汉诺塔算法如下: Hanoi(n,a,b,c) ①Ifn=1thenmove(a,c); Else {②Hanoi(n-1,a,c,b); ③move(a,c); ④Hanoi(n-1,b,a,c); } 用移动圆盘的次数作为计量,Hanoi(n,a,b,c)所花的时间为T(n)。 当n=1执行①,T (1)=1 当n>1执行②③④,T(n)=2T(n-1)+1。 用递推式求T(n)。 T(n)=2T(n-1)+1 =2{2T(n-2)+1}+1=22T(n-2)+2+1 =22{2T(n-3)+2+1=23T(n-3)+22+2+1 =23{2T(n-4)+1}+22+2+1=24T(n-4)+23+22+2+1 …… =2n-1T (1)+2n-2……+22+2+1 =2n-1 2.计算冒泡排序算法时间复杂度 冒泡排序的主要步骤: fori=1ton-1do forj=1ton-ido ifa[j]>a[j+1]then交换a[j],a[j+1]; 用比较次数作为算法的计量,比较一次所花的时间为常数,用O (1)表示,内循环所花时间ΣO (1)=O(n-i),外循环所花时间: ΣO(n-i)=O(n(n-1)/2)=O(n2) 3.分析MaxMin的比较次数: 当n=2,T (2)=1 当n>2时,比较次数T(n)=2T(n/2)+2 设n是2的k次幂,n=2k T(n)=2T(2k-1)+2 =2[2T(2k-1)+2]+2=22T(2k-2)+22+2 …… =2k-1T (2)+2k-1+……22+2 =2k-1+[2k-1+……22+2] =2k-1+2k-2 =3*2k-1-2=3n/2-2 T(n)=3n/2-2 4.分治合并排序算法的时间复杂性 设n个元素排序的mergesort算法的比较次数为T(n), 当n=1,T (1)=a 当n>1时: 1)分别两次调用mergesort对n/2的元素进行排序,比较次数为2T(n/2); 2)合并两个子问题的解所花时间为n-1 T(n)=2T(n/2)+n-1 设n是2的k次幂,n=2k T(n)=2T(2k-1)+cn =2[2T(2k-2)+2k-1]+n-1=22T(2k-2)+2cn =23T(2k-3)+3cn …… =2kT (1)+kcn =an+cnlogn 如果2k≤n≤2k+1,T(n)≤T(2k+1) T(n)=O(nlogn) 5.分析二分检索的时间复杂性 当n=1,T (1)=1 当n>1时: 比较1次后,调用原过程在n/2的元素中查找,过程可用一棵二叉树表示。 考虑最坏情况: 比较到最后,x不在其间,比较次数就是二叉树的深度。 所以T(n)=logn+1 6.背包问题贪心算法的时间复杂性 如果不考虑排序的时间,背包问题贪心算法的时间就是 循环语句: fori=1tondo执行的时间,循环体语句可以用常数c表示, 算法的时间复杂性为: T(n)=cn。 7.快速排序的partition的比较次数 partition的主要步骤: while(p {dop++;while(a[p] doq++;while(a[q]>v); if(p } 设数组中有n个元素。 P从第一个元素向后扫描,q从最后向前扫描,终止条件是扫描完n个元素,因此扫描了n个元素,每个元素都与v比较,并可能交换,设花时间为常数c,partition完成切割任务花时间为cn。 8.多段图算法的时间复杂性 1)多段图算法对n-1个顶点求cost(j) 2)cost(j)=min{c(j,l)+cost(l)}l是j的后继节点,需要对所有的l,(j,l)∈E,计算。 因此,多段图算法的时间复杂性T(n)=O(n+|E|)。 四、填空题 10.MaxMin算法 n=2,m←(i+j)/2,maxmin(m+1,j,max2,min2), max←maxnum(max1,max2),min←minnum(min1,min2) 11.Hanoi算法 Move(a,c),Hanoi(n-1,a,c,b),Move(a,c) 12.二分检索 mid←(low+high)/2;high←mid-1;low←mid+1; 13.快速排序 j←q+1;Quicksort(p,j+1);Quicksort(j+1,q); 14.贪心方法的抽象化控制 φ;nUnion(solution,x); 15.背包问题贪心算法 w(i)>cu1cu-w(i)cu/w(i) 16.分治合并排序算法 (low+high)/2;callMERGESORT(low,mid);MERGESORT(mid+1,high) 17.多段图动态规划算法 COST(n)0j←n-1c(j,r)+COST(r)D(j)←rj←2tok-1 18.n后问题递归算法 nprint(X)callENQUEENS(k+1) 五.设计算法 1.递归形式的二分检索算法 RBINSRCH(A,x,p,q) Ifp=qthenx=A[p]thenreturnpelsereturn0 Else {mid←(low+high)/2; case : x=A[mid]: return(mid); : x return(RBINSRCH(A,x,p,mid-1)); : x>A[mid]: return(RBINSRCH(A,x,mid+1,q)); endcase } end 2.设计三分检索算法 RSRCH3(A,x,p,q) Ifp=qthenx=A[p]thenreturnpelsereturn0 Else {i←(p+q)/3;j←(i+q)/2 case : x=A[i]: return(i); : x=A[j]: return(j); : x return(RBINSRCH(A,x,p,i)); : x>A[i]andx return(RBINSRCH(A,x,i+1,j-1)); elsereturn(RBINSRCH(A,x,j+1,q)); endcase } end 3.集装箱问题 由于货船的容积没有受限制,约束是船的载重,因此可以选择最当前重量最小的集装箱,使船装载的货物总重量增加得最慢。 Greedy-trunk //输入按w (1) (2)<…… //解向量(xi,x2,...,xi,…,xn),xi∈{0,1} X←0;cu←M; fori←1tondo ifw(i)>cuthenbreak; X(i)←1; cu←cu-w(i); repeat end 4.磁带 因为求的是长度约束下的装最多的程序,应该选择长度最小的程序装入,使磁带消耗最慢。 Greedy-tape //输入按a (1) (2)<…… //解向量(xi,x2,...,xi,…,xn),xi∈{0,1} X←0;cu←M; fori←1tondo ifa(i)>cuthenbreak; X(i)←1; cu←cu-a(i); repeat end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 现代远程教育 课程 考试 复习 试题 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)