中南大学算法考试试卷及答案
算法考试题目及答案解析
算法考试题目及答案解析一、单项选择题1. 在算法中,以下哪个选项不是算法的特性?A. 有穷性B. 确定性C. 可行性D. 随机性答案:D解析:算法的特性包括有穷性、确定性和可行性。
有穷性指的是算法必须在执行有限步骤后终止;确定性指的是算法的每一步操作都是明确的,不存在二义性;可行性指的是算法的每一步操作都必须足够基本,以至于可以准确地执行。
随机性并不是算法的特性之一。
2. 以下哪个排序算法的时间复杂度是O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C解析:冒泡排序是一种简单的排序算法,其时间复杂度为O(n^2),在最坏的情况下,需要比较每一对元素。
快速排序的平均时间复杂度为O(n log n),归并排序的时间复杂度为O(n log n),堆排序的时间复杂度为O(n log n)。
3. 在图的遍历中,深度优先搜索(DFS)使用的栈是什么类型的栈?A. 后进先出栈B. 先进后出栈C. 先进先出栈D. 随机进随机出栈答案:B解析:深度优先搜索(DFS)使用的数据结构是栈,遵循的是先进后出的原则,即后进先出栈。
4. 哈希表解决冲突的方法不包括以下哪一项?A. 分离链接法B. 开放寻址法C. 链地址法D. 二分查找法答案:D解析:哈希表解决冲突的方法主要包括分离链接法、开放寻址法和链地址法。
二分查找法是一种查找算法,不是用来解决哈希表冲突的方法。
5. 以下哪个算法不是动态规划算法?A. 斐波那契数列B. 0-1背包问题C. 最短路径问题D. 快速排序答案:D解析:斐波那契数列、0-1背包问题和最短路径问题都可以使用动态规划算法来解决。
快速排序是一种排序算法,不属于动态规划算法。
二、多项选择题1. 以下哪些是算法设计中常用的数据结构?A. 数组B. 链表C. 栈D. 队列E. 树答案:ABCDE解析:数组、链表、栈、队列和树都是算法设计中常用的数据结构,它们各自有不同的特点和适用场景。
中南大学计算机试题及答案
中南大学计算机试题及答案一、选择题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第二个排序的源码附上:;排列算法:先将所有的数据与第一个进行比较,最后取出最小的数据放到第一个内存单元中;然后再从第二个内存单元开始进行比较,将第二小的数据放到第二个内存单元中,;以此内推则能将十个数据进行排列。
中南大学数电考题全四套(含答案)
中南大学信息院《数字电子技术基础》期终考试试题(110分钟)(第一套)一、填空题:(每空1分,共15分)1.逻辑函数Y=AB+C的两种标准形式分别为()、()。
2.将2004个“1”异或起来得到的结果是()。
3.半导体存储器的结构主要包含三个部分,分别是()、()、()。
4.8位D/A转换器当输入数字量10000000为5v。
若只有最低位为高电平,则输出电压为()v;当输入为10001000,则输出电压为()v。
5.就逐次逼近型和双积分型两种A/D转换器而言,()的抗干扰能力强,()的转换速度快。
6.由555定时器构成的三种电路中,()和()是脉冲的整形电路。
7.与PAL相比,GAL器件有可编程的输出结构,它是通过对()进行编程设定其()的工作模式来实现的,而且由于采用了()的工艺结构,可以重复编程,使它的通用性很好,使用更为方便灵活。
二、根据要求作题:(共15分)1.1.将逻辑函数P=AB+AC写成与或非型表达式,并用集电极开路门来实现。
2.2.图1、2中电路均由CMOS门电路构成,写出P、Q的表达式,并画出对应A、B、C的P、Q波形。
三、分析图3所示电路,写出F1、F2的逻辑表达式,说明电路的逻辑功能。
图中所用器件是8选1数据选择器74LS151。
(10分)四、设计一位十进制数的四舍五入电路(采用8421BCD码)。
要求只设定一个输出,并画出用最简与非门实现的逻辑电路图。
(15分)五、已知电路及CP、A的波形如图5(a)(b)所示,设触发器的初态均为“0”,试画出输出端B和C的波形。
(8分)BC六、用T触发器和异或门构成的某种电路如图6(a)所示,在示波器上观察到波形如图6(b)所示。
试问该电路是如何连接的?请在原图上画出正确的连接图,并标明T的取值。
(6分)七、电路如图7所示,其中RA=RB=10kΩ,C=0.1μf,试问:1.在Uk为高电平期间,由555定时器构成的是什么电路,其输出U0的频率f0=? 2.分析由JK触发器FF1、FF2、FF3构成的计数器电路,要求:写出驱动方程和状态方程,列出状态转换表,画出完整的状态转换图;3.设Q3、Q2、Q1的初态为000,Uk所加正脉冲的宽度为T w=6/f0,脉冲过后Q3、Q2、Q1将保持在哪个状态?(共15分)八、图8所示是16*4位ROM和同步十六进制加法计数器74LS161组成的脉冲分频电路。
中南大学大三软件专业算法设计与分析试卷及答案
中南大学20XX 学年第二学期?计算机算法设计与分析?试题院系:软件学院 专业:软件工程 年级:20XX 级一.计算题〔35分〕1.(6分) 对以下各组函数f(n)和g(n),确定f(n)=O(g(n))或f(n)=Ω(g(n))或f(n)=θ(g(n))。
(1) f(n)=3n ,g(n)=2n(2) f(n)=log n + 5,g(n)=log n 2(3) f(n)=log n ,g(n)=n答:(1) f(n) = Ω(g(n)) (2分)(2) f(n) = θ(g(n)) (2分)(3) f(n) = O(g(n)) (2分)2.〔8分〕采用动态规划策略,计算a={5,-3,7,-4,-5,9,-2,10,-3,2}的最大子段和,并给出这个最大子段和的起始下标和终止下标。
[设数组a 中的元素下标从1开始。
]要求给出过程。
答:b[1]=5;b[2]=max{b[1]+a[2],a[2]}=max{2,-3}=2b[3]=max{b[2]+a[3],a[3]}=max{9,7}=9b[4]=max{b[3]+a[4],a[4]}=max{5,-4}=5b[5]=max{b[4]+a[5],a[5]}=max{0,-5}=0b[6]=max{b[5]+a[6],a[6]}=max{9,9}=9b[7]=max{b[6]+a[7],a[7]}=max{7,-2}=7b[8]=max{b[7]+a[8],a[8]}=max{17,10}=17b[9]=max{b[8]+a[9],a[9]}=max{14,-3}=14b[10]=max{b[9]+a[10],a[10]}=max{16,2}=16(上述每两行1分,共5分)最大子段和为17〔1分〕〔假设数组下标从1开始〕起始下标:6〔1分〕,终止下标:8〔1分〕 〔假设数组下标从0开始〕起始下标:5〔0.5分〕,终止下标:7〔0.5分〕3.〔11分〕设有3件工作分配给3个人,将工作i 分配给第j 个人所花的费用为C ij ,现将为每一个人都分配1件不同的工作,并使总费用到达最小。
算法分析与设计考试试卷(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 分)
算法基础试题及答案
算法基础试题及答案一、单项选择题(每题2分,共10分)1. 以下哪个选项是算法的基本特征之一?A. 有穷性B. 可行性C. 确定性D. 以上都是答案:D2. 在算法设计中,以下哪个步骤是不必要的?A. 问题定义B. 算法描述C. 算法实现D. 算法测试答案:D3. 算法的时间复杂度通常用来描述什么?A. 算法的运行时间B. 算法的空间需求C. 算法的执行步骤数量D. 算法的输入数据大小答案:A4. 以下哪个不是算法设计的基本方法?A. 递归B. 排序C. 搜索D. 迭代答案:B5. 在算法分析中,大O符号表示什么?A. 算法执行的时间B. 算法执行的空间C. 算法执行的最坏情况D. 算法执行的平均情况答案:C二、填空题(每题2分,共10分)1. 算法的输入输出定义了算法的______,算法的步骤定义了算法的______。
答案:功能;实现2. 算法的时间复杂度和空间复杂度是衡量算法______的两个重要指标。
答案:效率3. 在算法设计中,______是一种通过重复执行代码块来实现的算法结构。
答案:循环4. 递归算法通常包括两个基本部分:______和______。
答案:基本情况;递归情况5. 在算法分析中,______复杂度描述了算法执行过程中所需的存储空间。
答案:空间三、简答题(每题5分,共20分)1. 请简述算法的五个基本特征。
答案:算法的五个基本特征包括有穷性、确定性、可行性、输入和输出。
有穷性指算法必须在执行有限步骤后结束;确定性指算法的每一步都必须有明确的定义;可行性指算法的每一步都必须足够基本,以至于可以精确地执行;输入指算法有0个或多个输入,以描述运算的对象和初始条件;输出指算法至少有一个输出,输出表示算法运行的结果。
2. 算法的时间复杂度和空间复杂度有什么区别?答案:时间复杂度主要关注算法执行所需的时间,它通常与算法中操作的数量有关,而空间复杂度则关注算法执行过程中所需的存储空间。
算法考试题库及答案
算法考试题库及答案一、单项选择题(每题2分,共20分)1. 在算法中,以下哪个不是排序算法?A. 快速排序B. 归并排序C. 冒泡排序D. 深度优先搜索答案:D2. 算法的时间复杂度是指算法执行过程中所需要的基本操作的个数与输入数据量之间的关系。
A. 正确B. 错误答案:A3. 以下哪个算法用于解决图的最短路径问题?A. 迪杰斯特拉算法B. 快速傅里叶变换C. 克鲁斯卡尔算法D. 动态规划答案:A4. 在数据结构中,栈(Stack)是一种后进先出(LIFO)的数据结构。
A. 正确B. 错误答案:A5. 递归算法的主要缺点是?A. 代码复杂B. 占用内存空间大C. 执行速度慢D. 以上都是答案:B6. 以下哪个数据结构最适合实现图?A. 数组B. 链表C. 树D. 邻接矩阵答案:D7. 在算法设计中,分治法是一种将问题分解成多个相同或相似的子问题,递归解决子问题,然后将结果合并的方法。
A. 正确B. 错误答案:A8. 动态规划算法通常用于解决哪些类型的问题?A. 排序问题B. 最优化问题C. 查找问题D. 搜索问题答案:B9. 以下哪个算法不是贪心算法?A. 霍夫曼编码B. 迪杰斯特拉算法C. 克鲁斯卡尔算法D. 快速排序答案:D10. 在算法中,空间复杂度是指算法执行过程中所需要的存储空间的大小。
A. 正确B. 错误结束语:以上为算法考试题库及答案,希望对同学们的复习有所帮助。
算法考试题及答案
算法考试题及答案一、选择题(每题5分,共20分)1. 以下哪个算法的时间复杂度是O(n^2)?A. 冒泡排序B. 快速排序C. 二分查找D. 归并排序答案:A2. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构?A. 栈B. 队列C. 链表D. 哈希表答案:A3. 哈希表解决冲突的方法不包括以下哪种?A. 分离链接法B. 开放寻址法C. 链地址法D. 排序法答案:D4. 以下哪个算法不是动态规划算法?A. 斐波那契数列B. 0/1背包问题C. 最长公共子序列D. 二分查找答案:D二、填空题(每题5分,共20分)1. 在算法分析中,____复杂度表示算法执行时间与输入数据量的关系。
答案:时间2. 动态规划算法的核心是____问题,通过将问题分解为更小的子问题来解决。
答案:最优子结构3. 在排序算法中,____排序是一种不稳定的排序算法,它通过不断地交换相邻元素来达到排序的目的。
答案:冒泡4. 在图论中,____树是一种特殊的树,其中每个节点都只有一个父节点。
答案:二叉三、简答题(每题10分,共30分)1. 请简述贪心算法的基本思想。
答案:贪心算法的基本思想是在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法。
贪心算法不保证能得到最优解,但在某些情况下它能产生近似最优解。
2. 什么是分治算法?请举例说明。
答案:分治算法是一种递归算法,它将一个难以直接解决的大问题分解成若干个规模较小的相同问题,递归解决这些子问题,然后再合并这些子问题的解以解决原始问题。
例如,归并排序就是分治算法的一个典型例子,它将一个数组分成两半,分别排序,然后再合并。
3. 请解释什么是时间复杂度,并给出一个例子。
答案:时间复杂度是衡量算法运行时间的量度,它描述了算法执行时间随输入数据规模增长的变化趋势。
例如,对于一个简单的线性搜索算法,其时间复杂度是O(n),意味着搜索的时间随着数据规模的增加而线性增长。
中南大学C++程序设计试卷含答案
一、单项选择题(总分21)1. (分值:1.0 分)有如下程序段:</p> int i=1;</p> while(1)</p> { i++;</p>if (i==10) break;</p> if (i%3==0) cout<<"*";</p> }</p>执行这个程序段输出字符*的个数是( )。
A: 1B: 2C: 3D: 4序号:31 难度:1 考查点:程序控制结构2. (分值:1.0 分)要建立文件流并打开当前目录下的文件file.dat 用于输入,下列语句中错误的是A: ifstream fin=ifstream.open ("file.dat");B: ifstream *fin=new ifstream ("file.dat");C: ifstream fin; fin.open ("file.dat");D: ifstream *fin=new ifstream(); fin->open ("file.dat");序号:72 难度:1 考查点:输入输出流3. (分值:1.0 分)有下列程序:#include<iostream.h>void main( ){int i,k,a[10],p[3];k=5;for(i=0;i<9;i++) a[i]=i;for(i=0;i<3;i++) p[i]=a[i*(i+1)];for(i=0;i<3;i++) k+=p[i]*2;cout<<k;}其输出结果是()。
A: 20B: 21C: 22D: 23序号:100 难度:1 考查点:数组4. (分值:1.0 分)下面4 个选项中,()是用来声明虚函数的。
A: virtualB: publicC: usingD: false序号:141 难度:1 考查点:多态性与虚函数5. (分值:1.0 分)存放多个字符串,用________比较适合。
2022年中南大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
2022年中南大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。
A.j=r[j].nextB.j=j+lC.j=j->nextD.j=r[j]->next2、用有向无环图描述表达式(A+B)*((A+B)//A),至少需要顶点的数目为()。
A.5B.6C.8D.93、若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()。
A.单链表B.双向链表C.单循环链表D.顺序表4、在用邻接表表示图时,拓扑排序算法时间复杂度为()。
A.O(n)B.O(n+e)C.O(n*n)D.O(n*n*n)5、下面关于串的叙述中,不正确的是()。
A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储6、排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。
下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。
Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排Ⅴ.二路归并排序A.仅Ⅰ、Ⅲ、Ⅳ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅱ、Ⅲ、Ⅳ D.仅Ⅲ、Ⅳ、Ⅴ7、已知关键字序列5,8,12,19,28,20,15,22是小根堆(最小堆),插入关键字3,调整后的小根堆是()。
A.3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,198、一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到()个不同的码字。
A.107B.108C.214D.2159、一棵非空的二叉树的前序序列和后序序列正好相反,则该二叉树一定满足()。
A.其中任意一个结点均无左孩子B.其中任意一个结点均无右孩子C.其中只有一个叶结点D.其中度为2的结点最多为一个10、下面给出的四种排序方法中,排序过程中的比较次数与排序方法无关的是()。
中南大学人工智能考试试卷与答案
中南大学考试试卷2006年第2学期,考试时间110分钟人工智能 课程 4L_学时,卫学分,考试形式:开卷专业年级:计算机 03级 总分100.分,占总评成绩70 %注:此页不作答题纸,请将答案写在答题纸上 一、选择题(共 20分,每题2分)1、 消解原理是一种用于A 、表达式变换的推理规则 C 、一定的子句公式的推理规则2、 下列哪个系统属于新型专家系统?A 、多媒体专家系统C 、车事专家系统3、 示例学习属于下列哪种学习方法?A.解释学习 B.归纳学习4、 不属于神经网络常用学习算法的是:A.有师学习 B.增强学习B 、 变量运算的推理规则D 、规则演绎的推理规则B 、实时专家系统D 、分布式专家系统C. 类比学习D.机械学习C.观察与发现学习D.无师学习5、人工智能应用研究的两个最重要最广泛领域为:A. 专家系统、自动规划 C.机器学习、智能控制6、 下列搜索方法中不属于盲目搜索的是:A. 等代价搜索B.宽度优先搜索7、 被认为是人工智能“元年”的时间应为:B. 专家系统、机器学习 D. 机器学习、自然语言理解C.深度优先搜索D.有序搜索A 、 1948 年B 、1946 年C 、1956 年D 、 1961 年的是:B 、费根鲍姆( Feigenbaum )D 、尼尔逊( Nilsson )B 、状态和算符D 、槽和值 10、尽管人工智能学术界出现“百家争鸣”的局面,但是,当前国际人工智能的主流派仍&被誉为国际“人工智能之父” A 、图灵(Turing ) C 、傅京孙(K.S.Fu ) 9、语义网络的组成部分为:A 、框架和弧线 C 、节点和链属于:A、连接主义B、符号主义C、行为主义D、经验主义二、填空题(共20分,每一填空处1分)1、机器学习系统由_________________ 、______________ 、______________ 和________________ 几部分构成。
中南大学算法试卷
中南大学考试试卷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,...,an作为输入,算法的时间复杂度是O(a1+a2+......+an)。
它是一个多项式时间算法。
(14)有一个图G=(V,E) ,每条边e∈E的权We>0, 如果一棵生成树T 最小化Σe∈TWe ,那么T 也最小化Σe∈TWe2 ,反之也成立(即图中边的权值都平方后,生成树T仍是这个图的最小生成树)。
(15)给定两个判定性问题Q1、Q2,如果Q1可以在多项式时间内规约到Q2,则Q1和Q2具有同等难度。
中南大学现代远程教育课程考试复习试题及参考答案
中南大学现代远程教育课程考试复习试题及参考答案《算法分析与设计》一简答题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,….,x n)的含义。
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)ifthen 对两元素进行比较;return;else{maxmin(i,m,max1,min1); //其中max1和min1为解子问题1的解}2.Hanoi算法Hanoi(n,a,b,c)If n=1 thenElse{;Hanoi(n-1,b, a, c);}3.二分检索BINSRCH(A,n,x,j)low←1;high←n;while low<high do{ ________________ mid←(low+high)/2;case:x=A[mid] :j←mid; return;:x< A[mid]:_________________high←mid-1;:x> A[mid]:_________________low←mid+1;endcase}j←0;end4.快速排序Quicksort(p,q)if p>q then_____________{call partition(p,j);call _______________________call _______________________}end5.贪心方法的抽象化控制procedure GREEDY(A,n)//A(1:n)包含n个输入//solutions←;for i←1 to do{x←SELECT(A)if FEASIBLE(solution,x)then solutions←; endif}return(solution)end GREEDY6.背包问题贪心算法procedure GREEDY-KNAPSACK(P,W,M,X,n)X←0 ;cu←M ;for i←1 to n do{ if then exit endifX(i) ← _ ;cu←;}if i ≤n then X(i) ←;endifend GREEDY-KNAPSACK7.分治合并排序算法procedure MERGESORT(low,high)if low < high thenmid ←_______________________________________________________MERGE(low,mid,high)endifend MERGESORT8. 多段图动态规划算法procedure FGRAPH(E ,k ,n ,P)1 real COST(n),integerD(n 一1),P(k),r ,j ,k ,n2 ;3 for to 1 by -1do4 设r 是一个这样的结点,(j ,r)∈E 且使c(j ,r)+COST(r)取最小值5 COST(j)← ;6 ;7 repeat8 P(1)←1;P(k)←n ;9 for do10 P(j)←D ( P(j-1) )11 repeat12 end FGRAPH9. n 后问题递归算法procedure RNQUEENS(K)global x( 1:m ),n;for x(k)←1 to _____ doif place( k )= true thenif k = n then ________else_____________endifendifrepeatend ENQUEENS五.设计算法1. 写递归形式的二分检索算法2. 设计三分检索算法3. 有n 个大小相同而重量不同的集装箱,重量分别为(w1,w2,……,wn),已知货船的额定载重量为M ,Σwi>M,i=1,2,3,…,n 。
中南大学2014算法试卷和答案分析报告
中南大学考试试卷2013 -- 2014学年下学期时间100分钟 2014 年6 月6日算法分析与设计课程 48 学时 3 学分考试形式:闭卷专业年级:12级计算机、信安、物联本科生,总分100分,占总评成绩70 % 注:此页不作答题纸,请将答案写在答题纸上一、简答题(本题30分,每小题5分)1、陈述算法在最坏情况下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法各自有什么实际意义?1最坏情况下的时间复杂度称最坏时间复杂度。
一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。
意义:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长2平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。
意义:在输入不同的情况下算法的运行时间复杂度可能会发生变化。
平均时间复杂度给出了算法的期望运行时间,有助于算法好坏的评价以及在不同算法之间比较时有一个统一标准2、简单描述分治法的基本思想。
分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。
递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。
3、何谓最优子结构性质?如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。
最优子结构性质为动态规划算法解决问题提供了重要线索。
4、何谓P、NP、NPC问题P(Polynomial问题):也即是多项式复杂程度的问题。
NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。
NPC(NP Complete)问题,这种问题只有把解域里面的所有可能都穷举了之后才能得出答案,这样的问题是NP里面最难的问题,这种问题就是NPC问题。
5、试比较回溯法与分支限界法。
1、引言1.1回溯法回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。
中南大学算法试卷
15)
广度优先搜索算法可以搜索到问题所有可行解。
3. ( 20 分)算法设计 (选做两题) (1) (10 分)作一个“三分”检索算法,它首先检查 1/3 处的元素是否与 X 相等,然后检查 2/3 处的元素,等等。这样,或者找到 X,或者将集合缩小到原 来的 1/3。试写出此算法并分析其复杂性。 输入: 已按降序排好序的 n 个元素的数组 A 和 X, X 是被检索的项。 A[0]未用。 (2) (10 分)一个旅行者要驾车从 A 地到 B 地,A、B 两地间距离为 s。A、B 两地之间有 n 个加油站,已知第 i 个加油站离 起点 A 的距 离为 d i 公里, 0= d1 d 2 d n s ,车加满油后可行驶 m 公里,出发之前汽车油箱为空。应 如何加油使得从 A 地到 B 地沿途加油次数最少?给出用贪心法求解该最优化问 题的贪心选择策略,写出求该最优化问题的最优值和最优解的贪心算法,并分析 算法的时间复杂性。 (3)(10 分)给定边加权图 G=(V, E),图 G 中的最大生成树为图 G 中所有生成 树中权值最大的生成树。设计构造最大生成树的算法 4. ( 10 分)求解下列递归式。
中南大学考试试卷
2013 -- 2014 学年 上 学期 时间 100 分钟 2013 年 12 月 18 日 算法分析与设计 课程 48 学时 3 学分 考试形式: 闭 卷
专业年级:11 级计算机、信安、物联本科生,总分 100 分,占总评成绩 70 % 注:此页不作答题纸,请将答案写在答题纸上 1. (20 分 )本期学了很多类算法, 请举例说明下列算法设计策略的使用条件及基本 过程。 (1)动态规划 (2)贪心策略 (3)回溯法 (4)分支限界 2. ( 30 分)请判断下列陈述是否正确。 1) NPC 问题是 NP 问题的子集。 2) NPC 问题没有多项式时间算法。 3) 分支限界法的求解目标是找出满足约束条件的一个解或是在满足约束条 件的解中找出使用某一目标函数值达到极大或极小的解。 4) 对于解决相同问题, 一个 Theta(n log n) 算法 比一个 Theta(n^2) 算法更加 有效。 5) 只有一个奇数点(度为奇数的点)的图,有一个从该点开始的欧拉回路。 6) 如果一个问题是 NPC, 那么在最坏情况下找不到任何确定的多项式时间算 法。 7) 快速排序在最坏情况下的时间复杂度是 O(nlogn)。 8) n!=O(2n )。 9) 给定一个无向无权图 G, 包括 n 个顶点和 m 条边, 有两个顶点 s t, 则 s−t 间最短路径可以在 O(m+n)时间内计算出来。 10) 每个有向无环图刚好有一个拓扑序列。 11) 若 c 是正常数,则 O(cf(n))=O(f(n))。 12) 好的算法在很大程度上取决于问题中数据所采用的数据结构。 13) 14) 用贪心算法解决零钱兑换问题时,总能找到问题的最优解。 动态规划适合于求解满足最优化原理且有大量的子问题重叠的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学考试试卷2008 -- 2009学年 2学期时间110分钟算法分析与设计课程 48学时 3学分考试形式:闭卷专业年级:信安0601-0602 总分100分,占总评成绩70 %注:此页不作答题纸,请将答案写在答题纸上一、基本概念题(本大题40分)1、一般情况下,如何计算执行顺序、选择、循环、子过程调用结构的运算时间?(6分)2、设T(n)=n,根据T(n)= O(f(n))的定义,下列等式是否成立?(4分)1)T(n)= O(n2)2)O(n2) = T(n)3)T(n)= O(log n)+ O(n)4)T(n) = O(n) *O(log n)3、与顺序查找算法相比,折半查找算法的时间复杂性有多大程度的降低?它是如何提高算法的效率的?(6分)4、简述归并排序算法和快速排序算法的分治方法。
(6分)5、一般背包问题的贪心算法可以获得最优解吗?物品的选择策略是什么?(6分)6、Prim算法和Dijkstra算法选择下一个节点的标准分别是什么?对于有负边的无向图,Prim算法和Dijkstra算法还能保证获得最优解吗?(6分)7、比较回溯法和分支限界法的搜索方式,哪种方法更适合找最优解问题?(6分)二、分析算法的时间复杂性,需要写出分析过程(本大题20分)1、用分割元素v将有n个元素的数组分割成元素大于v和小于v的两部分,需要花多少时间(要讲出道理)。
(5分)2、如果修改归并排序算法,将数组分成1/3和2/3大小不等的两部分,分别排序后再归并,算法的最坏时间复杂度有什么变化?(5分)3、设函数f1、f2和f3的处理时间分别为O(n)、O(n2) 和O(1),分析下列流程的时间复杂性:1)基本结构procedure A1(int n,b) (4分) if b < 3 thenf1elsef2for i←1 to n-1 dof3end2) 递归结构procedure A2(int n) (6分) if n = 1 then{f3return}else{ A2(n-1)f1}end三、算法理解(本大题24分)1、在一个空间安排n =5个活动,开始时间和结束时间分别为[8,10), [12,14),[9, 11:30), [11:40,13),[13:30,15)。
写出活动安排贪心算法的运行结果。
(6分)2、写出0/1背包问题的动态规划方程,并简要说明。
(6分)3、修改图的m-着色的回溯算法,找到一个解,算法就结束。
(6分)4、用分支限界法解0/1背包问题,若物品i选入,则x[i]=1,否则x[i]=0。
如何选用上下界函数?(6分)四、算法设计(本大题16分)对于给定的无向图G=(V,E), 分别设计具有下列功能的深度优先算法。
1) 判断图是否为连通图。
(8分)2) 判断图是否存在环。
(8分)中南大学考试试卷答案(补考)2008 -- 2009学年 2学期时间110分钟算法分析与设计课程 48学时 3学分考试形式:闭卷专业年级:信安0601-0602 总分100分,占总评成绩70 %注:此页不作答题纸,请将答案写在答题纸上一、基本概念题(本大题40分)1、(6分)1)顺序结构将运算步骤的时间累计,简单运算只需要1个单位时间。
(1分)2)选择结构:计算复杂的情况复杂度。
(2分) 3)循环结构:复杂度计量=循环着次数*循环体的时间(2分) 4)函数调用:计算函数的执行时间(1分)2、设T(n)=n,根据T(n)= O(f(n))的定义,下列等式是否成立?(4分)1)T(n)= O(n2) (√)2)O(n2) = T(n) (×)3)T(n)= O(log n)+ O(n) (√)4)T(n) = O(n) *O(log n)(√)3、与顺序查找算法相比,折半查找算法的时间复杂性有多大程度的降低?它是如何提高算法的效率的?(6分)顺序查找的时间是O(n) ,折半查找O(log n) 降低了一个数量级(2分)采用分治策略,每一次比较可以排除一半的数据。
(4分)4、简述归并排序算法和快速排序算法的分治方法。
(6分)1)归并排序的分治是将数组从中间分开,分别对前后来那个部分进行排序,将排序后的两个数组合并成整个数组的排序。
这样分治为递归过程,直到一个元素时返回。
2)快速排序的分治是选取分割元素,以分割元素为界,将数组分成两部分,一部分小于分割元素,一部分大于分割元素,分别对两部分排序。
5、一般背包问题的贪心算法可以获得最优解吗?物品的选择策略是什么?(6分)按照p[i]/w[i]≥p[i+1]/w[i+1]排序,选择当前利润/重量比最大的物品,可以获得最优解,6、Prim算法和Dijkstra算法选择下一个节点的标准分别是什么?对于有负边的无向图,Prim算法和Dijkstra算法还能保证获得最优解吗?(6分)1)prim算法的选择标准是选择当前与T连结边的代价最小的节点加入。
2)Dijkstra算法的选择标准是在与T邻接的顶点w中,选择从S到w路径最短的顶点。
3)prim算法用于有负边的图可以获得最优解,Dijkstra算法不能获得最优解。
7、比较回溯法和分支限界法的搜索方式,哪种方法更适合找最优解问题?(6分)1)回溯法是在约束下带跳跃的深度优先搜索。
2)分枝限界是广度优先方式的按最小代价选择扩展节点,以上界函数对活节点进行限界的搜索。
3)分枝限界法更适合找最优解。
二、分析算法的时间复杂性,需要写出分析过程(本大题20分)1、用分割元素v将有n个元素的数组分割成元素大于v和小于v的两部分,需要花多少时间(要讲出道理)。
(5分)至少需要对每个元素进行一次比较运算,运算时间是O(n)。
2、如果修改归并排序算法,将数组分成1/3和2/3大小不等的两部分,分别排序后再归并,算法的最坏时间复杂度有什么变化?设对n个元素排序的时间为T(n), 对两部分排序的时间分别为T(n/3)和,合并的时间为n-1 ,得到递归方程:T(n) = T(n/3)+ T(2n/3) + n-1 n>3 (2分) O(1) n≤3考虑n=3kT(n) = T(3k-1 )+ T(2*3k-1) +n-1= T(3k-2 )+2T(2*3k-2 )+T(22*3k-2)+(n-1)+(n-2)= T(3k-3 )+3T(22*3k-3 )+ 3T(223k-3 )+T(233k-3)+(n-1)+(n-2) +(n-3) 最后T(2i3 k-i)=O(1)时,2i3 k-i≤3T(n) ≤(n-1)+(n-2) +(n-3)+......+(n-(k-1))=nk-(1+2+......+(k-1))≤nlog3/2n (3分)3、设函数f1、f2和f3的处理时间分别为O(n)、O(n2) 和O(1),分析下列流程的时间复杂性:1)基本结构procedure A1(int n,b) (4分)T(n)=max{O(n),O(n2)}+n* O(1)= O(n2)2) 递归结构设A2的时间为T(n)T(n)= T(n-1)+O(1) n>1= O(1) n≤3 (3分)T(n)=T(n-2)+2O(n)=......= T(1)+nO(n)= O(n2) (3分)三、算法理解(本大题24分)1、在一个空间安排n =5个活动,开始时间和结束时间分别为。
写出活动安排贪心算法的运行结果。
1)按照结束时间排序(3分)[8,10)1, [9, 11:30)3, [11:40,13)4,[12,14)2, [13:30,15)5 2)可行解 1,4,5 (3分)2、写出0/1背包问题的动态规划方程,并简要说明。
f i(X)=max{f i-1(X),{f i-l(X—w i)+p i当X≥wi } (3分)f i(X)是前i个物品,背包容积 X子问题的最优值,当第i个物品不选入,f i(X)等于f i-1(X)前i-1个物品,背包容积 X子问题的最优值,当第i个物品不选入,得利润p i,但前i-1个物品能使用背包为X—w i。
(3分)3、修改图的m-着色的回溯算法,找到一个解,算法就结束。
(6分)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 dox[k] ← x[k]+1if x[k]≤m then (2分)if k=n then{print xReturn (2分)}else{k← k+1x[k]←0}else k← k-1}4、用分支限界法解0/1背包问题,若物品i选入,则x[i]=1,否则x[i]=0。
如何选用上下界函数?(6分)1)物品按照利润重量比排序,背包的剩余体积cu,已得利润s。
(2分)2)下界估值函数:-(s+∑X[j]P[j]),当∑X[j]w[j]=cu,0≤X[j]≤1,j=i,…n (2分)3)上界函数:-(s+∑X[j]P[j]),当∑X[j]w[j]≤cu,X[j]∈{0, 1} j=i,…n(2分)四、算法设计(本大题16分)对于给定的无向图G=(V,E), 分别设计具有下列功能的深度优先算法。
1) 判断图是否为连通图(8分)procedure DFS_Visit(G,u){1 color[u]←Gray2 for each edge(u,v) do2-1 if color[v]=White thenDFS_Visit(G,v)3 color[u]←Black; (2分)}procedure DFS(G)1 for each vertex u∈V do2 color[u]←White3 f ←03 for vertex each u∈V doif color[u]=Whitethen { DFS_Visit(G,u) (3分)f←f +1}4 if f=1 then print “Y es”(3分)else print “No”2) 判断图是否存在环(8分)procedure DFS_Visit(G,u){1 color[u]←Gray2 for each edge(u,v) do2-1 { if color[v]=White thenDFS_Visit(G,v)2-1 if color[v]= Gray thenf←1return3 color[u]←Black (2分)}procedure DFS(G)1 for each vertex u∈V do2 color[u]←Whitef ←03 for vertex each u∈V do{ if color[u]=Whitethen { DFS_Visit(G, u) (3分)if f=1 then{ print “Y es”(3分)return}}}4 print “No”}4 if f=1 then print “Y es”(3分)else print “No”。