算法复习试题

合集下载

算法设计基础考试题及答案

算法设计基础考试题及答案

算法设计基础考试题及答案一、单项选择题(每题2分,共20分)1. 在算法设计中,下列哪个选项不是算法的特性?A. 有穷性B. 确定性C. 可行性D. 随机性答案:D2. 递归算法的基本思想是?A. 重复执行相同的操作B. 将问题分解成更小的子问题C. 顺序执行所有操作D. 随机选择操作答案:B3. 在排序算法中,时间复杂度为O(nlogn)的算法是?A. 冒泡排序B. 快速排序C. 选择排序D. 插入排序答案:B4. 哈希表解决冲突的方法不包括以下哪一项?A. 开放定址法B. 链地址法C. 再哈希法D. 顺序存储法答案:D5. 动态规划算法的核心思想是什么?A. 贪心选择B. 分治策略C. 回溯搜索D. 存储子问题的解答案:D6. 在图的遍历算法中,深度优先搜索(DFS)使用的栈是什么类型的?A. 后进先出栈B. 先进后出栈C. 后进后出栈D. 先进先出栈答案:B7. 以下哪个算法不是贪心算法?A. 霍夫曼编码B. 迪杰斯特拉算法C. 克鲁斯卡尔算法D. 快速排序答案:D8. 在算法分析中,大O表示法描述的是?A. 算法的运行时间B. 算法的空间复杂度C. 算法的最坏情况时间复杂度D. 算法的平均情况时间复杂度答案:C9. 以下哪个数据结构最适合实现优先队列?A. 链表B. 数组C. 二叉搜索树D. 哈希表答案:C10. 算法的时间复杂度为O(1)意味着什么?A. 算法运行时间与输入大小无关B. 算法运行时间与输入大小成正比C. 算法运行时间与输入大小成对数关系D. 算法运行时间与输入大小成平方关系答案:A二、填空题(每题2分,共20分)1. 算法的时间复杂度为O(n^2)的排序算法是________。

答案:冒泡排序2. 在图的遍历中,广度优先搜索(BFS)使用的队列是________类型的。

答案:先进先出3. 动态规划与分治法的主要区别在于________。

答案:存储子问题的解4. 递归算法的终止条件是________。

算法复习题

算法复习题

算法复习试题一、名词解释:1、算法:就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。

2、贪心算法:能够得到某种量度意义下的最优解的分级处理方法称为贪心算法。

3、分治法:分治法的求解思想就是把整个问题分成若干个小问题后分的治之4、递归过程:一个递归过程的执行类似于多个子程序的嵌套调用,递归过程是自己调用自己本身代码。

递归算法的特点:思路清晰,算法的描述简洁且易理解。

5、集合:在研究某一类对象时,可把这类对象的整体称为集合。

6、生成树:设G=(V,E)是一个无向连通图。

如果G的生成子图T=(V,E')是一棵树,则称T是G的一棵生成树。

7、算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

确定性:算法中每一条指令必须有确切的含义。

不存在二义性。

只有一个入口和一个出口可行性:就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。

输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。

输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。

8、迭代法:称辗转法,是一种不断用变量的旧值递推出新值的解决问题的方法。

9、贪婪法: 是一种不追求最优解,只希望得到较为满意解的方法。

贪婪法不要回溯10、动态规划:是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。

11、分支限界法:是一种用于求解组合优化问题的排除非解的搜索算法。

12、树:树是一个或多个结点的有限集合。

12、二元树:它是结点的有限集合,它或者为空,或者由一个根和两棵树(左子树和右子树)的不相交的二元树所组成。

13、二分检索树:T是一棵二元树,它或者为空,或者其每个结点含有一个可比较大小的数据元素。

14、图:图是数据结构,一个图G是由称之为结点V和边E的两个集合组成的15、最优解:使目标函数取极值(极大值或极小值)的可行解。

算法基础期末考试题及答案

算法基础期末考试题及答案

算法基础期末考试题及答案一、选择题(每题2分,共20分)1. 算法的时间复杂度是指:A. 算法执行时间B. 算法执行的指令条数C. 算法执行所需的内存大小D. 算法执行时所需的数据量答案:B2. 在排序算法中,冒泡排序的平均时间复杂度是:A. O(n)B. O(n log n)C. O(n^2)D. O(1)答案:C3. 递归算法的基本原理是:A. 循环B. 迭代C. 分治D. 重复答案:C4. 哈希表的冲突解决方法不包括:A. 链地址法B. 开放寻址法C. 再散列法D. 排序答案:D5. 动态规划与分治算法的区别在于:A. 递归B. 贪心选择C. 重叠子问题D. 优化子结构答案:C6. 二叉树的深度优先搜索遍历方法包括:A. 前序遍历B. 中序遍历C. 后序遍历D. 所有选项答案:D7. 快速排序算法的最好时间复杂度是:A. O(n)B. O(n log n)C. O(n^2)D. O(log n)答案:B8. 图的广度优先搜索(BFS)使用的是:A. 栈B. 队列C. 链表D. 堆答案:B9. Dijkstra算法是用于解决:A. 最小生成树问题B. 最短路径问题C. 图的连通性问题D. 图的遍历问题答案:B10. 拓扑排序是针对哪种类型的图:A. 有向无环图B. 无向图C. 有向图D. 完全图答案:A二、简答题(每题5分,共30分)1. 请简述什么是贪心算法,并给出一个应用实例。

答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。

例如,在硬币找零问题中,总是优先使用最大面额的硬币进行找零。

2. 解释什么是二分查找算法,并说明其时间复杂度。

答案:二分查找算法是一种在有序数组中查找特定元素的搜索算法。

其基本思想是将数组分成两半,比较中间元素与目标值,如果目标值等于中间元素,则查找成功;如果目标值小于中间元素,则在左侧子数组中继续查找;如果目标值大于中间元素,则在右侧子数组中继续查找。

算法期末考试题及答案

算法期末考试题及答案

算法期末考试题及答案一、选择题(每题2分,共20分)1. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C2. 在二叉树的遍历算法中,中序遍历的顺序是:A. 先序B. 后序C. 中序D. 层序答案:C3. 动态规划与分治法算法的主要区别在于:A. 问题分解的方式B. 问题解决的顺序C. 存储中间结果的方式D. 问题规模的大小答案:C4. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 链地址法C. 线性探测法D. 排序答案:D5. 以下哪个是图的遍历算法?A. 归并排序B. 深度优先搜索C. 快速排序D. 堆排序答案:B6. 贪心算法的特点是:A. 每一步都选择最优解B. 每一步都选择局部最优解C. 每一步都选择最差解D. 每一步都随机选择解答案:B7. 在算法分析中,时间复杂度O(1)表示:A. 常数时间B. 线性时间C. 对数时间D. 多项式时间答案:A8. 以下哪个是排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C9. 递归算法的基本原理是:A. 重复执行B. 分而治之C. 循环调用D. 迭代求解答案:B10. 以下哪个是算法的时间复杂度为O(log n)的典型例子?A. 二分查找B. 线性查找C. 冒泡排序D. 快速排序答案:A二、简答题(每题10分,共20分)1. 简述快速排序算法的基本思想及其时间复杂度。

答案:快速排序是一种分治法的排序算法。

其基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两部分,一部分包含所有小于基准的元素,另一部分包含所有大于基准的元素。

这个过程称为分区(partitioning)。

之后,递归地对这两部分进行快速排序。

快速排序的平均时间复杂度为O(n log n),但在最坏情况下(例如数组已经排序或所有元素相等)时间复杂度为O(n^2)。

2. 解释什么是动态规划,并给出一个动态规划问题的例子。

算法测试题及答案

算法测试题及答案

算法测试题及答案一、选择题1. 以下哪个选项不是排序算法?A. 冒泡排序B. 选择排序C. 快速排序D. 深度优先搜索答案:D2. 在二叉树中,深度为5的节点最多有多少个?A. 16B. 32C. 64D. 31答案:D二、填空题1. 递归算法的基本思想是 _ ,即把问题分解成相同但规模更小的问题。

答案:分而治之2. 动态规划与分治法的不同之处在于动态规划会 _ ,而分治法则不会。

答案:存储子问题的解三、简答题1. 请简述什么是贪心算法,并给出一个例子。

答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法策略。

例如,活动选择问题,给定一系列活动,每个活动都有一个开始时间和结束时间,贪心算法会按照结束时间的早晚来选择活动,从而最大化参与活动的数量。

2. 描述快速排序算法的基本思想。

答案:快速排序算法是一种分治策略,基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两个子数组,一个包含所有小于基准的元素,另一个包含所有大于基准的元素。

这个过程称为分区(partitioning)。

之后,递归地将分区过程应用到两个子数组上,直到每个子数组只有一个元素或为空。

四、计算题1. 给定一个数组 [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5],请使用快速排序算法对其进行排序,并给出排序后的数组。

答案:使用快速排序算法对给定数组进行排序后,得到的数组为 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]。

2. 假设有一个二叉搜索树,其根节点的值为10,现在要删除值为5的节点,请描述删除过程。

答案:删除二叉搜索树中的节点分为三种情况:- 情况1:要删除的节点没有子节点,直接删除该节点。

- 情况2:要删除的节点只有一个子节点,用其子节点替换该节点。

- 情况3:要删除的节点有两个子节点,找到该节点的直接前驱或直接后继,用其值替换要删除的节点,然后删除直接前驱或直接后继。

江苏大学算法试题及答案

江苏大学算法试题及答案

江苏大学算法试题及答案一、选择题(每题2分,共20分)1. 以下哪个是算法的基本特征?A. 有穷性B. 可行性C. 确定性D. 所有选项都是答案:D2. 算法的时间复杂度是指:A. 算法执行所需的实际时间B. 算法执行所需的指令条数C. 算法执行时间随输入规模变化的增长率D. 算法执行所需的内存空间答案:C3. 在排序算法中,以下哪个算法是稳定的?A. 快速排序B. 归并排序C. 堆排序D. 选择排序答案:B4. 递归算法的基本思想是:A. 将问题分解为更小的问题B. 将问题分解为相同的问题C. 将问题分解为更复杂的问题D. 将问题分解为更简单的问题答案:B5. 动态规划算法主要用于解决:A. 线性问题B. 组合问题C. 排序问题D. 搜索问题答案:B6. 在图的遍历算法中,深度优先搜索(DFS)使用的是:A. 队列B. 栈C. 链表D. 优先队列答案:B7. 哈希表的冲突解决方法不包括:A. 链地址法B. 开放寻址法C. 再散列法D. 排序法答案:D8. 以下哪个排序算法的时间复杂度为O(n)?A. 冒泡排序B. 选择排序C. 插入排序D. 计数排序答案:D9. 贪心算法适用于:A. 所有问题B. 线性问题C. 组合问题D. 优化问题答案:D10. 以下哪个是二分查找的前提条件?A. 数据必须是有序的B. 数据必须是无序的C. 数据可以是有序或无序的D. 数据必须是唯一的答案:A二、简答题(每题10分,共20分)1. 请简述递归算法的基本原理及其应用场景。

答案:递归算法的基本原理是将问题分解为更小的、相似的子问题,直到问题变得足够小以至于可以直接解决。

递归算法通常用于解决具有自相似性的问题,如树的遍历、图的搜索、分治算法等。

2. 请解释动态规划与贪心算法的区别。

答案:动态规划和贪心算法都是解决优化问题的方法。

动态规划通过将问题分解为重叠子问题,并存储这些子问题的解来避免重复计算,适用于具有重叠子问题和最优子结构的问题。

计算机算法基础试题及答案

计算机算法基础试题及答案

计算机算法基础试题及答案一、选择题1. 在计算机中,算法的特点不包括:A. 有穷性B. 确定性C. 可行性D. 可终止性答案:B2. 下列哪个不是算法的评价指标?A. 空间复杂度B. 时间复杂度C. 可读性D. 精确性答案:C3. 以下哪种排序算法的最差时间复杂度是O(n^2)?A. 快速排序B. 堆排序C. 归并排序D. 冒泡排序答案:D4. 广度优先搜索算法(BFS)的时间复杂度是:A. O(n)B. O(nlogn)C. O(n^2)D. O(n^3)答案:A5. 是否正确:在二分查找算法中,要求待查找的序列必须是有序的。

A. 正确B. 错误答案:A二、填空题1. 下列不属于常见的基本排序算法的是_______排序。

答案:希尔排序2. 在随机生成的n个数中使用二分查找,最坏情况下的时间复杂度为_______。

答案:O(logn)3. 在图的遍历中,栈或队列常用于辅助实现_______搜索算法。

答案:深度优先和广度优先4. 当n足够大时,时间复杂度为O(nlogn)的排序算法一般包括_______和_______。

答案:归并排序和快速排序5. 在递归算法中,必须包含递归结束的_______条件。

答案:基本三、简答题1. 请解释什么是时间复杂度和空间复杂度,并分别举例说明。

答:时间复杂度是对算法执行时间的衡量,表示该算法所需时间资源的多少。

常见的时间复杂度有O(1)、O(logn)、O(n)、O(nlogn)、O(n^2)等,其中O(1)表示常数时间,O(n)表示线性时间,O(n^2)表示平方时间。

空间复杂度是对算法执行所需空间资源的衡量,表示该算法所需的额外空间大小。

常见的空间复杂度有O(1)、O(n)等,其中O(1)表示常数空间,O(n)表示线性空间。

举例说明:以排序算法为例,冒泡排序的时间复杂度是O(n^2),空间复杂度是O(1);归并排序的时间复杂度是O(nlogn),空间复杂度是O(n)。

考研算法试题及答案

考研算法试题及答案

考研算法试题及答案1. 问题描述:给定一个整数数组,请编写一个函数来找出数组中第二大的数。

答案:```pythondef find_second_max(nums):max_num = second_max = float('-inf')for num in nums:if num > max_num:second_max = max_nummax_num = numelif num > second_max and num != max_num:second_max = numreturn second_max```2. 问题描述:请实现一个函数,用于计算给定字符串中每个字符出现的次数。

答案:```pythondef char_count(s):count_dict = {}for char in s:if char in count_dict:count_dict[char] += 1else:count_dict[char] = 1return count_dict```3. 问题描述:编写一个算法,找出一个链表的中间节点。

答案:```pythonclass ListNode:def __init__(self, value=0, next=None):self.value = valueself.next = nextdef find_middle_node(head):slow = fast = headwhile fast and fast.next:slow = slow.nextfast = fast.next.nextreturn slow```4. 问题描述:给定一个整数数组,请找出数组中缺失的最小正整数。

答案:```pythondef find_missing_positive(nums):for i in range(len(nums)):while 1 <= nums[i] <= len(nums) and nums[i] !=nums[nums[i] - 1]:nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]for i in range(len(nums)):if nums[i] != i + 1:return i + 1return len(nums) + 1```5. 问题描述:实现一个算法,用于判断一个整数是否是回文数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法复习试题(仅供参考)2009一、填空题(每空1分,共15分)1、一个正确的算法应当具有五个特性:(有穷性)、(确定性)、( 能行性 )、 输入和输出。

2、算法的时间复杂性是算法运行所需要的( 计算机资源 )的量,这个量只依赖于 (求解问题的规模 )、(具体的输入数据)和( 算法本身的设计 )。

3、函数的渐进表达式为( T(N) ),函数错误!未找到引用源。

的渐进表达式为( 3n 错误!未找到引用源。

)。

4、快速排序和归并排序策略上是相同的,都是用的( 递归与分治 ) 算法。

5、对于问题Q ,若满足( Q 是NP 困难的 )、( Q ∈NP )则称Q 为NP 完全的。

6、要求出一个问题所有的可行解,一般要用( 回溯 )算法。

7、通常能用动态规划法求解的问题应具备(最优子结构)和(或者是重叠字问题)相似 )的性质。

二、选择题(每小题2分,共10分)(D ) 1、 概率算法是一种非确定性地选择下一计算步骤的方法,( )算法主要目的是消除算法所需计算时间对输入实例的依赖。

A .数值概率算法 B .蒙特卡罗算法 C .拉斯维加斯算法 D .舍伍得算法 ( B ) 2、 ASCII 码压缩方法经过两级压缩之后可以减少( )的存储空间。

A .62.5% B .56.25% C .50% D .65% ( A ) 3、 P 类问题与NP 类问题的关系是( ) A .包含于 B .包含 C .属于 D .等于( C ) 4、以下关于判定问题难易处理的叙述中正确的是( )。

A .可以由多项式时间算法求解的问题是难处理的 B .需要超过多项式时间算法求解的问题是易处理的 C .可以由多项式时间算法求解的问题是易处理的D .需要超过多项式时间算法求解的问题是不能处理的(C ) 5、对于含有n 个元素的排列树问题,最坏情况下计算时间复杂性为( )。

A .2n+1-1 B .∑=ni i n 1!/! C .n!D .2n三、计算题(每小题5分,共20分)(注意:要求写出计算过程)1、设某算法的时间复杂度为O(n 3)。

在某台计算机上实现并完成该算法的时间为t 秒。

现有另外一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t 秒内能解输入规模多大的问题?解:设在本台计算机上的速度为V ,设在另一台计算机上的输入规模为X 由 计算时间都为t 秒有 n 3/.V=X 3/64V 可以求得X=4n2、按照渐近阶从低到高的顺序排列下列表达式:4n 2,logn ,3n ,n!,n 2/3 解:由低到高为: n 2/3 log n 4n 2 3n n!3、求解递归方程⎩⎨⎧+==2)3/(2)(1)1(nn T n T T 解:D(n)=n 2 且a=2 D(3)=32=9 a<D(b) 所以T(n)= ○(n 2) 4、设MC(x)是解某个判定问题的蒙特卡罗算法,且是一个p 正确的偏真算法。

现有如下算法MC2(x),试分析该算法的正确率。

bool MC2(x){if(MC(x)) return true; else return MC(x); }解:蒙特卡罗算法的特点是只要有一次调用为真,结果就为真,所以该算法的正确率为:1-(1-p )N N 为调用的次数四、问答及求解题(每小题10分,共40分)1、 什么是贪心选择性质?(2分)贪心算法与动态规划算法有什么共同点?(4分)又有什么区别?(4分)答:所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优解的选择,即贪心选择来达到。

共同点:都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。

区别:① 动态规划每步所作出的选择依赖于相关子问题的解,因而只有在解出相关子问题之后才能做出选择,而在贪心算法中,仅在当前状态下做出最好选择,所做的贪心选择可以依赖于以往所做过的选择,但决不依赖于将来所做的选择,也不依懒于子问题的解。

②动态规划以自底向上的方式解各子问题,而贪心算法则以自顶向下的方式进行,以迭代的方式做出相继的选择,而且每一步之后将所求问题简化为规模更小的子问题。

2、设有n=2k个运动员要进行循环赛,现设计一个满足以下要求的比赛日程表:①每个选手必须与其他n-1名选手比赛各一次;②每个选手一天至多只能赛一次;③循环赛要在最短时间内完成。

(1)如果n=2k,循环赛最少需要进行(n-1 )天;(2分)如果n≠2k,循环赛最少需要进行(n )天。

(2分)(2)当n=23=8时,请画出循环赛日程表:(6分)3、在字符串匹配中,模式串为“acacdacb”,若采用KMP算法,①求NEXT值;(8分)②若某趟不匹配的情形如下所示,则指针i,j如何移动?(2分)i正文:…b c a c a c b a b a a b a a …模式: a c a c d a c bj解:①②指针i不动,指针j退回到NEXT[ j]的位置,这里退回到3的位置,即模式向右移动3个位置4、有字符串acbcbacbcacbc,若采用LZW算法压缩,得到的压缩码是什么?(2分)要求写出字典。

(8分)解:压缩码为:{1,3,2,5,4,6,8}字典如下::五、算法设计题(15分)在8×8的国际象棋棋盘上,只摆5个皇后,每个皇后能控制它所在的行、列和通过它所在的正方形的两条对角线,要使这5个皇后能够控制棋盘上的每一个格子(控制的格子可以重复),但皇后之间不能互相攻击。

下面是一种可能的摆法。

请设计一个算法,求出所有可能的摆放。

请用自然语言描解法一:满足题目要求的八皇后问题算法如下:(用的是书上的Las Vegas算法)自然与描述如下:对n后问题,Las Vegas算法是随机地产生一组王后放置的位置。

若成功了,便找到了一个解;若失败了,就整个重来,再随机产生另外一组王后的位置。

这样作,直至找到解伪代码如下:int queensLV(int rec[]){int k,i=1,found=1; //第i个皇后放在第k列while(i<=N && found){found=0;for(k=1;k<=N && !found; k++){ //准备在当前这一行放置皇后rec[i]=k;if(place(rec,i)) //判断该位置能否放置皇后if(rand()%2==0) found=1;//即便能放,也还要进行随机处理,只有50%的机会}if (found) i++; //放下一行}return found; //如果found==1,表示找到一种方案}解法二:回溯法(最好用这种方法)自然语言描述:⏹在棋盘的第一行的任意位置安放第一只皇后。

⏹紧接着,我们就来放第二行,第二行的安放就要受一些限制了,因为与第一行的皇后在同一列或同一对角线的位置上是不能安放皇后的,接下来是第三行,……,⏹或许我们会遇到这种情况:在摆到某一行的时候,无论皇后摆放在什么位置,她都会被其它行的皇后吃掉,这时就必须要回溯,将前面的皇后重新摆放,伪代码如下:(注释可以不写)数据结构说明:⏹数组rec[n]表示棋盘。

若rec[i] = j,1≤i, j≤n,表示棋盘的第i行第j列上有皇后。

⏹数组C[j] = 1表示第j列上无皇后,1≤j≤n。

⏹数组D[k] = 1表示第k条下行(↘)对角线上无皇后。

数组U[k] = 1表示第k条上行(↗)对角线上无皇后。

⏹Record(s, j) { k = s – j + n;rec[s] = j; C[j] = 0; D[s + j – 1] = 0; U[k] = 0; }⏹Move-Off(s, j) {k = s – j + n;rec[s] = 0; C[j] = 1; D[s + j – 1] = 1; U[k] = 1; }⏹Safe(s, j) {k = s – j + n;if (C[j] && U[k] && D[s + j – 1]) return trueelse return false; }一、填空题(每空1分,共15分)1、算法是由若干条指令组成的( )序列,且满足( )、( )、输入和输出这四条性质。

2、一个算法的时空性能是指该算法的( )复杂性和( )复杂性,前者是算法包含的计算量,后者是算法需要的存储量。

3、函数3n 3+10n 的渐进表达式为(),函数logn 3的渐进表达式为()。

4、贪心法得到的解()(一定/不一定)是最优解,用回溯法得到的解( )(一定/不一定)是最优解。

5、通常能用动态规划法求解的问题应具备( )和( )的性质。

6、快速排序和归并排序策略上是相同的,都是用的( ) 算法。

7、计算机产生的随机数都是有周期的,所以被称为( )随机数。

8、计算模型RAM 、RASP 以及TM 在计算能力上是( )的,在计算速度上是( )的。

二、判断题(每小题2分,共10分)( ) 1、 用贪心法求0-1背包可以获得最优解。

( ) 2、 n 个矩阵连乘积的计算顺序问题同构于凸(n+1)边形的三角剖分问题。

( ) 3、 分支限界法一般是以深度优先的方式搜索解空间树。

( ) 4、 回溯法是最常用的解题方法,有“通用的解题法”之称。

( )5、 可以由多项式时间算法求解的问题是难处理的。

三、计算题(共20分)(注意:要求写出计算过程)1、 对于下面的各组函数()()f ng n 和 ,确定()(())()=(())f n Og n f n g n =Ω或,()=(())f n g n Θ或并简述理由。

(每小题5分,共10分)(1)3()log ,()4log 10f n n g n n ==+ (2)()3,()5n n f n g n ==2、假设某算法在输入规模为n 时的计算时间为()32nT n =⨯。

在某台计算机上实现并完成该算法的时间为t 秒。

现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法3、分析下列程序段所代表的算法的时间复杂性:(5分)四、问答题(每题5分,共10分)1、什么是概率算法?试说说舍伍德、拉斯维加斯、蒙特卡罗算法各自的特点。

2、什么是NP 问题?什么是NP 完全问题?二者有何关系?五、求解题(每题10分,共30分)(注意:要求给出求解过程) 1、设多级图G =(V,E),V ={V1,V2,V3,V4,V5}, V1={1},V2={2,3,4},V3={5,6},V4={7,8,9}, V5={10}。

其耗费如右表所示。

请用动态规划法 求从顶点1到顶点10的最小耗费路径。

2、采用快速排序对序列E,X,A,M,P,L,F 按照字母顺序排序,请写出每趟排序后的结果(10分)3、有无向图如下所示,请用Prim 算法求出它的最小生成树,要求写出求解过程。

相关文档
最新文档