算法分析复习题目及答案1110
- 格式:doc
- 大小:28.81 KB
- 文档页数:20
算法考试题目及答案解析一、单项选择题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解析:数组、链表、栈、队列和树都是算法设计中常用的数据结构,它们各自有不同的特点和适用场景。
算法分析复习题第⼀部分作业及复习题Suppose we are comparing implementations of insertion sort and merge sort on the same machine. For inputs of size n, insertion sort runs in 8n2steps, while merge sort runs in 64n lgn steps. For which values of n does insertion sort beat merge sort? P13 T1.2-2答:n>431、n>43假设我们正在⽐较的实现插⼊排序、归并排序在同⼀台机器上。
对于输⼊的⼤⼩n,插⼊排序运⾏在8 n2步骤,⽽归并排序运⾏在64 n外侧膝状核步骤。
n的值并插⼊排序击败归并排序?2、写出插⼊排序、合并排序伪代码,对插⼊排序进⾏最坏、最好和平均情况下复杂度分析,写出合并排序的递归⽅程,并⽤递归树⽅法和主⽅法对递归⽅程求解。
Write the running time of the Merge sort with recurrences. Solve the recurrences with recursion-tree method.写的运⾏时间归并排序有复发。
解决复发与递归树的⽅法。
算法描述3分The best-case running time is T(n) = c1n + c2(n - 1) + c4(n - 1) + c5(n - 1) + c8(n - 1) = (c1 + c2 + c4 + c5 + c8)n - (c2+ c4 + c5 + c8). This running time can be expressed as an + b for constants a and b that depend on the statement costs c i; it is thus a linear function of n.This worst-case running time can be expressed as an2 + bn + c for constants a, b, and c that again depend on the statement costs c i; it is thus a quadratic function of n.分析2分算法描述2分Θ(1) if n = 1T(n) =2T(n/2) + Θ(n) if n > 1.递归⽅程和求解3分InsertionSort(A, n) { for i = 2 to n {key = A[i]j = i - 1;while (j > 0) and (A[j] > key) { A[j+1] = A[j] j = j - 1}A[j+1] = key}}Θ(1) if n = 1T(n) =2T(n/2) + Θ(n) if n > 1.3、⼆分查找算法以及复杂性分析P37 2.3-54、三个渐进符号的定义及其意义 P42-465、 Express the function//表达功能 )(132)(22n n n n T θ=+=? why? P42-436、3.1-1P507、递归树⽅法求T(n)=2T(n/2)+cn(n>1) P34-358、Do Exercise 4.1-6 on page 67 in CLRS.9、公式法求T(n)=4T(n/2)+n T(n)=4T(n/2)+n2T(n)=4T(n/2)+n3P75 T(n) = 4T(n/2) + na = 4,b = 2 ?n log b a= n2; f (n) = n.CASE 1: f (n) = O(n2 –ε) for ε = 1.∴T(n) = Θ(n2).T(n) = 4T(n/2) + n2a = 4,b = 2 ?n log b a= n2; f (n) = n2.CASE 2: f (n) = Θ(n2lg0n), that is, k = 0.∴T(n) = Θ(n2lg n).T(n) = 4T(n/2) + n3a = 4,b = 2 ?n log b a= n2; f (n) = n3.CASE 3: f (n) = Ω(n2 + ε) for ε = 1and 4(n/2)3≤ cn3 (reg. cond.) forc = 1/2.∴T(n) = Θ(n3).10True-false questions1.An algorithm is said to be correct if, for some input instance, it halts with thecorrect output (p6).⼀个算法是正确的,如果⼀些输⼊实例,它停⽌与正确的输出(p6)。
1、对于下列各组函数f(n)和g(n),确定f(n)=O(g(n))或))(()(n g n f Ω=或))(()(n g n f θ=,并简述理由。
(12分)(1) ;5log )(;log )(2+==n n g n n f(2) ;100)(;2)(2n n g n f n ==(3) ;3)(;2)(n n n g n f ==2、试用分治法实现有重复元素的排列问题:设),...,,{21n r r r R =是要进行排列的n 个元素,其中元素n r r r ,...,,21可能相同,试计算R 的所有不同排列。
(13分)3、试用分治法对一个有序表实现二分搜索算法。
(12分)4、试用动态规划算法实现0-1闭包问题。
(15分)5、试用贪心算法求解下列问题:将正整数n 分解为若干个互不相同的自然数之和,使这些自然数的乘积最大。
(15分)6、试用动态规划算法实现最大子矩阵和问题:求n m ⨯矩阵A 的一个子矩阵,使其各元素之各为最大。
(15分)7、试用回溯法解决下列整数变换问题:关于整数i 的变换f 和g 定义如下:⎣⎦2/)(;3)(i i g i i f ==。
对于给定的两个整数n 和m ,要求用最少的变换f 和g 变换次数将n 变为m 。
(18分)1、(1) 证明:O(f)+O(g)=O(f+g) (7分)(2) 求下列函数的渐近表达式:(6分)3n 2+10n; 21+1/n;2、对于下列各组函数f(n)和g(n),确定f(n)=O(g(n))或))(()(n g n f Ω=或))(()(n g n f θ=,并简述理由。
(15分)(1) ;5log )(;log )(2+==n n g n n f (2) ;)(;log )(2n n g n n f ==(3) ;log )(;)(2n n g n n f ==3、试用分治法对数组A[n]实现快速排序。
(13分)4、试用动态规划算法实现最长公共子序列问题。
数据结构与算法分析—期末复习题及答案1. 简答题a) 什么是数据结构?数据结构是一种组织和存储数据的方法,它涉及到将数据元素以及它们之间的关系组织成一种特定的方式,以便于有效地访问和操作。
b) 数据结构的分类有哪些?数据结构可以分为线性结构和非线性结构。
线性结构包括数组、链表、栈和队列等;非线性结构包括树和图等。
c) 什么是算法?算法指的是完成特定任务或求解特定问题的一系列步骤或指令。
算法需要满足正确性、可读性、健壮性和高效性等特性。
d) 算法的时间复杂度和空间复杂度是什么?时间复杂度是指在算法执行过程中所需的时间资源,空间复杂度是在算法执行过程中所需的存储空间资源。
2. 选择题a) 在排序算法中,如果待排序序列已经基本有序,以下哪个算法的性能最优?选项:A. 快速排序B. 冒泡排序C. 插入排序D. 归并排序正确答案:C. 插入排序b) 以下哪个数据结构通常用于实现递归算法?选项:A. 数组B. 链表C. 栈D. 队列正确答案:C. 栈3. 填空题a) 计算以下给定二叉树的前序遍历结果:A/ \B C/ \ / \D E F G正确答案:A, B, D, E, C, F, Gb) 给出选择排序算法的伪代码:```for i in range(len(arr)):min_index = ifor j in range(i+1, len(arr)):if arr[j] < arr[min_index]:min_index = jarr[i], arr[min_index] = arr[min_index], arr[i]```4. 案例题假设有一个包含100个元素的整数数组arr,对该数组进行排序后返回结果。
请使用任意一种排序算法,并给出算法的时间复杂度。
解答示例:我们可以使用快速排序算法来对数组进行排序,时间复杂度为O(nlogn)。
下面是该算法的Python代码实现:```def 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)arr = [5, 3, 2, 8, 1, 4, 7, 6, 9]sorted_arr = quick_sort(arr)print(sorted_arr)```运行结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]5. 解答题请描述并给出示例说明动态规划算法的应用场景。
算法分析简答题(含答案)1.以比较为基础的排序算法的时间下界是Ω(nlogn)。
基数排序的时间复杂度是什么?这个下界适用基数排序吗?为什么?答:基数排序的时间复杂度为 (kn),其中,k 是元素的位数,n 是元素的个数。
(3 分)此下界不适用于基数排序,因为基数排序不属于基于元素的比较来排序的算法类。
(2 分)2. 图的深度优先搜索和宽度优先搜索方法的主要区别是什么?答:主要区别如下:图的深度优先搜索是每当检测一个结点u 时,访问到一个新结点v,则暂时终止对u 的检测,转而对v 进行检测(3 分);而图的宽度优先搜索则是每当检测一个结点u 时,就依次访问完没有被访问的u 的邻接点,即一次对u 检测完毕。
(2 分)。
3. 简述使用分枝限界法求解问题的基本思路。
与回溯法相比,它有何优势,和有何不足?答:分枝限界法的基本思想是:宽度优先搜索(优先队列搜索)+剪枝。
即,通过对搜索树进行宽度优先搜索来寻找问题的解答,且在搜索中每搜索到一个结点处,都要考虑是否能使用剪枝操作来剪枝,从而提高搜索效率。
(3 分)与回溯法相比,这种搜索方法具有更大的灵活性(搜索跳跃性更大),但是往往需要比回溯法多得多的空间。
(2 分)4.考虑产生1,2,⋯,n.的一个随机排列。
请简要描述一个时间复杂度为O(n)的随机算法的思路。
答:一种随机算法的基本思路是:先初始化A[i]=i,1≤i≤n;然后随机地在A 中选两个元素出来交换,此操作执行n 次。
显然,这种算法的时间复杂度为 (n)。
(5 分)5.快速分类算法是根据分治策略来设计的,其基本思想是什么?快速分类算法的最好、最坏及平均情况的时间复杂度分别是多少?答:其基本思想是,通过不断地对序列进行划分而达到排序的目标。
所谓对序列进行划分,就是在序列中选定一个标准元素v,然后将序列进行一遍梳理,使得小于等于v 的元素放在v之前,而大于等于v 的元素放在v 之后,此时v 所在的位置就是序列最终排序后元素v 所在的位置。
算法分析考试题及答案一、单项选择题(每题2分,共20分)1. 以下哪个算法的时间复杂度是O(n^2)?A. 冒泡排序B. 二分查找C. 快速排序D. 线性搜索答案:A2. 在下列排序算法中,哪种算法的平均时间复杂度为O(n log n)?A. 插入排序B. 选择排序C. 归并排序D. 堆排序答案:C3. 动态规划与分治法的主要区别在于:A. 递归的使用B. 问题的分解方式C. 存储中间结果D. 时间复杂度答案:C4. 以下哪种数据结构最适合实现图的邻接表?A. 数组B. 链表C. 栈D. 队列答案:B5. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构?A. 栈B. 队列C. 链表D. 数组答案:A6. 哈希表解决冲突的方法不包括以下哪种?A. 开放寻址法B. 链地址法C. 线性探测法D. 二分查找法答案:D7. 以下哪种算法是用于解决旅行商问题(TSP)的近似算法?A. 动态规划B. 贪心算法C. 分治法D. 遗传算法答案:D8. 在算法分析中,大O表示法描述的是算法的:A. 最优情况时间复杂度B. 平均情况时间复杂度C. 最坏情况时间复杂度D. 实际运行时间答案:C9. 以下哪个排序算法是稳定的?A. 快速排序B. 归并排序C. 堆排序D. 选择排序答案:B10. 算法的时间复杂度为O(1)意味着:A. 算法运行时间与输入大小无关B. 算法运行时间与输入大小成正比C. 算法运行时间与输入大小成对数关系D. 算法运行时间与输入大小成平方关系答案:A二、填空题(每题2分,共20分)1. 在算法分析中,我们通常使用______来描述算法的运行时间。
答案:大O表示法2. 递归算法的时间复杂度通常可以用______来表示。
答案:递归关系式3. 在排序算法中,______排序算法的时间复杂度在最好、最坏和平均情况下都是O(n)。
答案:桶4. 动态规划算法通常用于解决具有______性质的问题。
(1)用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现7、程序调试8、结果整理文档编制(2)算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程(3)算法的三要素1、操作2、控制结构3、数据结构算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
确定性:算法中每一条指令必须有确切的含义。
不存在二义性。
只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。
输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。
输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。
算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。
一般这两者与问题的规模有关。
经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代模型。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。
算法与分析考试题及答案一、选择题(每题2分,共10分)1. 以下哪个选项不是算法的特性?A. 有穷性B. 确定性C. 可行性D. 随机性答案:D2. 在分析算法时间复杂度时,通常使用哪种方法?A. 循环不变式B. 递归树C. 模拟运行D. 动态规划答案:B3. 快速排序算法的平均时间复杂度是?A. O(n)B. O(n log n)C. O(n^2)D. O(2^n)答案:B4. 以下哪个排序算法不是基于比较的排序算法?A. 快速排序B. 归并排序C. 堆排序D. 计数排序答案:D5. 在图的遍历算法中,深度优先搜索(DFS)和广度优先搜索(BFS)的主要区别是什么?A. DFS使用栈,BFS使用队列B. DFS使用队列,BFS使用栈C. DFS和BFS都使用栈D. DFS和BFS都使用队列答案:A二、填空题(每题3分,共15分)1. 算法的时间复杂度通常用大O表示法来描述,其中O表示______。
答案:上界2. 在算法分析中,我们通常忽略常数因子和______。
答案:低阶项3. 动态规划算法的核心思想是______。
答案:分治4. 在图的表示方法中,邻接矩阵适用于表示______图。
答案:稠密5. 哈希表的平均查找时间复杂度是______。
答案:O(1)三、简答题(每题10分,共20分)1. 请简述分治法的基本步骤。
答案:分治法的基本步骤包括分解、解决和合并。
首先将原问题分解成若干个规模较小但结构与原问题相同的子问题;然后递归地解决这些子问题;最后将子问题的解合并成原问题的解。
2. 什么是贪心算法?请举例说明。
答案:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。
例如,活动选择问题,其中可以选择结束时间最早的活动,以最大化可以安排的活动数量。
四、计算题(每题15分,共30分)1. 给定一个序列{3, 7, 2, 5, 8, 4, 6},请使用快速排序算法对其进行排序,并说明排序过程中的划分操作。
《算法分析与设计》期末复习题(一)一、选择题1.应用Johnson 法则的流水作业调度采用的算法是(D )A. 贪心算法B. 分支限界法C.分治法D. 动态规划算法2.Hanoi 塔问题如下图所示。
现要求将塔座A 上的的所有圆盘移到塔座B 上,并仍按同样顺序叠置。
移动圆盘时遵守Hanoi 塔问题的移动规则。
由此设计出解Hanoi 塔问题的递归算法正确的为:(B )Hanoi 塔A. void hanoi(int n, int A, int C, int B) { if (n > 0) {hanoi(n-1,A,C, B); move(n,a,b);hanoi(n-1, C, B, A); } B. void hanoi(int n, int A, int B, int C) {if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A); }C. void hanoi(int n, int C, int B, int A) {if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A); }3. 动态规划算法的基本要素为(C)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用4. 算法分析中,记号O表示(B),记号Ω表示(A),记号Θ表示(D)。
A.渐进下界B.渐进上界C.非紧上界D.紧渐进界E.非紧下界5. 以下关于渐进记号的性质是正确的有:(A)A.f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ⇒=ΘB. f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==⇒=C. O(f(n))+O(g(n)) = O(min{f(n),g(n)})D. f(n)O(g(n))g(n)O(f(n))=⇔=6.能采用贪心算法求最优解的问题,一般具有的重要性质为:(A)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。
一。
选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( D )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法5. 回溯法解旅行售货员问题时的解空间树是()。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法注意:动态规划采用的是自底向上的方式求解,而贪心算法采用的是自顶向下的方式来求解问题。
7、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短8、以下不可以使用分治法求解的是(D )。
1 / 20A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题9. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法11.下面不是分支界限法搜索方式的是( D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法13.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法注意:备忘录是动态规划方法的一个步骤。
14.哈弗曼编码的贪心算法所需的计算时间为( B )。
(n D、O O Bn2、O()、O() C、(2) Ann).分支限界法解最大团问题时,活结点表的组织形式是15)。
B (、栈、最大堆、最小堆A B C2 / 20D、数组16.最长公共子序列算法利用的算法是( B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法17.实现棋盘覆盖算法利用的算法是( A )。
A、分治法B、动态规划法C、贪心法D、回溯法18.下面是贪心算法的基本要素的是( C )。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解注意:定义最优解与重叠子问题这俩个性质是动态规划算法的基本要素。
19.回溯法的效率不依赖于下列哪些因素( D )A.满足显约束的值的个数B. 计算约束函数的时间C. 计算限界函数的时间D. 确定解空间的时间20.下面哪种函数是回溯法中为避免无效搜索采取的策略( B )A.递归函数 B.剪枝函数 C。
随机数函数 D.搜索函数3 / 20注意:剪枝函数又分为约束函数与限界函数。
21、下面关于问题说法正确的是(B )A 问题都是不可能解决的问题B P类问题包含在类问题中C 完全问题是P类问题的子集D 类问题包含在P类问题中24. ( D )是贪心算法与动态规划算法的共同点。
A、重叠子问题B、构造最优解C、贪心选择性质D、最优子结构性质注意:最优子结构性质是贪心算法与动态规划算法共同特点。
25. 矩阵连乘问题的算法可由( B)设计实现。
A、分支界限算法B、动态规划算法C、贪心算法D、回溯算法26. 分支限界法解旅行售货员问题时,活结点表的组织形式是( A )。
A、最小堆B、最大堆C、栈D、数组注意:分支限界法在表示最大团问题时,活结点采用的是最大堆。
29、使用分治法求解不需要满足的条件是(A )。
A 子问题必须是一样的4 / 20B 子问题不能够重复C 子问题的解可以合并D 原问题和子问题使用相同的方法解注意:使用分治法解决问题我们对问题的要求是子问题与原问题类似,即我们采用相同的方法解决即可。
不是需要原问题与子问题是一模一样的。
30、下面问题(B )不能使用贪心法解决。
A 单源最短路径问题B N皇后问题C 最小花费生成树问题D 背包问题31、下列算法中不能解决0/1背包问题的是(A )A 贪心法B 动态规划C 回溯法D 分支限界法注意:贪心算法是不能完全解决0/1背包问题,但是其可以解决背包问题的。
32、回溯法搜索状态空间树是按照(C )的顺序。
A 中序遍历B 广度优先遍历C 深度优先遍历D 层次优先遍历34.实现合并排序利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法35.下列是动态规划算法基本要素的是( D )。
A、定义最优解B、构造最优解C、算出最优解D、子问题重叠性质36.下列算法中通常以自底向上的方式求解最优解的是5 / 20 ( B )。
A、分治法B、动态规划法C、贪心法D、回溯法37.采用广度优先策略搜索的算法是( A )。
A、分支界限法B、动态规划法C、贪心法D、回溯法38、合并排序(也就是归并排序)算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法40、背包问题的贪心算法所需的计算时间为( B )D 、 CO(2) BOA、(n2)、O()nn、)nO()。
C 41.实现大整数的乘法是利用的算法(、、分治策略 D B、动态规划法 C A、贪心法回溯法为间时需的计算溯0-1背包问题的回算法所.42)( A O、) D( O ) B、() C、O2nn*2^nOA、()(n是的方搜优效最采43.用大益先索式算法6 / 20( A )。
A、分支界限法B、动态规划法C、贪心法D、回溯法44.贪心算法与动态规划算法的主要区别是( A )。
A、最优子结构B、贪心选择性质C、构造最优解D、定义最优解45. 实现最大子段和利用的算法是( B )。
A、分治策略B、动态规划法C、贪心法D、回溯法46.优先队列式分支限界法选取扩展结点的原则是( C )。
A、先进先出B、后进先出C、结点的优先级D、随机48、广度优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法52. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。
A、重叠子问题B、最优子结构性质C、贪心选择性质D、定义最优解注意:一个问题能用动态规划算法或贪心算法解决的关键特征是7 / 20重叠子问题。
53.采用贪心算法的最优装载问题的主要计算量在于将集装箱依其重量从小到大排序,故算法的时间复杂度为( B ) 。
(n D、O(() C、O2)、OA、(n2) BOnn)为称解的算法先方式系统搜索问题深54. 以度优。
( D )、贪心算 C、概率算法 A、分支界限算法 B、回溯算法 D 法是的算法共子序列利用公55. 实现最长)。
B (、D、贪心法 A、分治策略 B、动态规划法 C回溯法二、填空题1.算法的复杂性有时间复杂性和空间复杂性之分。
2、程序是算法用某种程序设计语言的具体实现。
注意:算法具有有限性而程序可能不具备有限性。
3、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。
4.矩阵连乘问题的算法可由动态规划设计实现。
8 / 20其具有,一个过程一种方法或 6、算法是指解决问题的有限性。
、从分治法的一般设计模式可以看出,用它设计出的程序一般7。
递归算法是是该问题可用动态规划算法或最优子结构性质 8、问题的贪心算法求解的关键特征。
回溯法 9、以深度优先方式系统搜索问题解的算法称为基循环次数、11、计算一个算法时间复杂度通常可以计算或计算步。
本操作的频率回溯法和分支限界法,背包问题可以使用动态规划、、解决0/114回溯,需要排序的是其中不需要排序的是动态规划。
,分支限界法法贪心算法 :动态规划算法:注意:0/1背包问题回溯法:分支限界算:15、使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是 0/1背包问题,只使用约束条件进行裁剪的是 N 皇后问题。
16、贪心选择性质是贪心算法可行的第一个基本要素,也是9 / 20贪心算法与动态规划算法的主要区别。
17、矩阵连乘问题的算法可由动态规划设计实现。
19.贪心算法的基本要素是贪心选择质和最优子结构性质。
21. 动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
22.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。
23、大整数乘积算法是用分治法来设计的。
24、以广度优先或以最小耗费方式搜索问题解的算法称为分支限界法。
26、贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
27.快速排序算法是基于分治策略的一种排序算法。
28.动态规划算法的两个基本要素是. 最优子结构性质和重叠子问题性质。
31.分支限界法主要有队列式()分支限界法和优先队列式分支限界法。
33.回溯法搜索解空间树时,常用的两种剪枝函数为约束函数和限界函数。
10 / 2034.任何可用计算机求解的问题所需的时间都与其规模有关。
35.快速排序算法的性能取决于划分的对称性。
三、算法填空1.背包问题的贪心算法( v[] w[] x[]){();i;(1<) x[i]=0;;(1<) {(w[i]>c) ;x[i]=1将X[i]标记为已选中c - [i]总容量减去W[i]}(i<)x[i][i]表示还要装几分之几}3.贪心算法求装载问题< >( x[], w[], c, n)11 / 20{*t = [1];(w,t,n);按货物重量排序O() ; ( i = 1; i <= n; ) x[i] = 0;( i = 1; i <= n w[t[i]] <= c; ){x[t[i]] = 1;c w[t[i]] ;}}4.贪心算法求活动安排问题< >( n, s[], f[], A[])A[1];1;( 2<) {(s[i]>[j]) { A[i];;}A[i];}12 / 20}5.快速排序< >( a[], p, r){(p<r) {();(1); 对左半段排序 (1); 对右半段排序 }6.排列问题< >( [], k, m ){ 产生[[]的所有排列(){ 只剩下一个元素( 0<) <<[i];<<;}还有多个元素待排列,递归产生排列13 / 20( ; i<; ){([k],[i]);(1);([k][i]);}}四、问答题1.请简述分治法的基本原理。
答:分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。
递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。
2设计动态规划算法的主要步骤为:找出最优解的性质,并刻划其结构特征。
1)((2)递归地定义最优值。