中南大学算法试卷
2014年12月中南大学网络教育课程考试:算法分析与设计作业参考答案

《算法分析与设计》作业参考答案作业一一、名词解释:1.递归算法:直接或间接地调用自身的算法称为递归算法。
2.程序:程序是算法用某种程序设计语言的具体实现。
二、简答题:1.算法需要满足哪些性质?简述之。
答:算法是若干指令的有穷序列,满足性质:(1)输入:有零个或多个外部量作为算法的输入。
(2)输出:算法产生至少一个量作为输出。
(3)确定性:组成算法的每条指令清晰、无歧义。
(4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。
2.简要分析分治法能解决的问题具有的特征。
答:分析分治法能解决的问题主要具有如下特征:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
3.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。
答:将递归算法转化为非递归算法的方法主要有:(1)采用一个用户定义的栈来模拟系统的递归调用工作栈。
该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。
(2)用递推来实现递归函数。
(3)通过Cooper 变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。
后两种方法在时空复杂度上均有较大改善,但其适用范围有限。
三、算法编写及算法应用分析题: 1.冒泡排序算法的基本运算如下:for i ←1 to n-1 do for j ←1 to n-i do if a[j]<a[j+1] then 交换a[j]、a[j+1]; 分析该算法的时间复杂性。
答:排序算法的基本运算步为元素比较,冒泡排序算法的时间复杂性就是求比较次数与n 的关系。
(1)设比较一次花时间1;(2)内循环次数为:n-i 次,(i=1,…n ),花时间为:∑-=-=in j i n 1)(1(3)外循环次数为:n-1,花时间为:2.设计一个分治算法计算一棵二叉树的高度。
中南大学计算机试题及答案

中南大学计算机试题及答案一、选择题1. 下面哪个选项是正确的?A. 1+1=2B. 1+1=3C. 1+1=4D. 1+1=5答案:A2. 在计算机科学中,TCP是指什么?A. 传输控制协议B. 网络传输协议C. 通信控制协议D. 传输通信协议答案:A3. 下面哪个选项是正确的?A. HTML是一种编程语言B. Java是一种标记语言C. Python是一种网络协议D. CSS是一种数据库语言答案:A二、填空题1. 计算机中最基本的数据存储单位是_______。
答案:字节2. 在二进制系统中,8个二进制位可以表示_______个不同的数值。
答案:2563. WWW是指_______。
答案:万维网三、解答题1. 简述计算机网络的作用和意义。
计算机网络可以让全世界范围内的计算机互相连接和通信,使得信息的传递和交流更加方便和高效。
它的作用和意义如下:首先,计算机网络可以实现信息的共享。
通过网络,人们可以轻松获取到各种各样的信息,包括文档、音频、视频等,这使得知识的传播更加广泛和快速。
其次,计算机网络可以提供远程访问的功能。
人们可以通过网络连接到远程的计算机或服务器,进行资源共享和远程操作,大大提高了工作效率和便捷性。
此外,计算机网络也促进了全球范围内的合作和交流。
人们可以通过网络与其他地区的人进行实时的通讯和合作,不受时空的限制,加快了商务合作和学术研究的进程。
总之,计算机网络在现代社会中扮演着重要的角色,它改变了人们的工作方式、生活方式和学习方式,为社会发展和进步做出了巨大的贡献。
2. 简述计算机网络中“IP地址”和“子网掩码”的作用和区别。
IP地址是指互联网协议地址,它是计算机在网络中的唯一标识符。
IP地址的作用是用来标识和定位计算机在网络中的位置,使得计算机能够相互通信和交换数据。
子网掩码是用来划分网络中的子网的一种地址掩码。
子网掩码的作用是用来判断一个IP地址属于哪个网络或子网,以及确定网络中的主机数量。
中南大学试题

; 用汇编语言实现实现冒泡排序,并将排序后的数输出DATAS SEGMENT A dw 3 10 8 56 22 36 1 43 31 3N=$-A ; 计算数字所占的字节数DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AX MOV SI,0 MOV CX,N/2-1 CALL BUBBLE;SI 遍历数字; 前一个数的地址;设置循环次数,M(M=N/2个数需要,循环M-1次;调用BUBBL将原来的数排序; 输出排序后的数MOV CX,N/2 MOV SI,0 MOV DI,0;循环M次输出排序后的M个数;SI 遍历排序后的数;用DI记录数字的位数MOV BP,N+5 ;BP 用于遍历存储的转化后的字符的位置SHOW: PUSH CX; 循环次数入栈MOV DX,0 ; 由于将要进行16位除需要置高16位为0 MOV AX,[SI] ; 低16位为排序后的数CALL DTOC ;调用DTO将十进制数转换为字符串CALL SHOW_STR调用SHOW_S将一个数转化得到的字符串输出ADD SI,2 ; 下一个数POP CX ; 循环次数出栈栈LOOP SHOWMOV AH,4CHINT 21H ; 冒泡排序BUBBLE PROCL1: PUSH CXLEA SI,AL2: MOV AX,A[SI]CMP AX,A[SI+2]JBE NEXTXCHG AX,A[SI+2]; 将循环次数入栈;SI遍历DATA数据段的数字; 将前一个数存于AX; 比较前后两个数; 如果前一个数小于或等于后一个数则继续本轮的比较; 否则,交换前后两个数的位置MOV A[SI],AXNEXT:ADD SI,2LOOP L2POP CXLOOP L1RET BUBBLE ENDP; 下一个数; 注意内层循环的次数已经确定了; 将循环次数出栈; 下一轮比较将十进制数转换为字符串并储存起来DTOC PROCS:MOV CX,10 ; CALL DIVDW ADD CL,30H将除数10,放入CX中;调用DIVDV程序;把数字转换为ASCII码,这样就能显示了MOV DS:[BP],CL ; 把ASCII码放到内存中INC DIPUSH AXADD AX,DXJZ BACKPOP AXDEC BP ; JMP S; 用DI 记录循环的次数; 将低16位入栈; 将高位与低位相加,接着判断是否已经除尽; 除尽后返回调用处; 将低1 6位出栈逆序存放转化后的字符,便于主程序调用SHOW_STRBACK:POP AX;RET为了得到正确的IP值,需要出栈一次; 子程序定义开始, 功能是分离被除数的各个位的数字; 公式:X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N DIVDW PROCPUSH AX MOV AX,DX MOV DX,0DIV CXMOV BX,AX POP AXDIV CX ; MOV CX,DX ; MOV DX,BX ; RET ;DIVDW ENDP ; 低16位入栈;将高16位写入AX,; 将高16位置零; 将新的数除10,;将商int(H/N)转移到BX 默认余数rem(H/N)在DX; 将低16位出栈,将[rem(H/N)*65536+L]除10,默认余数在DX 将余数转移到CX将商int(H/N)转移到dx,相当于int(H/N)*65536 子程序定义结束; 实现字符串的输出SHOW_STR PROC S2:MOV AH,2 MOV DL,DS:[BP] INT 21HINC BPDEC DIJZ OKJMP S2; 输出数字转化后的字符串; 顺序输出; 数字的位数减一; 字符串输出完了就结束; 否则继续输出OK:MOV AH,2 ;输出空格MOV DL,0INT 21HRETSHOW_STR ENDPCODES ENDSEND START第一个累加和的源码:AREA TEXT,CODE,READWRITEENTRYMOV R0,#100 ;循环数目MOV R1,#0 ;初始化数据LOOPADD R1,R1,R0 ;将数据进行相加,获得最后的数据SUBS R0,R0,#1 ;循环数据R0减去1CMP R0,#0 ;将R0与0比较看循环是否结束BNE LOOP ;判断循环是否结束,接受则进行下面的步骤LDR R2,=RESULTSTR R1,[R2]RESULTDCD 0STOPB STOP第二个排序的源码附上:;排列算法:先将所有的数据与第一个进行比较,最后取出最小的数据放到第一个内存单元中;然后再从第二个内存单元开始进行比较,将第二小的数据放到第二个内存单元中,;以此内推则能将十个数据进行排列。
中南大学《科学计算与数学建模》2019-2020学年第一学期期末试卷

---○---○------○---○---学院专业班级学号姓名…………评卷密封线………………密封线内不要答题,密封线外不准填写考生信息,违者考试成绩按分处理………………评卷密封线…………中南大学期末考试试卷2019——2020学年一学期科学计算与数学建模课程时间100分钟学时,学分,闭卷,总分100分,占总评成绩%年月日题号一二三四五六七八九十合计满分201510202015100得分评卷人复查人一、单项选择题(本题20分,每小题2分)1.在数值分析中,下列哪个算法用于求解非线性方程?A.高斯消元法B.牛顿-拉夫森方法C.快速傅里叶变换D.龙格-库塔法2.数学建模中,系统动力学模型通常用什么来描述?A.微分方程B.线性代数C.逻辑表达式D.概率分布3.下面哪种方法不适用于解决优化问题?A.梯度下降法B.蒙特卡洛模拟C.线性规划D.遗传算法4.在计算复杂性理论中,P 类问题是指:A.不可解问题B.多项式时间内可解决的问题C.指数时间内可解决的问题D.NP 难问题得分评卷人5.数值积分中,梯形法则是基于以下哪个原理?A.最小二乘法B.插值法C.泰勒级数展开D.极限定义6.在数学建模中,参数估计通常使用哪种方法?A.回归分析B.聚类分析C.主成分分析D.因子分析7.下列哪个选项不是常微分方程的解法?A.分离变量法B.特征线法C.有限差分法D.幂级数解法8.在数学建模中,以下哪项是确定性模型的特点?A.考虑随机因素B.参数固定不变C.结果具有概率性D.包含不确定性9.对于大规模问题的求解,下列哪种方法可能不适合?A.分而治之B.动态规划C.贪心算法D.分支界定法10.在进行统计分析时,下列哪个图不适用于分类数据的展示?A.条形图B.饼图C.直方图D.散点图二、多项选择题(本题15分,每小题3分,多选,错选,漏选均不得分。
)1.在科学计算中,以下哪些算法可以用来求解线性方程组?A.雅可比迭代法B.高斯消去法C.最小二乘法D.共轭梯度法2.下列哪些属于运筹学的优化方法?A.单纯形法B.分支定界法C.模拟退火算法D.A 和B 都对3.在数学建模中,风险分析可以采用以下哪些方法?A.敏感性分析B.蒙特卡洛模拟C.故障树分析D.灰色预测模型4.下列哪些是计算机辅助设计软件?A.MATLABB.AutoCADC.MathematicaD.ANSYS5.在数值分析中,以下哪些方法可用于求解偏微分方程?A.有限元方法B.边界元方法C.谱方法D.网格生成方法得分评卷人三、判断题(本题10分,每小题1分)1.()欧拉方法是用于数值求解常微分方程的一种隐式方法。
中南大学计算机数据结构试题参考答案讲解学习

中南大学计算机数据结构2013试题参考答案中南大学考试试卷2015--2016学年上学期期末考试试题时间100分钟数据结构课程56学时3.5学分考试形式:闭卷专业年级:计算机科学与技术10级总分100分,占总评成绩70%姓名班级学号(本试卷共四道大题,答案全部做在答题纸上!)一、选择题(每题2分,共24分)1.以下数据结构中,属于线性结构的是()A.图B.栈C.二分查找树D.森林2.用二分法查找表(a0,a1,a2,a3,……a16),需要比较2次才能找到的元素是()A.a7和a16 B.a11和a13C.a1和a14 D.a3和a123.用概率查找改进查找效率,是经过多次查找以后使得()A.查找次数越少的元素查找速度越快B.查找次数越少的元素越往前存放C.查找次数越多的元素越往后存放D.查找次数越多的元素查找速度越快4.二分查找要求元素( )A.有序、顺序存储B.有序、链式存储C.无序、顺序存储D.无序、链式存储5.已知pPre为指向链表中某结点的指针,pNew是指向新结点的指针,以下哪段伪码算法是将一个新结点插入到链表中pPre所指向结点的后面?()A.pPre->link = pNew; pNew = null;B.pPre->link = pNew->link; pNew->link = null;C.pNew->link = pPre->link; pPre->link = pNew;D.pNew->link = pPre->link; pPre->link = null;6.在递归算法执行过程中,计算机系统必定会用到的数据结构是()A.队列B.链表C.栈D.二叉树7.一个队列的入列序为ABCD,则队列的可能输出序列为()A.DCBA B.ABCDC.ADCB D.CBDA8.具有10个叶子结点的二叉树中有()个度为2的结点A.8 B.9C.10 D.119.若A=10,B=4,C=6,D=4,E=15则后缀表达式“AB*CD+-E+”的值为( )。
算法分析与设计考试试卷(2011) 答案

中南大学考试试卷答案2011 -- 2012学年上学期时间120分钟 2012 年1 月6日算法分析与设计课程 48 学时 3 学分考试形式:闭卷专业年级:09级计算机、信安本科生,总分100分,占总评成绩70 %注:此页不作答题纸,请将答案写在答题纸上1. (15points) Describe the main ideas of the following strategies, and briefly describe the differences between them.(1) divide-and–conquer;Divide the problem into two or more smaller subproblems;Conquer the subproblems by solving them recursively;Combine the solutions to the subproblems into the solutions for the original problem(2) dynamic programming;Solve several smaller (overlapping) subproblems;Record solutions in a table so that each subproblem is only solved once;Final state of the table will be (or contain) solution(3)branch and boundCombine depth-first search and breadth-first search.Selecting the node with the best estimated cost among all nodes.Set up a bounding function, which is used to compute a bound (for the value of the objective function) at a node on a state-space tree and determine if it is promising.2. (30 points) Choose T or F for each of the following statements.1)The best case running time for quicksort to sort an element array is O(nlogn).T2)By the master theorem, the solution to the recurrence T(n)=3T(n/3)+3n isT(n)=O(nlogn). T3)Every binary search tree on n nodes has height O(logn). F4)By using path compression (Union- Find) technique to analyze Kruskal algorithm,the algorithm’s running time is O(mlog*n+nlog*n). F5)Depth-first search of a graph is asymptotically faster than breadth-first search. F6)Kruskal’s algorithm for findin g a minimum spanning tree employs dynamicprogramming. F7)The backtrack technique uses the idea of breath first search to get the optimalvalue. F8)n!=O(2n). F9)In the worst case, merge sort runs in O(n2)time. F10)In computer science, all the problems are either in P or NP. F11)Kruskal’s algorithm is faster Prim’s algorithm. F12)Divide-and-Conquer is a bottom-up algorithm and Dynamic Programming is atop-down algorithm. F13)For an unweighted graph G, Depth-first search algorithm can be used to find theshortest paths from a given vertex to other vertices. F14)The strategy using greedy algorithm to solve Knapsack problem is that: each time,choose the item with maximum value to put into the knapsack. T15)The problems solvable by Dynamic Programming can also be solved byDivide-and-Conquer algorithm. T3. Algorithm Design(20)(1) (10) Given a graph G=(V, E), use Depth-First-Search to count the number of connected components in G.DFS(G){for each vertex u{u.color = WHITE;}time = 0;i=0;for each vertex u{if (u.color == WHITE)DFS_Visit(u);i++;}}DFS_Visit(u){u.color = GREY;time = time+1;d[u] = time;for each v u.Adj[]{if (v.color == WHITE)DFS_Visit(v);}u.color = BLACK;time = time+1;f[u] = time;}(2) (10 points) A maximum spanning tree in a weighted graph G is a spanning tree inG with the largest weight over all spanning trees. Give an efficient algorithm that constructs a maximum spanning tree for a weighted graph G=(V, E), and analyze the running time of your algorithm.Prim1(G)1.VT={v0};2.ET=Ф;3.For i=1 to n-1 dofind a maximum weight edge e*=(u*, v*) amongall the edges (u, v) such that u is in T and v is in V-T;VT=VT∪{v*};ET=ET∪{e*};4. Return ET.4、(10) Solve the following recurrence relation. T(1)=1,a、b、c are constants, and a=b=c=1(1)T(n)=aT(n-1)+bnO(n2)(2)T(n)=aT(n/2)+bn cO(n)5.(25) For a 0/1 knapsack problem, given n items, where each item has weight W and value V, find a set of items that could be put into the knapsack without over the capacity M of the knapsack. Assume that n=4,W={10,8,6,4},V={5,4,3,2},M=12。
中南大学算法分析与设计期中测试2011答案

测试题1. 简述下列策略的基本思想 (15) (1) 分治将输入规模为n 的问题分成k (一般取k=2)个子问题,子问题相互独立,与原问题性质相同。
先分别对k 个子问题求解,再将子问题的解合并成原问题的解。
由于子问题还很大,故采用递归技术对子问题不断分割,直至子问题可直接简单地解出。
(2) 贪心贪心法希望从求局部最优达到全局最优,即依据贪心策略逐步构造最优解。
即先按确定贪心策略,将输入量排序。
再依次做出当前最优的选择,即当前输入可以构成合法的部分解,则将此输入量选入。
决策一旦做出,就不可再更改。
(3) 动态规划动态规划也是将问题求解过程分成k 个阶段(划分子问题),逐步决策的方法。
与贪心法不同的是,动态规划采用划分子问题,自底向上规划的方法。
要求子问题的划分具备最优子结构性质,即“最优化原理”成立。
需列出当前决策对前阶段决策状态的依赖关系(贝尔曼方程),求出各子问题的最优解,并将子问题的最优解代到下一步的决策中,逐步规划,解出原问题的解。
贝尔曼方程:⎪⎩⎪⎨⎧+==≠}.{min ,0ij i j i j s w u u u2. 下列数组4,1,3,2,16,9,10,14,8,7构成一个堆吗?如果不是,请用自底向上算法建一个 a max-heap.(10) 1) 不是一个最大堆2)按照算法,从i=n/2-5处开始测试i=5 它的孩子节点 2*i=10 ,满足最大堆的规定i=4 ,2i=8,2i+1=9 不满足,整理如下:i=3 ,2i=6,2i+1=7 不满足,整理如下:i=2 ,2i=4,2i+1=5不满足,整理如下:i=1 ,2i=2,2i+1=3不满足,依次整理如下:3. 针对下列叙述,根据正确或错误,选择T或F,并简要说明卫生么.(30)(1) T F nlogn=O(n3) 是上界(2) T F根据master定理, 递归方程T(n)=3T(n/3)+n 的解是T(n)=Θ(n)正确答案:T(n)=O(nlogn)(3)T F 最坏情况下, 归并排序的时间渐进阶是O(n2).归并排序最坏情况下的时间是:T(n)=O(nlogn)(4)T F 图的深度优先搜索的时间是O(n+|E|)。
中南大学算法设计与分析试卷及答案

Mcolor(n)
{k←1; x[k] ←0;
While k>0 do
(2 分)
{ x[k] ← x[k]+1;
while place(k)=false and x[k]≤m do
x[k] ← x[k]+1
if x[k]≤m then
(2 分)
if k=n then
{print x
Return
(2 分)
当 X≥wi } (3 分)
fi(X)是前 i 个物品,背包容积 X 子问题的最优值,
当第 i 个物品不选入,fi(X)等于 fi-1(X)前 i-1 个物品,背包容积 X 子问题
的最优值,
当第 i 个物品不选入,得利润 pi ,但前 i-1 个物品能使用背包为 X—wi 。(3 分)
3、修改图的 m-着色的回溯算法,找到一个解,算法就结束。
else print “No”
(3 分)
它是如何提高算法的效率的?
(6 分)
4、简述归并排序算法和快速排序算法的分治方法。
(6 分)5、一般背包问源自的贪心算法可以获得最优解吗?物品的选择策略是什么?(6 分)
6、Prim 算法和 Dijkstra 算法选择下一个节点的标准分别是什么?对于有负边的无
向图,Prim 算法和 Dijkstra 算法还能保证获得最优解吗?
中南大学考试试卷
2008 -- 2009 学年 2 学期
时间 110 分钟
算法分析与设计 课程 48 学时 3 学分 考试形式: 闭 卷
专业年级: 信安 0601-0602 总分 100 分,占总评成绩 70 %
注:此页不作答题纸,请将答案写在答题纸上
一、 基本概念题(本大题 40 分)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学考试试卷
2012 -- 2013学年上学期时间120分钟 2013 年1 月4日算法分析与设计课程 48 学时 3 学分考试形式:闭卷
专业年级:10级计算机、信安、物联本科生,总分100分,占总评成绩70 % 注:此页不作答题纸,请将答案写在答题纸上
1. (15分)本期学了很多类算法,请针对以下几类设计策略,举出相应的例子,详细描述算法细节,以说明它们为什么是属于相应的设计策略?
(1)分治法
(2)动态规划
(3)贪心策略
2. (30分)请判断下列陈述是否正确。
(1)根据Master定理,可得到递归式T(n)=4T(n/2)+n2的解为T(n)=O(n2logn). (2)归并排序在最好情况下的时间复杂度为O(nlogn).
(3)具有n个结点的二叉排序树的树高均为O(logn)。
(4)如果一个问题是NP完全问题,它肯定也是NP问题。
(5)给定n个数,可以在O(n)的时间内找到10个最大数与10个最小数之间的中间数。
(6)Kruskal算法利用了动态规划思想寻找给定图中的最小生成树。
(7)n!=O(2n)。
(8)回溯法借鉴了广度优先的策略得到问题的最优解。
(9)对于一个有n个顶点m条边的无向图G,有两个不同的顶点s t,则在O(m+n)的时间内可以找到s与t之间的最短路径。
(10)在最坏情况下,快速排序耗费O(N2)。
(11)如果图中包含负权值的边,则Dijkstra算法不可适用。
(12)分治法是属于自底向上的算法策略;动态规划是属于自顶向下的算法策略。
(13)有一个算法,将n个整数a1,...,a n作为输入,算法的时间复杂度是O(a1+a2+......+a n)。
它是一个多项式时间算法。
(14)有一个图G=(V,E) ,每条边e∈E的权W e>0, 如果一棵生成树T 最小化Σe∈T W e,那么T 也最小化Σe∈T W e2,反之也成立(即图中边的权值都平方后,生成树T仍是这个图的最小生成树)。
(15)给定两个判定性问题Q1、Q2,如果Q1可以在多项式时间内规约到Q2,
则Q1和Q2具有同等难度。
3. (20分)算法设计(选做两题)
(1)(10分)设计一个算法判断一个多边形是否是凸多边形,并分析你的算法的时间性能(注:输入是沿着多边形逆时针的顶点系列)。
(2)(10分)给定图G=(V, E),利用深度优先算法统计图G中连通块的个数。
给出统计算法.
(3)(10分)给定边加权图G=(V, E),图G中的最大生成树为图G中所有生成树中权值最大的生成树。
设计构造最大生成树的算法
4. (10分)求解下列递归式。
T(1)=1.
(1)T(n)=2T(n-1)+1
(2)T(n)=T(n/2)+T(n/4)+n2
5. (25分)对于0/1背包问题,给定n个物品,每个物品都具有一定的权重和价值,寻找物品的一个子集,使得当把这些物品放到背包中时,物品的总重量不会超过背包的容量M。
假设n=4,W={10,7,8,4},V={100,63,56,12},M=16。
(1)设计该问题的动态规划递归式(5分)
(2)给出利用动态规划技术得到最优解的具体过程(10分)
(3)给出利用分支限界技术求得最优解的具体过程(10分)
注:上界函数可定义为:ub=V+(M-w)(v i+1/w i+1)。