算法本科08-09答案
数据结构本科
一、判断(共计40分,每题2.5分)1、对连通图进行深度优先遍历可以访问到该图中的所有顶点。
()A. 正确B. 错误错误:【A】2、非空的双向循环链表中任何结点的前驱指针均不为空。
()A. 正确B. 错误错误:【A】3、先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列。
()A. 正确B. 错误错误:【A】4、向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。
()A. 正确B. 错误错误:【B】5、不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。
()A. 正确B. 错误错误:【A】6、线性表的顺序存储结构比链式存储结构更好。
()A. 正确B. 错误错误:【B】7、冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。
()A. 正确B. 错误错误:【A】8、设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。
()A. 正确B. 错误错误:【B】9、调用一次深度优先遍历可以访问到图中的所有顶点。
()A. 正确B. 错误错误:【B】10、子串“ABC”在主串“AABCABCD”中的位置为2。
( )A. 正确B. 错误错误:【A】11、设初始记录关键字基本有序,则快速排序算法的时间复杂度为O(nlog2n)。
()A. 正确B. 错误错误:【B】12、线性表中的所有元素都有一个前驱元素和后继元素。
()A. 正确B. 错误错误:【B】13、满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
()A. 正确B. 错误错误:【A】14、快速排序是排序算法中平均性能最好的一种排序。
()A. 正确B. 错误错误:【A】15、分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
()A. 正确B. 错误错误:【A】16、层次遍历初始堆可以得到一个有序的序列。
()A. 正确B. 错误错误:【B】二、单选(共计60分,每题2.5分)17、设某哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点。
操作系统试题_A试卷_08-09
攀枝花学院课程考核命题暨试卷印刷审批表注:1、一卷一份。
2、“院管课程”试卷印制须连同考试安排表一并上报。
3、每套试卷必须经过审批后方用于考核,审核、审批意见必须明确。
教研室审核结果综合评价及意见应从内容的科学性、表达的准确性、难易程度等方面进行审核。
2008 ~2009 学年度第 二 学期《操作系统》试卷(A 卷)适用年级专业:2006级计算机科学与技术专业 考 试 形 式:( )开卷、( √ )闭卷二级学院: 行政班级: 学 号: 教 学 班: 任课教师: 姓 名: 注:学生在答题前,请将以上内容完整、准确填写,填写不清者,成绩不计。
共 五 大题 54 小题。
答案请直接写在试卷上!一、单项选择题(30 小题,每小题1分,共30分 请在备选答案中选出一个正确答案,并将其字母填入下表,填在其它地方不计分。
)1、( )不是实时系统的基本特征。
A 、安全性B 、公平响应……………………………………………线………………………………………订………………………………………C、实时性D、高可靠2、正在运行的进程在信号量S上作P操作之后,当S<0,进程将进入信号量的()。
A、等待队列B、提交队列C、后备队列D、就绪队列3、并发进程失去封闭性特征,是指()。
A、多个相互独立的进程以各自的速度向前推进B、并发进程的执行结果与速度无关C、并发进程执行时,在不同时刻发生的错误D、并发进程共享公共变量,其执行结果与速度有关4、当一个进程处于()这样的状态时,称为等待状态。
A、它正等着进入磁盘B、它正等着进入内存C、它正等着输入一批数据D、它正等着CPU的控制权5、用户程序在用户态下使用特权指令将引起的中断是属于()。
A、程序中断B、硬件故障中断C、外部中断D、访管中断6、在磁盘上可以建立的物理文件有()。
A、用户文件B、记录式文件C、索引文件D、目录文件7、设备独立性是指,()。
A、I/O设备具有独立执行I/O功能的特性B、用户程序中使用的设备独立于具体的物理设备C、能独立实现设备共享的特性D、设备驱动程序独立于具体的物理设备的特性8、三个进程共享4台绘图仪,每个使用绘图仪的进程最多使用两台,规定每个进程一次仅允许申请一台,则该系统()。
算法工程师面试真题单选题100道及答案解析
算法工程师面试真题单选题100道及答案解析1. 以下哪种数据结构适合用于实现快速查找最大值和最小值?A. 栈B. 队列C. 堆D. 链表答案:C解析:堆可以快速地获取最大值和最小值。
2. 快速排序在最坏情况下的时间复杂度是?A. O(nlogn)B. O(n^2)C. O(n)D. O(logn)答案:B解析:快速排序在最坏情况下,每次划分都极不均匀,时间复杂度为O(n^2)。
3. 以下哪种算法常用于在未排序的数组中查找特定元素?A. 冒泡排序B. 二分查找C. 顺序查找D. 插入排序答案:C解析:顺序查找适用于未排序的数组查找特定元素。
4. 一个有向图的邻接表存储结构中,顶点的邻接点是按照什么顺序存储的?A. 随机顺序B. 顶点编号的大小顺序C. 插入的先后顺序D. 无法确定答案:C解析:邻接表中顶点的邻接点是按照插入的先后顺序存储的。
5. 深度优先搜索遍历图的时间复杂度是?A. O(n)B. O(n + e)C. O(n^2)D. O(e)答案:B解析:深度优先搜索遍历图的时间复杂度为O(n + e),其中n 是顶点数,e 是边数。
6. 以下哪种排序算法是稳定的排序算法?A. 快速排序B. 希尔排序C. 冒泡排序D. 选择排序答案:C解析:冒泡排序是稳定的排序算法。
7. 一个具有n 个顶点的无向完全图,其边的数量为?A. n(n - 1) / 2B. n(n - 1)C. n^2D. 2n答案:A解析:无向完全图的边数为n(n - 1) / 2 。
8. 动态规划算法的基本思想是?A. 分治法B. 贪心算法C. 把问题分解成多个子问题并保存子问题的解D. 回溯法答案:C解析:动态规划的基本思想是把问题分解成多个子问题并保存子问题的解,避免重复计算。
9. 以下关于哈希表的说法,错误的是?A. 哈希表的查找时间复杂度为O(1)B. 哈希冲突可以通过开放定址法解决C. 哈希表的空间复杂度是固定的D. 哈希函数的设计会影响哈希表的性能答案:C解析:哈希表的空间复杂度不是固定的,取决于元素数量和负载因子等。
哈工大深圳算法设计与分析08年试卷答案-何震宇
08算法答案 1、B2、D3、A4、B5、C6、Linear probing Quadratic probing7、8、Two stacks can be implemented in a single array without overflows occurring ifthey grow from each end and towards the middle.* + +ghf+ + *ab +c de9、The elements of dynamic programming: optimal substructure, overlapping sub-problemsThe elements of greedy programming: optimal substructure, greedy choice propertyThey share the optimal substructure property, but we may not use dynamic programming when a greedy solution suffices, or reverse.The greedy choice property is that a globally optimal solution can be arrived at by making a locally optimal (greedy) choice. We must prove that a greedy choice at each step yields a globally optimal solution. First consider a globally optimal solution, and then modify the optimal solution, to make it to begin as a greedy choice.10、Any minimum spanning tree algorithm is OK.11、Searching(A)for i 1 to length(A)doif A[i] = vreturn ireturn NILLoop invariant proof:Initialization:Loop invariant holds before the first loop iteration. Now i=1, if A[i] = v, then we return the index 1, if A[i]! = v, then until now we are sure that there is no v in the array!Maintenance:Each iteration maintains the loop invariant. The for loop compare v to the current array element A[i], to make sure there is no v in A[1…i-1], if A[i] = v, then we return the index i.Termination:If there is an element matched, the index is returned from early detect, or the program will return a NIL if we come to the end. So the loop invariant holds.12、Use a recursion tree to give an asymptotically tight solution to the recurrence T(n) = T(αn) + T((1 - α)n) + cn, where α is a constant in the range 0 <α < 1 and c > 0 is also a constantBecause α is uncertain ,there is three situations:a. 0 < α < 1/2b. α = 1/2c. 1 > α > 1/2The value of α will influence the height of the recursion tree ,but the final answer is the same, so we just consider α = 1/2 here. From the recursion tree, we can calculate :T(n) =(log 1n α-+⎢⎥⎣⎦)*cn=Θ(log n n α-) =Θ(lg n n )13、 1)4.If a node is red, then both its children are black.5.For each node, all paths from the node to descendant leaves contain the same number of black nodes.2)Consider a red-black tree with black-height k. If every node is black the total number of internal nodes is 2k - 1. If only every other nodes is black we can construct a tree with 22k - 1 nodes.3)RB-INSERT(T , z ) 1 y ← nil [T ] 2 x ← root [T ] 3 while x ≠ nil [T ] 4 do y ← x5 if key [z ] < key [x ]6 then x ← left [x ]7 else x ← right [x ]8 p [z ] ← y9 if y = nil [T ]10 then root [T ] ← z11 else if key[z] < key[y]12 then left[y] ← z13 else right[y] ← z14 left[z] ← nil[T]15 right[z] ← nil[T]16 color[z] ← RED17 RB-INSERT-FIXUP(T, z)RB-INSERT-FIXUP(T, z)1 while color[p[z]] = RED2 do if p[z] = left[p[p[z]]]3 then y←right[p[p[z]]]4 if color[y] = RED5 then color[p[z]] ← BLACK▹ Case 16 color[y] ← BLACK ▹ Case 17 color[p[p[z]]] ← RED ▹ Case 18 z←p[p[z]] ▹ Case 19 else if z = right[p[z]]10 then z←p[z] ▹ Case 211 LEFT-ROTATE(T, z) ▹ Case 212 color[p[z]] ← BLACK ▹ Case 313 color[p[p[z]]] ← RED ▹ Case 314 RIGHT-ROTATE(T, p[p[z]]) ▹ Case 315 else (same as then clausewith "right" and "left" exchanged)16 color[root[T]] ← BLACK14、The final result is ((A1A2)((A3A4)(A5A6))) (Detailed process is omit here).15、1)k h-12)suppose the parent is i, if the student can give “(i-1)k+2<=n<=ik+1” , take it right3)(n-1)*k+1+i4) If it has a right brother, than it must not be the first child from right of its parent, which is (n-1)%k!=0, the number of its right brother is n+1。
【VIP专享】算法设计与分析试卷A及答案(2008级)
(首页)试题纸(A卷)课程名称:算法设计与分析适用专业年级:2008级计算机、电本考生学号:考生姓名:………………………………………………………………………………………………………………………题号一二三四总分分数一、填空题(10空×2分,共20分) 1、算法在运行时占有的机器资源的量称为算法复杂性,主要包括(时间)和(空间)。
2、当一个算法的运行时间为n2+n+1时,由于n2+n+1与n2的数量级相等,则称n2为这个算法的(时间复杂度)。
3、多项式A(n)=a m n m+…+ a2n2+ a1n+ a0的上界为()。
4、递归算法设计的关键在于找出(递归关系)和(最小问题的解)。
5、(无后向性)是问题能用贪婪算法或动态规划方法求解的前提。
6、拆半查找、合并排序、二叉树遍历等算法中均采用了(分而治之)策略。
7、回溯算法是尝试搜索算法中最为基本的一种算法,其采用了一种走不通就掉头的思想作为其控制结构。
8、用分支限界法解决布线问题时,对问题解空间搜索尝试结束的标志是()。
二、判断题(10题×2分,共20分)1.若c是正常数,则O(cf(n))=O(f(n))。
v2.在最好情况下、最坏情况下、平均情况下的时间复杂度中,可操作性最好的且最有实际价值的,是最坏情况下的时间复杂度。
x3.好的算法在很大程度上取决于问题中数据所采用的数据结构。
v4.迭代模型是通过小规模问题的解逐步求解大规模问题的解,正好与递归算法设计相反。
v5.用贪婪算法解决零钱兑换问题时,总能找到问题的最优解。
x6.适用动态规划算法解决问题应该具有最优化原理和子问题重叠。
x7.深度优先搜索算法可以搜索到问题所有可能的解方案。
x8.解决马的遍历问题采用回溯法,对解空间树的搜索采用广度优先搜索方式v9.分支限界法的求解目标是找出满足约束条件的一个解或是在满足约束条件的解中找出使用某一目标函数值达到极大或极小的解。
x三、简答题(3题×6分,共18分)1、叙述分治算法和动态规划算法的基本思想,并比较两种算法的异同。
算法基础试题及答案
算法基础试题及答案一、单项选择题(每题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. 算法的时间复杂度和空间复杂度有什么区别?答案:时间复杂度主要关注算法执行所需的时间,它通常与算法中操作的数量有关,而空间复杂度则关注算法执行过程中所需的存储空间。
校招算法工程师真题单选题100道及答案解析
校招算法工程师真题单选题100道及答案解析1. 以下数据结构中,插入和删除操作平均时间复杂度最低的是()A. 链表B. 栈C. 队列D. 哈希表答案:D解析:哈希表在理想情况下,插入和删除操作的平均时间复杂度为O(1)。
链表、栈和队列的插入和删除操作平均时间复杂度通常为O(n)。
2. 冒泡排序在最坏情况下的比较次数是()A. n(n - 1) / 2B. n log₂nC. n²D. 2^n答案:C解析:冒泡排序在最坏情况下,需要比较n²次。
3. 一个具有n 个顶点的无向完全图,其边数为()A. n(n - 1) / 2B. n(n - 1)C. n²D. 2n答案:A解析:无向完全图中,每个顶点都与其他n - 1 个顶点相连,由于每条边被计算了两次,所以边数为n(n - 1) / 2 。
4. 深度优先搜索遍历图的时间复杂度为()A. O(n)B. O(n + e)C. O(n²)D. O(e log₂n)答案:B解析:深度优先搜索遍历图的时间复杂度为O(n + e),其中n 为顶点数,e 为边数。
5. 下列算法中,不能用于求解最短路径的是()A. Dijkstra 算法B. Floyd 算法C. 贪心算法D. 回溯算法答案:D解析:回溯算法主要用于解决组合优化等问题,不能用于求解最短路径。
Dijkstra 算法用于求解单源最短路径,Floyd 算法用于求解多源最短路径,贪心算法在某些情况下也可用于求解最短路径问题。
6. 二分查找在有序数组中的时间复杂度为()A. O(n)B. O(log₂n)C. O(n log₂n)D. O(n²)答案:B解析:二分查找每次将搜索范围缩小一半,时间复杂度为O(log₂n)。
7. 以下哪种排序算法在平均情况下性能最优()A. 快速排序B. 插入排序C. 冒泡排序D. 选择排序答案:A解析:快速排序在平均情况下的时间复杂度为O(n log₂n),性能最优。
ch8参考答案
算法作业第八章参考答案
8:23
KRUSKAL 算法找最小生成树
解:首先将图的边按照权值排好序。
每次贪婪选择最小边,检测是否产生回路,并将不形成
回路的边加入生成树的局部解。过程演示如下
1
6
3
4
5
27
37
1
9
3
2
2
4
6
6
1
6
3
4
5
27
37
1
9
3
2
2
4
6
6
第 1 页/共 5 页
千里之行,始于足下。
第 3 页/共 5 页
千里之行,始于足下。
算法作业第八章参考答案
8.31 用 Huffuman 算法构造编码树。 abcdef 7 5 3 2 12 9
构造过程(红色为叶节点,绿色由红色扩展而来):
5
2
3
5
7
d
c
b
a
10
5
5
9 12
f
e
2
3
7
9 12
第 4 页/共 5 页
千里之行,始于足下。
算法作业第八章参考答案
10
5
5
16
2
3
7
9 12
22
10
12
5
5
1
2
3
7
9
参考编码:a : 10
b : 001 c : 0001
e : 01
f : 11
d : 0000
第 5 页/共 5 页
算法作业第八章参考答案
1
6
3
算法导论参考答案
算法导论参考答案算法导论参考答案算法导论是计算机科学领域中一本经典的教材,被广泛应用于计算机科学和工程的教学和研究中。
它涵盖了算法设计和分析的基本概念,以及各种常见算法的实现和应用。
本文将为读者提供一些算法导论中常见问题的参考答案,以帮助读者更好地理解和掌握这门课程。
1. 什么是算法?算法是一系列解决问题的步骤和规则。
它描述了如何将输入转换为输出,并在有限的时间内完成。
算法应具备正确性、可读性、健壮性和高效性等特点。
2. 如何分析算法的效率?算法的效率可以通过时间复杂度和空间复杂度来衡量。
时间复杂度表示算法执行所需的时间量级,常用的时间复杂度有O(1)、O(n)、O(logn)、O(nlogn)和O(n^2)等。
空间复杂度表示算法执行所需的额外空间量级,通常以字节为单位。
3. 什么是渐进符号?渐进符号用于表示算法的时间复杂度或空间复杂度的增长趋势。
常见的渐进符号有大O符号、Ω符号和Θ符号。
大O符号表示算法的上界,Ω符号表示算法的下界,Θ符号表示算法的平均情况。
4. 什么是分治法?分治法是一种算法设计策略,将问题分解为若干个子问题,并对子问题进行独立求解,最后将子问题的解合并得到原问题的解。
典型的分治算法有归并排序和快速排序。
5. 什么是动态规划?动态规划是一种通过将问题分解为相互重叠的子问题来求解的方法。
它通常用于求解具有重叠子问题和最优子结构性质的问题。
典型的动态规划算法有背包问题和最短路径问题。
6. 什么是贪心算法?贪心算法是一种通过每一步选择局部最优解来求解整体最优解的方法。
贪心算法通常不能保证得到全局最优解,但在某些问题上能够得到近似最优解。
典型的贪心算法有霍夫曼编码和最小生成树算法。
7. 什么是图算法?图算法是一类用于解决图结构相关问题的算法。
图由节点和边组成,节点表示对象,边表示对象之间的关系。
图算法包括图的遍历、最短路径、最小生成树和网络流等问题的求解。
8. 什么是NP完全问题?NP完全问题是一类在多项式时间内无法求解的问题。
算法基础试题 答案
算法基础试题答案算法基础试题是计算机科学和信息技术领域中非常重要的考核内容,它涉及到了算法的设计与分析、数据结构等方面。
本文将回答算法基础试题,并提供相应的解答。
1. 什么是算法?算法是一系列解决问题的清晰指令或步骤,可用于执行特定任务或解决问题。
算法具有输入、输出和明确定义的计算过程。
它是计算机科学中非常重要的基础概念之一。
2. 算法的特性有哪些?算法具有以下基本特性:- 有穷性:算法必须在执行有限步骤后终止。
- 确定性:算法的每一步必须明确定义,不会产生二义性。
- 可行性:算法的每个步骤必须可以通过基本操作来实现。
- 输入:算法具有输入,以便为输入数据提供计算或处理。
- 输出:算法必须生成输出,作为解决方案或结果。
3. 算法的复杂性如何评估?算法的复杂性可以通过时间复杂度和空间复杂度进行评估。
- 时间复杂度表示算法执行所需的时间量。
- 空间复杂度表示算法在执行过程中所需的额外存储空间。
4. 常见的算法设计方法有哪些?常见的算法设计方法包括:- 贪心算法:每一步都选择当前最优解,以希望达到全局最优解。
- 动态规划:将问题分解为子问题,并利用子问题的解来构建原始问题的解。
- 分治法:将问题分解为多个子问题,然后将子问题的结果合并为原始问题的解。
- 回溯法:通过尝试不同的选择,直到找到满足条件的解。
5. 数据结构对算法的影响是什么?数据结构选择对算法的效率有重要影响。
不同的数据结构适用于不同类型的问题,并且可以用来优化算法的执行时间和空间需求。
例如,使用哈希表可以加速查找操作,而使用数组可以实现快速的顺序访问。
6. 算法的正确性如何验证?算法的正确性可以通过两种方法验证:- 通过数学证明:通过形式化的数学证明来验证算法的正确性。
- 通过测试和验证:通过对算法执行大量测试用例进行验证,以确保算法能够产生正确的结果。
测试用例应该覆盖各种情况,包括正常情况、边界情况和异常情况。
7. 如何选择适合的算法?选择适合的算法取决于问题的特性和要求。
(算法与数据结构)(08信息与计算科学1班,08信息与计算科学2班)考试试卷(B卷)
装订线合肥学院2009至2010学年第2学期算法与数据结构课程考试(B )卷数学与物理系08级信息与计算科学专业学号姓名一、单选题(共20分。
每小题2分。
)01、算法分析的主要任务是分析__ __。
A)算法是否具有较好的可读性B)算法中是否存在语法错误C)算法的功能是否符合设计要求D)算法的执行时间和问题规模之间的关系02、在一个带头结点的双向循环链表中,若要在指针p所指向的结点之后插入一个q指针所指向的结点,则需要对q->next赋值为__ __。
A)p->priorB)p->nextC)p->next->next D)p->prior->prior03、判定栈S(元素个数最多n个)满的条件是__ __。
A)S->top==0 B)S->top!=0C)S->top!=n-1 D)S->top==n-104、设矩阵A是一个对称矩阵(下标从1开始),为了节省存储,将其下三角部分按行序存放在一维数组B[1,n(n-1)/2]中,则下三角部分中任一元素ai,j(i≤j), 在一维数组B 中下标k的值是_ _。
A) i*(i-1)/2+j-1 B)i*(i-1)/2+jC) i*(i+1)/2+j-1 D)i*(i+1)/2+j05、如果二叉树中结点的前序序列是...a...b...,中序序列是...b...a...,则__ __。
A)结点a和结点b分别在某结点的左子树和右子树中B)结点b在结点a的右子树中C)结点b在结点a的左子树中D)结点a和结点b分别在某结点的两棵非空子树中06、有n个叶子的哈夫曼树的结点总数为_ _。
A)不确定 B)2n C)2n+1 D)2n-107、下图若从顶点a出发按深度优先搜索法进行遍历,则得到的顶点序列是__ __。
A)abecd B)acebd C)aebcd D)aedcb08、带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中。
操作系统南海08-09(1)试卷a
试卷A一、填空题(每空2分,共20分)1、当一个进程独占处理器顺序执行时,具有两个特性:封闭性和可再现性。
2、进程同步是指并发进程之间存在一种制约关系,一个进程的执行依赖于另一个进程的消息,当一个进程没有得到另一个进程的消息时必须___等待___,直到消息到达才___被唤醒___。
3、可变分区方式管理主存时,往往采用___动态__重定位方式来实现地址转换。
4、某作业9:00进入输入井,要求计算时间1小时。
作业调度采用响应比最高优先算法在10:00选中该作业,则该作业被选中时的响应比为____2__。
5、当一个进程能被选中占用处理器时,就从__就绪____态成为___运行___态。
6、操作系统能保证所有的进程_在有限时间内得到所需全部资源_,则称系统处于“安全状态”,不会产生_死锁_。
二、单项选择题(每题1分,共15分)1.按照操作系统提供的服务进行分类,______是基本的操作系统。
( A )A.批处理操作系统、分时操作系统、网络操作系统B.批处理操作系统、分时操作系统、实时操作系统C.批处理操作系统、分时操作系统、分布式操作系统D.分时操作系统、网络操作系统、分布式操作系统2.直接扩充计算机硬件功能的是(D)A.编译程序B.编辑程序C.数据库管理系统D.操作系统3.一个占有处理器运行的进程,在用完了分配给它的时间片后,它的状态应该是(C)A.等待态B.运行态C.就绪态D.由用户来确定4.实存的存储分配算法用来决定输入的程序和数据放到主存中的位置,采用“总是把程序装入主存中最大的空闲区域”的算法称为( b )A.最优适应算法B.最坏适应算法C.最先适应算法D.循环最先适应算法5.通过______表示磁盘上每一磁盘块的唯一地址。
( D )A.柱面号、扇区号B.磁头号、扇区号C.柱面号、磁头号D.柱面号、磁头号、扇区号6.用户请求写文件时,依次调用(D)A.打开文件、写文件、关闭文件B.打开文件、读文件、写文件、关闭文件C.建立文件、写文件、关闭文件D.建立文件、打开文件、写文件、关闭文件7.临界区是指并发进程中访问共享资源的(D )A.管理信息段B.信息存储段C.数据段D.程序段8.下列中断中,哪一个不属于强迫性中断 ( D )A.设备出错B.掉电C.时间片到时D.执行print语句9.为实现CPU与外部设备并行工作,必须引入的基础硬件是(A )A.缓冲区B.中断装置C.时钟D.相联存储器10.在下列性质中,哪一个不是分时系统的特征 (C )A.同时性B.交互性C.成批性D.独占性11.系统出现死锁的原因(C )A.计算机系统发生了重大故障B.有多个等待的进程存在C.若干进程因竞争资源而无休止地等待着其它进程释放占用的资源D.进程同时申请的资源数大大超过资源总数12.预防死锁的方法, 通常是破坏产生死锁的四个必要条件之一,但下列哪个条件不能被破坏? (A )A.互斥B.占有并等待C.不可抢夺D.循环等待12.下列关于系统安全状态的叙述中,正确的是(B )(A)系统处于不安全状态一定会发生死锁(B)系统处于不安全状态可能会发生死锁(C)系统处于安全状态时也可能会发生死锁(D)不安全状态是死锁状态的一个特例13. 分时系统中进程调度算法通常采用(B )(A)响应比高者优先(B)时间片轮转法(C)先来先服务(D)短作业优先14.设有12个同类资源可供四个进程共享,资源分配情况如表:进程已占资源数最大需求数P1 2 4P2 3 6P3 4 7P4 1 4目前剩余资源数为2,当进程P1,P2,P3,P4又相继提出申请要求,为使系统不致死锁,应满足下列哪一个进程的要求?(A )15.系统采用多道程序设计以提高CPU和外部设备的(A )(A)利用率(B)可靠性(C)稳定性(D)兼容性简答题(每题5分,共20分)1.简述解决死锁问题的三种方法。
08—09年期末考试算法设计与分析试卷B及答案
附表、⑴ 证明:令F(N)=O(f),则存在自然数N1、C1,使得对任意的自然数N 1N ≥,有: 考试课程: 班级: 姓名: 学号: ------------------------------------------------- 密 ---------------------------------- 封 ----------------------------- 线 ---------------------------------------------------------F(N));(1N f C ≤……………………………..(2分)同理可令G(N)=O(g), 则存在自然数N2、C2,使得对任意的自然数N 2N ≥,有:G(N));(2N g C ≤ ……………………………..(3分)令 C3=max{C1,C2},N3=max{N1,N2},则对所有的N 3N ≥,有:F(N));(3)(1N f C N f C ≤≤G(N));(3)(2N g C N g C ≤≤ ……………………………..(5分)故有:O(f)+O(g)=F(N)+G(N))())()((3)(3)(3g f O N g N f C N g C N f C +=+=+≤因此有:O(f)+O(g)=O(f+g) ……………………………..(7分)⑵ 解:① 因为:;01033)103(lim 222=+-+∞→n n n n n n 由渐近表达式的定义易知:103322+n n 是的渐近表达式。
……………………………..(3分)② 因为:;0/12121)/121(lim =+-+∞→n n n 由渐近表达式的定义易知:21是21+1/n 的渐近表达式。
……………………………..(6分)2、解:经分析结论为:(1));5(log log 2+=n n θ………………………….(5分)(2))(log 2n n O =;………………………….(10分)(3))(log 2n n Ω=;………………………….(15分)3、解:用分治法求解的算法代码如下:int partition(float A[],int p,int r){int i=p,j=r+1;float x=a[p];while (1) {while(a[++i]<x&&i<r);while(a[--j]>x);if(i>=j) break;a[i]];[j a ↔ ……………………………..(4分)};a[p]=a[j];a[j]=x;return j; ……………………………..(7分)void Quicksort( float a[], int p, int r ){if( p<r) {int q=partition(a,p,r);……………………………..(10分)Quicksort(a,p,q-1);Quicksort(a,q+1,r);}};Quicksort(a,0,n-1);……………………………..(13分)4、解:用动态规划算法求解的算法代码如下:int lcs_len(char *a,char *b,int c[][N]){int m=strlen(a),n=strlen(b),i,j;for(i=0;i<=m;i++) c[i][0]=0;for(j=1;j<=n;j++) c[0][j]=0;……………………………..(4分)for(i=1;i<=m;i++)for(j=1;j<=n;j++)if(a[i-1]= =b[j-1]) c[i][j]=c[i-1][j-1]+1;else if(c[i-1][j]>=c[i][j-1])c[i][j]=c[i-1][j];else c[i][j]=c[i][j-1];……………………………..(7分)return c[m][n];……………………………..(8分)};char *build_lcs(char s[],char *a,char *b){int k,i=strlen(a),j=strlen(b),c[N][N];k=lcs_len(a,b,c);s[k]=’\0’;while(k>0){if(c[i][j]= =c[i-1][j]) i--;……………………………..(11分)else if(c[i][j]= =c[i][j-1]) j--;else{s[--k]=a[i-1];i--,j--;}}return s;……………………………..(15分)}5、解:int greedy(vecter<int>x,int n){int sum=0,k=x.size();for(int j=0;j<k;j++)if(x[j]>n){cout<<”No solution”<<endl;return -1;……………………………..(6分)for(int i=0,s=0;i<k;i++){s+=x[i];if(s>n){ sum++;s=x[i];} ……………………………..(9分) }return sum; ……………………………..(12分)}6、解:此题用动态规划算法求解:i nt dist( ){int m=a.size( );int n=b.size( );vector<int>d(n+1,0);for(int i=1;i<=n;i++) d[i]=i; ……………………………..(5分)for(i=1;i<=m;i++){int y=i-1;for(int j=1;j<=n;j++){int x=y;y=d[j];int z=j>1?d[j-1]:i; ……………………………..(10分)int del=a[i-1]= =b[j-1]?0:1;d[j]=min(x+del,y+1,z+1); ……………………………..(13分) }}return d[n]; ……………………………..(16分)}7、试用回溯法解决下列整数变换问题:关于整数i 的变换f 和g 定义如下:⎣⎦2/)(;3)(i i g i i f ==。
算法设计与分析书后参考答案
参考答案第1章一、选择题1. C2. A3. C4. C A D B5. B6. B7. D 8. B 9. B 10. B 11. D 12. B二、填空题1. 输入;输出;确定性;可行性;有穷性2. 程序;有穷性3. 算法复杂度4. 时间复杂度;空间复杂度5. 正确性;简明性;高效性;最优性6. 精确算法;启发式算法7. 复杂性尽可能低的算法;其中复杂性最低者8. 最好性态;最坏性态;平均性态9. 基本运算10. 原地工作三、简答题1. 高级程序设计语言的主要好处是:(l)高级语言更接近算法语言,易学、易掌握,一般工程技术人员只需要几周时间的培训就可以胜任程序员的工作;(2)高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;(3)高级语言不依赖于机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好、重用率高;(4)把复杂琐碎的事务交给编译程序,所以自动化程度高,发用周期短,程序员可以集中集中时间和精力从事更重要的创造性劳动,提高程序质量。
2. 使用抽象数据类型带给算法设计的好处主要有:(1)算法顶层设计与底层实现分离,使得在进行顶层设计时不考虑它所用到的数据,运算表示和实现;反过来,在表示数据和实现底层运算时,只要定义清楚抽象数据类型而不必考虑在什么场合引用它。
这样做使算法设计的复杂性降低了,条理性增强了,既有助于迅速开发出程序原型,又使开发过程少出差错,程序可靠性高。
(2)算法设计与数据结构设计隔开,允许数据结构自由选择,从中比较,优化算法效率。
(3)数据模型和该模型上的运算统一在抽象数据类型中,反映它们之间内在的互相依赖和互相制约的关系,便于空间和时间耗费的折衷,灵活地满足用户要求。
(4)由于顶层设计和底层实现局部化,在设计中出现的差错也是局部的,因而容易查找也容易纠正,在设计中常常要做的增、删、改也都是局部的,因而也都容易进行。
算法设计与分析考试题及答案-算法设计与优化答案
1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。
2.算法的复杂性有_____________和___________之分,衡量一个算法好坏的标准是______________________。
3.某一问题可用动态规划算法求解的显著特征是____________________________________。
4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。
5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。
6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。
7.以深度优先方式系统搜索问题解的算法称为_____________。
8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。
9.动态规划算法的两个基本要素是___________和___________。
10.二分搜索算法是利用_______________实现的算法。
二、综合题(50分)1.写出设计动态规划算法的主要步骤。
2.流水作业调度问题的johnson算法的思想。
3.若n=4,在机器M1和M2上加工作业i所需的时间分别为a i和b i,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。
4.使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。
《算法分析与设计》期末试题及参考答案
《算法分析与设计》期末试题及参考答案一、简要回答下列问题:1.算法重要特性是什么?1. 确定性、可行性、输入、输出、有穷性2.2.算法分析的目的是什么?2. 分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。
3.3.算法的时间复杂性与问题的什么因素相关?3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。
4.算法的渐进时间复杂性的含义?4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。
时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。
5.最坏情况下的时间复杂性和平均时间复杂性有什么不同?5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。
最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max{ T(n,I) } , I∈Dn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n) =∑P(I)T(n,I) I∈Dn6.简述二分检索(折半查找)算法的基本过程。
6. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]<x,则A[i:(i+j)/2-1]找x,否则在A[ (i+j)/2+1:j] 找x。
上述过程被反复递归调用。
7.背包问题的目标函数和贪心算法最优化量度相同吗?7. 不相同。
目标函数:获得最大利润。
最优量度:最大利润/重量比。
8.采用回溯法求解的问题,其解如何表示?有什么规定?8. 问题的解可以表示为n元组:(x1,x2,……x n),x i∈S i, S i为有穷集合,x i∈S i, (x1,x2,……x n)具备完备性,即(x1,x2,……x n)是合理的,则(x1,x2,……x i)(i<n)一定合理。
电大计算机本科_算法设计与分析(期末考试复习题含答案)
1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4、在下列算法中有时找不到问题解的是( B )。
A、蒙特卡罗算法B、拉斯维加斯算法C、舍伍德算法D、数值概率算法5. 回溯法解旅行售货员问题时的解空间树是( A )。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法7、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短8、以下不可以使用分治法求解的是(D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题9. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法10、下列随机算法中运行时有时候成功有时候失败的是(C )A 数值概率算法B 舍伍德算法C 拉斯维加斯算法D 蒙特卡罗算法11.下面不是分支界限法搜索方式的是( D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法13.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法14.哈弗曼编码的贪心算法所需的计算时间为( B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)15.分支限界法解最大团问题时,活结点表的组织形式是( B )。
A、最小堆B、最大堆C、栈D、数组16.最长公共子序列算法利用的算法是( B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法17.实现棋盘覆盖算法利用的算法是( A )。
算法设计与分析智慧树知到课后章节答案2023年下天津大学
算法设计与分析智慧树知到课后章节答案2023年下天津大学天津大学第一章测试1.下列关于效率的说法正确的是()。
答案:提高程序效率的根本途径在于选择良好的设计方法,数据结构与算法;效率是一个性能要求,其目标应该在需求分析时给出;效率主要指处理机时间和存储器容量两个方面2.算法的时间复杂度取决于()。
答案:待处理数据的初态;问题的规模3.计算机算法指的是()。
答案:解决问题的有限运算序列4.归并排序法的时间复杂度和空间复杂度分别是()。
答案:O(nlog2n);O(n)5.将长度分别为m,n的两个单链表合并为一个单链表的时间复杂度为O(m+n)。
()答案:错6.用渐进表示法分析算法复杂度的增长趋势。
()答案:对7.算法分析的两个主要方面是时间复杂度和空间复杂度的分析。
()答案:对8.某算法所需时间由以下方程表示,求出该算法时间复杂度()。
答案:O(nlog2n)9.下列代码的时间复杂度是()。
答案:O(log2N)10.下列算法为在数组A[0,...,n-1]中找出最大值和最小值的元素,其平均比较次数为()。
答案:3n/2-3/2第二章测试1.可用Master方法求解的递归方程的形式为()。
答案:T(n)=aT(n/b)+f(n) , a≥1, b>1, 为整数, f(n)>0.2.答案:对3.假定,, 递归方程的解是. ( )答案:对4.假设数组A包含n个不同的元素,需要从数组A中找出n/2个元素,要求所找的n/2个元素的中点元素也是数组A的中点元素。
针对该问题的任何算法需要的时间复杂度的下限必为。
( )答案:错5.使用Master方法求解递归方程的解为().答案:6.考虑包含n个二维坐标点的集合S,其中n为偶数,且所有坐标点中的均不相同。
一条竖直的直线若能把S集合分成左右两部分坐标点个数相同的子集合,则称直线L为集合S的一条分界线。
若给定集合S,则可在时间内找到这条分界线L。
( )答案:对7.答案:8.从n个数中找出前k个最小的元素并对所选择的前k个最小的元素进行排序。
数据结构(本科)武汉理工大学 在线作业
数据结构(本科)武汉理工大学在线作业一、判断(共计40分,每题2.5分)1、快速排序是排序算法中平均性能最好的一种排序。
()A. 正确B. 错误答案:【A】2、调用一次深度优先遍历可以访问到图中的所有顶点。
()A. 正确B. 错误答案:【B】3、对连通图进行深度优先遍历可以访问到该图中的所有顶点。
()A. 正确B. 错误答案:【A】4、线性表中的所有元素都有一个前驱元素和后继元素。
()A. 正确B. 错误答案:【B】5、设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。
()A. 正确B. 错误答案:【B】6、先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列。
()A. 正确B. 错误答案:【A】7、不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。
()A. 正确B. 错误答案:【A】8、满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
()B. 错误答案:【A】9、子串“ABC”在主串“AABCABCD”中的位置为2。
( )A. 正确B. 错误答案:【A】10、非空的双向循环链表中任何结点的前驱指针均不为空。
()A. 正确B. 错误答案:【A】11、分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
()A. 正确B. 错误答案:【A】12、线性表的顺序存储结构比链式存储结构更好。
()A. 正确B. 错误答案:【B】13、向二叉排序树中插入一个结点需要比较的次数可能大于该二叉树的高度。
()A. 正确B. 错误答案:【B】14、层次遍历初始堆可以得到一个有序的序列。
()A. 正确B. 错误答案:【B】15、冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。
()A. 正确B. 错误答案:【A】16、设初始记录关键字基本有序,则快速排序算法的时间复杂度为O(nlog2n)。
()B. 错误答案:【B】二、单选(共计60分,每题2.5分)17、在二叉排序树中插入一个关键字值的平均时间复杂度为()。
算法设计参考答案
算法设计参考答案算法设计参考答案在计算机科学领域,算法设计是一门重要的学科,它关注如何设计高效、可靠的算法来解决各种问题。
在实际应用中,算法设计的质量直接影响着计算机系统的性能和用户体验。
本文将探讨一些常见的算法设计问题,并给出参考答案。
一、排序算法排序是算法设计中最基本的问题之一。
在现实生活中,我们经常需要对一组数据进行排序,以便更好地组织和利用这些数据。
以下是两种常见的排序算法及其参考答案:1. 冒泡排序(Bubble Sort)冒泡排序是一种简单但效率较低的排序算法。
它的基本思想是通过相邻元素的比较和交换,将较大的元素逐渐“冒泡”到数组的末尾。
具体实现如下:```pythondef bubble_sort(arr):n = len(arr)for i in range(n - 1):for j in range(n - i - 1):if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j]return arr```2. 快速排序(Quick Sort)快速排序是一种高效的排序算法,它利用了分治的思想。
具体而言,它通过选择一个基准元素,将数组分割为两部分,使得左边的元素都小于基准,右边的元素都大于基准,然后递归地对左右两部分进行排序。
具体实现如下:```pythondef quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quick_sort(left) + middle + quick_sort(right)```二、图算法图是一种常见的数据结构,用于表示各种实际问题的关系和连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
s(rs)
1/ \0
r:1/Βιβλιοθήκη \0s s: 1/ \0 1 0
0
s 1/ \0 1 0
0
s 1/ \0 1 0
0
s s 1/ \0 1/ \0 1 0 1 0
(pqs)(qr)(pr)(rs)
p: (pqs)(qr)( pr)(rs) 1/ \0 (qs)(qr)(rs) 1/ \0
(qr)r(rs) q: 1/ rr(rs) \0
r(rs)
1/ \0
r(rs)
1/ \0
一、 判断题(20 分)
请在正确的陈述前面括号中打√,在错误的陈述前面括号中打×。 1. ( × )如果一个问题不是 NP 问题,那么它有可能是 P 问题。 2. ( × )回溯法用深度优先或广度优先法搜索状态空间树。 3. ( × ) 2 n1 O(2 n ) 且 2 2 n O(2 n ) 4. ( × )贪心算法通过增加空间复杂性来减少时间复杂性。 5. ( × )快速排序算法的平均时间复杂度是 O(nlogn),使用随机化快速排序 算法可以将平均时间复杂度降得更低。 6. ( √ ) 基于比较的寻找数组 A[1...n]中最大值元素问题的下界是 ( n / 3) 。 7. ( √ )直观地讲,P 类问题是易解的问题;而 NP 问题是易被验证的问题。 8. ( × )下列问题是一个判定问题:给定一个合取范式,对其中的所有逻辑 变量求一组真值赋值,使得给定的合取范式在该组真值赋值下为真。 9. ( √ )max(f(n),g(n))= (f(n)+g(n)) 10. ( √ )若 f (n) O( g (n)) ,则 g (n) ( f (n)) 二、 简答题(30 分) : 1.简述拉斯维加斯(Las Vegas)算法和蒙特卡洛(Monte Carlo)算法的主要 区别 前者不一定总能给出解,但给出的解一定是正确的; 后者总能给出解,但是给出的解可能是错误的。 2.按照增长率上升的顺序排列以下函数,即,若在你的排序结果中,函数 f(n) 跟在 g(n)的后面,则说明应该满足 g(n)是 O(f(n)) :
f1 (n) n 3 / 4
f 2 ( n) 2 n f 3 (n) log n
f 4 (n) n! f 5 (n) 2 n
2
f 6 (n) n log n
f 3 (n) , f1 (n) , f 6 (n) , f 2 (n) , f 4 (n) , f 5 (n)
3.推导以下递推式的解: T(n)=2 当 n = 1时
最长公共子序列:xyzzy 或 zyzzy
四、 (15 分)设计一针对以下问题的贪心算法,简述算法的基本思想,写出 伪代码,并分析其时间复杂性(不一定要找到最优解) : 有 n 项任务要完成, 恰好有 n 个人可以分别去完成其中一项,但由于任务性 质和个人专长不同, 因此个人去完成不同的任务的效率 (或所费时间) 就有差别. 设给定效率矩阵 C,矩阵的元素 cij (i, j 1,2,..., n) 表示第 i 人去完成第 j 项任务所 需的时间,则如何分派这 n 个人去完成这 n 项任务能使花费的总时间最少。 基本思想:从 1 到 n,每个人依次去选择当前未被安排的且其执行时间最少 的任务。 伪代码: 复杂性: 五、 (15 分)用回溯法求解以下 SAT 问题,请画出搜索树,标明搜索树的分 支策略和树中各节点代表的状态(化简的 CNF 形式) 。
三、 (20 分)写出用动态规划方法求两个序列的最长公共子序列算法的递推 公式和时间复杂性,并用该算法手工计算以下 A 和 B 的最长公共子序列(写 出手工计算的全过程):
c[i,j]= c[i-1,j-1]+1 if xi=yj = max{c[i-1,j], c[i,j-1]} if xiyj
表格
A=xzyzzyx,B=zxyyzxzy
0 0 0 0 0 1 1 0 1 1 1 0 1 1 2 0 1 1 2 0 1 2 2 0 1 2 2 0 1 2 2 0 1 2 3
0 0 0 0
1 1 1 1
1 1 1 2
2 2 2 2
2 2 3 3
3 3 3 3
3 3 3 4
3 4 4 4
3 4 5 5
T(n)=2T(n/3)+2n 当 n ≥2时 T(n)=2T(n/3)+2n =2[2T(n/32)+2(n/3)]+2n =4T(n/32)+4(n/3)+2n =4[2T(n/33)+2(n/32)]+ 4(n/3)+2n =8T(n/33)+8(n/32)+ 4(n/3)+2n =… 设n=3k =2k T(n/3k )+ 2k (n/3k-1)+ 2k-1 (n/3k-2)+…+ 4(n/3)+2n =2k 2+2n[(2/3)k-1 +(2/3)k-2 +…+2/3+1] =2k 2+6n[1-(2/3)k] =2k 2+6n-6.2k =6n-4.2k =6n-4.2 = 6n 4 2log3 n
北京航空航天大学
2008-2009 学年 第二学期期末
《算法与数据结构(2)》
考 试 卷(答案)
班 级______________学 号 _________
姓 名______________成 绩 _________
2009 年 6 月 8 日
班号
学号
姓名
成绩
《算法与数据结构(2) 》期末考试卷
注意事项:1、关闭手机、将考试用文具以外的物品放于讲台上 2、严格遵守学校的考场纪律,违纪者请出考场 题目:
4.请给出基于比较的对数组 A[1…n]进行排序问题的最紧的下界,并写出两个 平均时间复杂度为该下界的排序算法的名称。 nlogn;快速排序、随机化的快速排序。 5.设有 16 个外形一样但重量各不相同的小球,现有一架没有砝码的天平,请问 最少需要称几次才能找出重量最小和重量最大的球?为什么? 22 次; 同时寻找最大最小值问题的比较次数的下届是 3n/2-2. 方法也可得 1-2 分: 二分称 8 次,把所有重量小的分成一组,重量大的分成一组,再对两组分别 二分称重求出重量最小的与重量最大的。